fhirbolt_model/generated/r5/resources/
value_set.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "Indicates the mechanism used to compare versions to determine which ValueSet is more current."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum ValueSetVersionAlgorithm {
5    String(super::super::types::String),
6    Coding(Box<super::super::types::Coding>),
7    #[default]
8    Invalid,
9}
10#[doc = "The value of the parameter."]
11#[derive(Default, Debug, Clone, PartialEq)]
12pub enum ValueSetExpansionParameterValue {
13    String(super::super::types::String),
14    Boolean(super::super::types::Boolean),
15    Integer(super::super::types::Integer),
16    Decimal(super::super::types::Decimal),
17    Uri(super::super::types::Uri),
18    Code(super::super::types::Code),
19    DateTime(super::super::types::DateTime),
20    #[default]
21    Invalid,
22}
23#[doc = "The value of this property."]
24#[derive(Default, Debug, Clone, PartialEq)]
25pub enum ValueSetExpansionContainsPropertyValue {
26    Code(super::super::types::Code),
27    Coding(Box<super::super::types::Coding>),
28    String(super::super::types::String),
29    Integer(super::super::types::Integer),
30    Boolean(super::super::types::Boolean),
31    DateTime(super::super::types::DateTime),
32    Decimal(super::super::types::Decimal),
33    #[default]
34    Invalid,
35}
36#[doc = "The value of this subproperty."]
37#[derive(Default, Debug, Clone, PartialEq)]
38pub enum ValueSetExpansionContainsPropertySubPropertyValue {
39    Code(super::super::types::Code),
40    Coding(Box<super::super::types::Coding>),
41    String(super::super::types::String),
42    Integer(super::super::types::Integer),
43    Boolean(super::super::types::Boolean),
44    DateTime(super::super::types::DateTime),
45    Decimal(super::super::types::Decimal),
46    #[default]
47    Invalid,
48}
49#[doc = "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc."]
50#[derive(Debug, Clone, PartialEq)]
51pub struct ValueSetComposeIncludeConceptDesignation {
52    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
53    pub r#id: Option<std::string::String>,
54    #[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 managable, 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."]
55    pub r#extension: Vec<super::super::types::Extension>,
56    #[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 managable, 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)."]
57    pub r#modifier_extension: Vec<super::super::types::Extension>,
58    #[doc = "The language this designation is defined for."]
59    pub r#language: Option<super::super::types::Code>,
60    #[doc = "A code that represents types of uses of designations."]
61    pub r#use: Option<Box<super::super::types::Coding>>,
62    #[doc = "Additional codes that detail how this designation would be used, if there is more than one use."]
63    pub r#additional_use: Vec<super::super::types::Coding>,
64    #[doc = "The text value for this designation."]
65    pub r#value: super::super::types::String,
66}
67#[allow(clippy::derivable_impls)]
68impl Default for ValueSetComposeIncludeConceptDesignation {
69    fn default() -> Self {
70        Self {
71            r#id: Default::default(),
72            r#extension: Default::default(),
73            r#modifier_extension: Default::default(),
74            r#language: Default::default(),
75            r#use: Default::default(),
76            r#additional_use: Default::default(),
77            r#value: super::super::types::String {
78                id: Some("$invalid".to_string()),
79                ..Default::default()
80            },
81        }
82    }
83}
84#[doc = "Specifies a concept to be included or excluded."]
85#[derive(Debug, Clone, PartialEq)]
86pub struct ValueSetComposeIncludeConcept {
87    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
88    pub r#id: Option<std::string::String>,
89    #[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 managable, 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."]
90    pub r#extension: Vec<super::super::types::Extension>,
91    #[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 managable, 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)."]
92    pub r#modifier_extension: Vec<super::super::types::Extension>,
93    #[doc = "Specifies a code for the concept to be included or excluded."]
94    pub r#code: super::super::types::Code,
95    #[doc = "The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system."]
96    pub r#display: Option<super::super::types::String>,
97    #[doc = "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc."]
98    pub r#designation: Vec<ValueSetComposeIncludeConceptDesignation>,
99}
100#[allow(clippy::derivable_impls)]
101impl Default for ValueSetComposeIncludeConcept {
102    fn default() -> Self {
103        Self {
104            r#id: Default::default(),
105            r#extension: Default::default(),
106            r#modifier_extension: Default::default(),
107            r#code: super::super::types::Code {
108                id: Some("$invalid".to_string()),
109                ..Default::default()
110            },
111            r#display: Default::default(),
112            r#designation: Default::default(),
113        }
114    }
115}
116#[doc = "Select concepts by specifying a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified within the include, they SHALL all be true."]
117#[derive(Debug, Clone, PartialEq)]
118pub struct ValueSetComposeIncludeFilter {
119    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
120    pub r#id: Option<std::string::String>,
121    #[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 managable, 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."]
122    pub r#extension: Vec<super::super::types::Extension>,
123    #[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 managable, 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)."]
124    pub r#modifier_extension: Vec<super::super::types::Extension>,
125    #[doc = "A code that identifies a property or a filter defined in the code system."]
126    pub r#property: super::super::types::Code,
127    #[doc = "The kind of operation to perform as a part of the filter criteria."]
128    pub r#op: super::super::types::Code,
129    #[doc = "The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'."]
130    pub r#value: super::super::types::String,
131}
132#[allow(clippy::derivable_impls)]
133impl Default for ValueSetComposeIncludeFilter {
134    fn default() -> Self {
135        Self {
136            r#id: Default::default(),
137            r#extension: Default::default(),
138            r#modifier_extension: Default::default(),
139            r#property: super::super::types::Code {
140                id: Some("$invalid".to_string()),
141                ..Default::default()
142            },
143            r#op: super::super::types::Code {
144                id: Some("$invalid".to_string()),
145                ..Default::default()
146            },
147            r#value: super::super::types::String {
148                id: Some("$invalid".to_string()),
149                ..Default::default()
150            },
151        }
152    }
153}
154#[doc = "Include one or more codes from a code system or other value set(s)."]
155#[derive(Debug, Clone, PartialEq)]
156pub struct ValueSetComposeInclude {
157    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
158    pub r#id: Option<std::string::String>,
159    #[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 managable, 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."]
160    pub r#extension: Vec<super::super::types::Extension>,
161    #[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 managable, 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)."]
162    pub r#modifier_extension: Vec<super::super::types::Extension>,
163    #[doc = "An absolute URI which is the code system from which the selected codes come from."]
164    pub r#system: Option<super::super::types::Uri>,
165    #[doc = "The version of the code system that the codes are selected from, or the special version '*' for all versions."]
166    pub r#version: Option<super::super::types::String>,
167    #[doc = "Specifies a concept to be included or excluded."]
168    pub r#concept: Vec<ValueSetComposeIncludeConcept>,
169    #[doc = "Select concepts by specifying a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified within the include, they SHALL all be true."]
170    pub r#filter: Vec<ValueSetComposeIncludeFilter>,
171    #[doc = "Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets."]
172    pub r#value_set: Vec<super::super::types::Canonical>,
173    #[doc = "A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present)."]
174    pub r#copyright: Option<super::super::types::String>,
175}
176#[allow(clippy::derivable_impls)]
177impl Default for ValueSetComposeInclude {
178    fn default() -> Self {
179        Self {
180            r#id: Default::default(),
181            r#extension: Default::default(),
182            r#modifier_extension: Default::default(),
183            r#system: Default::default(),
184            r#version: Default::default(),
185            r#concept: Default::default(),
186            r#filter: Default::default(),
187            r#value_set: Default::default(),
188            r#copyright: Default::default(),
189        }
190    }
191}
192#[doc = "A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD)."]
193#[derive(Debug, Clone, PartialEq)]
194pub struct ValueSetCompose {
195    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
196    pub r#id: Option<std::string::String>,
197    #[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 managable, 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."]
198    pub r#extension: Vec<super::super::types::Extension>,
199    #[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 managable, 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)."]
200    pub r#modifier_extension: Vec<super::super::types::Extension>,
201    #[doc = "The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version."]
202    pub r#locked_date: Option<super::super::types::Date>,
203    #[doc = "Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included)."]
204    pub r#inactive: Option<super::super::types::Boolean>,
205    #[doc = "Include one or more codes from a code system or other value set(s)."]
206    pub r#include: Vec<ValueSetComposeInclude>,
207    #[doc = "Exclude one or more codes from the value set based on code system filters and/or other value sets."]
208    pub r#exclude: Vec<ValueSetComposeInclude>,
209    #[doc = "A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server."]
210    pub r#property: Vec<super::super::types::String>,
211}
212#[allow(clippy::derivable_impls)]
213impl Default for ValueSetCompose {
214    fn default() -> Self {
215        Self {
216            r#id: Default::default(),
217            r#extension: Default::default(),
218            r#modifier_extension: Default::default(),
219            r#locked_date: Default::default(),
220            r#inactive: Default::default(),
221            r#include: Default::default(),
222            r#exclude: Default::default(),
223            r#property: Default::default(),
224        }
225    }
226}
227#[doc = "A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion."]
228#[derive(Debug, Clone, PartialEq)]
229pub struct ValueSetExpansionParameter {
230    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
231    pub r#id: Option<std::string::String>,
232    #[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 managable, 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."]
233    pub r#extension: Vec<super::super::types::Extension>,
234    #[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 managable, 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)."]
235    pub r#modifier_extension: Vec<super::super::types::Extension>,
236    #[doc = "Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process."]
237    pub r#name: super::super::types::String,
238    #[doc = "The value of the parameter."]
239    pub r#value: Option<ValueSetExpansionParameterValue>,
240}
241#[allow(clippy::derivable_impls)]
242impl Default for ValueSetExpansionParameter {
243    fn default() -> Self {
244        Self {
245            r#id: Default::default(),
246            r#extension: Default::default(),
247            r#modifier_extension: Default::default(),
248            r#name: super::super::types::String {
249                id: Some("$invalid".to_string()),
250                ..Default::default()
251            },
252            r#value: Default::default(),
253        }
254    }
255}
256#[doc = "A property defines an additional slot through which additional information can be provided about a concept."]
257#[derive(Debug, Clone, PartialEq)]
258pub struct ValueSetExpansionProperty {
259    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
260    pub r#id: Option<std::string::String>,
261    #[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 managable, 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."]
262    pub r#extension: Vec<super::super::types::Extension>,
263    #[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 managable, 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)."]
264    pub r#modifier_extension: Vec<super::super::types::Extension>,
265    #[doc = "A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code."]
266    pub r#code: super::super::types::Code,
267    #[doc = "Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](https://hl7.org/FHIR/codesystem-concept-properties.html)) code system."]
268    pub r#uri: Option<super::super::types::Uri>,
269}
270#[allow(clippy::derivable_impls)]
271impl Default for ValueSetExpansionProperty {
272    fn default() -> Self {
273        Self {
274            r#id: Default::default(),
275            r#extension: Default::default(),
276            r#modifier_extension: Default::default(),
277            r#code: super::super::types::Code {
278                id: Some("$invalid".to_string()),
279                ..Default::default()
280            },
281            r#uri: Default::default(),
282        }
283    }
284}
285#[doc = "A subproperty value for this concept."]
286#[derive(Debug, Clone, PartialEq)]
287pub struct ValueSetExpansionContainsPropertySubProperty {
288    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
289    pub r#id: Option<std::string::String>,
290    #[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 managable, 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."]
291    pub r#extension: Vec<super::super::types::Extension>,
292    #[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 managable, 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)."]
293    pub r#modifier_extension: Vec<super::super::types::Extension>,
294    #[doc = "A code that is a reference to ValueSet.expansion.property.code."]
295    pub r#code: super::super::types::Code,
296    #[doc = "The value of this subproperty."]
297    pub r#value: ValueSetExpansionContainsPropertySubPropertyValue,
298}
299#[allow(clippy::derivable_impls)]
300impl Default for ValueSetExpansionContainsPropertySubProperty {
301    fn default() -> Self {
302        Self {
303            r#id: Default::default(),
304            r#extension: Default::default(),
305            r#modifier_extension: Default::default(),
306            r#code: super::super::types::Code {
307                id: Some("$invalid".to_string()),
308                ..Default::default()
309            },
310            r#value: Default::default(),
311        }
312    }
313}
314#[doc = "A property value for this concept."]
315#[derive(Debug, Clone, PartialEq)]
316pub struct ValueSetExpansionContainsProperty {
317    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
318    pub r#id: Option<std::string::String>,
319    #[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 managable, 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."]
320    pub r#extension: Vec<super::super::types::Extension>,
321    #[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 managable, 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)."]
322    pub r#modifier_extension: Vec<super::super::types::Extension>,
323    #[doc = "A code that is a reference to ValueSet.expansion.property.code."]
324    pub r#code: super::super::types::Code,
325    #[doc = "The value of this property."]
326    pub r#value: ValueSetExpansionContainsPropertyValue,
327    #[doc = "A subproperty value for this concept."]
328    pub r#sub_property: Vec<ValueSetExpansionContainsPropertySubProperty>,
329}
330#[allow(clippy::derivable_impls)]
331impl Default for ValueSetExpansionContainsProperty {
332    fn default() -> Self {
333        Self {
334            r#id: Default::default(),
335            r#extension: Default::default(),
336            r#modifier_extension: Default::default(),
337            r#code: super::super::types::Code {
338                id: Some("$invalid".to_string()),
339                ..Default::default()
340            },
341            r#value: Default::default(),
342            r#sub_property: Default::default(),
343        }
344    }
345}
346#[doc = "The codes that are contained in the value set expansion."]
347#[derive(Debug, Clone, PartialEq)]
348pub struct ValueSetExpansionContains {
349    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
350    pub r#id: Option<std::string::String>,
351    #[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 managable, 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."]
352    pub r#extension: Vec<super::super::types::Extension>,
353    #[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 managable, 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)."]
354    pub r#modifier_extension: Vec<super::super::types::Extension>,
355    #[doc = "An absolute URI which is the code system in which the code for this item in the expansion is defined."]
356    pub r#system: Option<super::super::types::Uri>,
357    #[doc = "If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value."]
358    pub r#abstract: Option<super::super::types::Boolean>,
359    #[doc = "If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether a concept is inactive (and it may depend on the context of use)."]
360    pub r#inactive: Option<super::super::types::Boolean>,
361    #[doc = "The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged."]
362    pub r#version: Option<super::super::types::String>,
363    #[doc = "The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set."]
364    pub r#code: Option<super::super::types::Code>,
365    #[doc = "The recommended display for this item in the expansion."]
366    pub r#display: Option<super::super::types::String>,
367    #[doc = "Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representation."]
368    pub r#designation: Vec<ValueSetComposeIncludeConceptDesignation>,
369    #[doc = "A property value for this concept."]
370    pub r#property: Vec<ValueSetExpansionContainsProperty>,
371    #[doc = "Other codes and entries contained under this entry in the hierarchy."]
372    pub r#contains: Vec<ValueSetExpansionContains>,
373}
374#[allow(clippy::derivable_impls)]
375impl Default for ValueSetExpansionContains {
376    fn default() -> Self {
377        Self {
378            r#id: Default::default(),
379            r#extension: Default::default(),
380            r#modifier_extension: Default::default(),
381            r#system: Default::default(),
382            r#abstract: Default::default(),
383            r#inactive: Default::default(),
384            r#version: Default::default(),
385            r#code: Default::default(),
386            r#display: Default::default(),
387            r#designation: Default::default(),
388            r#property: Default::default(),
389            r#contains: Default::default(),
390        }
391    }
392}
393#[doc = "A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed."]
394#[derive(Debug, Clone, PartialEq)]
395pub struct ValueSetExpansion {
396    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
397    pub r#id: Option<std::string::String>,
398    #[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 managable, 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."]
399    pub r#extension: Vec<super::super::types::Extension>,
400    #[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 managable, 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)."]
401    pub r#modifier_extension: Vec<super::super::types::Extension>,
402    #[doc = "An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier."]
403    pub r#identifier: Option<super::super::types::Uri>,
404    #[doc = "As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them."]
405    pub r#next: Option<super::super::types::Uri>,
406    #[doc = "The time at which the expansion was produced by the expanding system."]
407    pub r#timestamp: super::super::types::DateTime,
408    #[doc = "The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter."]
409    pub r#total: Option<super::super::types::Integer>,
410    #[doc = "If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present."]
411    pub r#offset: Option<super::super::types::Integer>,
412    #[doc = "A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion."]
413    pub r#parameter: Vec<ValueSetExpansionParameter>,
414    #[doc = "A property defines an additional slot through which additional information can be provided about a concept."]
415    pub r#property: Vec<ValueSetExpansionProperty>,
416    #[doc = "The codes that are contained in the value set expansion."]
417    pub r#contains: Vec<ValueSetExpansionContains>,
418}
419#[allow(clippy::derivable_impls)]
420impl Default for ValueSetExpansion {
421    fn default() -> Self {
422        Self {
423            r#id: Default::default(),
424            r#extension: Default::default(),
425            r#modifier_extension: Default::default(),
426            r#identifier: Default::default(),
427            r#next: Default::default(),
428            r#timestamp: super::super::types::DateTime {
429                id: Some("$invalid".to_string()),
430                ..Default::default()
431            },
432            r#total: Default::default(),
433            r#offset: Default::default(),
434            r#parameter: Default::default(),
435            r#property: Default::default(),
436            r#contains: Default::default(),
437        }
438    }
439}
440#[doc = "Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description."]
441#[derive(Debug, Clone, PartialEq)]
442pub struct ValueSetScope {
443    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
444    pub r#id: Option<std::string::String>,
445    #[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 managable, 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."]
446    pub r#extension: Vec<super::super::types::Extension>,
447    #[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 managable, 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)."]
448    pub r#modifier_extension: Vec<super::super::types::Extension>,
449    #[doc = "Criteria describing which concepts or codes should be included and why."]
450    pub r#inclusion_criteria: Option<super::super::types::String>,
451    #[doc = "Criteria describing which concepts or codes should be excluded and why."]
452    pub r#exclusion_criteria: Option<super::super::types::String>,
453}
454#[allow(clippy::derivable_impls)]
455impl Default for ValueSetScope {
456    fn default() -> Self {
457        Self {
458            r#id: Default::default(),
459            r#extension: Default::default(),
460            r#modifier_extension: Default::default(),
461            r#inclusion_criteria: Default::default(),
462            r#exclusion_criteria: Default::default(),
463        }
464    }
465}
466#[doc = "A ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between `CodeSystem` definitions and their use in [coded elements](https://hl7.org/FHIR/terminologies.html))."]
467#[derive(Debug, Clone, PartialEq)]
468pub struct ValueSet {
469    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
470    pub r#id: Option<super::super::types::Id>,
471    #[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."]
472    pub r#meta: Option<Box<super::super::types::Meta>>,
473    #[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."]
474    pub r#implicit_rules: Option<super::super::types::Uri>,
475    #[doc = "The base language in which the resource is written."]
476    pub r#language: Option<super::super::types::Code>,
477    #[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."]
478    pub r#text: Option<Box<super::super::types::Narrative>>,
479    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, nor can they have their own independent transaction scope. This is allowed to be a Parameters resource if and only if it is referenced by a resource that provides context/meaning."]
480    pub r#contained: Vec<super::super::Resource>,
481    #[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 managable, 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."]
482    pub r#extension: Vec<super::super::types::Extension>,
483    #[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 managable, 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)."]
484    pub r#modifier_extension: Vec<super::super::types::Extension>,
485    #[doc = "An absolute URI that is used to identify this value set when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers."]
486    pub r#url: Option<super::super::types::Uri>,
487    #[doc = "A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance."]
488    pub r#identifier: Vec<super::super::types::Identifier>,
489    #[doc = "The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence."]
490    pub r#version: Option<super::super::types::String>,
491    #[doc = "Indicates the mechanism used to compare versions to determine which ValueSet is more current."]
492    pub r#version_algorithm: Option<ValueSetVersionAlgorithm>,
493    #[doc = "A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
494    pub r#name: Option<super::super::types::String>,
495    #[doc = "A short, descriptive, user-friendly title for the value set."]
496    pub r#title: Option<super::super::types::String>,
497    #[doc = "The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state."]
498    pub r#status: super::super::types::Code,
499    #[doc = "A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
500    pub r#experimental: Option<super::super::types::Boolean>,
501    #[doc = "The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised."]
502    pub r#date: Option<super::super::types::DateTime>,
503    #[doc = "The name of the organization or individual responsible for the release and ongoing maintenance of the value set."]
504    pub r#publisher: Option<super::super::types::String>,
505    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
506    pub r#contact: Vec<super::super::types::ContactDetail>,
507    #[doc = "A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set."]
508    pub r#description: Option<super::super::types::Markdown>,
509    #[doc = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate value set instances."]
510    pub r#use_context: Vec<super::super::types::UsageContext>,
511    #[doc = "A legal or geographic region in which the value set is intended to be used."]
512    pub r#jurisdiction: Vec<super::super::types::CodeableConcept>,
513    #[doc = "If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change."]
514    pub r#immutable: Option<super::super::types::Boolean>,
515    #[doc = "Explanation of why this value set is needed and why it has been designed as it has."]
516    pub r#purpose: Option<super::super::types::Markdown>,
517    #[doc = "A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set."]
518    pub r#copyright: Option<super::super::types::Markdown>,
519    #[doc = "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved')."]
520    pub r#copyright_label: Option<super::super::types::String>,
521    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
522    pub r#approval_date: Option<super::super::types::Date>,
523    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
524    pub r#last_review_date: Option<super::super::types::Date>,
525    #[doc = "The period during which the ValueSet content was or is planned to be in active use."]
526    pub r#effective_period: Option<Box<super::super::types::Period>>,
527    #[doc = "Descriptions related to the content of the ValueSet. Topics provide a high-level categorization as well as keywords for the ValueSet that can be useful for filtering and searching."]
528    pub r#topic: Vec<super::super::types::CodeableConcept>,
529    #[doc = "An individiual or organization primarily involved in the creation and maintenance of the ValueSet."]
530    pub r#author: Vec<super::super::types::ContactDetail>,
531    #[doc = "An individual or organization primarily responsible for internal coherence of the ValueSet."]
532    pub r#editor: Vec<super::super::types::ContactDetail>,
533    #[doc = "An individual or organization asserted by the publisher to be primarily responsible for review of some aspect of the ValueSet."]
534    pub r#reviewer: Vec<super::super::types::ContactDetail>,
535    #[doc = "An individual or organization asserted by the publisher to be responsible for officially endorsing the ValueSet for use in some setting."]
536    pub r#endorser: Vec<super::super::types::ContactDetail>,
537    #[doc = "Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts."]
538    pub r#related_artifact: Vec<super::super::types::RelatedArtifact>,
539    #[doc = "A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD)."]
540    pub r#compose: Option<ValueSetCompose>,
541    #[doc = "A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed."]
542    pub r#expansion: Option<ValueSetExpansion>,
543    #[doc = "Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description."]
544    pub r#scope: Option<ValueSetScope>,
545}
546#[allow(clippy::derivable_impls)]
547impl Default for ValueSet {
548    fn default() -> Self {
549        Self {
550            r#id: Default::default(),
551            r#meta: Default::default(),
552            r#implicit_rules: Default::default(),
553            r#language: Default::default(),
554            r#text: Default::default(),
555            r#contained: Default::default(),
556            r#extension: Default::default(),
557            r#modifier_extension: Default::default(),
558            r#url: Default::default(),
559            r#identifier: Default::default(),
560            r#version: Default::default(),
561            r#version_algorithm: Default::default(),
562            r#name: Default::default(),
563            r#title: Default::default(),
564            r#status: super::super::types::Code {
565                id: Some("$invalid".to_string()),
566                ..Default::default()
567            },
568            r#experimental: Default::default(),
569            r#date: Default::default(),
570            r#publisher: Default::default(),
571            r#contact: Default::default(),
572            r#description: Default::default(),
573            r#use_context: Default::default(),
574            r#jurisdiction: Default::default(),
575            r#immutable: Default::default(),
576            r#purpose: Default::default(),
577            r#copyright: Default::default(),
578            r#copyright_label: Default::default(),
579            r#approval_date: Default::default(),
580            r#last_review_date: Default::default(),
581            r#effective_period: Default::default(),
582            r#topic: Default::default(),
583            r#author: Default::default(),
584            r#editor: Default::default(),
585            r#reviewer: Default::default(),
586            r#endorser: Default::default(),
587            r#related_artifact: Default::default(),
588            r#compose: Default::default(),
589            r#expansion: Default::default(),
590            r#scope: Default::default(),
591        }
592    }
593}