Skip to content

Commit 940bdd2

Browse files
committed
Show triage decision in programme card details text
When a triage has been performed, the programme card now shows a human-readable summary of the decision (e.g. "Joy, Nurse decided that Oliver is safe to vaccinate.") using the shared triage_summary helper. The delay vaccination case is updated to include the "until" date when present.
1 parent 71df7c5 commit 940bdd2

4 files changed

Lines changed: 105 additions & 11 deletions

File tree

app/components/app_patient_session_programme_component.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def initialize(patient:, session:, programme:)
3434
attr_reader :patient, :session, :programme
3535

3636
delegate :academic_year, to: :session
37+
delegate :triage_summary, to: :helpers
3738

3839
def heading
3940
"#{resolver[:prefix]}: #{resolver[:text]}"
@@ -44,7 +45,9 @@ def colour
4445
end
4546

4647
def details
47-
if programme_status.due?
48+
if latest_triage
49+
triage_summary(latest_triage)
50+
elsif programme_status.due?
4851
criteria_label =
4952
I18n.t(
5053
programme_status.vaccine_criteria.to_param,
@@ -72,12 +75,21 @@ def details
7275
"#{patient.given_name} was vaccinated on #{record&.performed_at&.to_fs(:long)}."
7376
end
7477
elsif programme_status.needs_triage?
75-
"You need to decide if it’s safe to vaccinate."
78+
"You need to decide if it’s safe to vaccinate #{patient.given_name}."
7679
else
7780
resolver[:details_text]
7881
end
7982
end
8083

84+
def latest_triage
85+
@latest_triage ||=
86+
TriageFinder.call(
87+
patient.triages.includes(:performed_by),
88+
programme_type: programme.type,
89+
academic_year:
90+
)
91+
end
92+
8193
def programme_status
8294
@programme_status ||= patient.programme_status(programme, academic_year:)
8395
end

app/helpers/triages_helper.rb

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,22 @@ def triage_summary(triage)
6161
triage.programme.has_multiple_vaccine_methods?
6262
vaccination_method =
6363
Vaccine.human_enum_name(:method_prefix, triage.vaccine_method)
64-
"is safe to vaccinate using the #{vaccination_method} vaccine only."
64+
" is safe to vaccinate using the #{vaccination_method} vaccine only."
6565
else
66-
"is safe to vaccinate."
66+
" is safe to vaccinate."
6767
end
6868
elsif triage.do_not_vaccinate?
69-
"should not be vaccinated."
69+
" should not be vaccinated."
7070
elsif triage.delay_vaccination?
71-
"’s vaccination should be delayed."
71+
if triage.delay_vaccination_until.present?
72+
"’s vaccination should be delayed until #{triage.delay_vaccination_until.to_fs(:long)}."
73+
else
74+
"’s vaccination should be delayed."
75+
end
76+
elsif triage.invite_to_clinic?
77+
"’s vaccination should take place at a clinic."
7278
end
7379

74-
"#{prefix}#{triage.patient.full_name} #{suffix}" if suffix
80+
"#{prefix}#{triage.patient.given_name}#{suffix}" if suffix
7581
end
7682
end

spec/components/app_patient_session_programme_component_spec.rb

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,86 @@
117117
it { should have_css("h4", text: "Flu:") }
118118
it { should_not have_css("table") }
119119

120-
it "shows safe to vaccinate decision details" do
120+
it "shows needs triage details" do
121121
expect(rendered).to have_text(
122-
"You need to decide if it’s safe to vaccinate."
122+
"You need to decide if it’s safe to vaccinate #{patient.given_name}."
123123
)
124124
end
125125
end
126+
127+
context "when triaged" do
128+
let(:nurse) { create(:user) }
129+
130+
context "safe to vaccinate" do
131+
before do
132+
create(
133+
:triage,
134+
:safe_to_vaccinate,
135+
patient:,
136+
programme:,
137+
performed_by: nurse
138+
)
139+
end
140+
141+
it "shows triage summary" do
142+
expect(rendered).to have_text("#{nurse.full_name} decided that")
143+
expect(rendered).to have_text("is safe to vaccinate")
144+
end
145+
end
146+
147+
context "do not vaccinate" do
148+
before do
149+
create(
150+
:triage,
151+
:do_not_vaccinate,
152+
patient:,
153+
programme:,
154+
performed_by: nurse
155+
)
156+
end
157+
158+
it "shows triage summary" do
159+
expect(rendered).to have_text(
160+
"#{nurse.full_name} decided that #{patient.given_name} should not be vaccinated."
161+
)
162+
end
163+
end
164+
165+
context "delay vaccination" do
166+
let!(:triage) do
167+
create(
168+
:triage,
169+
:delay_vaccination,
170+
patient:,
171+
programme:,
172+
performed_by: nurse
173+
)
174+
end
175+
176+
it "shows triage summary with delay date" do
177+
expect(rendered).to have_text(
178+
"#{nurse.full_name} decided that #{patient.given_name}’s vaccination should be delayed " \
179+
"until #{triage.delay_vaccination_until.to_fs(:long)}."
180+
)
181+
end
182+
end
183+
184+
context "invite to clinic" do
185+
before do
186+
create(
187+
:triage,
188+
:invite_to_clinic,
189+
patient:,
190+
programme:,
191+
performed_by: nurse
192+
)
193+
end
194+
195+
it "shows triage summary" do
196+
expect(rendered).to have_text(
197+
"#{nurse.full_name} decided that #{patient.given_name}’s vaccination should take place at a clinic."
198+
)
199+
end
200+
end
201+
end
126202
end

spec/features/triage_required_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ def then_i_see_the_update_triage_link
334334

335335
def and_i_see_the_safe_triage_decision
336336
expect(page).to have_content(
337-
"#{@user.full_name} decided that #{@patient_triage_needed.full_name} is safe to vaccinate."
337+
"#{@user.full_name} decided that #{@patient_triage_needed.given_name} is safe to vaccinate."
338338
)
339339
end
340340

@@ -357,7 +357,7 @@ def and_i_see_the_safe_triage_decision_with_method(method)
357357
)
358358

359359
expect(page).to have_content(
360-
"#{@user.full_name} decided that #{patient.full_name} is safe to vaccinate using the #{method} vaccine only."
360+
"#{@user.full_name} decided that #{patient.given_name} is safe to vaccinate using the #{method} vaccine only."
361361
)
362362
end
363363

0 commit comments

Comments
 (0)