Skip to content

Commit 0583ea8

Browse files
authored
Remove unique constraint on NHS number (#414)
# What is the change? Remove unique constraint on user NHS number # Why are we making this change? At p5 level NHS login identities are only "claimed" identities and multiple users may have the same NHS number (p9 is verified identity). For pilot we will maintain multiple that multiple NHS numbers may exist for different users in the system. We should review post pilot and have a view to how to handle NHS number duplicates for national launch and what this means for sending data to other systems or for further care. Currently the system uses the OIDC sub as a unique identifier so there are no security concerns around one user seing another users data in the case where 2 users have the same NHS number
2 parents 6e6e5ea + e1fed00 commit 0583ea8

3 files changed

Lines changed: 24 additions & 11 deletions

File tree

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 6.0.3 on 2026-03-26 15:10
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('questions', '0008_alter_genderresponse_value'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='sexatbirthresponse',
15+
name='value',
16+
field=models.CharField(choices=[('F', 'Female'), ('M', 'Male')], max_length=1),
17+
),
18+
migrations.AlterField(
19+
model_name='user',
20+
name='nhs_number',
21+
field=models.CharField(max_length=10),
22+
),
23+
]

lung_cancer_screening/questions/models/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def create_user(self, sub, **extra_fields):
2020

2121
class User(AbstractBaseUser):
2222
sub = models.CharField(max_length=255, unique=True)
23-
nhs_number = models.CharField(max_length=10, unique=True)
23+
nhs_number = models.CharField(max_length=10)
2424
given_name = models.CharField(max_length=255)
2525
family_name = models.CharField(max_length=255)
2626
email = models.EmailField()

lung_cancer_screening/questions/tests/unit/models/test_user.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,6 @@ def test_is_invalid_without_nhs_number(self):
8686
)
8787

8888

89-
def test_raises_a_validation_error_if_nhs_number_is_duplicate(self):
90-
with self.assertRaises(ValidationError) as context:
91-
UserFactory(nhs_number=self.user.nhs_number)
92-
93-
self.assertIn(
94-
"User with this Nhs number already exists.",
95-
context.exception.messages
96-
)
97-
98-
9989
def test_nhs_number_has_a_max_length_of_10(self):
10090
self.user.nhs_number = "1"*11
10191

0 commit comments

Comments
 (0)