@@ -45,35 +45,23 @@ def seasonal_programme_rows(programme:)
45
45
46
46
vaccination_records = vaccination_records_for ( programme :, academic_year :)
47
47
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 ) )
58
50
end
51
+
52
+ rows + [ build_row_from_cache ( programme :, academic_year :, last_vaccination_record : vaccination_records . last ) ]
59
53
end
60
54
end
61
55
62
56
def non_seasonal_programme_rows ( programme :)
63
57
academic_year = AcademicYear . pending
64
58
vaccination_records = vaccination_records_for ( programme :)
65
59
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 ) )
76
62
end
63
+
64
+ rows + [ build_row_from_cache ( programme :, academic_year :, last_vaccination_record : vaccination_records . last ) ]
77
65
end
78
66
79
67
def build_row ( programme :, academic_year :, vaccination_records : nil )
@@ -118,6 +106,20 @@ def build_row(programme:, academic_year:, vaccination_records: nil)
118
106
]
119
107
end
120
108
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
+
121
123
def name_for_programme ( programme :, academic_year :, dose_sequence : nil )
122
124
name_parts = [ ]
123
125
0 commit comments