Skip to content

Commit 25dec1c

Browse files
authored
Merge pull request #4256 from nhsuk/remove-session-outcome
Combine session and programme outcome in to one
2 parents dc17bf7 + d63e462 commit 25dec1c

File tree

42 files changed

+130
-594
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+130
-594
lines changed

app/components/app_patient_programmes_table_component.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def status_for_programme(programme:, academic_year:, vaccination_record: nil)
102102

103103
return "—" if future_eligibility?(earliest_academic_year)
104104

105-
govuk_tag(text: "No outcome yet", colour: "grey")
105+
govuk_tag(text: "No outcome", colour: "grey")
106106
end
107107

108108
def vaccination_status(vaccination_record)

app/components/app_patient_search_form_component.rb

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -67,26 +67,14 @@ class AppPatientSearchFormComponent < ViewComponent::Base
6767
<% end %>
6868
<% end %>
6969
70-
<% if session_statuses.any? %>
71-
<%= f.govuk_radio_buttons_fieldset :session_status, legend: { text: "Session outcome", size: "s" } do %>
72-
<%= f.govuk_radio_button :session_status, "", checked: form.session_status.blank?, label: { text: "Any" } %>
73-
<% session_statuses.each do |status| %>
74-
<%= f.govuk_radio_button :session_status,
75-
status,
76-
checked: form.session_status == status,
77-
label: { text: t(status, scope: %i[status session label]) } %>
78-
<% end %>
79-
<% end %>
80-
<% end %>
81-
82-
<% if programme_statuses.any? %>
83-
<%= f.govuk_radio_buttons_fieldset :programme_status, legend: { text: "Programme outcome", size: "s" } do %>
84-
<%= f.govuk_radio_button :programme_status, "", checked: form.programme_status.blank?, label: { text: "Any" } %>
70+
<% if vaccination_statuses.any? %>
71+
<%= f.govuk_radio_buttons_fieldset :vaccination_status, legend: { text: "Outcome", size: "s" } do %>
72+
<%= f.govuk_radio_button :vaccination_status, "", checked: form.vaccination_status.blank?, label: { text: "Any" } %>
8573
86-
<% programme_statuses.each do |status| %>
87-
<%= f.govuk_radio_button :programme_status,
74+
<% vaccination_statuses.each do |status| %>
75+
<%= f.govuk_radio_button :vaccination_status,
8876
status,
89-
checked: form.programme_status == status,
77+
checked: form.vaccination_status == status,
9078
label: { text: t(status, scope: %i[status programme label]) } %>
9179
<% end %>
9280
<% end %>
@@ -191,10 +179,9 @@ def initialize(
191179
url:,
192180
programmes: [],
193181
consent_statuses: [],
194-
programme_statuses: [],
195182
register_statuses: [],
196-
session_statuses: [],
197183
triage_statuses: [],
184+
vaccination_statuses: [],
198185
vaccine_methods: [],
199186
year_groups: [],
200187
heading_level: 3,
@@ -207,10 +194,9 @@ def initialize(
207194

208195
@programmes = programmes
209196
@consent_statuses = consent_statuses
210-
@programme_statuses = programme_statuses
211197
@register_statuses = register_statuses
212-
@session_statuses = session_statuses
213198
@triage_statuses = triage_statuses
199+
@vaccination_statuses = vaccination_statuses
214200
@vaccine_methods = vaccine_methods
215201
@year_groups = year_groups
216202
@heading_level = heading_level
@@ -223,10 +209,9 @@ def initialize(
223209
:url,
224210
:programmes,
225211
:consent_statuses,
226-
:programme_statuses,
227212
:register_statuses,
228-
:session_statuses,
229213
:triage_statuses,
214+
:vaccination_statuses,
230215
:vaccine_methods,
231216
:year_groups,
232217
:heading_level,
@@ -240,9 +225,8 @@ def open_details?
240225

241226
def show_buttons_in_details?
242227
!(
243-
consent_statuses.any? || programme_statuses.any? ||
244-
register_statuses.any? || session_statuses.any? ||
245-
triage_statuses.any? || year_groups.any?
228+
consent_statuses.any? || vaccination_statuses.any? ||
229+
register_statuses.any? || triage_statuses.any? || year_groups.any?
246230
)
247231
end
248232

app/components/app_patient_search_result_card_component.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,7 @@ def render_status_tag(status_type, outcome)
118118
end
119119

120120
latest_session_status =
121-
if status_type == :vaccination &&
122-
status_model.latest_session_status != status
123-
status_model.latest_session_status
124-
end
121+
(status_model.latest_session_status if status_type == :vaccination)
125122

126123
render AppProgrammeStatusTagsComponent.new(
127124
{ @programme => { status:, latest_session_status: } },

app/components/app_patient_session_search_result_card_component.rb

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,13 @@ def status_tags
147147
when :record
148148
[]
149149
when :register
150-
[register_status_tag, programme_status_tag]
150+
[register_status_tag, vaccination_status_tag]
151151
when :consent
152152
[consent_status_tag]
153153
when :triage
154154
[triage_status_tag]
155155
else
156-
[programme_status_tag, session_status_tag]
156+
[vaccination_status_tag]
157157
end
158158
end
159159

@@ -175,15 +175,16 @@ def consent_status_tag
175175
}
176176
end
177177

178-
def programme_status_tag
178+
def vaccination_status_tag
179179
{
180-
key: :programme,
180+
key: :vaccination,
181181
value:
182182
render(
183183
AppProgrammeStatusTagsComponent.new(
184184
programmes.index_with do |programme|
185185
patient.vaccination_status(programme:, academic_year:).slice(
186-
:status
186+
:status,
187+
:latest_session_status
187188
)
188189
end,
189190
outcome: :programme
@@ -204,21 +205,6 @@ def register_status_tag
204205
}
205206
end
206207

207-
def session_status_tag
208-
{
209-
key: :session,
210-
value:
211-
render(
212-
AppProgrammeStatusTagsComponent.new(
213-
programmes.index_with do |programme|
214-
patient_session.session_status(programme:).slice(:status)
215-
end,
216-
outcome: :session
217-
)
218-
)
219-
}
220-
end
221-
222208
def triage_status_tag
223209
{
224210
key: :triage,

app/components/app_programme_session_table_component.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def triage_needed_count(session:)
3838
end
3939

4040
def vaccinated_scope(session:)
41-
patient_sessions(session:).has_session_status(:vaccinated, programme:)
41+
session.vaccination_records.where(programme:).administered
4242
end
4343

4444
def vaccinated_count(session:)

app/components/app_programme_status_tags_component.rb

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,32 @@
11
# frozen_string_literal: true
22

33
class AppProgrammeStatusTagsComponent < ViewComponent::Base
4-
def initialize(programme_statuses, outcome:)
4+
def initialize(status_by_programme, outcome:)
55
super
66

7-
@programme_statuses = programme_statuses
7+
@status_by_programme = status_by_programme
88
@outcome = outcome
99
end
1010

1111
def call
1212
safe_join(
13-
programme_statuses.map do |programme, hash|
13+
status_by_programme.map do |programme, hash|
1414
status = hash[:status]
1515
vaccine_methods =
1616
(hash[:vaccine_methods] if programme.has_multiple_vaccine_methods?)
17-
latest_session_status = hash[:latest_session_status]
17+
latest_session_status = hash[:latest_session_status] if status !=
18+
hash[:latest_session_status]
1819

19-
programme_status_tag(
20-
programme,
21-
status,
22-
vaccine_methods,
23-
latest_session_status
24-
)
20+
status_tag(programme, status, vaccine_methods, latest_session_status)
2521
end
2622
)
2723
end
2824

2925
private
3026

31-
attr_reader :programme_statuses, :outcome
27+
attr_reader :status_by_programme, :outcome
3228

33-
def programme_status_tag(
34-
programme,
35-
status,
36-
vaccine_methods,
37-
latest_session_status
38-
)
29+
def status_tag(programme, status, vaccine_methods, latest_session_status)
3930
programme_tag =
4031
tag.strong(
4132
programme.name,

app/components/app_session_details_summary_component.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,15 @@ def consent_refused_row
6161
end
6262

6363
def vaccinated_row
64+
counts = session.vaccination_records.administered.group(:programme_id).count
65+
6466
texts =
6567
session.programmes.map do |programme|
66-
count =
67-
patient_sessions.has_session_status(:vaccinated, programme:).count
68-
68+
count = counts.fetch(programme.id, 0)
6969
"#{I18n.t("vaccinations_given", count:)} for #{programme.name_in_sentence}"
7070
end
7171

72-
href = session_patients_path(session, session_status: "vaccinated")
72+
href = session_patients_path(session, vaccination_status: "vaccinated")
7373

7474
{
7575
key: {

app/controllers/concerns/patient_search_form_concern.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ def patient_search_form_params
2727
:date_of_birth_month,
2828
:date_of_birth_year,
2929
:missing_nhs_number,
30-
:programme_status,
30+
:vaccination_status,
3131
:q,
3232
:register_status,
33-
:session_status,
3433
:triage_status,
3534
:vaccine_method,
3635
consent_statuses: [],

app/controllers/sessions/patients_controller.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ class Sessions::PatientsController < ApplicationController
99
layout "full"
1010

1111
def show
12-
@statuses = PatientSession::SessionStatus.statuses.keys
12+
@statuses = Patient::VaccinationStatus.statuses.keys
1313

1414
scope =
1515
@session.patient_sessions.includes_programmes.includes(
1616
:latest_note,
17-
:session_statuses,
1817
patient: :vaccination_statuses
1918
)
2019

app/forms/patient_search_form.rb

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ class PatientSearchForm < SearchForm
1111
attribute :date_of_birth_month, :integer
1212
attribute :date_of_birth_year, :integer
1313
attribute :missing_nhs_number, :boolean
14-
attribute :programme_status, :string
14+
attribute :vaccination_status, :string
1515
attribute :programme_types, array: true
1616
attribute :q, :string
1717
attribute :register_status, :string
18-
attribute :session_status, :string
1918
attribute :triage_status, :string
2019
attribute :vaccine_method, :string
2120
attribute :year_groups, array: true
@@ -57,7 +56,6 @@ def apply(scope)
5756
scope = filter_programmes(scope)
5857
scope = filter_consent_statuses(scope)
5958
scope = filter_vaccination_statuses(scope)
60-
scope = filter_session_status(scope)
6159
scope = filter_register_status(scope)
6260
scope = filter_triage_status(scope)
6361
scope = filter_vaccine_method(scope)
@@ -155,7 +153,7 @@ def filter_consent_statuses(scope)
155153
end
156154

157155
def filter_vaccination_statuses(scope)
158-
if (status = programme_status&.to_sym).present?
156+
if (status = vaccination_status&.to_sym).present?
159157
if @session
160158
scope.has_vaccination_status(status, programme: programmes)
161159
else
@@ -170,14 +168,6 @@ def filter_vaccination_statuses(scope)
170168
end
171169
end
172170

173-
def filter_session_status(scope)
174-
if (status = session_status&.to_sym).present?
175-
scope.has_session_status(status, programme: programmes)
176-
else
177-
scope
178-
end
179-
end
180-
181171
def filter_register_status(scope)
182172
if (status = register_status&.to_sym).present?
183173
scope.has_registration_status(status)

0 commit comments

Comments
 (0)