fhirbolt_model/generated/r4b/resources/
citation.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "The article or artifact that the Citation Resource is related to."]
3#[derive(Default, Debug, Clone, PartialEq)]
4pub enum CitationRelatesToTarget {
5    Uri(super::super::types::Uri),
6    Identifier(Box<super::super::types::Identifier>),
7    Reference(Box<super::super::types::Reference>),
8    Attachment(Box<super::super::types::Attachment>),
9    #[default]
10    Invalid,
11}
12#[doc = "The article or artifact that the cited artifact is related to."]
13#[derive(Default, Debug, Clone, PartialEq)]
14pub enum CitationCitedArtifactRelatesToTarget {
15    Uri(super::super::types::Uri),
16    Identifier(Box<super::super::types::Identifier>),
17    Reference(Box<super::super::types::Reference>),
18    Attachment(Box<super::super::types::Attachment>),
19    #[default]
20    Invalid,
21}
22#[doc = "A human-readable display of the citation."]
23#[derive(Debug, Clone, PartialEq)]
24pub struct CitationSummary {
25    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
26    pub r#id: Option<std::string::String>,
27    #[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."]
28    pub r#extension: Vec<super::super::types::Extension>,
29    #[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)."]
30    pub r#modifier_extension: Vec<super::super::types::Extension>,
31    #[doc = "Format for display of the citation."]
32    pub r#style: Option<Box<super::super::types::CodeableConcept>>,
33    #[doc = "The human-readable display of the citation."]
34    pub r#text: super::super::types::Markdown,
35}
36#[allow(clippy::derivable_impls)]
37impl Default for CitationSummary {
38    fn default() -> Self {
39        Self {
40            r#id: Default::default(),
41            r#extension: Default::default(),
42            r#modifier_extension: Default::default(),
43            r#style: Default::default(),
44            r#text: super::super::types::Markdown {
45                id: Some("$invalid".to_string()),
46                ..Default::default()
47            },
48        }
49    }
50}
51#[doc = "The assignment to an organizing scheme."]
52#[derive(Debug, Clone, PartialEq)]
53pub struct CitationClassification {
54    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
55    pub r#id: Option<std::string::String>,
56    #[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."]
57    pub r#extension: Vec<super::super::types::Extension>,
58    #[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)."]
59    pub r#modifier_extension: Vec<super::super::types::Extension>,
60    #[doc = "The kind of classifier (e.g. publication type, keyword)."]
61    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
62    #[doc = "The specific classification value."]
63    pub r#classifier: Vec<super::super::types::CodeableConcept>,
64}
65#[allow(clippy::derivable_impls)]
66impl Default for CitationClassification {
67    fn default() -> Self {
68        Self {
69            r#id: Default::default(),
70            r#extension: Default::default(),
71            r#modifier_extension: Default::default(),
72            r#type: Default::default(),
73            r#classifier: Default::default(),
74        }
75    }
76}
77#[doc = "An effective date or period for a status of the citation."]
78#[derive(Debug, Clone, PartialEq)]
79pub struct CitationStatusDate {
80    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
81    pub r#id: Option<std::string::String>,
82    #[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."]
83    pub r#extension: Vec<super::super::types::Extension>,
84    #[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)."]
85    pub r#modifier_extension: Vec<super::super::types::Extension>,
86    #[doc = "Classification of the status."]
87    pub r#activity: Box<super::super::types::CodeableConcept>,
88    #[doc = "Either occurred or expected."]
89    pub r#actual: Option<super::super::types::Boolean>,
90    #[doc = "When the status started and/or ended."]
91    pub r#period: Box<super::super::types::Period>,
92}
93#[allow(clippy::derivable_impls)]
94impl Default for CitationStatusDate {
95    fn default() -> Self {
96        Self {
97            r#id: Default::default(),
98            r#extension: Default::default(),
99            r#modifier_extension: Default::default(),
100            r#activity: Box::new(super::super::types::CodeableConcept {
101                id: Some("$invalid".to_string()),
102                ..Default::default()
103            }),
104            r#actual: Default::default(),
105            r#period: Box::new(super::super::types::Period {
106                id: Some("$invalid".to_string()),
107                ..Default::default()
108            }),
109        }
110    }
111}
112#[doc = "Artifact related to the Citation Resource."]
113#[derive(Debug, Clone, PartialEq)]
114pub struct CitationRelatesTo {
115    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
116    pub r#id: Option<std::string::String>,
117    #[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."]
118    pub r#extension: Vec<super::super::types::Extension>,
119    #[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)."]
120    pub r#modifier_extension: Vec<super::super::types::Extension>,
121    #[doc = "How the Citation resource relates to the target artifact."]
122    pub r#relationship_type: Box<super::super::types::CodeableConcept>,
123    #[doc = "The clasification of the related artifact."]
124    pub r#target_classifier: Vec<super::super::types::CodeableConcept>,
125    #[doc = "The article or artifact that the Citation Resource is related to."]
126    pub r#target: CitationRelatesToTarget,
127}
128#[allow(clippy::derivable_impls)]
129impl Default for CitationRelatesTo {
130    fn default() -> Self {
131        Self {
132            r#id: Default::default(),
133            r#extension: Default::default(),
134            r#modifier_extension: Default::default(),
135            r#relationship_type: Box::new(super::super::types::CodeableConcept {
136                id: Some("$invalid".to_string()),
137                ..Default::default()
138            }),
139            r#target_classifier: Default::default(),
140            r#target: Default::default(),
141        }
142    }
143}
144#[doc = "The defined version of the cited artifact."]
145#[derive(Debug, Clone, PartialEq)]
146pub struct CitationCitedArtifactVersion {
147    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
148    pub r#id: Option<std::string::String>,
149    #[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."]
150    pub r#extension: Vec<super::super::types::Extension>,
151    #[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)."]
152    pub r#modifier_extension: Vec<super::super::types::Extension>,
153    #[doc = "The version number or other version identifier."]
154    pub r#value: super::super::types::String,
155    #[doc = "Citation for the main version of the cited artifact."]
156    pub r#base_citation: Option<Box<super::super::types::Reference>>,
157}
158#[allow(clippy::derivable_impls)]
159impl Default for CitationCitedArtifactVersion {
160    fn default() -> Self {
161        Self {
162            r#id: Default::default(),
163            r#extension: Default::default(),
164            r#modifier_extension: Default::default(),
165            r#value: super::super::types::String {
166                id: Some("$invalid".to_string()),
167                ..Default::default()
168            },
169            r#base_citation: Default::default(),
170        }
171    }
172}
173#[doc = "An effective date or period for a status of the cited artifact."]
174#[derive(Debug, Clone, PartialEq)]
175pub struct CitationCitedArtifactStatusDate {
176    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
177    pub r#id: Option<std::string::String>,
178    #[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."]
179    pub r#extension: Vec<super::super::types::Extension>,
180    #[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)."]
181    pub r#modifier_extension: Vec<super::super::types::Extension>,
182    #[doc = "Classification of the status."]
183    pub r#activity: Box<super::super::types::CodeableConcept>,
184    #[doc = "Either occurred or expected."]
185    pub r#actual: Option<super::super::types::Boolean>,
186    #[doc = "When the status started and/or ended."]
187    pub r#period: Box<super::super::types::Period>,
188}
189#[allow(clippy::derivable_impls)]
190impl Default for CitationCitedArtifactStatusDate {
191    fn default() -> Self {
192        Self {
193            r#id: Default::default(),
194            r#extension: Default::default(),
195            r#modifier_extension: Default::default(),
196            r#activity: Box::new(super::super::types::CodeableConcept {
197                id: Some("$invalid".to_string()),
198                ..Default::default()
199            }),
200            r#actual: Default::default(),
201            r#period: Box::new(super::super::types::Period {
202                id: Some("$invalid".to_string()),
203                ..Default::default()
204            }),
205        }
206    }
207}
208#[doc = "The title details of the article or artifact."]
209#[derive(Debug, Clone, PartialEq)]
210pub struct CitationCitedArtifactTitle {
211    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
212    pub r#id: Option<std::string::String>,
213    #[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."]
214    pub r#extension: Vec<super::super::types::Extension>,
215    #[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)."]
216    pub r#modifier_extension: Vec<super::super::types::Extension>,
217    #[doc = "Used to express the reason or specific aspect for the title."]
218    pub r#type: Vec<super::super::types::CodeableConcept>,
219    #[doc = "Used to express the specific language."]
220    pub r#language: Option<Box<super::super::types::CodeableConcept>>,
221    #[doc = "The title of the article or artifact."]
222    pub r#text: super::super::types::Markdown,
223}
224#[allow(clippy::derivable_impls)]
225impl Default for CitationCitedArtifactTitle {
226    fn default() -> Self {
227        Self {
228            r#id: Default::default(),
229            r#extension: Default::default(),
230            r#modifier_extension: Default::default(),
231            r#type: Default::default(),
232            r#language: Default::default(),
233            r#text: super::super::types::Markdown {
234                id: Some("$invalid".to_string()),
235                ..Default::default()
236            },
237        }
238    }
239}
240#[doc = "Summary of the article or artifact."]
241#[derive(Debug, Clone, PartialEq)]
242pub struct CitationCitedArtifactAbstract {
243    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
244    pub r#id: Option<std::string::String>,
245    #[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."]
246    pub r#extension: Vec<super::super::types::Extension>,
247    #[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)."]
248    pub r#modifier_extension: Vec<super::super::types::Extension>,
249    #[doc = "Used to express the reason or specific aspect for the abstract."]
250    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
251    #[doc = "Used to express the specific language."]
252    pub r#language: Option<Box<super::super::types::CodeableConcept>>,
253    #[doc = "Abstract content."]
254    pub r#text: super::super::types::Markdown,
255    #[doc = "Copyright notice for the abstract."]
256    pub r#copyright: Option<super::super::types::Markdown>,
257}
258#[allow(clippy::derivable_impls)]
259impl Default for CitationCitedArtifactAbstract {
260    fn default() -> Self {
261        Self {
262            r#id: Default::default(),
263            r#extension: Default::default(),
264            r#modifier_extension: Default::default(),
265            r#type: Default::default(),
266            r#language: Default::default(),
267            r#text: super::super::types::Markdown {
268                id: Some("$invalid".to_string()),
269                ..Default::default()
270            },
271            r#copyright: Default::default(),
272        }
273    }
274}
275#[doc = "The component of the article or artifact."]
276#[derive(Debug, Clone, PartialEq)]
277pub struct CitationCitedArtifactPart {
278    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
279    pub r#id: Option<std::string::String>,
280    #[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."]
281    pub r#extension: Vec<super::super::types::Extension>,
282    #[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)."]
283    pub r#modifier_extension: Vec<super::super::types::Extension>,
284    #[doc = "The kind of component."]
285    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
286    #[doc = "The specification of the component."]
287    pub r#value: Option<super::super::types::String>,
288    #[doc = "The citation for the full article or artifact."]
289    pub r#base_citation: Option<Box<super::super::types::Reference>>,
290}
291#[allow(clippy::derivable_impls)]
292impl Default for CitationCitedArtifactPart {
293    fn default() -> Self {
294        Self {
295            r#id: Default::default(),
296            r#extension: Default::default(),
297            r#modifier_extension: Default::default(),
298            r#type: Default::default(),
299            r#value: Default::default(),
300            r#base_citation: Default::default(),
301        }
302    }
303}
304#[doc = "The artifact related to the cited artifact."]
305#[derive(Debug, Clone, PartialEq)]
306pub struct CitationCitedArtifactRelatesTo {
307    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
308    pub r#id: Option<std::string::String>,
309    #[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."]
310    pub r#extension: Vec<super::super::types::Extension>,
311    #[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)."]
312    pub r#modifier_extension: Vec<super::super::types::Extension>,
313    #[doc = "How the cited artifact relates to the target artifact."]
314    pub r#relationship_type: Box<super::super::types::CodeableConcept>,
315    #[doc = "The clasification of the related artifact."]
316    pub r#target_classifier: Vec<super::super::types::CodeableConcept>,
317    #[doc = "The article or artifact that the cited artifact is related to."]
318    pub r#target: CitationCitedArtifactRelatesToTarget,
319}
320#[allow(clippy::derivable_impls)]
321impl Default for CitationCitedArtifactRelatesTo {
322    fn default() -> Self {
323        Self {
324            r#id: Default::default(),
325            r#extension: Default::default(),
326            r#modifier_extension: Default::default(),
327            r#relationship_type: Box::new(super::super::types::CodeableConcept {
328                id: Some("$invalid".to_string()),
329                ..Default::default()
330            }),
331            r#target_classifier: Default::default(),
332            r#target: Default::default(),
333        }
334    }
335}
336#[doc = "The collection the cited article or artifact is published in."]
337#[derive(Debug, Clone, PartialEq)]
338pub struct CitationCitedArtifactPublicationFormPublishedIn {
339    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
340    pub r#id: Option<std::string::String>,
341    #[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."]
342    pub r#extension: Vec<super::super::types::Extension>,
343    #[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)."]
344    pub r#modifier_extension: Vec<super::super::types::Extension>,
345    #[doc = "Kind of container (e.g. Periodical, database, or book)."]
346    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
347    #[doc = "Journal identifiers include ISSN, ISO Abbreviation and NLMuniqueID; Book identifiers include ISBN."]
348    pub r#identifier: Vec<super::super::types::Identifier>,
349    #[doc = "Name of the database or title of the book or journal."]
350    pub r#title: Option<super::super::types::String>,
351    #[doc = "Name of the publisher."]
352    pub r#publisher: Option<Box<super::super::types::Reference>>,
353    #[doc = "Geographic location of the publisher."]
354    pub r#publisher_location: Option<super::super::types::String>,
355}
356#[allow(clippy::derivable_impls)]
357impl Default for CitationCitedArtifactPublicationFormPublishedIn {
358    fn default() -> Self {
359        Self {
360            r#id: Default::default(),
361            r#extension: Default::default(),
362            r#modifier_extension: Default::default(),
363            r#type: Default::default(),
364            r#identifier: Default::default(),
365            r#title: Default::default(),
366            r#publisher: Default::default(),
367            r#publisher_location: Default::default(),
368        }
369    }
370}
371#[doc = "Defining the date on which the issue of the journal was published."]
372#[derive(Debug, Clone, PartialEq)]
373pub struct CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublication {
374    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
375    pub r#id: Option<std::string::String>,
376    #[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."]
377    pub r#extension: Vec<super::super::types::Extension>,
378    #[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)."]
379    pub r#modifier_extension: Vec<super::super::types::Extension>,
380    #[doc = "Date on which the issue of the journal was published."]
381    pub r#date: Option<super::super::types::Date>,
382    #[doc = "Year on which the issue of the journal was published."]
383    pub r#year: Option<super::super::types::String>,
384    #[doc = "Month on which the issue of the journal was published."]
385    pub r#month: Option<super::super::types::String>,
386    #[doc = "Day on which the issue of the journal was published."]
387    pub r#day: Option<super::super::types::String>,
388    #[doc = "Spring, Summer, Fall/Autumn, Winter."]
389    pub r#season: Option<super::super::types::String>,
390    #[doc = "Text representation of the date of which the issue of the journal was published."]
391    pub r#text: Option<super::super::types::String>,
392}
393#[allow(clippy::derivable_impls)]
394impl Default for CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublication {
395    fn default() -> Self {
396        Self {
397            r#id: Default::default(),
398            r#extension: Default::default(),
399            r#modifier_extension: Default::default(),
400            r#date: Default::default(),
401            r#year: Default::default(),
402            r#month: Default::default(),
403            r#day: Default::default(),
404            r#season: Default::default(),
405            r#text: Default::default(),
406        }
407    }
408}
409#[doc = "The specific issue in which the cited article resides."]
410#[derive(Debug, Clone, PartialEq)]
411pub struct CitationCitedArtifactPublicationFormPeriodicRelease {
412    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
413    pub r#id: Option<std::string::String>,
414    #[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."]
415    pub r#extension: Vec<super::super::types::Extension>,
416    #[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)."]
417    pub r#modifier_extension: Vec<super::super::types::Extension>,
418    #[doc = "Describes the form of the medium cited. Common codes are \"Internet\" or \"Print\"."]
419    pub r#cited_medium: Option<Box<super::super::types::CodeableConcept>>,
420    #[doc = "Volume number of journal in which the article is published."]
421    pub r#volume: Option<super::super::types::String>,
422    #[doc = "Issue, part or supplement of journal in which the article is published."]
423    pub r#issue: Option<super::super::types::String>,
424    #[doc = "Defining the date on which the issue of the journal was published."]
425    pub r#date_of_publication:
426        Option<CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublication>,
427}
428#[allow(clippy::derivable_impls)]
429impl Default for CitationCitedArtifactPublicationFormPeriodicRelease {
430    fn default() -> Self {
431        Self {
432            r#id: Default::default(),
433            r#extension: Default::default(),
434            r#modifier_extension: Default::default(),
435            r#cited_medium: Default::default(),
436            r#volume: Default::default(),
437            r#issue: Default::default(),
438            r#date_of_publication: Default::default(),
439        }
440    }
441}
442#[doc = "If multiple, used to represent alternative forms of the article that are not separate citations."]
443#[derive(Debug, Clone, PartialEq)]
444pub struct CitationCitedArtifactPublicationForm {
445    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
446    pub r#id: Option<std::string::String>,
447    #[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."]
448    pub r#extension: Vec<super::super::types::Extension>,
449    #[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)."]
450    pub r#modifier_extension: Vec<super::super::types::Extension>,
451    #[doc = "The collection the cited article or artifact is published in."]
452    pub r#published_in: Option<CitationCitedArtifactPublicationFormPublishedIn>,
453    #[doc = "The specific issue in which the cited article resides."]
454    pub r#periodic_release: Option<CitationCitedArtifactPublicationFormPeriodicRelease>,
455    #[doc = "The date the article was added to the database, or the date the article was released (which may differ from the journal issue publication date)."]
456    pub r#article_date: Option<super::super::types::DateTime>,
457    #[doc = "The date the article was last revised or updated in the database."]
458    pub r#last_revision_date: Option<super::super::types::DateTime>,
459    #[doc = "Language in which this form of the article is published."]
460    pub r#language: Vec<super::super::types::CodeableConcept>,
461    #[doc = "Entry number or identifier for inclusion in a database."]
462    pub r#accession_number: Option<super::super::types::String>,
463    #[doc = "Used for full display of pagination."]
464    pub r#page_string: Option<super::super::types::String>,
465    #[doc = "Used for isolated representation of first page."]
466    pub r#first_page: Option<super::super::types::String>,
467    #[doc = "Used for isolated representation of last page."]
468    pub r#last_page: Option<super::super::types::String>,
469    #[doc = "Actual or approximate number of pages or screens."]
470    pub r#page_count: Option<super::super::types::String>,
471    #[doc = "Copyright notice for the full article or artifact."]
472    pub r#copyright: Option<super::super::types::Markdown>,
473}
474#[allow(clippy::derivable_impls)]
475impl Default for CitationCitedArtifactPublicationForm {
476    fn default() -> Self {
477        Self {
478            r#id: Default::default(),
479            r#extension: Default::default(),
480            r#modifier_extension: Default::default(),
481            r#published_in: Default::default(),
482            r#periodic_release: Default::default(),
483            r#article_date: Default::default(),
484            r#last_revision_date: Default::default(),
485            r#language: Default::default(),
486            r#accession_number: Default::default(),
487            r#page_string: Default::default(),
488            r#first_page: Default::default(),
489            r#last_page: Default::default(),
490            r#page_count: Default::default(),
491            r#copyright: Default::default(),
492        }
493    }
494}
495#[doc = "Used for any URL for the article or artifact cited."]
496#[derive(Debug, Clone, PartialEq)]
497pub struct CitationCitedArtifactWebLocation {
498    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
499    pub r#id: Option<std::string::String>,
500    #[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."]
501    pub r#extension: Vec<super::super::types::Extension>,
502    #[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)."]
503    pub r#modifier_extension: Vec<super::super::types::Extension>,
504    #[doc = "Code the reason for different URLs, e.g. abstract and full-text."]
505    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
506    #[doc = "The specific URL."]
507    pub r#url: Option<super::super::types::Uri>,
508}
509#[allow(clippy::derivable_impls)]
510impl Default for CitationCitedArtifactWebLocation {
511    fn default() -> Self {
512        Self {
513            r#id: Default::default(),
514            r#extension: Default::default(),
515            r#modifier_extension: Default::default(),
516            r#type: Default::default(),
517            r#url: Default::default(),
518        }
519    }
520}
521#[doc = "Provenance and copyright of classification."]
522#[derive(Debug, Clone, PartialEq)]
523pub struct CitationCitedArtifactClassificationWhoClassified {
524    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
525    pub r#id: Option<std::string::String>,
526    #[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."]
527    pub r#extension: Vec<super::super::types::Extension>,
528    #[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)."]
529    pub r#modifier_extension: Vec<super::super::types::Extension>,
530    #[doc = "Person who created the classification."]
531    pub r#person: Option<Box<super::super::types::Reference>>,
532    #[doc = "Organization who created the classification."]
533    pub r#organization: Option<Box<super::super::types::Reference>>,
534    #[doc = "The publisher of the classification, not the publisher of the article or artifact being cited."]
535    pub r#publisher: Option<Box<super::super::types::Reference>>,
536    #[doc = "Rights management statement for the classification."]
537    pub r#classifier_copyright: Option<super::super::types::String>,
538    #[doc = "Acceptable to re-use the classification."]
539    pub r#free_to_share: Option<super::super::types::Boolean>,
540}
541#[allow(clippy::derivable_impls)]
542impl Default for CitationCitedArtifactClassificationWhoClassified {
543    fn default() -> Self {
544        Self {
545            r#id: Default::default(),
546            r#extension: Default::default(),
547            r#modifier_extension: Default::default(),
548            r#person: Default::default(),
549            r#organization: Default::default(),
550            r#publisher: Default::default(),
551            r#classifier_copyright: Default::default(),
552            r#free_to_share: Default::default(),
553        }
554    }
555}
556#[doc = "The assignment to an organizing scheme."]
557#[derive(Debug, Clone, PartialEq)]
558pub struct CitationCitedArtifactClassification {
559    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
560    pub r#id: Option<std::string::String>,
561    #[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."]
562    pub r#extension: Vec<super::super::types::Extension>,
563    #[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)."]
564    pub r#modifier_extension: Vec<super::super::types::Extension>,
565    #[doc = "The kind of classifier (e.g. publication type, keyword)."]
566    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
567    #[doc = "The specific classification value."]
568    pub r#classifier: Vec<super::super::types::CodeableConcept>,
569    #[doc = "Provenance and copyright of classification."]
570    pub r#who_classified: Option<CitationCitedArtifactClassificationWhoClassified>,
571}
572#[allow(clippy::derivable_impls)]
573impl Default for CitationCitedArtifactClassification {
574    fn default() -> Self {
575        Self {
576            r#id: Default::default(),
577            r#extension: Default::default(),
578            r#modifier_extension: Default::default(),
579            r#type: Default::default(),
580            r#classifier: Default::default(),
581            r#who_classified: Default::default(),
582        }
583    }
584}
585#[doc = "Organization affiliated with the entity."]
586#[derive(Debug, Clone, PartialEq)]
587pub struct CitationCitedArtifactContributorshipEntryAffiliationInfo {
588    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
589    pub r#id: Option<std::string::String>,
590    #[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."]
591    pub r#extension: Vec<super::super::types::Extension>,
592    #[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)."]
593    pub r#modifier_extension: Vec<super::super::types::Extension>,
594    #[doc = "Display for the organization."]
595    pub r#affiliation: Option<super::super::types::String>,
596    #[doc = "Role within the organization, such as professional title."]
597    pub r#role: Option<super::super::types::String>,
598    #[doc = "Identifier for the organization."]
599    pub r#identifier: Vec<super::super::types::Identifier>,
600}
601#[allow(clippy::derivable_impls)]
602impl Default for CitationCitedArtifactContributorshipEntryAffiliationInfo {
603    fn default() -> Self {
604        Self {
605            r#id: Default::default(),
606            r#extension: Default::default(),
607            r#modifier_extension: Default::default(),
608            r#affiliation: Default::default(),
609            r#role: Default::default(),
610            r#identifier: Default::default(),
611        }
612    }
613}
614#[doc = "Contributions with accounting for time or number."]
615#[derive(Debug, Clone, PartialEq)]
616pub struct CitationCitedArtifactContributorshipEntryContributionInstance {
617    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
618    pub r#id: Option<std::string::String>,
619    #[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."]
620    pub r#extension: Vec<super::super::types::Extension>,
621    #[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)."]
622    pub r#modifier_extension: Vec<super::super::types::Extension>,
623    #[doc = "The specific contribution."]
624    pub r#type: Box<super::super::types::CodeableConcept>,
625    #[doc = "The time that the contribution was made."]
626    pub r#time: Option<super::super::types::DateTime>,
627}
628#[allow(clippy::derivable_impls)]
629impl Default for CitationCitedArtifactContributorshipEntryContributionInstance {
630    fn default() -> Self {
631        Self {
632            r#id: Default::default(),
633            r#extension: Default::default(),
634            r#modifier_extension: Default::default(),
635            r#type: Box::new(super::super::types::CodeableConcept {
636                id: Some("$invalid".to_string()),
637                ..Default::default()
638            }),
639            r#time: Default::default(),
640        }
641    }
642}
643#[doc = "An individual entity named in the author list or contributor list."]
644#[derive(Debug, Clone, PartialEq)]
645pub struct CitationCitedArtifactContributorshipEntry {
646    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
647    pub r#id: Option<std::string::String>,
648    #[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."]
649    pub r#extension: Vec<super::super::types::Extension>,
650    #[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)."]
651    pub r#modifier_extension: Vec<super::super::types::Extension>,
652    #[doc = "A name associated with the individual."]
653    pub r#name: Option<Box<super::super::types::HumanName>>,
654    #[doc = "Initials for forename."]
655    pub r#initials: Option<super::super::types::String>,
656    #[doc = "Used for collective or corporate name as an author."]
657    pub r#collective_name: Option<super::super::types::String>,
658    #[doc = "Unique person identifier."]
659    pub r#identifier: Vec<super::super::types::Identifier>,
660    #[doc = "Organization affiliated with the entity."]
661    pub r#affiliation_info: Vec<CitationCitedArtifactContributorshipEntryAffiliationInfo>,
662    #[doc = "Physical mailing address for the author or contributor."]
663    pub r#address: Vec<super::super::types::Address>,
664    #[doc = "Email or telephone contact methods for the author or contributor."]
665    pub r#telecom: Vec<super::super::types::ContactPoint>,
666    #[doc = "This element identifies the specific nature of an individual’s contribution with respect to the cited work."]
667    pub r#contribution_type: Vec<super::super::types::CodeableConcept>,
668    #[doc = "The role of the contributor (e.g. author, editor, reviewer)."]
669    pub r#role: Option<Box<super::super::types::CodeableConcept>>,
670    #[doc = "Contributions with accounting for time or number."]
671    pub r#contribution_instance: Vec<CitationCitedArtifactContributorshipEntryContributionInstance>,
672    #[doc = "Indication of which contributor is the corresponding contributor for the role."]
673    pub r#corresponding_contact: Option<super::super::types::Boolean>,
674    #[doc = "Used to code order of authors."]
675    pub r#list_order: Option<super::super::types::PositiveInt>,
676}
677#[allow(clippy::derivable_impls)]
678impl Default for CitationCitedArtifactContributorshipEntry {
679    fn default() -> Self {
680        Self {
681            r#id: Default::default(),
682            r#extension: Default::default(),
683            r#modifier_extension: Default::default(),
684            r#name: Default::default(),
685            r#initials: Default::default(),
686            r#collective_name: Default::default(),
687            r#identifier: Default::default(),
688            r#affiliation_info: Default::default(),
689            r#address: Default::default(),
690            r#telecom: Default::default(),
691            r#contribution_type: Default::default(),
692            r#role: Default::default(),
693            r#contribution_instance: Default::default(),
694            r#corresponding_contact: Default::default(),
695            r#list_order: Default::default(),
696        }
697    }
698}
699#[doc = "Used to record a display of the author/contributor list without separate coding for each list member."]
700#[derive(Debug, Clone, PartialEq)]
701pub struct CitationCitedArtifactContributorshipSummary {
702    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
703    pub r#id: Option<std::string::String>,
704    #[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."]
705    pub r#extension: Vec<super::super::types::Extension>,
706    #[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)."]
707    pub r#modifier_extension: Vec<super::super::types::Extension>,
708    #[doc = "Used most commonly to express an author list or a contributorship statement."]
709    pub r#type: Option<Box<super::super::types::CodeableConcept>>,
710    #[doc = "The format for the display string."]
711    pub r#style: Option<Box<super::super::types::CodeableConcept>>,
712    #[doc = "Used to code the producer or rule for creating the display string."]
713    pub r#source: Option<Box<super::super::types::CodeableConcept>>,
714    #[doc = "The display string for the author list, contributor list, or contributorship statement."]
715    pub r#value: super::super::types::Markdown,
716}
717#[allow(clippy::derivable_impls)]
718impl Default for CitationCitedArtifactContributorshipSummary {
719    fn default() -> Self {
720        Self {
721            r#id: Default::default(),
722            r#extension: Default::default(),
723            r#modifier_extension: Default::default(),
724            r#type: Default::default(),
725            r#style: Default::default(),
726            r#source: Default::default(),
727            r#value: super::super::types::Markdown {
728                id: Some("$invalid".to_string()),
729                ..Default::default()
730            },
731        }
732    }
733}
734#[doc = "This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements."]
735#[derive(Debug, Clone, PartialEq)]
736pub struct CitationCitedArtifactContributorship {
737    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
738    pub r#id: Option<std::string::String>,
739    #[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."]
740    pub r#extension: Vec<super::super::types::Extension>,
741    #[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)."]
742    pub r#modifier_extension: Vec<super::super::types::Extension>,
743    #[doc = "Indicates if the list includes all authors and/or contributors."]
744    pub r#complete: Option<super::super::types::Boolean>,
745    #[doc = "An individual entity named in the author list or contributor list."]
746    pub r#entry: Vec<CitationCitedArtifactContributorshipEntry>,
747    #[doc = "Used to record a display of the author/contributor list without separate coding for each list member."]
748    pub r#summary: Vec<CitationCitedArtifactContributorshipSummary>,
749}
750#[allow(clippy::derivable_impls)]
751impl Default for CitationCitedArtifactContributorship {
752    fn default() -> Self {
753        Self {
754            r#id: Default::default(),
755            r#extension: Default::default(),
756            r#modifier_extension: Default::default(),
757            r#complete: Default::default(),
758            r#entry: Default::default(),
759            r#summary: Default::default(),
760        }
761    }
762}
763#[doc = "The article or artifact being described."]
764#[derive(Debug, Clone, PartialEq)]
765pub struct CitationCitedArtifact {
766    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
767    pub r#id: Option<std::string::String>,
768    #[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."]
769    pub r#extension: Vec<super::super::types::Extension>,
770    #[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)."]
771    pub r#modifier_extension: Vec<super::super::types::Extension>,
772    #[doc = "A formal identifier that is used to identify this citation when it is represented in other formats, or referenced in a specification, model, design or an instance."]
773    pub r#identifier: Vec<super::super::types::Identifier>,
774    #[doc = "A formal identifier that is used to identify things closely related to this citation."]
775    pub r#related_identifier: Vec<super::super::types::Identifier>,
776    #[doc = "When the cited artifact was accessed."]
777    pub r#date_accessed: Option<super::super::types::DateTime>,
778    #[doc = "The defined version of the cited artifact."]
779    pub r#version: Option<CitationCitedArtifactVersion>,
780    #[doc = "The status of the cited artifact."]
781    pub r#current_state: Vec<super::super::types::CodeableConcept>,
782    #[doc = "An effective date or period for a status of the cited artifact."]
783    pub r#status_date: Vec<CitationCitedArtifactStatusDate>,
784    #[doc = "The title details of the article or artifact."]
785    pub r#title: Vec<CitationCitedArtifactTitle>,
786    #[doc = "Summary of the article or artifact."]
787    pub r#abstract: Vec<CitationCitedArtifactAbstract>,
788    #[doc = "The component of the article or artifact."]
789    pub r#part: Option<CitationCitedArtifactPart>,
790    #[doc = "The artifact related to the cited artifact."]
791    pub r#relates_to: Vec<CitationCitedArtifactRelatesTo>,
792    #[doc = "If multiple, used to represent alternative forms of the article that are not separate citations."]
793    pub r#publication_form: Vec<CitationCitedArtifactPublicationForm>,
794    #[doc = "Used for any URL for the article or artifact cited."]
795    pub r#web_location: Vec<CitationCitedArtifactWebLocation>,
796    #[doc = "The assignment to an organizing scheme."]
797    pub r#classification: Vec<CitationCitedArtifactClassification>,
798    #[doc = "This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements."]
799    pub r#contributorship: Option<CitationCitedArtifactContributorship>,
800    #[doc = "Any additional information or content for the article or artifact."]
801    pub r#note: Vec<super::super::types::Annotation>,
802}
803#[allow(clippy::derivable_impls)]
804impl Default for CitationCitedArtifact {
805    fn default() -> Self {
806        Self {
807            r#id: Default::default(),
808            r#extension: Default::default(),
809            r#modifier_extension: Default::default(),
810            r#identifier: Default::default(),
811            r#related_identifier: Default::default(),
812            r#date_accessed: Default::default(),
813            r#version: Default::default(),
814            r#current_state: Default::default(),
815            r#status_date: Default::default(),
816            r#title: Default::default(),
817            r#abstract: Default::default(),
818            r#part: Default::default(),
819            r#relates_to: Default::default(),
820            r#publication_form: Default::default(),
821            r#web_location: Default::default(),
822            r#classification: Default::default(),
823            r#contributorship: Default::default(),
824            r#note: Default::default(),
825        }
826    }
827}
828#[doc = "The Citation Resource enables reference to any knowledge artifact for purposes of identification and attribution. The Citation Resource supports existing reference structures and developing publication practices such as versioning, expressing complex contributorship roles, and referencing computable resources."]
829#[derive(Debug, Clone, PartialEq)]
830pub struct Citation {
831    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
832    pub r#id: Option<super::super::types::Id>,
833    #[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."]
834    pub r#meta: Option<Box<super::super::types::Meta>>,
835    #[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."]
836    pub r#implicit_rules: Option<super::super::types::Uri>,
837    #[doc = "The base language in which the resource is written."]
838    pub r#language: Option<super::super::types::Code>,
839    #[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."]
840    pub r#text: Option<Box<super::super::types::Narrative>>,
841    #[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."]
842    pub r#contained: Vec<super::super::Resource>,
843    #[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."]
844    pub r#extension: Vec<super::super::types::Extension>,
845    #[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)."]
846    pub r#modifier_extension: Vec<super::super::types::Extension>,
847    #[doc = "An absolute URI that is used to identify this citation 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 summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers."]
848    pub r#url: Option<super::super::types::Uri>,
849    #[doc = "A formal identifier that is used to identify this citation when it is represented in other formats, or referenced in a specification, model, design or an instance."]
850    pub r#identifier: Vec<super::super::types::Identifier>,
851    #[doc = "The identifier that is used to identify this version of the citation when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation 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."]
852    pub r#version: Option<super::super::types::String>,
853    #[doc = "A natural language name identifying the citation. This name should be usable as an identifier for the module by machine processing applications such as code generation."]
854    pub r#name: Option<super::super::types::String>,
855    #[doc = "A short, descriptive, user-friendly title for the citation."]
856    pub r#title: Option<super::super::types::String>,
857    #[doc = "The status of this summary. Enables tracking the life-cycle of the content."]
858    pub r#status: super::super::types::Code,
859    #[doc = "A Boolean value to indicate that this citation is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage."]
860    pub r#experimental: Option<super::super::types::Boolean>,
861    #[doc = "The date  (and optionally time) when the citation was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation changes."]
862    pub r#date: Option<super::super::types::DateTime>,
863    #[doc = "The name of the organization or individual that published the citation."]
864    pub r#publisher: Option<super::super::types::String>,
865    #[doc = "Contact details to assist a user in finding and communicating with the publisher."]
866    pub r#contact: Vec<super::super::types::ContactDetail>,
867    #[doc = "A free text natural language description of the citation from a consumer's perspective."]
868    pub r#description: Option<super::super::types::Markdown>,
869    #[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 citation instances."]
870    pub r#use_context: Vec<super::super::types::UsageContext>,
871    #[doc = "A legal or geographic region in which the citation is intended to be used."]
872    pub r#jurisdiction: Vec<super::super::types::CodeableConcept>,
873    #[doc = "Explanation of why this citation is needed and why it has been designed as it has."]
874    pub r#purpose: Option<super::super::types::Markdown>,
875    #[doc = "Use and/or publishing restrictions for the Citation, not for the cited artifact."]
876    pub r#copyright: Option<super::super::types::Markdown>,
877    #[doc = "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage."]
878    pub r#approval_date: Option<super::super::types::Date>,
879    #[doc = "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date."]
880    pub r#last_review_date: Option<super::super::types::Date>,
881    #[doc = "The period during which the citation content was or is planned to be in active use."]
882    pub r#effective_period: Option<Box<super::super::types::Period>>,
883    #[doc = "Who authored the Citation."]
884    pub r#author: Vec<super::super::types::ContactDetail>,
885    #[doc = "Who edited the Citation."]
886    pub r#editor: Vec<super::super::types::ContactDetail>,
887    #[doc = "Who reviewed the Citation."]
888    pub r#reviewer: Vec<super::super::types::ContactDetail>,
889    #[doc = "Who endorsed the Citation."]
890    pub r#endorser: Vec<super::super::types::ContactDetail>,
891    #[doc = "A human-readable display of the citation."]
892    pub r#summary: Vec<CitationSummary>,
893    #[doc = "The assignment to an organizing scheme."]
894    pub r#classification: Vec<CitationClassification>,
895    #[doc = "Used for general notes and annotations not coded elsewhere."]
896    pub r#note: Vec<super::super::types::Annotation>,
897    #[doc = "The status of the citation."]
898    pub r#current_state: Vec<super::super::types::CodeableConcept>,
899    #[doc = "An effective date or period for a status of the citation."]
900    pub r#status_date: Vec<CitationStatusDate>,
901    #[doc = "Artifact related to the Citation Resource."]
902    pub r#relates_to: Vec<CitationRelatesTo>,
903    #[doc = "The article or artifact being described."]
904    pub r#cited_artifact: Option<CitationCitedArtifact>,
905}
906#[allow(clippy::derivable_impls)]
907impl Default for Citation {
908    fn default() -> Self {
909        Self {
910            r#id: Default::default(),
911            r#meta: Default::default(),
912            r#implicit_rules: Default::default(),
913            r#language: Default::default(),
914            r#text: Default::default(),
915            r#contained: Default::default(),
916            r#extension: Default::default(),
917            r#modifier_extension: Default::default(),
918            r#url: Default::default(),
919            r#identifier: Default::default(),
920            r#version: Default::default(),
921            r#name: Default::default(),
922            r#title: Default::default(),
923            r#status: super::super::types::Code {
924                id: Some("$invalid".to_string()),
925                ..Default::default()
926            },
927            r#experimental: Default::default(),
928            r#date: Default::default(),
929            r#publisher: Default::default(),
930            r#contact: Default::default(),
931            r#description: Default::default(),
932            r#use_context: Default::default(),
933            r#jurisdiction: Default::default(),
934            r#purpose: Default::default(),
935            r#copyright: Default::default(),
936            r#approval_date: Default::default(),
937            r#last_review_date: Default::default(),
938            r#effective_period: Default::default(),
939            r#author: Default::default(),
940            r#editor: Default::default(),
941            r#reviewer: Default::default(),
942            r#endorser: Default::default(),
943            r#summary: Default::default(),
944            r#classification: Default::default(),
945            r#note: Default::default(),
946            r#current_state: Default::default(),
947            r#status_date: Default::default(),
948            r#relates_to: Default::default(),
949            r#cited_artifact: Default::default(),
950        }
951    }
952}