Advertisement
andrey_zavyalov

Untitled

Dec 5th, 2023
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. require 'csv'
  2. require 'progress_bar'
  3.  
  4. clinic_admins = AdminUser.hc_clinic_admins;
  5. p_bar = ProgressBar.new(clinic_admins.count)
  6.  
  7. CSV.open('tmp/CS-1324.csv', 'w') do |csv|
  8. csv << ['Clinic ID','Account Name','User ID','Login Email','Role (practitioner/administrator)','Has clinic admin permissions',
  9. 'Total # of patients created','Total # of assessments administered','Last patient creation date','Last assessment administration date']
  10.  
  11. clinic_admins.find_each do |clinic_admin|
  12. p_bar.increment!
  13. practitioners = [clinic_admin] + ::Health::User.role_researcher.where(belongs_to_admin_user_id: clinic_admin.id).to_a
  14. practitioners.each_with_index do |p, index|
  15. p_bar.puts("#{index+1}/#{practitioners.count}")
  16. role = (p.id == clinic_admin.id) ? 'administrator' : 'practitioner'
  17. adm_perm = (p.id == clinic_admin.id || p.has_clinic_admin_permissions?) ? 'YES' : 'NO'
  18. row = [clinic_admin.id, p.full_name, p.id, p.dmail, role, adm_perm]
  19. patients = p.admin_users.role_user
  20. reports = BatchSession.status_complete.where(admin_user_id: patients.ids)
  21. row += [patients.count, reports.count, patients.maximum(:created_at), reports.maximum(:completed_at)]
  22. csv << row
  23. end
  24. end
  25. end
  26.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement