diff --git a/app/models/consent_form.rb b/app/models/consent_form.rb index f6f5c36d6..3d5d35dd5 100644 --- a/app/models/consent_form.rb +++ b/app/models/consent_form.rb @@ -364,7 +364,7 @@ def match_with_patient!(patient) .has_programme(programme) .find_by(team:, location: school) - if upcoming_session + if upcoming_session && patient.date_of_death.nil? patient.patient_sessions.find_or_create_by!(session: upcoming_session) end end diff --git a/app/models/session.rb b/app/models/session.rb index d69571562..7e97e910e 100644 --- a/app/models/session.rb +++ b/app/models/session.rb @@ -119,10 +119,11 @@ def create_patient_sessions! cohorts = team.cohorts.for_year_groups(year_groups, academic_year:) patients_in_cohorts = - Patient.where(cohort: cohorts, school: location).includes( - :upcoming_sessions, - vaccination_records: :programme - ) + Patient.where( + cohort: cohorts, + school: location, + date_of_death: nil + ).includes(:upcoming_sessions, vaccination_records: :programme) required_programmes = Set.new(programmes) diff --git a/spec/factories/patients.rb b/spec/factories/patients.rb index 9b91acafd..3c5736ecb 100644 --- a/spec/factories/patients.rb +++ b/spec/factories/patients.rb @@ -107,6 +107,10 @@ home_educated { true } end + trait :deceased do + date_of_death { Date.current } + end + trait :consent_request_sent do after(:create) do |patient, context| create( diff --git a/spec/models/session_spec.rb b/spec/models/session_spec.rb index c5031136d..83cf9630b 100644 --- a/spec/models/session_spec.rb +++ b/spec/models/session_spec.rb @@ -277,6 +277,14 @@ programme: hpv_programme, patient: both_vaccinated_teen ) + + create( + :patient, + :deceased, + date_of_birth: 9.years.ago.to_date, + team:, + school: + ) end context "with a Flu session" do