@@ -21,6 +21,25 @@ module CSVImportable
2121 scope :csv_not_removed , -> { where ( csv_removed_at : nil ) }
2222 scope :processed , -> { where . not ( processed_at : nil ) }
2323
24+ scope :status_for_uploaded_files ,
25+ -> do
26+ where (
27+ status : %i[
28+ pending_import
29+ rows_are_invalid
30+ low_pds_match_rate
31+ changesets_are_invalid
32+ in_review
33+ calculating_re_review
34+ in_re_review
35+ committing
36+ cancelled
37+ ]
38+ )
39+ end
40+ scope :status_for_imported_records ,
41+ -> { where ( status : %i[ processed partially_processed ] ) }
42+
2443 enum :status ,
2544 {
2645 pending_import : 0 ,
@@ -143,101 +162,7 @@ def process!
143162 parse_rows! if rows . nil?
144163 return if invalid?
145164
146- if is_a? ( PatientImport )
147- process_patient_import!
148- else
149- process_immunisation_import!
150- end
151- end
152-
153- def process_patient_import!
154- changesets =
155- rows . each_with_index . map do |row , row_number |
156- PatientChangeset . from_import_row ( row :, import : self , row_number :)
157- end
158-
159- if Flipper . enabled? ( :import_search_pds )
160- process_no_postcode_changesets ( self . changesets . without_postcode )
161- if self . changesets . with_postcode . any?
162- enqueue_pds_cascading_searches ( self . changesets . with_postcode )
163- return
164- end
165- end
166-
167- changesets . each ( &:assign_patient_id )
168-
169- validate_changeset_uniqueness!
170- return if changesets_are_invalid?
171-
172- if Flipper . enabled? ( :import_review_screen )
173- enqueue_review_jobs ( self . changesets )
174- else
175- changesets . each ( &:committing! )
176-
177- CommitImportJob . perform_async ( to_global_id . to_s )
178- end
179- end
180-
181- def process_immunisation_import!
182- counts = COUNT_COLUMNS . index_with ( 0 )
183-
184- ActiveRecord ::Base . transaction do
185- rows . each do |row |
186- count_column_to_increment = process_row ( row )
187- counts [ count_column_to_increment ] += 1
188- bulk_import ( rows : 100 )
189- end
190-
191- bulk_import ( rows : :all )
192-
193- postprocess_rows!
194-
195- update_columns ( processed_at : Time . zone . now , status : :processed , **counts )
196- end
197-
198- post_commit!
199- UpdatePatientsFromPDS . call ( patients , queue : :imports )
200- end
201-
202- def process_no_postcode_changesets ( changesets )
203- changesets . find_each do |cs |
204- cs . search_results << {
205- step : :no_fuzzy_with_history ,
206- result : :no_postcode ,
207- nhs_number : nil ,
208- created_at : Time . current
209- }
210- if Flipper . enabled? ( :import_review_screen )
211- cs . calculating_review!
212- ReviewPatientChangesetJob . perform_later ( cs . id )
213- else
214- cs . assign_patient_id
215- cs . committing!
216- end
217- end
218- end
219-
220- def enqueue_review_jobs ( changesets )
221- review_changesets =
222- if Flipper . enabled? ( :import_search_pds )
223- changesets . with_postcode
224- else
225- changesets
226- end
227-
228- review_changesets . each do |cs |
229- cs . calculating_review!
230- ReviewPatientChangesetJob . perform_later ( cs . id )
231- end
232- end
233-
234- def enqueue_pds_cascading_searches ( changesets )
235- changesets . find_each do |cs |
236- PDSCascadingSearchJob . set ( queue : :imports ) . perform_later (
237- cs ,
238- queue : :imports
239- )
240- end
165+ process_import!
241166 end
242167
243168 def remove!
0 commit comments