Skip to content

Commit 320bd3f

Browse files
Initial commit
1 parent 6d0a049 commit 320bd3f

20 files changed

+4067
-0
lines changed

classes/address_contact_type.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from enum import Enum
2+
from typing import Optional
3+
4+
5+
class AddressContactType(Enum):
6+
WORK = (13056, "WORK")
7+
HOME = (13057, "HOME")
8+
9+
def __init__(self, valid_value_id: int, allowed_value: str):
10+
self._valid_value_id = valid_value_id
11+
self._allowed_value = allowed_value
12+
13+
@property
14+
def valid_value_id(self) -> int:
15+
return self._valid_value_id
16+
17+
@property
18+
def allowed_value(self) -> str:
19+
return self._allowed_value
20+
21+
@classmethod
22+
def by_valid_value_id(
23+
cls, address_contact_type_id: int
24+
) -> Optional["AddressContactType"]:
25+
return next(
26+
(item for item in cls if item.valid_value_id == address_contact_type_id),
27+
None,
28+
)

classes/address_type.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from enum import Enum
2+
from typing import Optional
3+
4+
5+
class AddressType(Enum):
6+
MAIN_REGISTERED_ADDRESS = (13042, "H")
7+
TEMPORARY_ADDRESS = (13043, "T")
8+
9+
def __init__(self, valid_value_id: int, allowed_value: str):
10+
self._valid_value_id = valid_value_id
11+
self._allowed_value = allowed_value
12+
13+
@property
14+
def valid_value_id(self) -> int:
15+
return self._valid_value_id
16+
17+
@property
18+
def allowed_value(self) -> str:
19+
return self._allowed_value
20+
21+
@classmethod
22+
def by_valid_value_id(cls, address_type_id: int) -> Optional["AddressType"]:
23+
return next(
24+
(item for item in cls if item.valid_value_id == address_type_id), None
25+
)

classes/date_description.py

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
from enum import Enum
2+
from typing import Optional
3+
from datetime import date, timedelta
4+
import random
5+
6+
7+
class DateDescription(Enum):
8+
AFTER_TODAY = (
9+
"after today",
10+
0,
11+
date.today() + timedelta(days=random.randint(1, 1000)),
12+
)
13+
AS_AT_EPISODE_START = ("as at episode start", 0, None)
14+
BEFORE_TODAY = (
15+
"before today",
16+
0,
17+
date.today() - timedelta(days=random.randint(1, 1000)),
18+
)
19+
CALCULATED_FOBT_DUE_DATE = ("calculated fobt due date", 0, None)
20+
CALCULATED_LYNCH_DUE_DATE = ("calculated lynch due date", 0, None)
21+
CALCULATED_SCREENING_DUE_DATE = ("calculated screening due date", 0, None)
22+
CALCULATED_SURVEILLANCE_DUE_DATE = ("calculated surveillance due date", 0, None)
23+
CSDD = ("csdd", 0, None)
24+
CSSDD = ("cssdd", 0, None)
25+
GREATER_THAN_TODAY = (
26+
"> today",
27+
0,
28+
date.today() + timedelta(days=random.randint(1, 1000)),
29+
)
30+
LAST_BIRTHDAY = ("last birthday", 0, None)
31+
LESS_THAN_2_YEARS_AGO = (
32+
"less than 2 years ago",
33+
24,
34+
date.today() - timedelta(days=random.randint(1, 730)),
35+
)
36+
LESS_THAN_TODAY = (
37+
"< today",
38+
0,
39+
date.today() - timedelta(days=random.randint(1, 1000)),
40+
)
41+
LESS_THAN_OR_EQUAL_TO_6_MONTHS_AGO = (
42+
"<= 6 months ago",
43+
6,
44+
date.today() - timedelta(days=random.randint(0, 182)),
45+
)
46+
LYNCH_DIAGNOSIS_DATE = ("lynch diagnosis date", 0, None)
47+
MORE_THAN_2_YEARS_AGO = (
48+
"more than 2 years ago",
49+
24,
50+
date.today() - timedelta(days=730 + random.randint(1, 1000)),
51+
)
52+
MORE_THAN_3_YEARS_AGO = (
53+
"more than 3 years ago",
54+
36,
55+
date.today() - timedelta(days=1095 + random.randint(1, 1000)),
56+
)
57+
MORE_THAN_6_MONTHS_AGO = (
58+
"more than 6 months ago",
59+
6,
60+
date.today() - timedelta(days=182 + random.randint(1, 1000)),
61+
)
62+
MORE_THAN_10_DAYS_AGO = (
63+
"> 10 days ago",
64+
0,
65+
date.today() - timedelta(days=random.randint(11, 1010)),
66+
)
67+
MORE_THAN_20_DAYS_AGO = (
68+
"> 20 days ago",
69+
0,
70+
date.today() - timedelta(days=random.randint(21, 1020)),
71+
)
72+
NOT_NULL = ("not null", 0, None)
73+
NULL = ("null", 0, None)
74+
ONE_YEAR_FROM_DIAGNOSTIC_TEST = ("1 year from diagnostic test", 12, None)
75+
ONE_YEAR_FROM_EPISODE_END = ("1 year from episode end", 12, None)
76+
ONE_YEAR_FROM_SYMPTOMATIC_PROCEDURE = (
77+
"1 year from symptomatic procedure",
78+
12,
79+
None,
80+
)
81+
THREE_YEARS_FROM_DIAGNOSTIC_TEST = ("3 years from diagnostic test", 36, None)
82+
THREE_YEARS_FROM_EPISODE_END = ("3 years from episode end", 36, None)
83+
THREE_YEARS_FROM_SYMPTOMATIC_PROCEDURE = (
84+
"3 years from symptomatic procedure",
85+
36,
86+
None,
87+
)
88+
TODAY = ("today", 0, date.today())
89+
TOMORROW = ("tomorrow", 0, date.today() + timedelta(days=1))
90+
TWO_YEARS_FROM_DIAGNOSTIC_TEST = ("2 years from diagnostic test", 24, None)
91+
TWO_YEARS_FROM_EPISODE_END = ("2 years from episode end", 24, None)
92+
TWO_YEARS_FROM_LAST_LYNCH_COLONOSCOPY_DATE = (
93+
"2 years from last lynch colonoscopy date",
94+
24,
95+
None,
96+
)
97+
TWO_YEARS_FROM_LATEST_A37_EVENT = ("2 years from latest A37 event", 24, None)
98+
TWO_YEARS_FROM_LATEST_J8_EVENT = ("2 years from latest J8 event", 24, None)
99+
TWO_YEARS_FROM_LATEST_J15_EVENT = ("2 years from latest J15 event", 24, None)
100+
TWO_YEARS_FROM_LATEST_J16_EVENT = ("2 years from latest J16 event", 24, None)
101+
TWO_YEARS_FROM_LATEST_J25_EVENT = ("2 years from latest J25 event", 24, None)
102+
TWO_YEARS_FROM_EARLIEST_S10_EVENT = ("2 years from earliest S10 event", 24, None)
103+
TWO_YEARS_FROM_LATEST_S158_EVENT = ("2 years from latest S158 event", 24, None)
104+
TWO_YEARS_FROM_SYMPTOMATIC_PROCEDURE = (
105+
"2 years from symptomatic procedure",
106+
24,
107+
None,
108+
)
109+
UNCHANGED = ("unchanged", 0, None)
110+
UNCHANGED_NULL = ("unchanged (null)", 0, None)
111+
WITHIN_THE_LAST_2_YEARS = (
112+
"within the last 2 years",
113+
24,
114+
date.today() - timedelta(days=random.randint(0, 730)),
115+
)
116+
WITHIN_THE_LAST_4_YEARS = (
117+
"within the last 4 years",
118+
48,
119+
date.today() - timedelta(days=random.randint(0, 1460)),
120+
)
121+
WITHIN_THE_LAST_6_MONTHS = (
122+
"within the last 6 months",
123+
6,
124+
date.today() - timedelta(days=random.randint(0, 182)),
125+
)
126+
YESTERDAY = ("yesterday", 0, date.today() - timedelta(days=1))
127+
128+
def __init__(
129+
self, description: str, number_of_months: int, suitable_date: Optional[date]
130+
):
131+
self._description = description
132+
self._number_of_months = number_of_months
133+
self._suitable_date = suitable_date
134+
135+
@property
136+
def description(self) -> str:
137+
return self._description
138+
139+
@property
140+
def number_of_months(self) -> int:
141+
return self._number_of_months
142+
143+
@property
144+
def suitable_date(self) -> Optional[date]:
145+
return self._suitable_date
146+
147+
@classmethod
148+
def by_description(cls, desc: str) -> Optional["DateDescription"]:
149+
return next((d for d in cls if d.description == desc), None)
150+
151+
@classmethod
152+
def by_description_case_insensitive(cls, desc: str) -> Optional["DateDescription"]:
153+
return next((d for d in cls if d.description.lower() == desc.lower()), None)

0 commit comments

Comments
 (0)