fhir_rs/resource/r5/
permission.rs

1use crate::prelude::*;
2
3#[derive(Resource, Debug, Clone, Default)]
4#[fhir(base="DomainResource")]
5pub struct Permission {
6    /// Logical id of this artifact
7    #[fhir(name="id", min="0", max="1", summary=true, modifier=false, choice="")]
8    pub id: Option<Id>,
9    /// Metadata about the resource
10    #[fhir(name="meta", min="0", max="1", summary=true, modifier=false, choice="")]
11    pub meta: Option<Meta>,
12    /// A set of rules under which this content was created
13    #[fhir(name="implicitRules", min="0", max="1", summary=true, modifier=true)]
14    pub implicit_rules: Option<UriDt>,
15    /// Language of the resource content
16    #[fhir(name="language", min="0", max="1", summary=false, modifier=false, choice="")]
17    pub language: Option<CodeDt>,
18    /// Text summary of the resource, for human interpretation
19    #[fhir(name="text", min="0", max="1", summary=false, modifier=false, choice="")]
20    pub text: Option<Narrative>,
21    /// Contained, inline Resources
22    #[fhir(name="contained", min="0", max="*", summary=false, modifier=false, choice="")]
23    pub contained: Option<Vec<AnyResource>>,
24    /// Additional content defined by implementations
25    #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
26    pub extension: Option<Vec<Extension>>,
27    /// Extensions that cannot be ignored
28    #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
29    pub modifier_extension: Option<Vec<Extension>>,
30    /// active | entered-in-error | draft | rejected
31    #[fhir(name="status", min="1", max="1", summary=true, modifier=false, choice="")]
32    pub status: Option<CodeDt>,
33    /// The person or entity that asserts the permission
34    #[fhir(name="asserter", min="0", max="1", summary=true, modifier=false, choice="")]
35    pub asserter: Option<Reference>,
36    /// The date that permission was asserted
37    #[fhir(name="date", min="0", max="*", summary=true, modifier=false, choice="")]
38    pub date: Option<Vec<DateTimeDt>>,
39    /// The period in which the permission is active
40    #[fhir(name="validity", min="0", max="1", summary=true, modifier=false, choice="")]
41    pub validity: Option<Period>,
42    /// The asserted justification for using the data
43    #[fhir(name="justification", min="0", max="1", summary=true, modifier=false, choice="")]
44    pub justification: Option<PermissionJustificationBackboneElement>,
45    /// deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny
46    #[fhir(name="combining", min="1", max="1", summary=true, modifier=true)]
47    pub combining: Option<CodeDt>,
48    /// Constraints to the Permission
49    #[fhir(name="rule", min="0", max="*", summary=true, modifier=false, choice="")]
50    pub rule: Option<Vec<PermissionRuleBackboneElement>>,
51}
52
53#[derive(Element, BackboneElement, Debug, Clone, Default)]
54pub struct PermissionJustificationBackboneElement {
55    /// Unique id for inter-element referencing
56    #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
57    pub id: Option<String>,
58    /// Additional content defined by implementations
59    #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
60    pub extension: Option<Vec<Extension>>,
61    /// Extensions that cannot be ignored even if unrecognized
62    #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
63    pub modifier_extension: Option<Vec<Extension>>,
64    /// The regulatory grounds upon which this Permission builds
65    #[fhir(name="basis", min="0", max="*", summary=true, modifier=false, choice="")]
66    pub basis: Option<Vec<CodeableConcept>>,
67    /// Justifing rational
68    #[fhir(name="evidence", min="0", max="*", summary=true, modifier=false, choice="")]
69    pub evidence: Option<Vec<Reference>>,
70}
71
72#[derive(Element, BackboneElement, Debug, Clone, Default)]
73pub struct PermissionRuleBackboneElement {
74    /// Unique id for inter-element referencing
75    #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
76    pub id: Option<String>,
77    /// Additional content defined by implementations
78    #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
79    pub extension: Option<Vec<Extension>>,
80    /// Extensions that cannot be ignored even if unrecognized
81    #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
82    pub modifier_extension: Option<Vec<Extension>>,
83    /// deny | permit
84    #[fhir(name="type", min="0", max="1", summary=true, modifier=true)]
85    pub type_: Option<CodeDt>,
86    /// The selection criteria to identify data that is within scope of this provision
87    #[fhir(name="data", min="0", max="*", summary=true, modifier=false, choice="")]
88    pub data: Option<Vec<PermissionRuleDataBackboneElement>>,
89    /// A description or definition of which activities are allowed to be done on the data
90    #[fhir(name="activity", min="0", max="*", summary=true, modifier=false, choice="")]
91    pub activity: Option<Vec<PermissionRuleActivityBackboneElement>>,
92    /// What limits apply to the use of the data
93    #[fhir(name="limit", min="0", max="*", summary=true, modifier=false, choice="")]
94    pub limit: Option<Vec<CodeableConcept>>,
95}
96
97#[derive(Element, BackboneElement, Debug, Clone, Default)]
98pub struct PermissionRuleActivityBackboneElement {
99    /// Unique id for inter-element referencing
100    #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
101    pub id: Option<String>,
102    /// Additional content defined by implementations
103    #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
104    pub extension: Option<Vec<Extension>>,
105    /// Extensions that cannot be ignored even if unrecognized
106    #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
107    pub modifier_extension: Option<Vec<Extension>>,
108    /// Authorized actor(s)
109    #[fhir(name="actor", min="0", max="*", summary=true, modifier=false, choice="")]
110    pub actor: Option<Vec<Reference>>,
111    /// Actions controlled by this rule
112    #[fhir(name="action", min="0", max="*", summary=true, modifier=false, choice="")]
113    pub action: Option<Vec<CodeableConcept>>,
114    /// The purpose for which the permission is given
115    #[fhir(name="purpose", min="0", max="*", summary=true, modifier=false, choice="")]
116    pub purpose: Option<Vec<CodeableConcept>>,
117}
118
119#[derive(Element, BackboneElement, Debug, Clone, Default)]
120pub struct PermissionRuleDataBackboneElement {
121    /// Unique id for inter-element referencing
122    #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
123    pub id: Option<String>,
124    /// Additional content defined by implementations
125    #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
126    pub extension: Option<Vec<Extension>>,
127    /// Extensions that cannot be ignored even if unrecognized
128    #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
129    pub modifier_extension: Option<Vec<Extension>>,
130    /// Explicit FHIR Resource references
131    #[fhir(name="resource", min="0", max="*", summary=true, modifier=false, choice="")]
132    pub resource: Option<Vec<PermissionRuleDataResourceBackboneElement>>,
133    /// Security tag code on .meta.security
134    #[fhir(name="security", min="0", max="*", summary=true, modifier=false, choice="")]
135    pub security: Option<Vec<Coding>>,
136    /// Timeframe encompasing data create/update
137    #[fhir(name="period", min="0", max="*", summary=true, modifier=false, choice="")]
138    pub period: Option<Vec<Period>>,
139    /// Expression identifying the data
140    #[fhir(name="expression", min="0", max="1", summary=true, modifier=false, choice="")]
141    pub expression: Option<Expression>,
142}
143
144#[derive(Element, BackboneElement, Debug, Clone, Default)]
145pub struct PermissionRuleDataResourceBackboneElement {
146    /// Unique id for inter-element referencing
147    #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
148    pub id: Option<String>,
149    /// Additional content defined by implementations
150    #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
151    pub extension: Option<Vec<Extension>>,
152    /// Extensions that cannot be ignored even if unrecognized
153    #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
154    pub modifier_extension: Option<Vec<Extension>>,
155    /// instance | related | dependents | authoredby
156    #[fhir(name="meaning", min="1", max="1", summary=true, modifier=false, choice="")]
157    pub meaning: Option<CodeDt>,
158    /// The actual data reference
159    #[fhir(name="reference", min="1", max="1", summary=true, modifier=false, choice="")]
160    pub reference: Option<Reference>,
161}
162