Skip to content

Commit 2d2b423

Browse files
fix: use cached vaccination status
We also need to add StatusUpdater.call(patient: @patient) to a lot of the tests so that the vaccination status is not nil.
1 parent c9f385f commit 2d2b423

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

app/components/app_patient_programmes_table_component.rb

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,35 +45,23 @@ def seasonal_programme_rows(programme:)
4545

4646
vaccination_records = vaccination_records_for(programme:, academic_year:)
4747

48-
if vaccination_records.count.positive?
49-
(1..vaccination_records.count).to_a.map do |dose_sequence|
50-
build_row(
51-
programme:,
52-
academic_year:,
53-
vaccination_records: vaccination_records.slice(0, dose_sequence)
54-
)
55-
end
56-
else
57-
[build_row(programme:, academic_year:, vaccination_records: [])]
48+
rows = (1..vaccination_records.count-1).to_a.map do |dose_sequence|
49+
build_row(programme:, academic_year:, vaccination_records: vaccination_records.slice(0, dose_sequence))
5850
end
51+
52+
rows + [build_row_from_cache(programme:, academic_year:, last_vaccination_record: vaccination_records.last)]
5953
end
6054
end
6155

6256
def non_seasonal_programme_rows(programme:)
6357
academic_year = AcademicYear.pending
6458
vaccination_records = vaccination_records_for(programme:)
6559

66-
if vaccination_records.count.positive?
67-
(1..vaccination_records.count).to_a.map do |dose_sequence|
68-
build_row(
69-
programme:,
70-
academic_year:,
71-
vaccination_records: vaccination_records.slice(0, dose_sequence)
72-
)
73-
end
74-
else
75-
[build_row(programme:, academic_year:, vaccination_records: [])]
60+
rows = (1..vaccination_records.count-1).to_a.map do |dose_sequence|
61+
build_row(programme:, academic_year:, vaccination_records: vaccination_records.slice(0, dose_sequence))
7662
end
63+
64+
rows + [build_row_from_cache(programme:, academic_year:, last_vaccination_record: vaccination_records.last)]
7765
end
7866

7967
def build_row(programme:, academic_year:, vaccination_records: nil)
@@ -118,6 +106,20 @@ def build_row(programme:, academic_year:, vaccination_records: nil)
118106
]
119107
end
120108

109+
def build_row_from_cache(programme:, academic_year:, last_vaccination_record:)
110+
cached_vaccination_status = @patient.vaccination_status(programme:, academic_year:)
111+
112+
vaccination_status = { status: cached_vaccination_status.status.to_sym,
113+
latest_session_status: cached_vaccination_status.latest_session_status.to_sym }
114+
115+
[
116+
name_for_programme(programme:, academic_year:, dose_sequence: last_vaccination_record&.dose_sequence || 0),
117+
status_for_programme(vaccination_status:),
118+
notes_for_programme(vaccination_status:, programme:, academic_year:,
119+
latest_vaccination_record: last_vaccination_record)
120+
]
121+
end
122+
121123
def name_for_programme(programme:, academic_year:, dose_sequence: nil)
122124
name_parts = []
123125

spec/features/vaccination_programmes_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ def then_the_table_has_a_row_showing_hpv_vaccinated
110110
end
111111

112112
def and_the_table_has_a_row_showing_second_hpv_vaccinated
113+
puts page.html
114+
113115
expect(page).to have_selector(
114116
"table.nhsuk-table tbody tr",
115117
text: "HPV (2nd dose)"
@@ -183,6 +185,8 @@ def and_the_patient_is_vaccinated_for_hpv
183185
session: @session,
184186
performed_at: 6.months.ago
185187
)
188+
189+
StatusUpdater.call(patient: @patient)
186190
end
187191

188192
def and_the_patient_has_a_second_dose_of_hpv
@@ -193,6 +197,8 @@ def and_the_patient_has_a_second_dose_of_hpv
193197
programme: @hpv_programme,
194198
session: @session
195199
)
200+
201+
StatusUpdater.call(patient: @patient)
196202
end
197203

198204
def and_the_patient_had_two_flu_doses_last_year

0 commit comments

Comments
 (0)