Skip to content

Commit 49cc0ab

Browse files
Merge branch 'main' of github.com:NHSDigital/bcss-playwright into feature/BCSS-21318-fobtregressiontests-scenario-15
Completing scenario 15
2 parents 184ef75 + 1194b33 commit 49cc0ab

29 files changed

+1649
-171
lines changed

classes/subject/gender_type.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,18 @@ def by_redefined_value(cls, redefined_value: int) -> Optional["GenderType"]:
8888
return next(
8989
(item for item in cls if item.redefined_value == redefined_value), None
9090
)
91+
92+
@classmethod
93+
def by_allowed_value(cls, allowed_value: str) -> Optional["GenderType"]:
94+
"""
95+
Returns the GenderType enum member matching the given allowed value.
96+
97+
Args:
98+
allowed_value (str): The allowed value to search for.
99+
100+
Returns:
101+
Optional[GenderType]: The matching enum member, or None if not found.
102+
"""
103+
return next(
104+
(item for item in cls if item.allowed_value == allowed_value), None
105+
)

classes/subject/subject.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,16 @@ def from_dataframe_row(row: pd.Series) -> "Subject":
13021302
),
13031303
"date_of_birth": DateTimeUtils.parse_date(row.get("date_of_birth")),
13041304
"date_of_death": DateTimeUtils.parse_date(row.get("date_of_death")),
1305+
"title": row.get("person_title"),
1306+
"other_names": row.get("person_other_given_names"),
1307+
"address_line1": row.get("address_line_1"),
1308+
"address_line2": row.get("address_line_2"),
1309+
"address_line3": row.get("address_line_3"),
1310+
"address_line4": row.get("address_line_4"),
1311+
"address_line5": row.get("address_line_5"),
1312+
"postcode": row.get("postcode"),
1313+
"gp_practice_code": row.get("gp_practice_code"),
1314+
"gender": GenderType.by_allowed_value(str(row.get("person_gender"))),
13051315
}
13061316

13071317
return Subject(**field_map)
@@ -1318,13 +1328,17 @@ def populate_subject_object_from_nhs_no(self, nhs_no: str) -> "Subject":
13181328
SubjectSelectionQueryBuilder,
13191329
)
13201330

1321-
nhs_no_criteria = {"nhs number": nhs_no}
1331+
criteria = {
1332+
"nhs number": nhs_no,
1333+
"add column to select statement": " c.person_title, c.person_other_given_names, CASE c.person_gender WHEN 130 THEN 'M' WHEN 131 THEN 'F' WHEN 132 THEN 'I' WHEN 160 THEN 'U' END, adds.address_line_1, adds.address_line_2, adds.address_line_3, adds.address_line_4, adds.address_line_5, adds.postcode, (SELECT hub.org_code FROM org hub WHERE org_id = c.gp_practice_id) AS gp_practice_code ",
1334+
"add join to from statement": " INNER JOIN sd_address_t adds ON adds.contact_id = c.contact_id ",
1335+
}
13221336
subject = Subject()
13231337
user = User()
13241338
builder = SubjectSelectionQueryBuilder()
13251339

13261340
query, bind_vars = builder.build_subject_selection_query(
1327-
criteria=nhs_no_criteria,
1341+
criteria=criteria,
13281342
user=user,
13291343
subject=subject,
13301344
subjects_to_retrieve=1,

classes/subject_selection_query_builder/subject_selection_criteria_key.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class SubjectSelectionCriteriaKey(Enum):
2424
"""
2525

2626
ADD_COLUMN_TO_SELECT_STATEMENT = ("add column to select statement", False, False)
27+
ADD_JOIN_TO_FROM_STATEMENT = ("add join to from statement", False, False)
2728
APPOINTMENT_DATE = ("appointment date", False, True)
2829
APPOINTMENT_STATUS = ("appointment status", True, True)
2930
APPOINTMENT_TYPE = ("appointment type", False, True)

0 commit comments

Comments
 (0)