Skip to content

Commit 5716598

Browse files
RuleStop is set to bool
1 parent c6d3cf1 commit 5716598

File tree

3 files changed

+9
-14
lines changed

3 files changed

+9
-14
lines changed

src/eligibility_signposting_api/model/rules.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,6 @@ class RuleAttributeLevel(StrEnum):
8181
COHORT = "COHORT"
8282

8383

84-
class RuleStop(StrEnum):
85-
YES = "Y"
86-
NO = "N"
87-
88-
@classmethod
89-
def _missing_(cls, value: object) -> RuleStop:
90-
if isinstance(value, str) and value.upper() == cls.YES.value:
91-
return cls.YES
92-
return cls.NO
93-
94-
9584
class IterationCohort(BaseModel):
9685
cohort_label: CohortLabel | None = Field(None, alias="CohortLabel")
9786
priority: int | None = Field(None, alias="Priority")
@@ -110,7 +99,13 @@ class IterationRule(BaseModel):
11099
operator: RuleOperator = Field(..., alias="Operator")
111100
comparator: RuleComparator = Field(..., alias="Comparator")
112101
attribute_target: RuleAttributeTarget | None = Field(None, alias="AttributeTarget")
113-
rule_stop: RuleStop | None = Field(None, alias="RuleStop")
102+
rule_stop: bool = Field(default=False, alias="RuleStop")
103+
104+
@field_validator("rule_stop", mode="before")
105+
def parse_yn_to_bool(cls, v: str | bool) -> bool: # noqa: N805
106+
if isinstance(v, str):
107+
return v.upper() == "Y"
108+
return bool(v)
114109

115110
model_config = {"populate_by_name": True, "extra": "ignore"}
116111

src/eligibility_signposting_api/services/calculators/eligibility_calculator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,5 +152,5 @@ def evaluate_priority_group(
152152

153153
worst_group_status = eligibility.Status.worst(best_status, worst_status_so_far_for_condition)
154154
if worst_group_status.is_exclusion:
155-
is_rule_stop = any(rule.rule_stop == rules.RuleStop.YES for rule in exclude_capable_rules)
155+
is_rule_stop = any(rule.rule_stop for rule in exclude_capable_rules)
156156
return worst_group_status, actionable_reasons, exclusion_reasons, is_rule_stop

tests/fixtures/builders/model/rule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class IterationCohortFactory(ModelFactory[rules.IterationCohort]): ...
2222
class IterationRuleFactory(ModelFactory[rules.IterationRule]):
2323
attribute_target = None
2424
cohort_label = None
25-
rule_stop = None
25+
rule_stop = False
2626

2727

2828
class IterationFactory(ModelFactory[rules.Iteration]):

0 commit comments

Comments
 (0)