Advertisement
andrey_zavyalov

Untitled

Jan 15th, 2024
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1. cs_code = 1352
  2.  
  3. class Report
  4. module Renderer
  5. class MciRenderer < BaseRenderer
  6. def trends
  7. @trends
  8. end
  9.  
  10. def impairment_classification
  11. case assessment_result_color
  12. when 'green'
  13. I18n.t('report.cfp.mci.potentially_cognitively_unimpaired')
  14. when 'yellow'
  15. I18n.t('report.cfp.mci.indicative_of_subjective_decline')
  16. when 'orange'
  17. I18n.t('report.cfp.mci.indicative_of_potential_mci')
  18. when 'red'
  19. I18n.t('report.cfp.mci.indicative_of_major_neurocognitive_disorder')
  20. else
  21. ''
  22. end
  23. end
  24. end
  25. end
  26. end
  27.  
  28. report_data = [
  29. { preset_code: :mci, test_ids: [21, 17, 23, 19, 14, 20, 13, 24, 22, 18, 15, 16], renderer: Report::Renderer::MciRenderer },
  30. { preset_code: :mci_short, test_ids: [21, 19, 13, 24, 22, 16], renderer: Report::Renderer::MciShortRenderer },
  31. ]
  32.  
  33. report_data.each do |data|
  34. renderer = data[:renderer]
  35. test_ids = data[:test_ids]
  36. preset_code = data[:preset_code]
  37.  
  38. test_titles = test_ids.map do |test_id|
  39. test = Test.find(test_id)
  40. task_code = test.task_code
  41. [I18n.t("report.task.#{task_code}.desc") + ' - SS', I18n.t("report.task.#{task_code}.desc") + ' - %']
  42. end.flatten
  43. titles = "Admin ID
  44. Patient ID
  45. Company Name
  46. Assessment Sent Date
  47. Assessment Completed Date
  48. Summary Statement
  49. Impairment Classification
  50. IQ-code score
  51. IADL score classification
  52. PHQ-9 Score
  53. GAD-7 Score".split("\n")
  54. titles = titles + test_titles
  55.  
  56. protocols = ::Health::Protocol.where(preset_code: preset_code)
  57. sessions = ::Health::ProtocolSession.status_complete.where(protocol_id: protocols.ids)
  58. p_bar = ProgressBar.new(sessions.size)
  59.  
  60.  
  61. CSV.open("tmp/CS-#{cs_code}_#{preset_code}.csv", 'w') do |csv|
  62. csv << titles
  63. sessions.find_each do |session|
  64. p_bar.puts("#{preset_code} #{session.id}")
  65. p_bar.increment!
  66.  
  67. reports = session.reports
  68. batch_names = reports.map(&:batch).map(&:name)
  69. next if batch_names.exclude?('phq9')
  70. next if batch_names.exclude?('gad7')
  71. next if batch_names.exclude?('iadl')
  72. next if batch_names.exclude?('iqcodesr')
  73.  
  74. report = reports.find_by(cfp: true)
  75. renderer = renderer.new(report, {filename: '', template: ''})
  76.  
  77. renderer.comparative_group
  78. renderer.trends
  79.  
  80. admin = report.admin_user.becomes(::Health::User).clinic_admin
  81.  
  82. admin_id = admin.id
  83. patient_id = report.admin_user.client_id
  84. company_name = admin.trial.name
  85. sent_at = session.created_at.humanize_datetime
  86. completed_at = reports.maximum(:completed_at).humanize_datetime
  87.  
  88.  
  89. summary_statement = renderer.assessment_summary_main_result[0].html_safe + renderer.assessment_summary_main_result[1].html_safe
  90. summary_statement = ActionView::Base.full_sanitizer.sanitize(summary_statement)
  91.  
  92. impairment_classification = renderer.impairment_classification
  93. iqcode_score = renderer.score_summary('IQCODE-SR')
  94. iadl_score_classification = renderer.iadl_result
  95. phq9_score = renderer.score_summary('PHQ-9')
  96. gad7_score = renderer.score_summary('GAD-7')
  97.  
  98.  
  99. row = [admin_id, patient_id,company_name,sent_at,completed_at,summary_statement,impairment_classification,iqcode_score,iadl_score_classification,phq9_score,gad7_score]
  100. scores = renderer.cog_report.test_scores
  101. test_ids.each do |test_id|
  102. score = scores.find{ |s| s.test_id == test_id }
  103. score_trends = renderer.trends.find{ |trend| trend[:task_id] == test_id }
  104. score_trend = score_trends[:scores].find{ |t| t[:id] == score.id }
  105. row += [score_trend[:adjusted_standard], score_trend[:not_rounded_adjusted_percentile].round(2)]
  106. end
  107. csv << row
  108. end
  109. nil
  110. end
  111. end
  112.  
  113.  
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement