Skip to content

Commit 310c8e6

Browse files
authored
Merge pull request #4800 from nhsuk/appear-in-programmes-session
Allow passing session to `appear_in_programmes`
2 parents f5e3826 + 6286480 commit 310c8e6

3 files changed

Lines changed: 22 additions & 16 deletions

File tree

app/components/app_session_overview_tallies_component.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def patients_in_programme_cohort_count(programme)
9595
@patients_in_programme_cohort ||= {}
9696
@patients_in_programme_cohort[programme.id] ||= patients_for_programme(
9797
programme
98-
).appear_in_programmes(programme, academic_year:).count
98+
).appear_in_programmes([programme], session:).count
9999
end
100100

101101
def previously_vaccinated_count(programme)

app/forms/patient_search_form.rb

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,7 @@ def filter_nhs_number(scope)
130130
def filter_programmes(scope)
131131
if programme_types.present?
132132
if session
133-
birth_academic_years =
134-
programmes.flat_map do |programme|
135-
session.programme_birth_academic_years[programme]
136-
end
137-
138-
scope.where(birth_academic_year: birth_academic_years)
133+
scope.appear_in_programmes(programmes, session:)
139134
else
140135
scope.appear_in_programmes(programmes, academic_year:)
141136
end

app/models/patient.rb

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,15 +139,26 @@ class Patient < ApplicationRecord
139139
end
140140

141141
scope :appear_in_programmes,
142-
->(programmes, academic_year:) do
143-
patient_locations =
144-
PatientLocation
145-
.select("1")
146-
.where("patient_locations.patient_id = patients.id")
147-
.where(academic_year:)
148-
.appear_in_programmes(programmes)
149-
150-
where(patient_locations.arel.exists)
142+
->(programmes, academic_year: nil, session: nil) do
143+
if session
144+
birth_academic_years =
145+
programmes.flat_map do |programme|
146+
session.programme_birth_academic_years[programme]
147+
end
148+
149+
where(birth_academic_year: birth_academic_years)
150+
elsif academic_year
151+
patient_locations =
152+
PatientLocation
153+
.select("1")
154+
.where("patient_locations.patient_id = patients.id")
155+
.where(academic_year:)
156+
.appear_in_programmes(programmes)
157+
158+
where(patient_locations.arel.exists)
159+
else
160+
raise "Pass either academic year or session."
161+
end
151162
end
152163

153164
scope :not_appear_in_programmes,

0 commit comments

Comments
 (0)