From 285c6aee68f7479ea4a53cf1ab5a0c829d1a3ca8 Mon Sep 17 00:00:00 2001 From: Andy Mitchell <326561+Themitchell@users.noreply.github.com> Date: Thu, 26 Mar 2026 15:27:15 +0000 Subject: [PATCH] Remove unique constraint on NHS number At p5 level NHS login identities are only "claimed" identities. For pilot we will mainatin multiple that multiple NHS numbers may exist. We should review post pilot and have a view to how to handle NHS number duplicates for national launch --- ...rthresponse_value_alter_user_nhs_number.py | 23 +++++++++++++++++++ .../questions/models/user.py | 2 +- .../questions/tests/unit/models/test_user.py | 10 -------- 3 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 lung_cancer_screening/questions/migrations/0009_alter_sexatbirthresponse_value_alter_user_nhs_number.py diff --git a/lung_cancer_screening/questions/migrations/0009_alter_sexatbirthresponse_value_alter_user_nhs_number.py b/lung_cancer_screening/questions/migrations/0009_alter_sexatbirthresponse_value_alter_user_nhs_number.py new file mode 100644 index 00000000..9a4fd51c --- /dev/null +++ b/lung_cancer_screening/questions/migrations/0009_alter_sexatbirthresponse_value_alter_user_nhs_number.py @@ -0,0 +1,23 @@ +# Generated by Django 6.0.3 on 2026-03-26 15:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('questions', '0008_alter_genderresponse_value'), + ] + + operations = [ + migrations.AlterField( + model_name='sexatbirthresponse', + name='value', + field=models.CharField(choices=[('F', 'Female'), ('M', 'Male')], max_length=1), + ), + migrations.AlterField( + model_name='user', + name='nhs_number', + field=models.CharField(max_length=10), + ), + ] diff --git a/lung_cancer_screening/questions/models/user.py b/lung_cancer_screening/questions/models/user.py index 8bb5fd0e..ff3ed217 100644 --- a/lung_cancer_screening/questions/models/user.py +++ b/lung_cancer_screening/questions/models/user.py @@ -20,7 +20,7 @@ def create_user(self, sub, **extra_fields): class User(AbstractBaseUser): sub = models.CharField(max_length=255, unique=True) - nhs_number = models.CharField(max_length=10, unique=True) + nhs_number = models.CharField(max_length=10) given_name = models.CharField(max_length=255) family_name = models.CharField(max_length=255) email = models.EmailField() diff --git a/lung_cancer_screening/questions/tests/unit/models/test_user.py b/lung_cancer_screening/questions/tests/unit/models/test_user.py index 00d797d5..1f02ffbb 100644 --- a/lung_cancer_screening/questions/tests/unit/models/test_user.py +++ b/lung_cancer_screening/questions/tests/unit/models/test_user.py @@ -86,16 +86,6 @@ def test_is_invalid_without_nhs_number(self): ) - def test_raises_a_validation_error_if_nhs_number_is_duplicate(self): - with self.assertRaises(ValidationError) as context: - UserFactory(nhs_number=self.user.nhs_number) - - self.assertIn( - "User with this Nhs number already exists.", - context.exception.messages - ) - - def test_nhs_number_has_a_max_length_of_10(self): self.user.nhs_number = "1"*11