@@ -90,81 +90,77 @@ def find_teams(workgroup)
9090 end
9191
9292 def reset_team ( team )
93- patient_ids_to_update = Set . new
94-
95- ActiveRecord ::Base . transaction do
96- immunisation_imports = find_immunisation_imports_for_team ( team )
97- puts " - Found #{ immunisation_imports . count } immunisation import(s) created before team's cut off date: " \
98- "#{ team . national_reporting_cut_off_date } "
99-
100- patient_ids = find_patients_for_team ( team ) . ids
101- puts " - Found #{ patient_ids . count } patient(s) in this team"
102-
103- vaccination_records = find_vaccination_records_for_team ( team )
104- puts " - Found #{ vaccination_records . count } vaccination record(s) in this team's imports"
105-
106- not_synced_vaccination_records =
107- vaccination_records . not_synced_to_nhs_immunisations_api
108- synced_vaccination_records =
109- vaccination_records . synced_to_nhs_immunisations_api
110- patient_ids_of_not_synced_records =
111- not_synced_vaccination_records . pluck ( :patient_id ) . uniq
112- if synced_vaccination_records . exists?
113- puts " - #{ synced_vaccination_records . count } vaccination" \
114- " record(s) have been synced to NHS Immunisations API and" \
115- " will NOT be deleted"
116- puts " - #{ not_synced_vaccination_records . count } vaccination" \
117- " record(s) will be deleted"
118- end
119-
120- puts "Destroying vaccination records..."
121- not_synced_vaccination_records . destroy_all
122-
123- puts "Refreshing immunisations imports..."
124- if immunisation_imports . joins ( :vaccination_records ) . any?
125- immunisation_imports_with_records =
126- immunisation_imports . joins ( :vaccination_records ) . distinct
127- immunisation_imports =
128- immunisation_imports . where . not (
129- id : immunisation_imports_with_records . select ( :id )
130- )
131- puts " - #{ immunisation_imports_with_records . count } immunisation" \
132- " import(s) have associated vaccination records and will NOT" \
133- " be deleted"
134- puts " - #{ immunisation_imports . count } immunisation import(s) will" \
135- " be deleted"
136- end
93+ immunisation_imports = find_immunisation_imports_for_team ( team )
94+ puts " - Found #{ immunisation_imports . count } immunisation import(s) created before team's cut off date: " \
95+ "#{ team . national_reporting_cut_off_date } "
96+
97+ patient_ids = find_patients_for_team ( team ) . ids
98+ puts " - Found #{ patient_ids . count } patient(s) in this team"
99+
100+ vaccination_records = find_vaccination_records_for_team ( team )
101+ puts " - Found #{ vaccination_records . count } vaccination record(s) in this team's imports"
102+
103+ not_synced_vaccination_records =
104+ vaccination_records . not_synced_to_nhs_immunisations_api
105+ synced_vaccination_records =
106+ vaccination_records . synced_to_nhs_immunisations_api
107+ patient_ids_of_not_synced_records =
108+ not_synced_vaccination_records . pluck ( :patient_id ) . uniq
109+ if synced_vaccination_records . exists?
110+ puts " - #{ synced_vaccination_records . count } vaccination" \
111+ " record(s) have been synced to NHS Immunisations API and" \
112+ " will NOT be deleted"
113+ puts " - #{ not_synced_vaccination_records . count } vaccination" \
114+ " record(s) will be deleted"
115+ end
137116
138- puts "Destroying immunisation imports ..."
139- immunisation_imports . destroy_all
117+ puts "Destroying vaccination records ..."
118+ not_synced_vaccination_records . destroy_all
140119
141- archive_reasons =
142- ArchiveReason . where (
143- patient_id : patient_ids_of_not_synced_records ,
144- team :
120+ puts "Refreshing immunisations imports..."
121+ if immunisation_imports . joins ( :vaccination_records ) . any?
122+ immunisation_imports_with_records =
123+ immunisation_imports . joins ( :vaccination_records ) . distinct
124+ immunisation_imports =
125+ immunisation_imports . where . not (
126+ id : immunisation_imports_with_records . select ( :id )
145127 )
146- puts "Destroying #{ archive_reasons . count } archive reasons..."
147- archive_reasons . destroy_all
128+ puts " - #{ immunisation_imports_with_records . count } immunisation" \
129+ " import(s) have associated vaccination records and will NOT" \
130+ " be deleted"
131+ puts " - #{ immunisation_imports . count } immunisation import(s) will" \
132+ " be deleted"
133+ end
148134
149- puts "Updating patient-team relationships..."
150- PatientTeamUpdater . call (
151- patient_scope : Patient . where ( id : patient_ids_of_not_synced_records )
135+ puts "Destroying immunisation imports..."
136+ immunisation_imports . destroy_all
137+
138+ archive_reasons =
139+ ArchiveReason . where (
140+ patient_id : patient_ids_of_not_synced_records ,
141+ team :
152142 )
143+ puts "Destroying #{ archive_reasons . count } archive reasons..."
144+ archive_reasons . destroy_all
145+
146+ puts "Updating patient-team relationships..."
147+ PatientTeamUpdater . call (
148+ patient_scope : Patient . where ( id : patient_ids_of_not_synced_records )
149+ )
153150
154- patients_to_destroy =
155- find_patients_without_team ( patient_ids_of_not_synced_records )
151+ patients_to_destroy =
152+ find_patients_without_team ( patient_ids_of_not_synced_records )
156153
157- patient_ids_to_update + =
158- patient_ids_of_not_synced_records - patients_to_destroy . ids
159- puts " - Found #{ patients_to_destroy . count } " \
160- " patient(s) who were in the imports, and no longer have teams"
154+ patient_ids_to_update =
155+ patient_ids_of_not_synced_records - patients_to_destroy . ids
156+ puts " - Found #{ patients_to_destroy . count } " \
157+ " patient(s) who were in the imports, and no longer have teams"
161158
162- puts "Destroying #{ patients_to_destroy . count } patients..."
163- PatientDeleter . call (
164- patients : patients_to_destroy ,
165- confirm_production_delete : true
166- )
167- end
159+ puts "Destroying #{ patients_to_destroy . count } patients..."
160+ PatientDeleter . call (
161+ patients : patients_to_destroy ,
162+ confirm_production_delete : true
163+ )
168164
169165 puts "Enqueueing jobs to update statuses for" \
170166 " #{ patient_ids_to_update . size } patient(s) left over..."
0 commit comments