Skip to content

Commit 7fac83c

Browse files
wip-3
1 parent 402189a commit 7fac83c

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

src/eligibility_signposting_api/services/calculators/eligibility_calculator.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from wireup import service
1212

1313
from eligibility_signposting_api.model import eligibility, rules
14-
from eligibility_signposting_api.model.eligibility import Status, CohortStatus
14+
from eligibility_signposting_api.model.eligibility import Status, CohortStatus, Condition, ConditionName
1515
from eligibility_signposting_api.services.calculators.rule_calculator import RuleCalculator
1616

1717
Row = Collection[Mapping[str, Any]]
@@ -86,7 +86,7 @@ def get_best_cohort(
8686
def evaluate_eligibility(self):
8787
"""Iterates over campaign groups, evaluates eligibility, and returns a consolidated status."""
8888
priority_getter = attrgetter("priority")
89-
results: dict[str, tuple[Status, list[CohortStatus]]] = defaultdict()
89+
results: dict[ConditionName, tuple[Status, list[CohortStatus]]] = defaultdict()
9090
for condition_name, campaign_group in self.campaigns_grouped_by_condition_name:
9191
iteration_results: dict[str, tuple[Status, list[CohortStatus]]] = defaultdict()
9292
for active_iteration in [cc.current_iteration for cc in campaign_group]:
@@ -138,12 +138,18 @@ def evaluate_eligibility(self):
138138
for name, iteration_result in iteration_results.items():
139139
if iteration_result[0] is best_so_far:
140140
results[condition_name] = iteration_result
141-
break
141+
break # if the status is the same, we can break out of the loop - we are picking the first one
142142
# Consolidate all the results and return
143-
# TODO
144-
#results: dict[str, tuple[Status, list[CohortStatus]]] = defaultdict()
143+
final_result = [
144+
Condition(
145+
condition_name=condition_name,
146+
status=status,
147+
reasons=sum((cohort.reasons for cohort in cohort_status_list), [])
148+
)
149+
for condition_name, (status, cohort_status_list) in results.items()
150+
]
145151

146-
return eligibility.EligibilityStatus(conditions=list(self.results))
152+
return eligibility.EligibilityStatus(conditions=final_result)
147153

148154
def get_the_base_eligible_campaigns(self, campaign_group: list[rules.CampaignConfig]) -> list[rules.CampaignConfig]:
149155
"""Return campaigns for which the person is base eligible via cohorts."""

0 commit comments

Comments
 (0)