| """NHS number Modulus-11 checksum and all surface forms the dataset uses.""" | |
| from src.recognisers import UK_NHS, find_rule_spans, nhs_number_is_valid | |
| def _has_nhs(text: str) -> bool: | |
| return any(s.entity_type == UK_NHS for s in find_rule_spans(text)) | |
| def test_valid_10_digit_passes(): | |
| assert nhs_number_is_valid("9434765919") | |
| def test_separated_space_valid(): | |
| assert nhs_number_is_valid("943 476 5919") | |
| def test_separated_comma_valid(): | |
| assert nhs_number_is_valid("943,476,5919") | |
| def test_bad_checksum_rejected(): | |
| assert not nhs_number_is_valid("943 476 5918") | |
| def test_wrong_length_rejected(): | |
| assert not nhs_number_is_valid("12345") | |
| assert not nhs_number_is_valid("94347659190") | |
| def test_rule_detects_spaced_form(): | |
| assert _has_nhs("NHS no: 943 476 5919") | |
| def test_rule_detects_comma_form(): | |
| assert _has_nhs("NHS: 943,476,5919") | |
| def test_rule_detects_9_digit_context(): | |
| assert _has_nhs("Patient NHS Number: 272 733 208 admitted") | |