fhirbolt_model/generated/r4b/resources/
value_set.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "The value of the parameter."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum ValueSetExpansionParameterValue {
5    String(super::super::types::String),
6    Boolean(super::super::types::Boolean),
7    Integer(super::super::types::Integer),
8    Decimal(super::super::types::Decimal),
9    Uri(super::super::types::Uri),
10    Code(super::super::types::Code),
11    DateTime(super::super::types::DateTime),
12    #[default]
13    Invalid,
14}
15#[doc = "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc."]
16#[derive(Debug, Clone, PartialEq)]
17pub struct ValueSetComposeIncludeConceptDesignation {
18    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
19    pub r#id: Option<std::string::String>,
20    #[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."]
21    pub r#extension: Vec<super::super::types::Extension>,
22    #[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)."]
23    pub r#modifier_extension: Vec<super::super::types::Extension>,
24    #[doc = "The language this designation is defined for."]
25    pub r#language: Option<super::super::types::Code>,
26    #[doc = "A code that represents types of uses of designations."]
27    pub r#use: Option<Box<super::super::types::Coding>>,
28    #[doc = "The text value for this designation."]
29    pub r#value: super::super::types::String,
30}
31#[allow(clippy::derivable_impls)]
32impl Default for ValueSetComposeIncludeConceptDesignation {
33    fn default() -> Self {
34        Self {
35            r#id: Default::default(),
36            r#extension: Default::default(),
37            r#modifier_extension: Default::default(),
38            r#language: Default::default(),
39            r#use: Default::default(),
40            r#value: super::super::types::String {
41                id: Some("$invalid".to_string()),
42                ..Default::default()
43            },
44        }
45    }
46}
47#[doc = "Specifies a concept to be included or excluded."]
48#[derive(Debug, Clone, PartialEq)]
49pub struct ValueSetComposeIncludeConcept {
50    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
51    pub r#id: Option<std::string::String>,
52    #[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."]
53    pub r#extension: Vec<super::super::types::Extension>,
54    #[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)."]
55    pub r#modifier_extension: Vec<super::super::types::Extension>,
56    #[doc = "Specifies a code for the concept to be included or excluded."]
57    pub r#code: super::super::types::Code,
58    #[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."]
59    pub r#display: Option<super::super::types::String>,
60    #[doc = "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc."]
61    pub r#designation: Vec<ValueSetComposeIncludeConceptDesignation>,
62}
63#[allow(clippy::derivable_impls)]
64impl Default for ValueSetComposeIncludeConcept {
65    fn default() -> Self {
66        Self {
67            r#id: Default::default(),
68            r#extension: Default::default(),
69            r#modifier_extension: Default::default(),
70            r#code: super::super::types::Code {
71                id: Some("$invalid".to_string()),
72                ..Default::default()
73            },
74            r#display: Default::default(),
75            r#designation: Default::default(),
76        }
77    }
78}
79#[doc = "Select concepts by specify 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, they SHALL all be true."]
80#[derive(Debug, Clone, PartialEq)]
81pub struct ValueSetComposeIncludeFilter {
82    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
83    pub r#id: Option<std::string::String>,
84    #[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."]
85    pub r#extension: Vec<super::super::types::Extension>,
86    #[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)."]
87    pub r#modifier_extension: Vec<super::super::types::Extension>,
88    #[doc = "A code that identifies a property or a filter defined in the code system."]
89    pub r#property: super::super::types::Code,
90    #[doc = "The kind of operation to perform as a part of the filter criteria."]
91    pub r#op: super::super::types::Code,
92    #[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'."]
93    pub r#value: super::super::types::String,
94}
95#[allow(clippy::derivable_impls)]
96impl Default for ValueSetComposeIncludeFilter {
97    fn default() -> Self {
98        Self {
99            r#id: Default::default(),
100            r#extension: Default::default(),
101            r#modifier_extension: Default::default(),
102            r#property: super::super::types::Code {
103                id: Some("$invalid".to_string()),
104                ..Default::default()
105            },
106            r#op: super::super::types::Code {
107                id: Some("$invalid".to_string()),
108                ..Default::default()
109            },
110            r#value: super::super::types::String {
111                id: Some("$invalid".to_string()),
112                ..Default::default()
113            },
114        }
115    }
116}
117#[doc = "Include one or more codes from a code system or other value set(s)."]
118#[derive(Debug, Clone, PartialEq)]
119pub struct ValueSetComposeInclude {
120    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
121    pub r#id: Option<std::string::String>,
122    #[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."]
123    pub r#extension: Vec<super::super::types::Extension>,
124    #[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)."]
125    pub r#modifier_extension: Vec<super::super::types::Extension>,
126    #[doc = "An absolute URI which is the code system from which the selected codes come from."]
127    pub r#system: Option<super::super::types::Uri>,
128    #[doc = "The version of the code system that the codes are selected from, or the special version '*' for all versions."]
129    pub r#version: Option<super::super::types::String>,
130    #[doc = "Specifies a concept to be included or excluded."]
131    pub r#concept: Vec<ValueSetComposeIncludeConcept>,
132    #[doc = "Select concepts by specify 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, they SHALL all be true."]
133    pub r#filter: Vec<ValueSetComposeIncludeFilter>,
134    #[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 union of the contents of all of the referenced value sets."]
135    pub r#value_set: Vec<super::super::types::Canonical>,
136}
137#[allow(clippy::derivable_impls)]
138impl Default for ValueSetComposeInclude {
139    fn default() -> Self {
140        Self {
141            r#id: Default::default(),
142            r#extension: Default::default(),
143            r#modifier_extension: Default::default(),
144            r#system: Default::default(),
145            r#version: Default::default(),
146            r#concept: Default::default(),
147            r#filter: Default::default(),
148            r#value_set: Default::default(),
149        }
150    }
151}
152#[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)."]
153#[derive(Debug, Clone, PartialEq)]
154pub struct ValueSetCompose {
155    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
156    pub r#id: Option<std::string::String>,
157    #[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."]
158    pub r#extension: Vec<super::super::types::Extension>,
159    #[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)."]
160    pub r#modifier_extension: Vec<super::super::types::Extension>,
161    #[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."]
162    pub r#locked_date: Option<super::super::types::Date>,
163    #[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)."]
164    pub r#inactive: Option<super::super::types::Boolean>,
165    #[doc = "Include one or more codes from a code system or other value set(s)."]
166    pub r#include: Vec<ValueSetComposeInclude>,
167    #[doc = "Exclude one or more codes from the value set based on code system filters and/or other value sets."]
168    pub r#exclude: Vec<ValueSetComposeInclude>,
169}
170#[allow(clippy::derivable_impls)]
171impl Default for ValueSetCompose {
172    fn default() -> Self {
173        Self {
174            r#id: Default::default(),
175            r#extension: Default::default(),
176            r#modifier_extension: Default::default(),
177            r#locked_date: Default::default(),
178            r#inactive: Default::default(),
179            r#include: Default::default(),
180            r#exclude: Default::default(),
181        }
182    }
183}
184#[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."]
185#[derive(Debug, Clone, PartialEq)]
186pub struct ValueSetExpansionParameter {
187    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
188    pub r#id: Option<std::string::String>,
189    #[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."]
190    pub r#extension: Vec<super::super::types::Extension>,
191    #[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)."]
192    pub r#modifier_extension: Vec<super::super::types::Extension>,
193    #[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."]
194    pub r#name: super::super::types::String,
195    #[doc = "The value of the parameter."]
196    pub r#value: Option<ValueSetExpansionParameterValue>,
197}
198#[allow(clippy::derivable_impls)]
199impl Default for ValueSetExpansionParameter {
200    fn default() -> Self {
201        Self {
202            r#id: Default::default(),
203            r#extension: Default::default(),
204            r#modifier_extension: Default::default(),
205            r#name: super::super::types::String {
206                id: Some("$invalid".to_string()),
207                ..Default::default()
208            },
209            r#value: Default::default(),
210        }
211    }
212}
213#[doc = "The codes that are contained in the value set expansion."]
214#[derive(Debug, Clone, PartialEq)]
215pub struct ValueSetExpansionContains {
216    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
217    pub r#id: Option<std::string::String>,
218    #[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."]
219    pub r#extension: Vec<super::super::types::Extension>,
220    #[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)."]
221    pub r#modifier_extension: Vec<super::super::types::Extension>,
222    #[doc = "An absolute URI which is the code system in which the code for this item in the expansion is defined."]
223    pub r#system: Option<super::super::types::Uri>,
224    #[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."]
225    pub r#abstract: Option<super::super::types::Boolean>,
226    #[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 an concept is inactive (and it may depend on the context of use)."]
227    pub r#inactive: Option<super::super::types::Boolean>,
228    #[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."]
229    pub r#version: Option<super::super::types::String>,
230    #[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."]
231    pub r#code: Option<super::super::types::Code>,
232    #[doc = "The recommended display for this item in the expansion."]
233    pub r#display: Option<super::super::types::String>,
234    #[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."]
235    pub r#designation: Vec<ValueSetComposeIncludeConceptDesignation>,
236    #[doc = "Other codes and entries contained under this entry in the hierarchy."]
237    pub r#contains: Vec<ValueSetExpansionContains>,
238}
239#[allow(clippy::derivable_impls)]
240impl Default for ValueSetExpansionContains {
241    fn default() -> Self {
242        Self {
243            r#id: Default::default(),
244            r#extension: Default::default(),
245            r#modifier_extension: Default::default(),
246            r#system: Default::default(),
247            r#abstract: Default::default(),
248            r#inactive: Default::default(),
249            r#version: Default::default(),
250            r#code: Default::default(),
251            r#display: Default::default(),
252            r#designation: Default::default(),
253            r#contains: Default::default(),
254        }
255    }
256}
257#[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."]
258#[derive(Debug, Clone, PartialEq)]
259pub struct ValueSetExpansion {
260    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
261    pub r#id: Option<std::string::String>,
262    #[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."]
263    pub r#extension: Vec<super::super::types::Extension>,
264    #[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)."]
265    pub r#modifier_extension: Vec<super::super::types::Extension>,
266    #[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."]
267    pub r#identifier: Option<super::super::types::Uri>,
268    #[doc = "The time at which the expansion was produced by the expanding system."]
269    pub r#timestamp: super::super::types::DateTime,
270    #[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."]
271    pub r#total: Option<super::super::types::Integer>,
272    #[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."]
273    pub r#offset: Option<super::super::types::Integer>,
274    #[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."]
275    pub r#parameter: Vec<ValueSetExpansionParameter>,
276    #[doc = "The codes that are contained in the value set expansion."]
277    pub r#contains: Vec<ValueSetExpansionContains>,
278}
279#[allow(clippy::derivable_impls)]
280impl Default for ValueSetExpansion {
281    fn default() -> Self {
282        Self {
283            r#id: Default::default(),
284            r#extension: Default::default(),
285            r#modifier_extension: Default::default(),
286            r#identifier: Default::default(),
287            r#timestamp: super::super::types::DateTime {
288                id: Some("$invalid".to_string()),
289                ..Default::default()
290            },
291            r#total: Default::default(),
292            r#offset: Default::default(),
293            r#parameter: Default::default(),
294            r#contains: Default::default(),
295        }
296    }
297}
298#[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))."]
299#[derive(Debug, Clone, PartialEq)]
300pub struct ValueSet {
301    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
302    pub r#id: Option<super::super::types::Id>,
303    #[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."]
304    pub r#meta: Option<Box<super::super::types::Meta>>,
305    #[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."]
306    pub r#implicit_rules: Option<super::super::types::Uri>,
307    #[doc = "The base language in which the resource is written."]
308    pub r#language: Option<super::super::types::Code>,
309    #[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."]
310    pub r#text: Option<Box<super::super::types::Narrative>>,
311    #[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."]
312    pub r#contained: Vec<super::super::Resource>,
313    #[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."]
314    pub r#extension: Vec<super::super::types::Extension>,
315    #[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)."]
316    pub r#modifier_extension: Vec<super::super::types::Extension>,
317    #[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 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."]
318    pub r#url: Option<super::super::types::Uri>,
319    #[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."]
320    pub r#identifier: Vec<super::super::types::Identifier>,
321    #[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."]
322    pub r#version: Option<super::super::types::String>,
323    #[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."]
324    pub r#name: Option<super::super::types::String>,
325    #[doc = "A short, descriptive, user-friendly title for the value set."]
326    pub r#title: Option<super::super::types::String>,
327    #[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."]
328    pub r#status: super::super::types::Code,
329    #[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."]
330    pub r#experimental: Option<super::super::types::Boolean>,
331    #[doc = "The date (and optionally time) when the value set was created or revised (e.g. the 'content logical definition')."]
332    pub r#date: Option<super::super::types::DateTime>,
333    #[doc = "The name of the organization or individual that published the value set."]
334    pub r#publisher: Option<super::super::types::String>,
335    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
336    pub r#contact: Vec<super::super::types::ContactDetail>,
337    #[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."]
338    pub r#description: Option<super::super::types::Markdown>,
339    #[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."]
340    pub r#use_context: Vec<super::super::types::UsageContext>,
341    #[doc = "A legal or geographic region in which the value set is intended to be used."]
342    pub r#jurisdiction: Vec<super::super::types::CodeableConcept>,
343    #[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."]
344    pub r#immutable: Option<super::super::types::Boolean>,
345    #[doc = "Explanation of why this value set is needed and why it has been designed as it has."]
346    pub r#purpose: Option<super::super::types::Markdown>,
347    #[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."]
348    pub r#copyright: Option<super::super::types::Markdown>,
349    #[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)."]
350    pub r#compose: Option<ValueSetCompose>,
351    #[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."]
352    pub r#expansion: Option<ValueSetExpansion>,
353}
354#[allow(clippy::derivable_impls)]
355impl Default for ValueSet {
356    fn default() -> Self {
357        Self {
358            r#id: Default::default(),
359            r#meta: Default::default(),
360            r#implicit_rules: Default::default(),
361            r#language: Default::default(),
362            r#text: Default::default(),
363            r#contained: Default::default(),
364            r#extension: Default::default(),
365            r#modifier_extension: Default::default(),
366            r#url: Default::default(),
367            r#identifier: Default::default(),
368            r#version: Default::default(),
369            r#name: Default::default(),
370            r#title: Default::default(),
371            r#status: super::super::types::Code {
372                id: Some("$invalid".to_string()),
373                ..Default::default()
374            },
375            r#experimental: Default::default(),
376            r#date: Default::default(),
377            r#publisher: Default::default(),
378            r#contact: Default::default(),
379            r#description: Default::default(),
380            r#use_context: Default::default(),
381            r#jurisdiction: Default::default(),
382            r#immutable: Default::default(),
383            r#purpose: Default::default(),
384            r#copyright: Default::default(),
385            r#compose: Default::default(),
386            r#expansion: Default::default(),
387        }
388    }
389}