@@ -82,20 +82,11 @@ def is_actionable(
8282
8383 for _ , rule_group in groupby (sorted_rules_by_priority , key = priority_getter ):
8484 group_rules = list (rule_group )
85- cohort_specific_rules = [rule for rule in group_rules if rule .cohort_label is not None ]
86- matching_specific_rules = [
87- rule for rule in cohort_specific_rules if rule .cohort_label == cohort .cohort_label
88- ]
89- if cohort_specific_rules and not matching_specific_rules :
90- continue
91-
92- applicable_rules = list (self .get_exclusion_rules (cohort , group_rules ))
93-
94- if not applicable_rules :
85+ if self ._should_skip_rule_group (cohort , group_rules ):
9586 continue
9687
9788 status , group_exclusion_reasons , rule_stop = self .evaluate_rules_priority_group (
98- person , iter (applicable_rules )
89+ person , iter (group_rules )
9990 )
10091 if status .is_exclusion :
10192 is_actionable = False
@@ -118,6 +109,14 @@ def is_actionable(
118109 suppression_reasons ,
119110 )
120111
112+ @staticmethod
113+ def _should_skip_rule_group (cohort : IterationCohort , group_rules : list [IterationRule ]) -> bool :
114+ cohort_specific_rules = [rule for rule in group_rules if rule .cohort_label is not None ]
115+ matching_specific_rules = [
116+ rule for rule in cohort_specific_rules if rule .cohort_label == cohort .cohort_label
117+ ]
118+ return bool (cohort_specific_rules and not matching_specific_rules )
119+
121120 def evaluate_rules_priority_group (
122121 self , person : Person , rules_group : Iterator [IterationRule ]
123122 ) -> tuple [eligibility_status .Status , list [eligibility_status .Reason ], bool ]:
0 commit comments