Skip to content

Commit 8a91661

Browse files
Use NewType for condition name.
1 parent 9003574 commit 8a91661

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

src/eligibility_signposting_api/model/eligibility.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
NHSNumber = NewType("NHSNumber", str)
77
DateOfBirth = NewType("DateOfBirth", date)
88
Postcode = NewType("Postcode", str)
9+
ConditionName = NewType("ConditionName", str)
910

1011

1112
class Status(Enum):
@@ -16,7 +17,7 @@ class Status(Enum):
1617

1718
@dataclass
1819
class Condition:
19-
condition: str
20+
condition_name: ConditionName
2021
status: Status
2122

2223

src/eligibility_signposting_api/services/eligibility_services.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from dateutil.relativedelta import relativedelta
66
from wireup import service
77

8-
from eligibility_signposting_api.model.eligibility import Condition, EligibilityStatus, NHSNumber, Status
8+
from eligibility_signposting_api.model.eligibility import Condition, ConditionName, EligibilityStatus, NHSNumber, Status
99
from eligibility_signposting_api.model.rules import CampaignConfig, IterationRule, RuleAttributeLevel, RuleOperator
1010
from eligibility_signposting_api.repos import EligibilityRepo, NotFoundError, RulesRepo
1111

@@ -49,10 +49,11 @@ def get_eligibility_status(self, nhs_number: NHSNumber | None = None) -> Eligibi
4949
def evaluate_eligibility(
5050
campaign_configs: list[CampaignConfig], person_data: list[dict[str, Any]]
5151
) -> EligibilityStatus:
52-
conditions: dict[str, Condition] = {}
52+
conditions: dict[ConditionName, Condition] = {}
5353
for campaign_config in campaign_configs:
54+
condition_name = ConditionName(campaign_config.target)
5455
condition = conditions.setdefault(
55-
campaign_config.target, Condition(condition=campaign_config.target, status=Status.actionable)
56+
condition_name, Condition(condition_name=condition_name, status=Status.actionable)
5657
)
5758
for iteration_rule in [
5859
iteration_rule

src/eligibility_signposting_api/views/eligibility.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def build_eligibility_response(eligibility_status: EligibilityStatus) -> Eligibi
4949
return EligibilityResponse( # pyright: ignore[reportCallIssue]
5050
processed_suggestions=[ # pyright: ignore[reportCallIssue]
5151
ProcessedSuggestion( # pyright: ignore[reportCallIssue]
52-
condition=condition.condition,
52+
condition=condition.condition_name,
5353
status=STATUS_MAPPING[condition.status],
5454
status_text=f"{condition.status}", # pyright: ignore[reportCallIssue]
5555
eligibility_cohorts=[], # pyright: ignore[reportCallIssue]

tests/unit/services/test_eligibility_services.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from faker import Faker
77
from hamcrest import assert_that, empty, has_item
88

9-
from eligibility_signposting_api.model.eligibility import DateOfBirth, NHSNumber, Postcode, Status
9+
from eligibility_signposting_api.model.eligibility import ConditionName, DateOfBirth, NHSNumber, Postcode, Status
1010
from eligibility_signposting_api.model.rules import RuleAttributeLevel, RuleOperator, RuleType
1111
from eligibility_signposting_api.repos import EligibilityRepo, NotFoundError, RulesRepo
1212
from eligibility_signposting_api.services import EligibilityService, UnknownPersonError
@@ -101,7 +101,7 @@ def test_simple_rule_eligible(faker: Faker):
101101
assert_that(
102102
actual,
103103
is_eligibility_status().with_conditions(
104-
has_item(is_condition().with_condition("RSV").and_status(Status.actionable))
104+
has_item(is_condition().with_condition_name(ConditionName("RSV")).and_status(Status.actionable))
105105
),
106106
)
107107

@@ -162,7 +162,7 @@ def test_simple_rule_ineligible(faker: Faker):
162162
assert_that(
163163
actual,
164164
is_eligibility_status().with_conditions(
165-
has_item(is_condition().with_condition("RSV").and_status(Status.not_actionable))
165+
has_item(is_condition().with_condition_name(ConditionName("RSV")).and_status(Status.not_actionable))
166166
),
167167
)
168168

0 commit comments

Comments
 (0)