Skip to content

Commit e4d5ed5

Browse files
Imperative name change 👽
1 parent eb53d8f commit e4d5ed5

4 files changed

Lines changed: 31 additions & 19 deletions

File tree

‎src/eligibility_signposting_api/model/eligibility.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,20 @@ class Reason:
6969
class Condition:
7070
condition_name: ConditionName
7171
status: Status
72-
cohort_results: list[CohortStatus]
72+
cohort_results: list[CohortResult]
7373

7474

7575
@dataclass
76-
class CohortStatus:
76+
class CohortResult:
7777
cohort: IterationCohort
7878
status: Status
7979
reasons: list[Reason]
8080

8181

8282
@dataclass
83-
class IterationStatus:
83+
class IterationResult:
8484
status: Status
85-
cohort_statuses: list[CohortStatus]
85+
cohort_statuses: list[CohortResult]
8686

8787

8888
@dataclass

‎src/eligibility_signposting_api/services/calculators/eligibility_calculator.py‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
from eligibility_signposting_api.model import eligibility, rules
1414
from eligibility_signposting_api.model.eligibility import (
15-
CohortStatus,
15+
CohortResult,
1616
Condition,
1717
ConditionName,
18-
IterationStatus,
18+
IterationResult,
1919
Status,
2020
)
2121
from eligibility_signposting_api.services.calculators.rule_calculator import RuleCalculator
@@ -61,7 +61,7 @@ def person_cohorts(self) -> set[str]:
6161
return set(cohorts_row.get("COHORT_MAP", {}).get("cohorts", {}).get("M", {}).keys())
6262

6363
# Assuming cohort_results contains tuples of (IterationCohort, Status, list[Reason])
64-
def get_best_cohort(self, cohort_results: dict[str, CohortStatus]) -> tuple[Status, list[CohortStatus]]:
64+
def get_best_cohort(self, cohort_results: dict[str, CohortResult]) -> tuple[Status, list[CohortResult]]:
6565
# Find the best status across cohorts
6666
best_status = eligibility.Status.best(*[result.status for result in cohort_results.values()])
6767

@@ -72,11 +72,11 @@ def get_best_cohort(self, cohort_results: dict[str, CohortStatus]) -> tuple[Stat
7272
def evaluate_eligibility(self) -> eligibility.EligibilityStatus:
7373
"""Iterates over campaign groups, evaluates eligibility, and returns a consolidated status."""
7474
priority_getter = attrgetter("priority")
75-
results: dict[ConditionName, IterationStatus] = defaultdict()
75+
results: dict[ConditionName, IterationResult] = defaultdict()
7676
for condition_name, campaign_group in self.campaigns_grouped_by_condition_name:
77-
iteration_results: dict[str, IterationStatus] = defaultdict()
77+
iteration_results: dict[str, IterationResult] = defaultdict()
7878
for active_iteration in [cc.current_iteration for cc in campaign_group]:
79-
cohort_results: dict[str, CohortStatus] = defaultdict()
79+
cohort_results: dict[str, CohortResult] = defaultdict()
8080

8181
# Get the rules for this iteration
8282
rules_filter, rules_suppression, rules_redirect = {
@@ -106,7 +106,7 @@ def evaluate_eligibility(self) -> eligibility.EligibilityStatus:
106106
rule_group
107107
)
108108
if status.is_exclusion:
109-
cohort_results[cohort.cohort_label] = CohortStatus(cohort, status, group_exclusions)
109+
cohort_results[cohort.cohort_label] = CohortResult(cohort, status, group_exclusions)
110110
eligibility_flag = False
111111
break
112112
# Eligible
@@ -134,18 +134,18 @@ def evaluate_eligibility(self) -> eligibility.EligibilityStatus:
134134
break
135135
# No exclusions - actionable
136136
if actionable_flag:
137-
cohort_results[cohort.cohort_label] = CohortStatus(cohort, Status.actionable, [])
137+
cohort_results[cohort.cohort_label] = CohortResult(cohort, Status.actionable, [])
138138
else:
139-
cohort_results[cohort.cohort_label] = CohortStatus(
139+
cohort_results[cohort.cohort_label] = CohortResult(
140140
cohort, Status.not_actionable, suppression_reasons
141141
)
142142

143143
else:
144144
# Not base eligibility
145-
cohort_results[cohort.cohort_label] = CohortStatus(cohort, eligibility.Status.not_eligible, [])
145+
cohort_results[cohort.cohort_label] = CohortResult(cohort, eligibility.Status.not_eligible, [])
146146

147147
# Determine Result between cohorts - get the best
148-
iteration_results[active_iteration.name] = IterationStatus(
148+
iteration_results[active_iteration.name] = IterationResult(
149149
*self.get_best_cohort(cohort_results)
150150
) # multiple
151151
# Determine results between iterations - get the best

‎tests/fixtures/matchers/eligibility.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ def is_eligibility_status() -> Matcher[EligibilityStatus]:
1717

1818
def is_condition() -> Matcher[Condition]:
1919
return ConditionMatcher()
20+
21+
22+
def is_cohort_result() -> Matcher[Condition]:
23+
return ConditionMatcher()

‎tests/unit/services/calculators/test_eligibility_calculator.py‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,12 @@ def test_rules_stop_behavior(
897897
test_comment,
898898
)
899899

900+
# Then
901+
assert_that(
902+
actual,
903+
is_eligibility_status(),
904+
)
905+
900906

901907
@pytest.mark.parametrize(
902908
("person_cohorts", "iteration_cohorts", "expected_status", "expected_cohorts"),
@@ -968,10 +974,12 @@ def test_eligibility_results_when_multiple_cohorts(
968974
actual = calculator.evaluate_eligibility()
969975

970976
actual_cohort_labels: list[str] = []
971-
for condition in actual.conditions:
972-
if condition.condition_name == ConditionName("RSV"):
973-
for cohort_result in condition.cohort_results:
974-
actual_cohort_labels.append(cohort_result.cohort.cohort_label)
977+
actual_cohort_labels.extend(
978+
cohort_result.cohort.cohort_label
979+
for condition in actual.conditions
980+
if condition.condition_name == ConditionName("RSV")
981+
for cohort_result in condition.cohort_results
982+
)
975983

976984
# Then
977985
assert_that(actual_cohort_labels, contains_inanyorder(*expected_cohorts))

0 commit comments

Comments
 (0)