@@ -48,8 +48,8 @@ def add_vaccinations_sheet(package)
48
48
workbook . add_worksheet ( name : "Vaccinations" ) do |sheet |
49
49
sheet . add_row ( columns . map { it . to_s . upcase } )
50
50
51
- patient_sessions . find_each do |patient_session |
52
- rows ( patient_session :) . each { |row | row . add_to ( sheet :, cached_styles :) }
51
+ patients . find_each do |patient |
52
+ rows ( patient :) . each { |row | row . add_to ( sheet :, cached_styles :) }
53
53
end
54
54
55
55
sheet . sheet_view . pane do |pane |
@@ -128,34 +128,29 @@ def columns
128
128
]
129
129
end
130
130
131
- def patient_sessions
132
- @patient_sessions ||=
131
+ def patients
132
+ @patients ||=
133
133
session
134
- . patient_sessions
134
+ . patients
135
135
. includes (
136
- patient : [
137
- :consent_statuses ,
138
- :school ,
139
- { parent_relationships : :parent } ,
140
- {
141
- vaccination_records : %i[
142
- batch
143
- performed_by_user
144
- vaccine
145
- programme
146
- session
147
- ]
148
- }
149
- ] ,
150
- session : [ { programmes : :vaccines } , :location ]
136
+ :consent_statuses ,
137
+ :school ,
138
+ parent_relationships : :parent ,
139
+ vaccination_records : %i[
140
+ batch
141
+ performed_by_user
142
+ vaccine
143
+ programme
144
+ session
145
+ ]
151
146
)
152
147
. order_by_name
153
148
end
154
149
155
150
def consents
156
151
@consents ||=
157
152
Consent
158
- . where ( academic_year :, patient_id : patient_sessions . select ( :patient_id ) )
153
+ . where ( academic_year :, patient_id : patients . select ( :id ) )
159
154
. not_invalidated
160
155
. includes ( :parent , patient : { parent_relationships : :parent } )
161
156
. group_by ( &:patient_id )
@@ -177,12 +172,7 @@ def gillick_assessments
177
172
GillickAssessment
178
173
. select ( "DISTINCT ON (patient_id, programme_id) gillick_assessments.*" )
179
174
. joins ( :session )
180
- . where (
181
- session_dates : {
182
- session :
183
- } ,
184
- patient_id : patient_sessions . select ( :patient_id )
185
- )
175
+ . where ( session_dates : { session : } , patient_id : patients . select ( :id ) )
186
176
. order ( :patient_id , :programme_id , created_at : :desc )
187
177
. includes ( :performed_by )
188
178
. group_by ( &:patient_id )
@@ -197,7 +187,7 @@ def patient_specific_directions
197
187
. select (
198
188
"DISTINCT ON (patient_id, programme_id) patient_specific_directions.*"
199
189
)
200
- . where ( academic_year :, patient_id : patient_sessions . select ( :patient_id ) )
190
+ . where ( academic_year :, patient_id : patients . select ( :id ) )
201
191
. not_invalidated
202
192
. order ( :patient_id , :programme_id , created_at : :desc )
203
193
. includes ( :created_by )
@@ -211,7 +201,7 @@ def triages
211
201
@triages ||=
212
202
Triage
213
203
. select ( "DISTINCT ON (patient_id, programme_id) triages.*" )
214
- . where ( academic_year :, patient_id : patient_sessions . select ( :patient_id ) )
204
+ . where ( academic_year :, patient_id : patients . select ( :id ) )
215
205
. not_invalidated
216
206
. order ( :patient_id , :programme_id , created_at : :desc )
217
207
. includes ( :performed_by )
@@ -221,11 +211,7 @@ def triages
221
211
end
222
212
end
223
213
224
- def rows ( patient_session :)
225
- patient = patient_session . patient
226
- session = patient_session . session
227
- academic_year = patient_session . academic_year
228
-
214
+ def rows ( patient :)
229
215
session
230
216
. programmes_for ( patient :)
231
217
. flat_map do |programme |
@@ -255,31 +241,27 @@ def rows(patient_session:)
255
241
if vaccination_records . any?
256
242
vaccination_records . map do |vaccination_record |
257
243
Row . new ( columns , style : row_style ) do |row |
258
- add_patient_cells ( row , patient_session :, programme :)
244
+ add_patient_cells ( row , patient :, programme :)
259
245
add_existing_row_cells ( row , vaccination_record :)
260
246
end
261
247
end
262
248
else
263
249
[
264
250
Row . new ( columns , style : row_style ) do |row |
265
- add_patient_cells ( row , patient_session :, programme :)
266
- add_new_row_cells ( row , patient_session :, programme :)
251
+ add_patient_cells ( row , patient :, programme :)
252
+ add_new_row_cells ( row , patient :, programme :)
267
253
end
268
254
]
269
255
end
270
256
end
271
257
end
272
258
273
- def add_patient_cells ( row , patient_session :, programme :)
274
- patient = patient_session . patient
275
- session = patient_session . session
276
-
259
+ def add_patient_cells ( row , patient :, programme :)
277
260
gillick_assessment = gillick_assessments . dig ( patient . id , programme . id )
278
261
grouped_consents = consents . dig ( patient . id , programme . id ) || [ ]
279
262
patient_specific_direction =
280
263
patient_specific_directions . dig ( patient . id , programme . id )
281
264
triage = triages . dig ( patient . id , programme . id )
282
- academic_year = session . academic_year
283
265
284
266
row [ :organisation_code ] = organisation . ods_code
285
267
row [ :person_forename ] = patient . given_name
@@ -388,10 +370,7 @@ def add_existing_row_cells(row, vaccination_record:)
388
370
end
389
371
end
390
372
391
- def add_new_row_cells ( row , patient_session :, programme :)
392
- patient = patient_session . patient
393
- location = patient_session . session . location
394
-
373
+ def add_new_row_cells ( row , patient :, programme :)
395
374
row [ :vaccinated ] = Cell . new ( allowed_values : %w[ Y N ] )
396
375
row [ :date_of_vaccination ] = Cell . new ( type : :date )
397
376
row [ :school_name ] = school_name ( location :, patient :)
0 commit comments