-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathaudit_models.py
More file actions
96 lines (69 loc) · 2.98 KB
/
audit_models.py
File metadata and controls
96 lines (69 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
from datetime import UTC, datetime
from uuid import UUID
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
class CamelCaseBaseModel(BaseModel):
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
)
class RequestAuditHeader(CamelCaseBaseModel):
x_request_id: str | None = None
x_correlation_id: str | None = None
nhsd_end_user_organisation_ods: str | None = None
nhsd_application_id: str | None = None
nhse_product_id: str | None = None
class RequestAuditQueryParams(CamelCaseBaseModel):
category: str | None = None
conditions: str | None = None
include_actions: str | None = None
class RequestAuditData(CamelCaseBaseModel):
request_timestamp: datetime = Field(default_factory=lambda: datetime.now(UTC))
headers: RequestAuditHeader = Field(default_factory=RequestAuditHeader)
query_params: RequestAuditQueryParams = Field(default_factory=RequestAuditQueryParams)
nhs_number: str | None = None
class AuditEligibilityCohorts(CamelCaseBaseModel):
cohort_code: str | None = None
cohort_status: str | None = None
class AuditEligibilityCohortGroups(CamelCaseBaseModel):
cohort_code: str | None = None
cohort_text: str | None = None
cohort_status: str | None = None
class AuditFilterRule(CamelCaseBaseModel):
rule_priority: str | None = None
rule_name: str | None = None
class AuditSuitabilityRule(CamelCaseBaseModel):
rule_priority: str | None = None
rule_name: str | None = None
rule_message: str | None = None
class AuditRedirectRule(CamelCaseBaseModel):
rule_priority: str | None = None
rule_name: str | None = None
class AuditAction(CamelCaseBaseModel):
internal_action_code: str | None = None
action_type: str | None = None
action_code: str | None = None
action_description: str | None = None
action_url: str | None = None
action_url_label: str | None = None
class AuditCondition(CamelCaseBaseModel):
campaign_id: str | None = None
campaign_version: int | None = None
iteration_id: str | None = None
iteration_version: int | None = None
condition_name: str | None = None
status: str | None = None
status_text: str | None = None
eligibility_cohorts: list[AuditEligibilityCohorts] | None = None
eligibility_cohort_groups: list[AuditEligibilityCohortGroups] | None = None
filter_rules: list[AuditFilterRule] | None = None
suitability_rules: list[AuditSuitabilityRule] | None = None
action_rule: AuditRedirectRule | None = None
actions: list[AuditAction] | None = Field(default_factory=list)
class ResponseAuditData(CamelCaseBaseModel):
response_id: UUID | None = None
last_updated: datetime | None = None
condition: list[AuditCondition] = Field(default_factory=list)
class AuditEvent(CamelCaseBaseModel):
request: RequestAuditData = Field(default_factory=RequestAuditData)
response: ResponseAuditData = Field(default_factory=ResponseAuditData)