@@ -45,35 +45,47 @@ 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 |i |
48
+ rows =
49
+ ( 1 ..vaccination_records . count - 1 ) . to_a . map do |i |
50
50
build_row (
51
51
programme :,
52
52
academic_year :,
53
53
vaccination_records : vaccination_records . slice ( 0 , i )
54
54
)
55
55
end
56
- else
57
- [ build_row ( programme :, academic_year :, vaccination_records : [ ] ) ]
58
- end
56
+
57
+ rows +
58
+ [
59
+ build_row_from_cache (
60
+ programme :,
61
+ academic_year :,
62
+ last_vaccination_record : vaccination_records . last
63
+ )
64
+ ]
59
65
end
60
66
end
61
67
62
68
def non_seasonal_programme_rows ( programme :)
63
69
academic_year = AcademicYear . pending
64
70
vaccination_records = vaccination_records_for ( programme :)
65
71
66
- if vaccination_records . count . positive?
67
- ( 1 ..vaccination_records . count ) . to_a . map do |i |
72
+ rows =
73
+ ( 1 ..vaccination_records . count - 1 ) . to_a . map do |i |
68
74
build_row (
69
75
programme :,
70
76
academic_year :,
71
77
vaccination_records : vaccination_records . slice ( 0 , i )
72
78
)
73
79
end
74
- else
75
- [ build_row ( programme :, academic_year :, vaccination_records : [ ] ) ]
76
- end
80
+
81
+ rows +
82
+ [
83
+ build_row_from_cache (
84
+ programme :,
85
+ academic_year :,
86
+ last_vaccination_record : vaccination_records . last
87
+ )
88
+ ]
77
89
end
78
90
79
91
def build_row ( programme :, academic_year :, vaccination_records : nil )
@@ -98,7 +110,33 @@ def build_row(programme:, academic_year:, vaccination_records: nil)
98
110
vaccination_status :,
99
111
programme :,
100
112
academic_year :,
101
- latest_vaccination_record : vaccination_records . last
113
+ latest_vaccination_record : vaccination_records &.last
114
+ )
115
+ ]
116
+ end
117
+
118
+ def build_row_from_cache ( programme :, academic_year :, last_vaccination_record :)
119
+ cached_vaccination_status =
120
+ @patient . vaccination_status ( programme :, academic_year :)
121
+
122
+ vaccination_status = {
123
+ status : cached_vaccination_status . status . to_sym ,
124
+ latest_session_status :
125
+ cached_vaccination_status . latest_session_status . to_sym
126
+ }
127
+
128
+ [
129
+ name_for_programme (
130
+ programme :,
131
+ academic_year :,
132
+ dose_sequence : last_vaccination_record &.dose_sequence
133
+ ) ,
134
+ status_for_programme ( vaccination_status :, programme :, academic_year :) ,
135
+ notes_for_programme (
136
+ vaccination_status :,
137
+ programme :,
138
+ academic_year :,
139
+ latest_vaccination_record : last_vaccination_record
102
140
)
103
141
]
104
142
end
0 commit comments