99from wireup import service
1010
1111from eligibility_signposting_api .audit .audit_context import AuditContext
12- from eligibility_signposting_api .model import eligibility_status
12+ from eligibility_signposting_api .model import campaign_config , eligibility_status
1313from eligibility_signposting_api .model .eligibility_status import (
1414 BestIterationResult ,
1515 CohortGroupResult ,
1919 IterationResult ,
2020 Reason ,
2121 Status ,
22+ StatusText ,
2223)
2324from eligibility_signposting_api .services .processors .action_rule_handler import ActionRuleHandler
2425from eligibility_signposting_api .services .processors .campaign_evaluator import CampaignEvaluator
@@ -153,11 +154,34 @@ def get_iteration_results(self, campaign_group: list[CampaignConfig]) -> dict[It
153154
154155 # Determine Result between cohorts - get the best
155156 status , best_cohorts = self .get_the_best_cohort_memberships (cohort_results )
157+ status_text = self .get_status_text (active_iteration .status_text , ConditionName (cc .target ), status )
158+
156159 iteration_results [active_iteration .name ] = BestIterationResult (
157- IterationResult (status , best_cohorts , []), active_iteration , cc .id , cc .version , cohort_results
160+ IterationResult (status , status_text , best_cohorts , []),
161+ active_iteration ,
162+ cc .id ,
163+ cc .version ,
164+ cohort_results ,
158165 )
159166 return iteration_results
160167
168+ @staticmethod
169+ def get_status_text (
170+ status_text : campaign_config .StatusText | None , condition_name : ConditionName , status : Status
171+ ) -> StatusText :
172+ if status_text is None :
173+ status_text_or_default = status .get_default_status_text (condition_name )
174+ else :
175+ status_to_text = {
176+ Status .not_eligible : status_text .not_eligible
177+ or Status .not_eligible .get_default_status_text (condition_name ),
178+ Status .not_actionable : status_text .not_actionable
179+ or Status .not_actionable .get_default_status_text (condition_name ),
180+ Status .actionable : status_text .actionable or Status .actionable .get_default_status_text (condition_name ),
181+ }
182+ status_text_or_default = StatusText (status_to_text [status ])
183+ return status_text_or_default
184+
161185 @staticmethod
162186 def build_condition (iteration_result : IterationResult , condition_name : ConditionName ) -> Condition :
163187 grouped_cohort_results = defaultdict (list )
@@ -180,7 +204,7 @@ def build_condition(iteration_result: IterationResult, condition_name: Condition
180204 cohort_results = list (deduplicated_cohort_results ),
181205 suitability_rules = list (overall_deduplicated_reasons_for_condition ),
182206 actions = iteration_result .actions ,
183- status_text = iteration_result .status . get_status_text ( condition_name ) ,
207+ status_text = iteration_result .status_text ,
184208 )
185209
186210 @staticmethod
0 commit comments