1use crate::prelude::*;
2
3#[derive(Resource, Debug, Clone, Default)]
4#[fhir(base="DomainResource")]
5pub struct Permission {
6 #[fhir(name="id", min="0", max="1", summary=true, modifier=false, choice="")]
8 pub id: Option<Id>,
9 #[fhir(name="meta", min="0", max="1", summary=true, modifier=false, choice="")]
11 pub meta: Option<Meta>,
12 #[fhir(name="implicitRules", min="0", max="1", summary=true, modifier=true)]
14 pub implicit_rules: Option<UriDt>,
15 #[fhir(name="language", min="0", max="1", summary=false, modifier=false, choice="")]
17 pub language: Option<CodeDt>,
18 #[fhir(name="text", min="0", max="1", summary=false, modifier=false, choice="")]
20 pub text: Option<Narrative>,
21 #[fhir(name="contained", min="0", max="*", summary=false, modifier=false, choice="")]
23 pub contained: Option<Vec<AnyResource>>,
24 #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
26 pub extension: Option<Vec<Extension>>,
27 #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
29 pub modifier_extension: Option<Vec<Extension>>,
30 #[fhir(name="status", min="1", max="1", summary=true, modifier=false, choice="")]
32 pub status: Option<CodeDt>,
33 #[fhir(name="asserter", min="0", max="1", summary=true, modifier=false, choice="")]
35 pub asserter: Option<Reference>,
36 #[fhir(name="date", min="0", max="*", summary=true, modifier=false, choice="")]
38 pub date: Option<Vec<DateTimeDt>>,
39 #[fhir(name="validity", min="0", max="1", summary=true, modifier=false, choice="")]
41 pub validity: Option<Period>,
42 #[fhir(name="justification", min="0", max="1", summary=true, modifier=false, choice="")]
44 pub justification: Option<PermissionJustificationBackboneElement>,
45 #[fhir(name="combining", min="1", max="1", summary=true, modifier=true)]
47 pub combining: Option<CodeDt>,
48 #[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 #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
57 pub id: Option<String>,
58 #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
60 pub extension: Option<Vec<Extension>>,
61 #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
63 pub modifier_extension: Option<Vec<Extension>>,
64 #[fhir(name="basis", min="0", max="*", summary=true, modifier=false, choice="")]
66 pub basis: Option<Vec<CodeableConcept>>,
67 #[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 #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
76 pub id: Option<String>,
77 #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
79 pub extension: Option<Vec<Extension>>,
80 #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
82 pub modifier_extension: Option<Vec<Extension>>,
83 #[fhir(name="type", min="0", max="1", summary=true, modifier=true)]
85 pub type_: Option<CodeDt>,
86 #[fhir(name="data", min="0", max="*", summary=true, modifier=false, choice="")]
88 pub data: Option<Vec<PermissionRuleDataBackboneElement>>,
89 #[fhir(name="activity", min="0", max="*", summary=true, modifier=false, choice="")]
91 pub activity: Option<Vec<PermissionRuleActivityBackboneElement>>,
92 #[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 #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
101 pub id: Option<String>,
102 #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
104 pub extension: Option<Vec<Extension>>,
105 #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
107 pub modifier_extension: Option<Vec<Extension>>,
108 #[fhir(name="actor", min="0", max="*", summary=true, modifier=false, choice="")]
110 pub actor: Option<Vec<Reference>>,
111 #[fhir(name="action", min="0", max="*", summary=true, modifier=false, choice="")]
113 pub action: Option<Vec<CodeableConcept>>,
114 #[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 #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
123 pub id: Option<String>,
124 #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
126 pub extension: Option<Vec<Extension>>,
127 #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
129 pub modifier_extension: Option<Vec<Extension>>,
130 #[fhir(name="resource", min="0", max="*", summary=true, modifier=false, choice="")]
132 pub resource: Option<Vec<PermissionRuleDataResourceBackboneElement>>,
133 #[fhir(name="security", min="0", max="*", summary=true, modifier=false, choice="")]
135 pub security: Option<Vec<Coding>>,
136 #[fhir(name="period", min="0", max="*", summary=true, modifier=false, choice="")]
138 pub period: Option<Vec<Period>>,
139 #[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 #[fhir(name="id", min="0", max="1", summary=false, modifier=false, choice="")]
148 pub id: Option<String>,
149 #[fhir(name="extension", min="0", max="*", summary=false, modifier=false, choice="")]
151 pub extension: Option<Vec<Extension>>,
152 #[fhir(name="modifierExtension", min="0", max="*", summary=true, modifier=true)]
154 pub modifier_extension: Option<Vec<Extension>>,
155 #[fhir(name="meaning", min="1", max="1", summary=true, modifier=false, choice="")]
157 pub meaning: Option<CodeDt>,
158 #[fhir(name="reference", min="1", max="1", summary=true, modifier=false, choice="")]
160 pub reference: Option<Reference>,
161}
162