renalware-core 2.0.16 → 2.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (421) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/renalware/accesses/assessments_controller.rb +2 -0
  3. data/app/controllers/renalware/accesses/base_controller.rb +2 -0
  4. data/app/controllers/renalware/accesses/dashboards_controller.rb +2 -0
  5. data/app/controllers/renalware/accesses/plans_controller.rb +2 -0
  6. data/app/controllers/renalware/accesses/procedures_controller.rb +2 -0
  7. data/app/controllers/renalware/accesses/profiles_controller.rb +2 -0
  8. data/app/controllers/renalware/admin/cache_controller.rb +2 -0
  9. data/app/controllers/renalware/admin/feeds/files_controller.rb +2 -0
  10. data/app/controllers/renalware/admin/users_controller.rb +2 -0
  11. data/app/controllers/renalware/admissions/admissions_controller.rb +2 -0
  12. data/app/controllers/renalware/admissions/consults_controller.rb +2 -0
  13. data/app/controllers/renalware/admissions/patient_admissions_controller.rb +2 -0
  14. data/app/controllers/renalware/admissions/requests_controller.rb +2 -0
  15. data/app/controllers/renalware/api/token_authenticated_api_controller.rb +2 -2
  16. data/app/controllers/renalware/api/ukrdc/patients_controller.rb +2 -0
  17. data/app/controllers/renalware/api/v1/medications/prescriptions_controller.rb +2 -0
  18. data/app/controllers/renalware/api/v1/patients/patients_controller.rb +2 -0
  19. data/app/controllers/renalware/application_controller.rb +2 -0
  20. data/app/controllers/renalware/base_controller.rb +2 -0
  21. data/app/controllers/renalware/clinical/allergies_controller.rb +2 -0
  22. data/app/controllers/renalware/clinical/allergy_statuses_controller.rb +2 -0
  23. data/app/controllers/renalware/clinical/base_controller.rb +2 -0
  24. data/app/controllers/renalware/clinical/body_compositions_controller.rb +2 -0
  25. data/app/controllers/renalware/clinical/dry_weights_controller.rb +2 -0
  26. data/app/controllers/renalware/clinical/profiles_controller.rb +2 -0
  27. data/app/controllers/renalware/clinics/appointments_controller.rb +2 -0
  28. data/app/controllers/renalware/clinics/clinic_visits_controller.rb +2 -0
  29. data/app/controllers/renalware/clinics/visits_controller.rb +2 -0
  30. data/app/controllers/renalware/concerns/cache_busting.rb +2 -0
  31. data/app/controllers/renalware/concerns/devise_controller_methods.rb +2 -0
  32. data/app/controllers/renalware/concerns/pageable.rb +2 -0
  33. data/app/controllers/renalware/concerns/pdf_renderable.rb +2 -0
  34. data/app/controllers/renalware/dashboard.rb +2 -0
  35. data/app/controllers/renalware/dashboard/dashboards_controller.rb +2 -0
  36. data/app/controllers/renalware/deaths_controller.rb +2 -0
  37. data/app/controllers/renalware/devise/passwords_controller.rb +2 -0
  38. data/app/controllers/renalware/devise/registrations_controller.rb +2 -0
  39. data/app/controllers/renalware/devise/sessions_controller.rb +2 -0
  40. data/app/controllers/renalware/directory/people_controller.rb +2 -0
  41. data/app/controllers/renalware/drugs/drugs_controller.rb +2 -0
  42. data/app/controllers/renalware/events/events_controller.rb +2 -0
  43. data/app/controllers/renalware/events/investigations_controller.rb +2 -0
  44. data/app/controllers/renalware/events/swabs_controller.rb +2 -0
  45. data/app/controllers/renalware/events/types_controller.rb +2 -0
  46. data/app/controllers/renalware/hd/base_controller.rb +2 -0
  47. data/app/controllers/renalware/hd/cannulation_types_controller.rb +2 -0
  48. data/app/controllers/renalware/hd/current_profile_controller.rb +2 -0
  49. data/app/controllers/renalware/hd/dashboards_controller.rb +2 -0
  50. data/app/controllers/renalware/hd/dialysers_controller.rb +2 -0
  51. data/app/controllers/renalware/hd/diaries_controller.rb +2 -0
  52. data/app/controllers/renalware/hd/diary_slots_controller.rb +2 -0
  53. data/app/controllers/renalware/hd/historical_profiles_controller.rb +2 -0
  54. data/app/controllers/renalware/hd/mdm_controller.rb +2 -0
  55. data/app/controllers/renalware/hd/mdm_patients_controller.rb +2 -0
  56. data/app/controllers/renalware/hd/ongoing_sessions_controller.rb +2 -0
  57. data/app/controllers/renalware/hd/patients_controller.rb +2 -0
  58. data/app/controllers/renalware/hd/preference_sets_controller.rb +2 -0
  59. data/app/controllers/renalware/hd/protocols_controller.rb +2 -0
  60. data/app/controllers/renalware/hd/sessions_controller.rb +2 -0
  61. data/app/controllers/renalware/hd/stations_controller.rb +2 -0
  62. data/app/controllers/renalware/hd/unmet_preferences_controller.rb +2 -0
  63. data/app/controllers/renalware/hospitals/units_controller.rb +2 -0
  64. data/app/controllers/renalware/hospitals/wards_controller.rb +2 -0
  65. data/app/controllers/renalware/letters/approved_letters_controller.rb +2 -0
  66. data/app/controllers/renalware/letters/base_controller.rb +2 -0
  67. data/app/controllers/renalware/letters/completed_letters_controller.rb +2 -0
  68. data/app/controllers/renalware/letters/contacts_controller.rb +2 -0
  69. data/app/controllers/renalware/letters/descriptions_controller.rb +2 -0
  70. data/app/controllers/renalware/letters/electronic_receipts_controller.rb +2 -0
  71. data/app/controllers/renalware/letters/formatted_letters_controller.rb +2 -0
  72. data/app/controllers/renalware/letters/letters_controller.rb +2 -0
  73. data/app/controllers/renalware/letters/lists_controller.rb +2 -0
  74. data/app/controllers/renalware/letters/pdf_letter_cache_controller.rb +2 -0
  75. data/app/controllers/renalware/letters/pending_review_letters_controller.rb +2 -0
  76. data/app/controllers/renalware/letters/rejected_letters_controller.rb +2 -0
  77. data/app/controllers/renalware/low_clearance/base_controller.rb +2 -0
  78. data/app/controllers/renalware/low_clearance/dashboards_controller.rb +2 -0
  79. data/app/controllers/renalware/low_clearance/mdm_controller.rb +2 -0
  80. data/app/controllers/renalware/low_clearance/mdm_patients_controller.rb +2 -0
  81. data/app/controllers/renalware/low_clearance/profiles_controller.rb +2 -0
  82. data/app/controllers/renalware/mdm_controller.rb +2 -0
  83. data/app/controllers/renalware/mdm_patients_controller.rb +2 -0
  84. data/app/controllers/renalware/medications/drug_types/prescriptions_controller.rb +2 -0
  85. data/app/controllers/renalware/medications/prescriptions_controller.rb +2 -0
  86. data/app/controllers/renalware/medications/terminations_controller.rb +2 -0
  87. data/app/controllers/renalware/messaging/internal/messages_controller.rb +2 -0
  88. data/app/controllers/renalware/messaging/internal/receipts_controller.rb +2 -0
  89. data/app/controllers/renalware/modalities/descriptions_controller.rb +2 -0
  90. data/app/controllers/renalware/modalities/modalities_controller.rb +2 -0
  91. data/app/controllers/renalware/modalities/reasons_controller.rb +2 -0
  92. data/app/controllers/renalware/pathology/base_controller.rb +2 -0
  93. data/app/controllers/renalware/pathology/current_observation_results_controller.rb +2 -0
  94. data/app/controllers/renalware/pathology/historical_observation_results_controller.rb +2 -0
  95. data/app/controllers/renalware/pathology/observation_requests_controller.rb +2 -0
  96. data/app/controllers/renalware/pathology/observations_controller.rb +2 -0
  97. data/app/controllers/renalware/pathology/patient_rules_controller.rb +2 -0
  98. data/app/controllers/renalware/pathology/recent_observation_results_controller.rb +2 -0
  99. data/app/controllers/renalware/pathology/requests/requests_controller.rb +2 -0
  100. data/app/controllers/renalware/pathology/requests/rules_controller.rb +2 -0
  101. data/app/controllers/renalware/pathology/required_observations_controller.rb +2 -0
  102. data/app/controllers/renalware/patients/alerts_controller.rb +2 -0
  103. data/app/controllers/renalware/patients/bookmarks_controller.rb +2 -0
  104. data/app/controllers/renalware/patients/clinical_summaries_controller.rb +2 -0
  105. data/app/controllers/renalware/patients/patients_controller.rb +2 -0
  106. data/app/controllers/renalware/patients/practices_controller.rb +2 -0
  107. data/app/controllers/renalware/patients/primary_care_physician_controller.rb +2 -0
  108. data/app/controllers/renalware/patients/primary_care_physicians_controller.rb +2 -0
  109. data/app/controllers/renalware/patients/worry_controller.rb +2 -0
  110. data/app/controllers/renalware/patients/worryboard_controller.rb +2 -0
  111. data/app/controllers/renalware/pd/assessments_controller.rb +2 -0
  112. data/app/controllers/renalware/pd/bag_types_controller.rb +2 -0
  113. data/app/controllers/renalware/pd/base_controller.rb +2 -0
  114. data/app/controllers/renalware/pd/dashboards_controller.rb +2 -0
  115. data/app/controllers/renalware/pd/exit_site_infections_controller.rb +2 -0
  116. data/app/controllers/renalware/pd/infection_organisms_controller.rb +2 -0
  117. data/app/controllers/renalware/pd/mdm_controller.rb +2 -0
  118. data/app/controllers/renalware/pd/mdm_patients_controller.rb +2 -0
  119. data/app/controllers/renalware/pd/peritonitis_episodes_controller.rb +2 -0
  120. data/app/controllers/renalware/pd/pet_adequacy_results_controller.rb +2 -0
  121. data/app/controllers/renalware/pd/regimes_controller.rb +2 -0
  122. data/app/controllers/renalware/pd/training_sessions_controller.rb +2 -0
  123. data/app/controllers/renalware/problems/notes_controller.rb +2 -0
  124. data/app/controllers/renalware/problems/problems_controller.rb +2 -0
  125. data/app/controllers/renalware/renal/aki_alerts_controller.rb +2 -0
  126. data/app/controllers/renalware/renal/base_controller.rb +2 -0
  127. data/app/controllers/renalware/renal/prd_descriptions_controller.rb +2 -0
  128. data/app/controllers/renalware/renal/profiles_controller.rb +2 -0
  129. data/app/controllers/renalware/renal/registry_preflight_checks_controller.rb +2 -0
  130. data/app/controllers/renalware/reporting/audit_refreshments_controller.rb +2 -0
  131. data/app/controllers/renalware/reporting/audits_controller.rb +2 -0
  132. data/app/controllers/renalware/research/studies_controller.rb +2 -0
  133. data/app/controllers/renalware/research/study_participants_controller.rb +2 -0
  134. data/app/controllers/renalware/session_timeout_controller.rb +2 -0
  135. data/app/controllers/renalware/snippets/snippet_clones_controller.rb +2 -0
  136. data/app/controllers/renalware/snippets/snippet_invocations_controller.rb +2 -0
  137. data/app/controllers/renalware/snippets/snippets_controller.rb +2 -0
  138. data/app/controllers/renalware/system/email_templates_controller.rb +2 -0
  139. data/app/controllers/renalware/system/errors_controller.rb +2 -0
  140. data/app/controllers/renalware/system/mock_errors_controller.rb +2 -0
  141. data/app/controllers/renalware/system/user_feedback_controller.rb +40 -3
  142. data/app/controllers/renalware/transplants/base_controller.rb +2 -0
  143. data/app/controllers/renalware/transplants/donations_controller.rb +2 -0
  144. data/app/controllers/renalware/transplants/donor_dashboards_controller.rb +2 -0
  145. data/app/controllers/renalware/transplants/donor_followups_controller.rb +2 -0
  146. data/app/controllers/renalware/transplants/donor_operations_controller.rb +2 -0
  147. data/app/controllers/renalware/transplants/donor_stages_controller.rb +2 -0
  148. data/app/controllers/renalware/transplants/donor_workups_controller.rb +2 -0
  149. data/app/controllers/renalware/transplants/live_donors_controller.rb +2 -0
  150. data/app/controllers/renalware/transplants/mdm_controller.rb +2 -0
  151. data/app/controllers/renalware/transplants/mdm_patients_controller.rb +2 -0
  152. data/app/controllers/renalware/transplants/recipient_dashboards_controller.rb +2 -0
  153. data/app/controllers/renalware/transplants/recipient_followups_controller.rb +2 -0
  154. data/app/controllers/renalware/transplants/recipient_operations_controller.rb +2 -0
  155. data/app/controllers/renalware/transplants/recipient_workups_controller.rb +2 -0
  156. data/app/controllers/renalware/transplants/registration_statuses_controller.rb +2 -0
  157. data/app/controllers/renalware/transplants/registrations_controller.rb +2 -0
  158. data/app/controllers/renalware/transplants/wait_lists_controller.rb +2 -0
  159. data/app/controllers/renalware/virology/dashboards_controller.rb +2 -0
  160. data/app/controllers/renalware/virology/vaccinations_controller.rb +2 -0
  161. data/app/documents/renalware/accesses/assessment_document.rb +2 -0
  162. data/app/documents/renalware/age.rb +2 -0
  163. data/app/documents/renalware/binary_marker.rb +2 -0
  164. data/app/documents/renalware/blood_group.rb +2 -0
  165. data/app/documents/renalware/blood_pressure.rb +2 -0
  166. data/app/documents/renalware/dated_confirmation.rb +2 -0
  167. data/app/documents/renalware/dated_integer.rb +2 -0
  168. data/app/documents/renalware/dated_result.rb +2 -0
  169. data/app/documents/renalware/dated_test.rb +2 -0
  170. data/app/documents/renalware/hd/profile_document.rb +2 -0
  171. data/app/documents/renalware/hd/session_document.rb +2 -0
  172. data/app/documents/renalware/infection_status.rb +2 -0
  173. data/app/documents/renalware/left_right_confirmation.rb +2 -0
  174. data/app/documents/renalware/low_clearance/profile_document.rb +2 -0
  175. data/app/documents/renalware/nested_attribute.rb +2 -0
  176. data/app/documents/renalware/patient_document.rb +2 -0
  177. data/app/documents/renalware/renal/profile_document.rb +2 -0
  178. data/app/documents/renalware/smoking_status.rb +2 -0
  179. data/app/documents/renalware/transplants/crf_dated_result.rb +2 -0
  180. data/app/documents/renalware/transplants/donor_operation_document.rb +2 -0
  181. data/app/documents/renalware/transplants/donor_workup_document.rb +2 -0
  182. data/app/documents/renalware/transplants/recipient_followup_document.rb +2 -0
  183. data/app/documents/renalware/transplants/recipient_operation_document.rb +2 -0
  184. data/app/documents/renalware/transplants/recipient_workup_document.rb +2 -0
  185. data/app/documents/renalware/transplants/registration_document.rb +2 -0
  186. data/app/documents/renalware/year_dated_confirmation.rb +2 -0
  187. data/app/drops/renalware/patients/patient_drop.rb +2 -0
  188. data/app/drops/renalware/pd/exit_site_infection_drop.rb +2 -0
  189. data/app/drops/renalware/pd/patient_drop.rb +2 -0
  190. data/app/drops/renalware/renal/patient_drop.rb +2 -0
  191. data/app/helpers/presenter_helper.rb +2 -0
  192. data/app/helpers/ransack_helper.rb +2 -0
  193. data/app/helpers/renalware/accesses_helper.rb +2 -0
  194. data/app/helpers/renalware/admin_helper.rb +2 -0
  195. data/app/helpers/renalware/application_helper.rb +2 -0
  196. data/app/helpers/renalware/article_helper.rb +2 -0
  197. data/app/helpers/renalware/attribute_name_helper.rb +2 -0
  198. data/app/helpers/renalware/bag_types_helper.rb +2 -0
  199. data/app/helpers/renalware/clinic_helper.rb +2 -0
  200. data/app/helpers/renalware/clinical_helper.rb +2 -0
  201. data/app/helpers/renalware/clipboard_helper.rb +2 -0
  202. data/app/helpers/renalware/dashboards_helper.rb +2 -0
  203. data/app/helpers/renalware/definition_list_helper.rb +2 -0
  204. data/app/helpers/renalware/devise_helper.rb +2 -0
  205. data/app/helpers/renalware/dropdown_button_helper.rb +2 -0
  206. data/app/helpers/renalware/drugs_helper.rb +2 -0
  207. data/app/helpers/renalware/flash_helper.rb +2 -0
  208. data/app/helpers/renalware/form_helper.rb +2 -0
  209. data/app/helpers/renalware/hd_helper.rb +2 -0
  210. data/app/helpers/renalware/infection_organisms_helper.rb +2 -0
  211. data/app/helpers/renalware/layout_helper.rb +2 -0
  212. data/app/helpers/renalware/letters_helper.rb +2 -0
  213. data/app/helpers/renalware/mdm_helper.rb +2 -0
  214. data/app/helpers/renalware/navigation_helper.rb +2 -0
  215. data/app/helpers/renalware/patient_helper.rb +2 -0
  216. data/app/helpers/renalware/pd_helper.rb +2 -0
  217. data/app/helpers/renalware/pd_regime_bags_helper.rb +2 -0
  218. data/app/helpers/renalware/pd_regimes_helper.rb +2 -0
  219. data/app/helpers/renalware/pdf_helper.rb +2 -0
  220. data/app/helpers/renalware/prescriptions_helper.rb +2 -0
  221. data/app/helpers/renalware/primary_care_physicians_helper.rb +2 -0
  222. data/app/helpers/renalware/problems_helper.rb +2 -0
  223. data/app/helpers/renalware/render_helper.rb +2 -0
  224. data/app/helpers/renalware/reporting_helper.rb +2 -0
  225. data/app/helpers/renalware/side_nav_helper.rb +2 -0
  226. data/app/helpers/renalware/snippets_helper.rb +2 -0
  227. data/app/helpers/renalware/toggle_helper.rb +2 -0
  228. data/app/helpers/renalware/tooltip_helper.rb +2 -0
  229. data/app/helpers/renalware/transplant_helper.rb +2 -0
  230. data/app/helpers/renalware/users_helper.rb +3 -1
  231. data/app/helpers/renalware/versions_helper.rb +2 -0
  232. data/app/helpers/renalware/xhr_helper.rb +2 -0
  233. data/app/inputs/clock_picker_input.rb +2 -0
  234. data/app/inputs/date_picker_input.rb +2 -0
  235. data/app/inputs/datetime_picker_input.rb +2 -0
  236. data/app/inputs/hidden_array_input.rb +2 -0
  237. data/app/inputs/inline_radio_buttons_input.rb +2 -0
  238. data/app/inputs/multiple_select_input.rb +2 -0
  239. data/app/inputs/select_container_input.rb +2 -0
  240. data/app/inputs/simple_time_input.rb +2 -0
  241. data/app/inputs/user_picker_input.rb +2 -0
  242. data/app/jobs/application_job.rb +2 -0
  243. data/app/jobs/feed_job.rb +2 -0
  244. data/app/jobs/renalware/hd/generate_monthly_statistics_for_patient_job.rb +2 -0
  245. data/app/jobs/renalware/hd/generate_monthly_statistics_job.rb +2 -0
  246. data/app/jobs/renalware/hd/update_rolling_patient_statistics_job.rb +2 -0
  247. data/app/jobs/renalware/letters/save_pdf_letter_to_file_job.rb +2 -0
  248. data/app/jobs/renalware/reporting/refresh_audit_data_job.rb +2 -0
  249. data/app/mailers/renalware/admin/user_mailer.rb +2 -0
  250. data/app/mailers/renalware/letters/delivery/errors.rb +2 -0
  251. data/app/mailers/renalware/letters/delivery/practice_mailer.rb +2 -0
  252. data/app/mailers/renalware/previews/user_mailer_preview.rb +2 -0
  253. data/app/models/renalware/hd/sessions/auditable_session.rb +3 -2
  254. data/app/models/renalware/low_clearance/mdm_patients_query.rb +1 -1
  255. data/app/models/renalware/medications/prescription.rb +2 -2
  256. data/app/models/renalware/pd/capd_regime.rb +33 -39
  257. data/app/models/renalware/pd/mdm_patients_query.rb +1 -1
  258. data/app/models/renalware/transplants/mdm_patients_query.rb +1 -1
  259. data/app/models/renalware/transplants/registrations/wait_list_query.rb +2 -2
  260. data/app/models/renalware/user.rb +1 -1
  261. data/app/policies/renalware/letters/letter_policy.rb +13 -1
  262. data/app/policies/renalware/system/user_feedback_policy.rb +3 -0
  263. data/app/presenters/renalware/mdm_presenter.rb +0 -1
  264. data/app/validators/concerns/renalware/numeric_range_validations.rb +2 -0
  265. data/app/validators/concerns/renalware/numeric_scale_validations.rb +2 -0
  266. data/app/validators/renalware/address_validator.rb +2 -0
  267. data/app/validators/renalware/letters/author_signature_validator.rb +2 -0
  268. data/app/validators/renalware/patients/blood_pressure_presence_validator.rb +2 -0
  269. data/app/validators/renalware/patients/blood_pressure_validator.rb +2 -0
  270. data/app/validators/renalware/patients/bm_stix_validator.rb +2 -0
  271. data/app/validators/renalware/patients/hdf_presence_validator.rb +2 -0
  272. data/app/validators/renalware/patients/height_validator.rb +2 -0
  273. data/app/validators/renalware/patients/primary_care_physicians/address_validator.rb +2 -0
  274. data/app/validators/renalware/patients/pulse_validator.rb +2 -0
  275. data/app/validators/renalware/patients/temperature_validator.rb +2 -0
  276. data/app/validators/renalware/patients/weight_validator.rb +2 -0
  277. data/app/values/renalware/address.rb +2 -0
  278. data/app/values/renalware/bmi.rb +2 -0
  279. data/app/values/renalware/duration.rb +2 -0
  280. data/app/values/renalware/gender.rb +2 -0
  281. data/app/values/renalware/time_of_day.rb +2 -0
  282. data/app/views/renalware/admissions/consults/_table.html.slim +1 -1
  283. data/app/views/renalware/hd/ongoing_sessions/_table.html.slim +2 -2
  284. data/app/views/renalware/hd/sessions/_thead.html.slim +0 -2
  285. data/app/views/renalware/navigation/_admin.html.slim +12 -0
  286. data/app/views/renalware/navigation/_menu.html.slim +3 -1
  287. data/app/views/renalware/navigation/_super_admin.html.slim +11 -0
  288. data/app/views/renalware/system/user_feedback/edit.html.slim +19 -0
  289. data/app/views/renalware/system/user_feedback/index.html.slim +18 -0
  290. data/app/views/renalware/transplants/wait_lists/show.html.slim +3 -3
  291. data/config/initializers/ahoy.rb +2 -0
  292. data/config/initializers/backtrace_silencers.rb +2 -0
  293. data/config/initializers/client_side_validations.rb +1 -0
  294. data/config/initializers/core_extensions.rb +2 -0
  295. data/config/initializers/delayed_job.rb +2 -0
  296. data/config/initializers/devise.rb +2 -0
  297. data/config/initializers/devise_security_extension.rb +2 -0
  298. data/config/initializers/inflections.rb +2 -0
  299. data/config/initializers/kaminari.rb +2 -0
  300. data/config/initializers/mailer_previews.rb +2 -0
  301. data/config/initializers/mime_types.rb +2 -0
  302. data/config/initializers/null_object.rb +2 -0
  303. data/config/initializers/paper_trail.rb +2 -0
  304. data/config/initializers/postgresql_database_tasks.rb +2 -0
  305. data/config/initializers/ransack.rb +2 -0
  306. data/config/initializers/renalware.rb +2 -0
  307. data/config/initializers/simple_form.rb +2 -0
  308. data/config/initializers/simple_form_clock_picker.rb +2 -0
  309. data/config/initializers/simple_form_datepicker.rb +2 -0
  310. data/config/initializers/simple_form_foundation.rb +2 -0
  311. data/config/initializers/validates_timeliness.rb +2 -0
  312. data/config/initializers/wicked_pdf.rb +2 -0
  313. data/config/initializers/wrap_parameters.rb +2 -0
  314. data/config/locales/renalware/hd/session.en.yml +2 -2
  315. data/config/routes.rb +5 -3
  316. data/config/spring.rb +2 -0
  317. data/db/migrate/20180326155400_add_admin_notes_to_system_user_feedback.rb +6 -0
  318. data/db/seeds.rb +2 -0
  319. data/db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb +2 -0
  320. data/db/seeds/default/accesses/access_plan_types.rb +2 -0
  321. data/db/seeds/default/accesses/access_sites.rb +2 -0
  322. data/db/seeds/default/accesses/access_types.rb +2 -0
  323. data/db/seeds/default/accesses/access_types_procedures.rb +2 -0
  324. data/db/seeds/default/accesses/seeds.rb +2 -0
  325. data/db/seeds/default/clinics/clinics.rb +2 -0
  326. data/db/seeds/default/clinics/seeds.rb +2 -0
  327. data/db/seeds/default/deaths/death_causes.rb +2 -0
  328. data/db/seeds/default/deaths/seeds.rb +2 -0
  329. data/db/seeds/default/events/event_types.rb +2 -0
  330. data/db/seeds/default/events/seeds.rb +2 -0
  331. data/db/seeds/default/feeds/import_file_types.rb +2 -0
  332. data/db/seeds/default/feeds/seeds.rb +2 -0
  333. data/db/seeds/default/hd/cannulation_types.rb +2 -0
  334. data/db/seeds/default/hd/dialysers.rb +2 -0
  335. data/db/seeds/default/hd/seeds.rb +2 -0
  336. data/db/seeds/default/housekeeping.rb +2 -0
  337. data/db/seeds/default/letters/seeds.rb +2 -0
  338. data/db/seeds/default/medications/medication_routes.rb +2 -0
  339. data/db/seeds/default/medications/seeds.rb +2 -0
  340. data/db/seeds/default/modalities/descriptions.rb +2 -0
  341. data/db/seeds/default/modalities/reasons.rb +2 -0
  342. data/db/seeds/default/modalities/seeds.rb +2 -0
  343. data/db/seeds/default/pathology/measurement_units.rb +2 -0
  344. data/db/seeds/default/pathology/seeds.rb +2 -0
  345. data/db/seeds/default/patients/patients_ethnicities.rb +2 -0
  346. data/db/seeds/default/patients/patients_languages.rb +2 -0
  347. data/db/seeds/default/patients/patients_religions.rb +2 -0
  348. data/db/seeds/default/patients/seeds.rb +2 -0
  349. data/db/seeds/default/pd/bag_types.rb +2 -0
  350. data/db/seeds/default/pd/fluid_descriptions.rb +2 -0
  351. data/db/seeds/default/pd/organisms.rb +2 -0
  352. data/db/seeds/default/pd/peritonitis_episode_type_descriptions.rb +2 -0
  353. data/db/seeds/default/pd/seeds.rb +2 -0
  354. data/db/seeds/default/pd/systems.rb +2 -0
  355. data/db/seeds/default/pd/training_sites.rb +2 -0
  356. data/db/seeds/default/pd/training_types.rb +2 -0
  357. data/db/seeds/default/practices/practices.rb +2 -0
  358. data/db/seeds/default/practices/primary_care_physicians.rb +2 -0
  359. data/db/seeds/default/practices/seeds.rb +2 -0
  360. data/db/seeds/default/renal/prd_descriptions.rb +2 -0
  361. data/db/seeds/default/renal/seeds.rb +2 -0
  362. data/db/seeds/default/reporting/audits.rb +2 -0
  363. data/db/seeds/default/reporting/seeds.rb +2 -0
  364. data/db/seeds/default/seeds.rb +2 -0
  365. data/db/seeds/default/system/countries.rb +2 -0
  366. data/db/seeds/default/system/roles.rb +2 -0
  367. data/db/seeds/default/system/seeds.rb +2 -0
  368. data/db/seeds/default/system/users.rb +2 -0
  369. data/db/seeds/default/transplants/seeds.rb +2 -0
  370. data/db/seeds/default/transplants/transplant_donor_stages.rb +2 -0
  371. data/db/seeds/default/transplants/transplant_failure_cause_descriptions.rb +2 -0
  372. data/db/seeds/default/transplants/transplant_registration_statuses.rb +2 -0
  373. data/db/seeds/seeds_helper.rb +2 -0
  374. data/lib/age_calculator.rb +2 -0
  375. data/lib/array_stringifier.rb +2 -0
  376. data/lib/breadcrumb.rb +2 -0
  377. data/lib/collection_presenter.rb +2 -0
  378. data/lib/core_extensions/active_record/migration_helpers.rb +2 -0
  379. data/lib/core_extensions/active_record/sort.rb +2 -0
  380. data/lib/core_extensions/active_support/duration.rb +2 -0
  381. data/lib/core_extensions/date.rb +2 -0
  382. data/lib/core_extensions/dumb_delegator.rb +2 -0
  383. data/lib/core_extensions/hash.rb +2 -0
  384. data/lib/core_extensions/i18n/always_cascade.rb +2 -0
  385. data/lib/core_extensions/i18n/handle_blank_value.rb +2 -0
  386. data/lib/core_extensions/scenic.rb +2 -0
  387. data/lib/document/attribute_initializer.rb +2 -0
  388. data/lib/document/attribute_initializer/active_model.rb +2 -0
  389. data/lib/document/attribute_initializer/base.rb +2 -0
  390. data/lib/document/attribute_initializer/enum.rb +2 -0
  391. data/lib/document/base.rb +2 -0
  392. data/lib/document/embedded.rb +2 -0
  393. data/lib/document/enum.rb +2 -0
  394. data/lib/dropdown_button_item.rb +2 -0
  395. data/lib/duration_calculator.rb +2 -0
  396. data/lib/git_commit_sha.rb +2 -0
  397. data/lib/hash_collection.rb +2 -0
  398. data/lib/inline_image.rb +2 -0
  399. data/lib/numeric_inclusion_validator.rb +2 -0
  400. data/lib/renalware.rb +2 -0
  401. data/lib/renalware/automatic_age_calculator.rb +2 -0
  402. data/lib/renalware/configuration.rb +2 -0
  403. data/lib/renalware/engine.rb +2 -0
  404. data/lib/renalware/failure.rb +2 -0
  405. data/lib/renalware/month_period.rb +2 -0
  406. data/lib/renalware/remembered_preferences.rb +2 -0
  407. data/lib/renalware/service_result.rb +2 -0
  408. data/lib/renalware/success.rb +2 -0
  409. data/lib/renalware/version.rb +3 -1
  410. data/lib/renalware/week_period.rb +2 -0
  411. data/lib/smart_delegator.rb +2 -0
  412. data/lib/sql/index_case_stmt.rb +2 -0
  413. data/lib/subscription_registry.rb +2 -0
  414. data/lib/test_support/ajax_helpers.rb +2 -0
  415. data/lib/test_support/autocomplete_helpers.rb +2 -0
  416. data/lib/test_support/text_editor_helpers.rb +2 -0
  417. data/spec/factories/system/feedback.rb +10 -0
  418. data/spec/factories/transplants/donor_stage_position.rb +1 -1
  419. data/spec/factories/transplants/donor_stage_status.rb +1 -1
  420. metadata +26 -21
  421. data/app/views/renalware/navigation/_renalware_admin.html.slim +0 -23
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class InlineRadioButtonsInput < SimpleForm::Inputs::CollectionRadioButtonsInput
2
4
  def input_type
3
5
  "radio_buttons"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class MultipleSelectInput < SimpleForm::Inputs::CollectionSelectInput
2
4
  def input_type
3
5
  :multiple_select
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class SelectContainerInput < SimpleForm::Inputs::Base
2
4
  def input(wrapper_options)
3
5
  options_html = input_options.delete(:options_html)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class SimpleTimeInput < SimpleForm::Inputs::StringInput
2
4
  def input(_wrapper_options)
3
5
  template.content_tag(:div, class: "row collapse datepicker-wrapper") do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UserPickerInput < SimpleForm::Inputs::CollectionSelectInput
2
4
  def input_type
3
5
  :user_picker
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ApplicationJob < ActiveJob::Base
2
4
  # :nocov:
3
5
  # :nocov:
data/app/jobs/feed_job.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # To create outside of Rails, insert a row with values for the following columns
2
4
  # into the `delayed_jobs` table:
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module HD
3
5
  class GenerateMonthlyStatisticsForPatientJob < ApplicationJob
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This job when executed will store a snapshot of last month's HD session statistics
2
4
  # for each HD patient.
3
5
  module Renalware
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # When executed this job updates rolling statistics for a patient's
2
4
  # last past 12 HD sessions.
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency "renalware/letters"
2
4
  require "fileutils"
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency "renalware/reporting"
2
4
 
3
5
  module Renalware
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  class Admin::UserMailer < ApplicationMailer
3
5
  def approval(user)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency "renalware/letters"
2
4
 
3
5
  module Renalware
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency "renalware/letters"
2
4
  require "attr_extras"
3
5
  require_relative "./errors"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  class Admin::UserMailerPreview < ActionMailer::Preview
3
5
  def approval
@@ -59,11 +59,12 @@ module Renalware
59
59
  end
60
60
 
61
61
  # This is fluid removed (ml) / HD time in hours eg 3.75 / dry weight (kg)
62
- # The result is in ml/hr/kg
62
+ # The result is in ml/hr/kg.
63
+ # Note that fluid removed is entered in L so we need to convert to ml here.
63
64
  def ufr
64
65
  return nil unless measured_dry_weight > 0 && duration > 0 && fluid_removed > 0
65
66
 
66
- fluid_removed / duration_as_hours / measured_dry_weight
67
+ (fluid_removed * 1000) / duration_as_hours / measured_dry_weight
67
68
  end
68
69
 
69
70
  private
@@ -27,7 +27,7 @@ module Renalware
27
27
  .extending(ModalityScopes)
28
28
  .extending(NamedFilterScopes)
29
29
  .with_current_pathology
30
- .left_joins(:current_observation_set)
30
+ .left_outer_joins(:current_observation_set)
31
31
  .with_current_modality_of_class(LowClearance::ModalityDescription)
32
32
  .public_send(named_filter.to_s)
33
33
  .search(query)
@@ -46,13 +46,13 @@ module Renalware
46
46
  in: DoseUnit.codes,
47
47
  i18n_scope: "enumerize.renalware.medications.prescription.dose_unit"
48
48
 
49
- scope :ordered, -> { includes(:drug).order("drugs.name") }
49
+ scope :ordered, -> { joins(:drug).order("drugs.name") }
50
50
  scope :with_medication_route, -> { includes(:medication_route) }
51
51
  scope :with_drugs, -> { includes(drug: :drug_types) }
52
52
  scope :with_classifications, -> { includes(drug: :classifications) }
53
53
  scope :with_termination, -> { includes(termination: [:created_by]) }
54
54
  scope :current, lambda { |date = Date.current|
55
- eager_load(:termination)
55
+ left_outer_joins(:termination)
56
56
  .where("terminated_on IS NULL OR terminated_on > ?", date)
57
57
  }
58
58
  scope :terminated, lambda { |date = Date.current|
@@ -12,9 +12,7 @@ module Renalware
12
12
  500, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2200, 2500
13
13
  ].freeze
14
14
 
15
- before_save :set_glucose_volume_low_strength
16
- before_save :set_glucose_volume_medium_strength
17
- before_save :set_glucose_volume_high_strength
15
+ before_save :calculate_daily_average_glucose_volumes
18
16
 
19
17
  def pd_type
20
18
  :capd
@@ -22,52 +20,48 @@ module Renalware
22
20
 
23
21
  private
24
22
 
25
- # rubocop:disable Metrics/MethodLength
26
- def match_bag_type
27
- @match_bag_type ||= begin
28
- glucose_types = [[], [], []]
23
+ def calculate_daily_average_glucose_volumes
24
+ strengths = build_hash_of_glucose_strengths_and_bag_glucose_volumes
25
+ persist_daily_average_glucose_volume_for_each_strength(strengths)
26
+ end
27
+
28
+ def build_hash_of_glucose_strengths_and_bag_glucose_volumes
29
+ strengths = initialise_hash_of_glucose_strengths
30
+ assign_weekly_glucose_volume_for_each_bag_to_corresponding_strength(strengths)
31
+ strengths
32
+ end
29
33
 
30
- bags.each do |bag|
31
- weekly_total = bag.weekly_total_glucose_ml_per_bag
32
- case bag.bag_type.glucose_strength.to_sym
33
- when :low then glucose_types[0] << weekly_total
34
- when :medium then glucose_types[1] << weekly_total
35
- when :high then glucose_types[2] << weekly_total
36
- else glucose_types
37
- end
38
- end
39
- glucose_types
34
+ def persist_daily_average_glucose_volume_for_each_strength(strengths)
35
+ strengths.each do |name, strength|
36
+ strength_setter = :"glucose_volume_#{name}_strength="
37
+ send(strength_setter, strength.daily_average) if respond_to?(strength_setter)
40
38
  end
41
39
  end
42
- # rubocop:enable Metrics/MethodLength
43
40
 
44
- def set_glucose_volume_low_strength
45
- if match_bag_type[0].empty?
46
- 0
47
- else
48
- per_week_total = match_bag_type[0].inject{ |sum, v| sum + v }
49
- glucose_daily_average = per_week_total / 7.to_f
50
- self.glucose_volume_low_strength = glucose_daily_average.round
41
+ def initialise_hash_of_glucose_strengths
42
+ BagType.glucose_strength.values.each_with_object({}) do |strength, hash|
43
+ hash[strength.to_sym] = GlucoseStrength.new
51
44
  end
52
45
  end
53
46
 
54
- def set_glucose_volume_medium_strength
55
- if match_bag_type[1].empty?
56
- 0
57
- else
58
- per_week_total = match_bag_type[1].inject{ |sum, v| sum + v }
59
- glucose_daily_average = per_week_total / 7.to_f
60
- self.glucose_volume_medium_strength = glucose_daily_average.round
47
+ def assign_weekly_glucose_volume_for_each_bag_to_corresponding_strength(strengths)
48
+ bags.each do |bag|
49
+ weekly_total = bag.weekly_total_glucose_ml_per_bag
50
+ bag_strength = bag.bag_type.glucose_strength.to_sym
51
+ strengths[bag_strength].weekly_totals << weekly_total
61
52
  end
62
53
  end
63
54
 
64
- def set_glucose_volume_high_strength
65
- if match_bag_type[2].empty?
66
- 0
67
- else
68
- per_week_total = match_bag_type[2].inject{ |sum, v| sum + v }
69
- glucose_daily_average = per_week_total / 7.to_f
70
- self.glucose_volume_high_strength = glucose_daily_average.round
55
+ class GlucoseStrength
56
+ attr_reader :weekly_totals
57
+
58
+ def initialize
59
+ @weekly_totals = []
60
+ end
61
+
62
+ def daily_average
63
+ per_week_total = weekly_totals.inject(0.0){ |sum, volume| sum + volume }
64
+ per_week_total / 7.to_f
71
65
  end
72
66
  end
73
67
  end
@@ -26,7 +26,7 @@ module Renalware
26
26
  .extending(PatientPathologyScopes)
27
27
  .with_current_modality_matching(MODALITY_NAMES)
28
28
  .with_current_pathology
29
- .left_joins(:current_observation_set)
29
+ .left_outer_joins(:current_observation_set)
30
30
  .search(q)
31
31
  end
32
32
  end
@@ -33,7 +33,7 @@ module Renalware
33
33
  .extending(NamedFilterScopes)
34
34
  .with_current_modality_matching(MODALITY_NAMES)
35
35
  .with_current_pathology
36
- .left_joins(:current_observation_set)
36
+ .left_outer_joins(:current_observation_set)
37
37
  .public_send(named_filter.to_s)
38
38
  .search(q)
39
39
  end
@@ -22,8 +22,8 @@ module Renalware
22
22
  @search ||= begin
23
23
  query = query_for_filter(named_filter).merge(q)
24
24
  QueryableRegistration
25
- .includes(patient: [current_modality: :description])
26
- .includes(current_status: :description)
25
+ .eager_load(patient: [current_modality: :description])
26
+ .eager_load(current_status: :description)
27
27
  .merge(HD::Patient.with_profile)
28
28
  .merge(Renal::Patient.with_profile)
29
29
  .search(query).tap do |s|
@@ -31,7 +31,7 @@ module Renalware
31
31
  scope :ordered, -> { order(:family_name, :given_name) }
32
32
  scope :excluding_system_user, -> { where.not(username: SystemUser.username) }
33
33
  scope :with_no_role, lambda {
34
- left_joins(:roles)
34
+ left_outer_joins(:roles)
35
35
  .distinct("roles_users.user_id")
36
36
  .where("roles_users.user_id is null")
37
37
  }
@@ -32,7 +32,19 @@ module Renalware
32
32
  end
33
33
 
34
34
  def destroy?
35
- record.state.downcase.to_sym != :approved
35
+ return false if user_is_read_only?
36
+ return false if %i(approved completed).include?(letter_state)
37
+
38
+ user_is_admin? ||
39
+ user_is_super_admin? ||
40
+ letter.author == user ||
41
+ letter.created_by == user
42
+ end
43
+
44
+ private
45
+
46
+ def letter_state
47
+ record.state.downcase.to_sym
36
48
  end
37
49
  end
38
50
  end
@@ -5,6 +5,9 @@ require_dependency "renalware/snippets"
5
5
  module Renalware
6
6
  module System
7
7
  class UserFeedbackPolicy < BasePolicy
8
+ def index?
9
+ user_is_super_admin?
10
+ end
8
11
  end
9
12
  end
10
13
  end
@@ -132,7 +132,6 @@ module Renalware
132
132
  .with_medication_route
133
133
  .with_drugs
134
134
  .with_classifications
135
- .with_termination
136
135
  .eager_load(drug: [:drug_types])
137
136
  .map { |prescrip| Medications::PrescriptionPresenter.new(prescrip) }
138
137
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency "renalware"
2
4
 
3
5
  module Renalware
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency "renalware"
2
4
 
3
5
  module Renalware
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  class AddressValidator < ActiveModel::Validator
3
5
  def validate(address)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module Letters
3
5
  class AuthorSignatureValidator < ActiveModel::Validator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This validator is used somewhat unconventionally from the parent object (e.g. a
2
4
  # the HD::SessionDocument::Dialysis class) to allow us to conditionally validate
3
5
  # the presence of the BloodPressure fields only if a condition external to the BloodPressure
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module Patients
3
5
  class BloodPressureValidator < ActiveModel::Validator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module Patients
3
5
  class BmStixValidator < ActiveModel::EachValidator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This HDF validator is used somewhat unconventionally from the parent object (e.g. a
2
4
  # the HD::SessionDocument to allow us to conditionally validate the presence of the HDF fields
3
5
  # only if a condition external to the HDF class is met.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module Patients
3
5
  class HeightValidator < ActiveModel::EachValidator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_dependency "renalware/patients"
2
4
 
3
5
  module Renalware
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module Patients
3
5
  class PulseValidator < ActiveModel::EachValidator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module Patients
3
5
  class TemperatureValidator < ActiveModel::EachValidator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  module Patients
3
5
  class WeightValidator < ActiveModel::EachValidator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Renalware
2
4
  class Address < ApplicationRecord
3
5
  belongs_to :country, class_name: "System::Country"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "attr_extras"
2
4
 
3
5
  module Renalware