renalware-core 2.0.153 → 2.0.159

Sign up to get free protection for your applications and to get access to all the features.
Files changed (307) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/renalware/components/configuration.js +20 -0
  3. data/app/assets/javascripts/renalware/components/{dialogs.js.erb → dialogs.js} +2 -5
  4. data/app/assets/javascripts/renalware/components/{feed_only_inputs.js.erb → feed_only_inputs.js} +4 -4
  5. data/app/assets/javascripts/renalware/components/navigation.js +0 -7
  6. data/app/assets/javascripts/renalware/components/sortable.js +3 -0
  7. data/app/assets/javascripts/renalware/{core.js.erb → core.js} +0 -7
  8. data/app/assets/javascripts/renalware/rollup_compiled.css +62433 -43575
  9. data/app/assets/javascripts/renalware/rollup_compiled.js +10 -14
  10. data/app/assets/stylesheets/renalware/base/_variables.scss +1 -0
  11. data/app/assets/stylesheets/renalware/lib/_foundation_and_overrides.scss +1 -620
  12. data/app/assets/stylesheets/renalware/lib/_select2-foundation5-overrides.scss +1 -1
  13. data/app/assets/stylesheets/renalware/modules/_clinical.scss +13 -0
  14. data/app/assets/stylesheets/renalware/modules/_medications.scss +9 -9
  15. data/app/assets/stylesheets/renalware/modules/_patients.scss +4 -0
  16. data/app/assets/stylesheets/renalware/modules/_users.scss +2 -1
  17. data/app/assets/stylesheets/renalware/partials/_forms.scss +11 -0
  18. data/app/assets/stylesheets/renalware/partials/_navigation.scss +15 -12
  19. data/app/assets/stylesheets/renalware/partials/_simple_form.scss +1 -1
  20. data/app/assets/stylesheets/renalware/partials/_tables.scss +15 -8
  21. data/app/assets/stylesheets/renalware/partials/_toggle.scss +0 -66
  22. data/app/assets/stylesheets/renalware/partials/_toggling.scss +18 -0
  23. data/app/assets/stylesheets/renalware/partials/_trix.scss +12 -0
  24. data/app/components/renalware/admissions/active_consult_alert_component.html.slim +4 -0
  25. data/app/components/renalware/admissions/active_consult_alert_component.rb +25 -0
  26. data/app/components/renalware/article_component.html.slim +5 -0
  27. data/app/components/renalware/article_component.rb +12 -0
  28. data/app/components/renalware/events/event_list_component.rb +6 -1
  29. data/app/components/renalware/medications/tabbed_prescriptions_list_component.html.slim +41 -0
  30. data/app/components/renalware/medications/tabbed_prescriptions_list_component.rb +47 -0
  31. data/app/components/renalware/patients/messages_component.html.slim +45 -0
  32. data/app/components/renalware/patients/messages_component.rb +52 -0
  33. data/app/components/renalware/pd/adequacy_results_component.html.slim +3 -5
  34. data/app/components/renalware/pd/pet_results_component.html.slim +1 -3
  35. data/app/components/renalware/system/admin_menu_component.html.slim +3 -1
  36. data/app/components/renalware/users/last_signin_component.html.slim +3 -0
  37. data/app/components/renalware/users/last_signin_component.rb +23 -0
  38. data/app/controllers/renalware/admin/playgrounds_controller.rb +1 -1
  39. data/app/controllers/renalware/admin/users_controller.rb +1 -0
  40. data/app/controllers/renalware/drugs/drugs_controller.rb +4 -0
  41. data/app/controllers/renalware/hd/historical_profiles_controller.rb +1 -1
  42. data/app/controllers/renalware/medications/prescriptions_controller.rb +5 -2
  43. data/app/controllers/renalware/messaging/internal/messages_controller.rb +14 -5
  44. data/app/controllers/renalware/pathology/observation_descriptions_controller.rb +58 -0
  45. data/app/controllers/renalware/patients/mdms_controller.rb +104 -0
  46. data/app/controllers/renalware/pd/pet_results_controller.rb +1 -1
  47. data/app/controllers/renalware/system/view_metadata_controller.rb +61 -0
  48. data/app/controllers/renalware/users_controller.rb +25 -0
  49. data/app/helpers/renalware/drugs_helper.rb +6 -0
  50. data/app/helpers/renalware/layout_helper.rb +1 -1
  51. data/app/models/concerns/renalware/sortable.rb +49 -0
  52. data/app/models/renalware/accesses/patient.rb +2 -2
  53. data/app/models/renalware/accesses/plan.rb +1 -1
  54. data/app/models/renalware/admissions/request.rb +1 -0
  55. data/app/models/renalware/clinical/body_composition.rb +1 -1
  56. data/app/models/renalware/clinical/dry_weight.rb +1 -1
  57. data/app/models/renalware/clinics/clinic_visit.rb +5 -4
  58. data/app/models/renalware/feeds/files/create_feed_file.rb +1 -1
  59. data/app/models/renalware/hd/patient.rb +1 -1
  60. data/app/models/renalware/hd/preference_set.rb +1 -1
  61. data/app/models/renalware/hd/profile.rb +4 -4
  62. data/app/models/renalware/hd/schedule_definition.rb +1 -1
  63. data/app/models/renalware/hd/session.rb +2 -2
  64. data/app/models/renalware/hd/session_forms/batch_compile_pdfs.rb +1 -1
  65. data/app/models/renalware/hd/station.rb +2 -1
  66. data/app/models/renalware/letters/description.rb +2 -0
  67. data/app/models/renalware/letters/letter.rb +1 -1
  68. data/app/models/renalware/letters/part/prescriptions.rb +12 -3
  69. data/app/models/renalware/letters/pdf_letter_cache.rb +1 -1
  70. data/app/models/renalware/letters/printing/batch_compile_pdfs.rb +1 -1
  71. data/app/models/renalware/letters/recipient_params_processor.rb +1 -1
  72. data/app/models/renalware/medications/prescription.rb +0 -4
  73. data/app/models/renalware/messaging/internal/message_form.rb +1 -0
  74. data/app/models/renalware/messaging/internal/message_form_builder.rb +2 -1
  75. data/app/models/renalware/pathology/current_observations_for_descriptions_query.rb +3 -3
  76. data/app/models/renalware/pathology/measurement_unit.rb +13 -0
  77. data/app/models/renalware/pathology/observation_description.rb +23 -5
  78. data/app/models/renalware/pathology/observation_descriptions_by_code_query.rb +1 -1
  79. data/app/models/renalware/pathology/observation_requests_attributes_builder.rb +45 -5
  80. data/app/models/renalware/pathology/observations_within_date_range_query.rb +1 -1
  81. data/app/models/renalware/patient.rb +2 -2
  82. data/app/models/renalware/patients/bookmark.rb +2 -2
  83. data/app/models/renalware/patients/mdm_menu.rb +41 -0
  84. data/app/models/renalware/patients/mdm_patients_query.rb +1 -1
  85. data/app/models/renalware/patients/search_query.rb +1 -1
  86. data/app/models/renalware/patients/worry.rb +0 -1
  87. data/app/models/renalware/pd/mdm_patients_query.rb +1 -1
  88. data/app/models/renalware/problems/problem.rb +2 -1
  89. data/app/models/renalware/snippets/snippet_query.rb +1 -1
  90. data/app/models/renalware/surveys/question.rb +1 -2
  91. data/app/models/renalware/system/column_definition.rb +43 -0
  92. data/app/models/renalware/system/filter_definition.rb +29 -0
  93. data/app/models/renalware/system/update_user.rb +5 -0
  94. data/app/models/renalware/system/version.rb +11 -0
  95. data/app/models/renalware/system/view_metadata.rb +25 -0
  96. data/app/models/renalware/transplants/donation.rb +1 -1
  97. data/app/models/renalware/transplants/donor_followup.rb +0 -1
  98. data/app/models/renalware/transplants/failure_cause_description.rb +1 -1
  99. data/app/models/renalware/transplants/mdm_patients_query.rb +2 -2
  100. data/app/models/renalware/transplants/patient.rb +1 -1
  101. data/app/models/renalware/transplants/recipient_followup.rb +1 -3
  102. data/app/models/renalware/transplants/registration.rb +1 -3
  103. data/app/models/renalware/transplants/registrations/wait_list_query.rb +4 -4
  104. data/app/models/renalware/ukrdc/measurement_unit.rb +21 -0
  105. data/app/models/renalware/ukrdc/outgoing/rendering/lab_order.rb +30 -2
  106. data/app/models/renalware/ukrdc/paths.rb +1 -1
  107. data/app/models/renalware/ukrdc/treatment_timeline/prepare_tables.rb +1 -1
  108. data/app/models/renalware/ukrdc/treatment_timeline/remap_model_table_names_to_their_prepared_equivalents.rb +1 -1
  109. data/app/models/renalware/virology/vaccination.rb +5 -0
  110. data/app/policies/application_policy.rb +1 -1
  111. data/app/policies/renalware/medications/prescription_policy.rb +35 -0
  112. data/app/policies/renalware/system/view_metadata_policy.rb +17 -0
  113. data/app/presenters/concerns/renalware/accountable_presentation.rb +33 -0
  114. data/app/presenters/renalware/clinics/visit_presenter.rb +11 -0
  115. data/app/presenters/renalware/events/event_presenter.rb +11 -0
  116. data/app/presenters/renalware/mdm_presenter.rb +11 -0
  117. data/app/presenters/renalware/pathology/results_presenter.rb +1 -2
  118. data/app/presenters/renalware/renal/clinical_summary_presenter.rb +9 -6
  119. data/app/presenters/renalware/user_session_presenter.rb +1 -3
  120. data/app/views/renalware/admin/playgrounds/show.html.slim +2 -6
  121. data/app/views/renalware/admin/users/edit.html.slim +9 -0
  122. data/app/views/renalware/admin/users/index.html.slim +6 -0
  123. data/app/views/renalware/admissions/admissions/_filters.html.slim +8 -16
  124. data/app/views/renalware/clinical/allergies/_list.html.slim +3 -1
  125. data/app/views/renalware/dashboard/dashboards/show.html.slim +1 -0
  126. data/app/views/renalware/hd/protocols/_virology.html.slim +4 -5
  127. data/app/views/renalware/letters/letters/_form.html.slim +1 -1
  128. data/app/views/renalware/letters/mailshots/mailshots/_form.html.slim +25 -21
  129. data/app/views/renalware/letters/parts/_prescriptions.html.slim +4 -0
  130. data/app/views/renalware/mdm/_prescriptions.html.slim +4 -13
  131. data/app/views/renalware/mdm/prescriptions/_table.html.slim +3 -1
  132. data/app/views/renalware/medications/prescriptions/_current_hd.html.slim +13 -0
  133. data/app/views/renalware/medications/prescriptions/_filter_form.html.slim +26 -13
  134. data/app/views/renalware/medications/prescriptions/_form.html.slim +3 -2
  135. data/app/views/renalware/medications/prescriptions/_options.html.slim +3 -3
  136. data/app/views/renalware/medications/prescriptions/_table.html.slim +5 -4
  137. data/app/views/renalware/medications/prescriptions/_tables.html.slim +13 -16
  138. data/app/views/renalware/medications/prescriptions/index.html.slim +5 -4
  139. data/app/views/renalware/messaging/internal/messages/_form.html.slim +3 -0
  140. data/app/views/renalware/messaging/internal/messages/index.html.slim +36 -0
  141. data/app/views/renalware/navigation/_mdms.html.slim +5 -0
  142. data/app/views/renalware/navigation/_renal.html.slim +1 -0
  143. data/app/views/renalware/navigation/{_super_admin.html.slim → _super_admin.html.slim.dead} +0 -0
  144. data/app/views/renalware/pathology/code_groups/edit.html.slim +5 -5
  145. data/app/views/renalware/pathology/code_groups/index.html.slim +4 -5
  146. data/app/views/renalware/pathology/code_groups/show.html.slim +25 -26
  147. data/app/views/renalware/pathology/observation_descriptions/_filters.html.slim +14 -0
  148. data/app/views/renalware/pathology/observation_descriptions/edit.html.slim +21 -0
  149. data/app/views/renalware/pathology/observation_descriptions/index.html.slim +38 -0
  150. data/app/views/renalware/pathology/requests/requests/request_form/_crs_form.html.slim +1 -1
  151. data/app/views/renalware/patients/alerts/_list.html.slim +1 -0
  152. data/app/views/renalware/patients/mdms/_filters.html.slim +38 -0
  153. data/app/views/renalware/patients/mdms/_table.html.slim +72 -0
  154. data/app/views/renalware/patients/mdms/show.html.slim +18 -0
  155. data/app/views/renalware/patients/side_menu/_general.html.slim +4 -0
  156. data/app/views/renalware/patients/worryboard/_filters.html.slim +18 -13
  157. data/app/views/renalware/pd/_peritonitis_episodes.html.slim +13 -13
  158. data/app/views/renalware/pd/adequacy_results/_form_fields.html.slim +1 -1
  159. data/app/views/renalware/pd/adequacy_results/_table.html.slim +2 -2
  160. data/app/views/renalware/pd/peritonitis_episodes/show.html.slim +8 -6
  161. data/app/views/renalware/shared/_fieldset.html.slim +1 -2
  162. data/app/views/renalware/shared/_magellan_block.html.slim +1 -2
  163. data/app/views/renalware/system/view_metadata/_columns_table.html.slim +44 -0
  164. data/app/views/renalware/system/view_metadata/_filters_form.html.slim +19 -0
  165. data/app/views/renalware/system/view_metadata/_versions.html.slim +23 -0
  166. data/app/views/renalware/system/view_metadata/edit.html.slim +66 -0
  167. data/app/views/renalware/transplants/mdm/_prescriptions.html.slim +6 -22
  168. data/app/views/renalware/users/_filters.html.slim +11 -0
  169. data/app/views/renalware/users/index.html.slim +24 -0
  170. data/app/views/renalware/virology/vaccinations/_cell.html.slim +1 -1
  171. data/app/views/renalware/virology/vaccinations/_inputs.html.slim +1 -0
  172. data/app/views/renalware/virology/vaccinations/_toggled_cell.html.slim +2 -0
  173. data/config/initializers/core_extensions.rb +2 -2
  174. data/config/initializers/delayed_job.rb +1 -1
  175. data/config/initializers/inflections.rb +1 -0
  176. data/config/initializers/pagy.rb +5 -0
  177. data/config/locales/renalware/clinical/allergies.en.yml +1 -0
  178. data/config/locales/renalware/medications/tabbed_prescriptions_list_component.yml +15 -0
  179. data/config/locales/renalware/navigation/renal.en.yml +1 -0
  180. data/config/locales/renalware/patients/side_menu.en.yml +1 -0
  181. data/config/locales/renalware/virology/virology.en.yml +2 -0
  182. data/config/permissions.yml +1 -0
  183. data/config/routes.rb +1 -0
  184. data/config/routes/messaging.rb +9 -1
  185. data/config/routes/pathology.rb +1 -0
  186. data/config/routes/patients.rb +1 -0
  187. data/config/routes/system.rb +3 -0
  188. data/config/routes/users.rb +3 -0
  189. data/db/functions/convert_to_float_with_explicit_return_v01.sql +18 -0
  190. data/db/functions/update_current_observation_set_from_trigger_v05.sql +92 -0
  191. data/db/functions/update_pathology_observations_nresult_from_trigger_v01.sql +13 -0
  192. data/db/migrate/20200122182018_update_patient_current_modalities.rb +7 -0
  193. data/db/migrate/20200122182036_create_transplant_mdm_patients.rb +7 -0
  194. data/db/migrate/20200122190909_create_view_metadata.rb +44 -0
  195. data/db/migrate/20200131133223_create_hd_mdm_patients.rb +7 -0
  196. data/db/migrate/20200205185151_add_columns_to_system_view_metadata.rb +13 -0
  197. data/db/migrate/20200219113324_create_supportive_care_mdm_patients_view.rb +7 -0
  198. data/db/migrate/20200622120232_add_limits_to_path_obs_descriptions.rb +18 -0
  199. data/db/migrate/20200626081248_overload_convert_to_float_function.rb +13 -0
  200. data/db/migrate/20200626090256_add_nresult_to_pathology_observations.rb +29 -0
  201. data/db/migrate/20200628094228_add_prescriber_to_users.rb +14 -0
  202. data/db/migrate/20200812074223_add_public_flag_to_messages.rb +18 -0
  203. data/db/migrate/20200815150303_create_system_versions.rb +16 -0
  204. data/db/migrate/20200817085618_create_pd_mdm_patients.rb +7 -0
  205. data/db/migrate/20200817103930_create_low_clearance_mdm_patients.rb +7 -0
  206. data/db/migrate/20201001144512_update_fn_update_current_obs_set_triggerv05.rb +13 -0
  207. data/db/migrate/20201001145452_add_position_to_letter_descriptions.rb +5 -0
  208. data/db/migrate/20201009090959_make_drug_types_unique.rb +8 -0
  209. data/db/migrate/20201012160414_add_suggested_measurement_unit_to_pathology_observation_descriptions.rb +18 -0
  210. data/db/migrate/20201012171428_create_ukrdc_measurement_units.rb +18 -0
  211. data/db/migrate/20201015160542_add_position_to_drug_types.rb +31 -0
  212. data/db/migrate/20201020155510_add_bmi_to_clinic_visits.rb +31 -0
  213. data/db/migrate/20201020164524_update_pd_mdm_patients_view.rb +7 -0
  214. data/db/migrate/20201020170921_update_hd_mdm_patients_view.rb +7 -0
  215. data/db/migrate/20201020171139_update_low_clearance_mdm_patients_view.rb +7 -0
  216. data/db/migrate/20201021153832_update_supportive_care_mdm_patients_view.rb +7 -0
  217. data/db/migrate/20201021154809_update_transplant_mdm_patients_view.rb +7 -0
  218. data/db/migrate/20201023092859_remove_unused_indexes.rb +20 -0
  219. data/db/migrate/20201105153422_update_medication_current_prescriptions_view.rb +7 -0
  220. data/db/migrate/20201112152752_update_pd_mdm_patients_view1.rb +7 -0
  221. data/db/seeds/default/system/seeds.rb +1 -0
  222. data/db/seeds/default/system/view_metadata.rb +91 -0
  223. data/db/seeds/default/ukrdc/measurement_units.csv +12 -0
  224. data/db/seeds/default/ukrdc/measurement_units.rb +15 -0
  225. data/db/seeds/default/ukrdc/seeds.rb +1 -0
  226. data/db/triggers/update_pathology_observations_nresult_trigger_v01.sql +11 -0
  227. data/db/views/hd_mdm_patients_v01.sql +69 -0
  228. data/db/views/hd_mdm_patients_v02.sql +70 -0
  229. data/db/views/low_clearance_mdm_patients_v01.sql +38 -0
  230. data/db/views/low_clearance_mdm_patients_v02.sql +39 -0
  231. data/db/views/medication_current_prescriptions_v01.sql +2 -1
  232. data/db/views/medication_current_prescriptions_v02.sql +30 -0
  233. data/db/views/patient_current_modalities_v02.sql +18 -0
  234. data/db/views/pd_mdm_patients_v01.sql +42 -0
  235. data/db/views/pd_mdm_patients_v02.sql +43 -0
  236. data/db/views/pd_mdm_patients_v03.sql +50 -0
  237. data/db/views/reporting_anaemia_audit_v01.sql +0 -2
  238. data/db/views/supportive_care_mdm_patients_v01.sql +28 -0
  239. data/db/views/supportive_care_mdm_patients_v02.sql +29 -0
  240. data/db/views/transplant_mdm_patients_v01.sql +46 -0
  241. data/db/views/transplant_mdm_patients_v02.sql +47 -0
  242. data/lib/renalware/configuration.rb +2 -5
  243. data/lib/renalware/engine.rb +2 -2
  244. data/lib/renalware/version_number.rb +1 -1
  245. data/lib/tasks/db.rake +9 -0
  246. data/lib/tasks/pd.rake +28 -0
  247. data/spec/factories/drugs/drug_types.rb +5 -1
  248. data/spec/factories/messaging/internal/messages.rb +1 -0
  249. data/spec/factories/patients/practices.rb +1 -1
  250. data/spec/factories/patients/primary_care_physicians.rb +1 -1
  251. data/spec/factories/system/users.rb +1 -0
  252. data/spec/factories/system/view_metadata.rb +20 -0
  253. data/spec/support/capybara_helper.rb +2 -4
  254. data/spec/support/letters_spec_helper.rb +1 -1
  255. data/spec/support/matchers/validate_timeliness_of.rb +1 -1
  256. data/spec/support/pathology_spec_helper.rb +1 -2
  257. data/spec/support/policy_spec_helper.rb +12 -0
  258. data/vendor/assets/javascripts/foundation/foundation.alert.js +43 -0
  259. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +468 -0
  260. data/vendor/assets/javascripts/foundation/foundation.js +727 -0
  261. data/vendor/assets/javascripts/foundation/foundation.reveal.js +522 -0
  262. data/vendor/assets/javascripts/foundation/foundation.tab.js +247 -0
  263. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +348 -0
  264. data/vendor/assets/javascripts/foundation/foundation.topbar.js +458 -0
  265. data/vendor/assets/stylesheets/foundation/_functions.scss +156 -0
  266. data/vendor/assets/stylesheets/foundation/components/_alert-boxes.scss +128 -0
  267. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +261 -0
  268. data/vendor/assets/stylesheets/foundation/components/_dropdown-buttons.scss +130 -0
  269. data/vendor/assets/stylesheets/foundation/components/_dropdown.scss +269 -0
  270. data/vendor/assets/stylesheets/foundation/components/_forms.scss +601 -0
  271. data/vendor/assets/stylesheets/foundation/components/_global.scss +566 -0
  272. data/vendor/assets/stylesheets/foundation/components/_grid.scss +292 -0
  273. data/vendor/assets/stylesheets/foundation/components/_labels.scss +106 -0
  274. data/vendor/assets/stylesheets/foundation/components/_pagination.scss +163 -0
  275. data/vendor/assets/stylesheets/foundation/components/_panels.scss +107 -0
  276. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +212 -0
  277. data/vendor/assets/stylesheets/foundation/components/_side-nav.scss +120 -0
  278. data/vendor/assets/stylesheets/foundation/components/_split-buttons.scss +203 -0
  279. data/vendor/assets/stylesheets/foundation/components/_sub-nav.scss +125 -0
  280. data/vendor/assets/stylesheets/foundation/components/_tables.scss +135 -0
  281. data/vendor/assets/stylesheets/foundation/components/_tabs.scss +142 -0
  282. data/vendor/assets/stylesheets/foundation/components/_tooltips.scss +142 -0
  283. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +745 -0
  284. data/vendor/assets/stylesheets/foundation/components/_type.scss +525 -0
  285. data/vendor/assets/stylesheets/foundation/components/_visibility.scss +425 -0
  286. metadata +172 -71
  287. data/app/assets/javascripts/renalware/components/reporting.js.erb +0 -0
  288. data/app/assets/javascripts/renalware/components/session_timeout_redirect.js.erb +0 -37
  289. data/app/views/renalware/pd/infection_organisms/_edit.html.slim.obsolete +0 -16
  290. data/app/views/renalware/transplants/donor_operations/_sections_nav.html.slim +0 -11
  291. data/app/views/renalware/transplants/donor_workups/_sections_nav.html.slim +0 -15
  292. data/app/views/renalware/transplants/recipient_operations/_sections_nav.html.slim +0 -14
  293. data/app/views/renalware/transplants/recipient_workups/_sections_nav.html.slim +0 -15
  294. data/lib/core_extensions/active_record/sort.rb +0 -52
  295. data/spec/support/pages/accesses/procedure_page.rb +0 -53
  296. data/spec/support/pages/accesses/profile_page.rb +0 -45
  297. data/spec/support/pages/admissions/consults_page.rb +0 -26
  298. data/spec/support/pages/clinical/allergy_page.rb +0 -74
  299. data/spec/support/pages/clinical/profile_page.rb +0 -28
  300. data/spec/support/pages/hd/prescription_administration_dialog.rb +0 -132
  301. data/spec/support/pages/letters/form.rb +0 -63
  302. data/spec/support/pages/letters/mailshots/form.rb +0 -58
  303. data/spec/support/pages/letters/patient_letters.rb +0 -20
  304. data/spec/support/pages/low_clearance/profile_page.rb +0 -70
  305. data/spec/support/pages/medications/home_delivery_dialog.rb +0 -77
  306. data/spec/support/pages/medications/prescription_fom.rb +0 -62
  307. data/spec/support/pages/page_object.rb +0 -10
@@ -1,6 +1,5 @@
1
- .row data-magellan-destination="#{name}"
1
+ .row
2
2
  .large-12.columns
3
- a name="#{name}"
4
3
  fieldset
5
4
  legend
6
5
  = legend
@@ -1,5 +1,4 @@
1
1
  .columns.small-12.medium-6.large-6.xlarge-4
2
- div data-magellan-destination="#{local_assigns[:destination]}"
3
- a name="#{local_assigns[:destination]}"
2
+ div
4
3
  = article_tag(legend) do
5
4
  = yield
@@ -0,0 +1,44 @@
1
+ table.sortables(style="list-style-type: none;")
2
+ thead(style="position: sticky; top: 0; background-color:#fff;")
3
+ th.col-width-tiny
4
+ i.fas.fa-arrows-alt-v
5
+ i.fas.fa-question-circle.inline.ml-1.text-blue-500(title="Drag the 'hamburger' icon to change the order of columns in the table")
6
+ th.col-width-medium
7
+ | SQL column name
8
+ i.fas.fa-question-circle.inline.ml-1.text-blue-500(title="The programatic name for the data item, determined by the 'SQL view' in use.")
9
+ th.col-width-tiny
10
+ | Hide
11
+ i.fas.fa-question-circle.inline.ml-1.text-blue-500(title="Don't show this column in the table")
12
+ th
13
+ | Label
14
+ i.fas.fa-question-circle.inline.ml-1.text-blue-500(title="The text displayed in the column heading")
15
+ th.col-width-medium
16
+ | Width
17
+ i.fas.fa-question-circle.inline.ml-1.text-blue-500(title="Controls the table column width")
18
+ th.col-width-tiny
19
+ | Truncate
20
+ i.fas.fa-question-circle.inline.ml-1.text-blue-500(title="Will truncate and append an ellipsis to text constrained by its cell width")
21
+
22
+ tbody
23
+ - view.columns.each_with_index do |col, _idx|
24
+ tr.sortable
25
+ td.handle.border-0.text-left
26
+ i.fas.fa-bars
27
+ input(type="hidden" name="view_metadata[columns][][code]" value=col.code)
28
+ td.border-0
29
+ code= col.code
30
+ td.text-center.border-0
31
+ input.m-0(type="checkbox" name="view_metadata[columns][][hidden]" checked=col.hidden style="margin:0")
32
+ td.border-0
33
+ input.m-0(type="text" name="view_metadata[columns][][name]" value=col.name style="margin:0")
34
+ td.border-0
35
+ select.m-0(name="view_metadata[columns][][width]")
36
+ option(value="")
37
+ - Renalware::System::ColumnDefinition.new.width_values.each do |val, x|
38
+ option(value=val selected=(col.width == val.to_s))=val.to_s.humanize
39
+ td.text-center.border-0
40
+ input.m-0(type="checkbox" name="view_metadata[columns][][truncate]" checked=col.truncate)
41
+
42
+ / fc.input(type="checkbox" value=col checked=view.columns.include?(col) name="view_metadata[columns][visible]")
43
+ / input(bestchecked=view.columns.include?(col) name="view_metadata[columns][title]")
44
+ / label(class="" for="view_metadata_columns_#{col}" style="display: inline-block; width: auto")= col.humanize
@@ -0,0 +1,19 @@
1
+ .rounded-md.bg-orange-200.px-3.py-2.flex.items-start.shadow.mx-1.mb-5
2
+ i.fas.fa-info-circle.mr-2.mt-1.text-blue-500
3
+ | Editing filters is not possible yet
4
+
5
+ table
6
+ thead
7
+ th SQL column name
8
+ th Filter type
9
+ tbody
10
+ - view.filters.each do |filter|
11
+ tr
12
+ td.border-0
13
+ code= filter.code
14
+ td.border-0
15
+ = filter.type
16
+ / select.m-0(name="view_metadata[filters][][1]")
17
+ / option(value="")
18
+ / - Renalware::System::ColumnDefinition.new.width_values.each do |val, x|
19
+ / option(value=val selected=(col.width == val.to_s))=val.to_s.humanize filter[1]
@@ -0,0 +1,23 @@
1
+ / Note we can't do vioew.versions.order(...) here
2
+ - versions = view.versions.to_a.sort{ |a, b| b.created_at <=> a.created_at }
3
+ .rounded-md.bg-orange-200.px-3.py-2.flex.items-start.shadow.mx-1.mb-5
4
+ i.fas.fa-info-circle.mr-2.mt-1.text-blue-500
5
+ | Restore column and filter configuration to a point in time.
6
+ | Unsaved column/filter changes will be lost.
7
+ table
8
+ thead
9
+ th.col-width-date-time Last updated
10
+ th.col-width-small Event
11
+ th By
12
+ th
13
+ tbody
14
+ - versions.each do |version|
15
+ tr
16
+ td= l(version.created_at)
17
+ td= version.event
18
+ td= Renalware::User.find(version.whodunnit)
19
+ td.text-right
20
+ = link_to("Restore",
21
+ renalware.restore_system_view_metadatum_path(view, version_at: version.created_at),
22
+ data: { method: :patch },
23
+ class: "button compact secondary")
@@ -0,0 +1,66 @@
1
+
2
+ / To remember
3
+ / We have klass.columns which are the actual SQL view columns
4
+ / We view (view metadata) columns, which is an array of hashes, each representing a column
5
+ / with its title. and width. Its position comes from the position inthe array.
6
+ /
7
+ / Here loop through all avail columns on klass and find the matching
8
+ / col in view.columns. If there are columns we don't recognise (the view config is stale) they
9
+ / will be discarded when we save. If there are new cols we given them an empty object and it will be
10
+ / saved away.
11
+ / We need to handle validation
12
+ / also serialisation - see https://nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails
13
+
14
+ ruby:
15
+ # attribute_names = klass.columns.map(&:name) - %w(id secure_id document)
16
+ # view.columns = attribute_names.map do |attr|
17
+ # view.columns.detect{ |col| col.code == attr } || Renalware::System::ColumnDefinition.new(code: attr)
18
+ # end
19
+
20
+ attribute_names = klass.columns.map(&:name) - %w(id secure_id document)
21
+ attribute_names = (view.columns.map(&:code) + attribute_names).uniq
22
+ view.columns = attribute_names.map do |attr|
23
+ view.columns.detect{ |col| col.code == attr } || Renalware::System::ColumnDefinition.new(code: attr)
24
+ end
25
+
26
+ = simple_form_for(view, as: "view_metadata", method: :patch) do |f|
27
+ = f.input :id, as: :hidden
28
+ .modal
29
+ .modal__header
30
+ = render "renalware/shared/modal_close_link"
31
+ - title = [view.category&.humanize, view.scope&.humanize, view.title&.humanize].join(" / ")
32
+ h2= "Edit columns for #{title}"
33
+ .modal__body(style="max-height: 400px")
34
+ .rounded-md.bg-blue-100.px-3.py-2.flex.items-start.shadow.mx-1.mb-5
35
+ i.fas.fa-info-circle.mr-2.mt-1.text-blue-500
36
+ | Please bear in mind that changes you make will be visible by all users.
37
+
38
+ / Tabs - see also js stimulus tabs-controller
39
+ div(data-controller="tabs" data-tabs-active-tab="-mb-px border-l border-t border-r rounded-t")
40
+ ul.list-reset.flex.border-b.ml-0
41
+ li.-mb-px.mr-1(data-target="tabs.tab" data-action="click->tabs#change")
42
+ a.bg-white.inline-block.py-2.px-4.text-blue-500.hover:text-blue-700.font-semibold.no-underline(href="#") Columns
43
+ li.-mb-px.mr-1(data-target="tabs.tab" data-action="click->tabs#change")
44
+ a.bg-white.inline-block.py-2.px-4.text-blue-500.hover:text-blue-700.font-semibold.no-underline(href="#") Filters
45
+ li.-mb-px.mr-1(data-target="tabs.tab" data-action="click->tabs#change")
46
+ a.bg-white.inline-block.py-2.px-4.text-blue-500.hover:text-blue-700.font-semibold.no-underline(href="#") Previous versions
47
+
48
+ .hidden.py-4.px-4.border-l.border-b.border-r(data-target="tabs.panel")
49
+ = render "columns_table", view: view
50
+ .hidden.py-4.px-4.border-l.border-b.border-r(data-target="tabs.panel")
51
+ = render "filters_form", view: view
52
+ .hidden.py-4.px-4.border-l.border-b.border-r(data-target="tabs.panel")
53
+ = render "versions", view: view
54
+
55
+ .modal__footer
56
+ br
57
+ .right
58
+ = f.submit "Save", class: "button"
59
+ span= " or "
60
+ = link_to "Cancel",
61
+ "#",
62
+ "aria-label" => "Close",
63
+ class: "reveal-modal-close"
64
+
65
+ javascript:
66
+ initSortables();
@@ -6,25 +6,9 @@ article
6
6
  = render "prescription_buttons", patient: mdm.patient
7
7
 
8
8
  #prescriptions.expandable
9
-
10
- ul.tab-strip(data-tab)
11
- li.tab-title.active= link_to "Current", "#current", data: { "trigger-masonry-refresh" => true }
12
- li.tab-title= link_to "Current Immunosuppressant", "#current_immunosuppressant", data: { "trigger-masonry-refresh" => true }
13
- li.tab-title= link_to "Historical", "#historical", data: { "trigger-masonry-refresh" => true }
14
- li.tab-title= link_to "Historical Immunosuppressant", "#historical_immunosuppressant", data: { "trigger-masonry-refresh" => true }
15
-
16
- .tabs-content
17
- #current.content.active
18
- = render "renalware/mdm/prescriptions/table",
19
- prescriptions: mdm.current_prescriptions
20
- #current_immunosuppressant.content
21
- = render "renalware/mdm/prescriptions/table",
22
- prescriptions: mdm.current_immunosuppressant_prescriptions
23
- #historical.content
24
- = render "renalware/mdm/prescriptions/table",
25
- prescriptions: mdm.historical_prescriptions,
26
- show_terminated_on: true
27
- #historical_immunosuppressant.content
28
- = render "renalware/mdm/prescriptions/table",
29
- prescriptions: mdm.historical_immunosuppressant_prescriptions,
30
- show_terminated_on: true
9
+ = render Renalware::Medications::TabbedPrescriptionsListComponent.new([ \
10
+ { title: "Current", prescriptions: mdm.current_prescriptions, show_terminated_on: false }, \
11
+ { title: "Current Immunosuppressant", prescriptions: mdm.current_immunosuppressant_prescriptions, show_terminated_on: false },
12
+ { title: "Historical", prescriptions: mdm.historical_prescriptions },
13
+ { title: "Historical Immunosuppressant", prescriptions: mdm.historical_immunosuppressant_prescriptions },
14
+ { title: "Bone Meds", prescriptions: mdm.bone_prescriptions }])
@@ -0,0 +1,11 @@
1
+ .filters
2
+ .filters__form
3
+ = search_form_for user_search, url: users_path do |f|
4
+ .row
5
+ .small-9.large-4.columns
6
+ = f.label "Name or username contains"
7
+ = f.search_field :family_name_or_given_name_or_username_or_email_cont
8
+ .small-3.large-4.columns.actions.end
9
+ = f.submit t("helpers.submit.filter"), class: "button"
10
+ ' or
11
+ = link_to t("helpers.reset"), users_path
@@ -0,0 +1,24 @@
1
+ = content_for(:filters) do
2
+ = render "filters", user_search: user_search
3
+
4
+ = within_admin_layout(title: "Users") do
5
+ table.all-users
6
+ thead
7
+ tr
8
+ th Name
9
+ th Position
10
+ th Email
11
+ th Role
12
+ th.col-width-date-time Expired at
13
+ tbody
14
+ - users.each do |user|
15
+ tr
16
+ td= user.full_name
17
+ td= user.professional_position
18
+ td= user.email
19
+ td
20
+ - user.roles.each do |role|
21
+ span.tag(class=role.name)= role.name.humanize
22
+ td= l(user.expired_at)
23
+
24
+ == pagy_foundation_nav pagy
@@ -1,2 +1,2 @@
1
1
  / See Vaccination.to_partial_path etc
2
- = event.document.type.text
2
+ = event.document.to_s
@@ -2,3 +2,4 @@
2
2
  / Pulled into the New Event form via a js get to EventsController#new
3
3
  = f.simple_fields_for :document, event.document do |fd|
4
4
  = fd.input :type, wrapper: :horizontal_medium
5
+ = fd.input :drug, wrapper: :horizontal_medium, collection: Renalware::Drugs::Drug.for(:vaccine).pluck(:name, :name)
@@ -4,5 +4,7 @@
4
4
  dl.dl-horizontal
5
5
  dt= attr_name(document, :type, suffix: ":")
6
6
  dd= document.type&.text || t("unspecified")
7
+ dt= attr_name(document, :drug, suffix: ":")
8
+ dd= document.drug.presence || t("unspecified")
7
9
  dt= attr_name(event, :notes, suffix: ":")
8
10
  dd= event.notes&.html_safe || t("unspecified")
@@ -3,7 +3,7 @@
3
3
  require "core_extensions/i18n/handle_blank_value"
4
4
  require "core_extensions/i18n/always_cascade"
5
5
  require "core_extensions/dumb_delegator"
6
- require "core_extensions/active_record/sort"
6
+ # require "core_extensions/active_record/sort"
7
7
  require "core_extensions/date"
8
8
  require "core_extensions/active_support/duration"
9
9
  require "core_extensions/scenic"
@@ -14,6 +14,6 @@ require "core_extensions/ox/element_additions"
14
14
  I18n.extend CoreExtensions::I18n::HandleBlankValue
15
15
  I18n::Backend::Simple.include(I18n::Backend::Cascade)
16
16
  I18n.extend CoreExtensions::I18n::AlwaysCascade
17
- ActiveRecord::Base.include(CoreExtensions::ActiveRecord::Sort)
17
+ # ActiveRecord::Base.include(CoreExtensions::ActiveRecord::Sort)
18
18
  Date.include(CoreExtensions::Date::Constants)
19
19
  Hash.include(CoreExtensions::Hash::OpenStructConversion)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Delayed::Worker.logger = Logger.new(Rails.root.join("log", "delayed_job.log"))
3
+ Delayed::Worker.logger = Logger.new(Rails.root.join("log/delayed_job.log"))
4
4
  Delayed::Worker.destroy_failed_jobs = false
5
5
  Delayed::Worker.max_attempts = 10 # overridden e.g. in FeedJob
6
6
  Delayed::Worker.max_run_time = 2.hours
@@ -41,6 +41,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
41
41
  inflect.acronym "HIV"
42
42
  inflect.acronym "HL7"
43
43
  inflect.acronym "MDM"
44
+ inflect.acronym "MDMs"
44
45
  inflect.acronym "NHS"
45
46
  inflect.acronym "NHS"
46
47
  inflect.acronym "ODS"
@@ -7,3 +7,8 @@
7
7
  # Foundation extra: Add nav, nav_js and combo_nav_js helpers and templates for Foundation pagination
8
8
  # See https://ddnexus.github.io/pagy/extras/foundation
9
9
  require "pagy/extras/foundation"
10
+
11
+ # Allow the client to request a custom number of items per page with an optional selector UI.
12
+ # It is useful with APIs or higly user-customizable apps.
13
+ # Usefule for testing pagination from testing by supplying eg :items => 1
14
+ require "pagy/extras/items"
@@ -6,6 +6,7 @@ en:
6
6
  legend: Allergies
7
7
  description: Description
8
8
  recorded_at: Recorded
9
+ recorded_by: By
9
10
  add: Add
10
11
  delete: Delete
11
12
  edit: Edit
@@ -0,0 +1,15 @@
1
+ en:
2
+ renalware:
3
+ medications:
4
+ tabbed_prescriptions_list_component:
5
+ title: Prescriptions
6
+ view_all: View All
7
+ drug_name: Drug
8
+ drug_type: Type
9
+ dose: Dose
10
+ frequency: Freq
11
+ route: Route
12
+ provider: Provider
13
+ administer_on_hd: Give on HD
14
+ terminated_on: Term on
15
+ started_on: Started on
@@ -18,6 +18,7 @@ en:
18
18
  studies: Clinical Studies
19
19
  renal_registry_checks: Renal Registry Checks
20
20
  hospital_units: Dialysis Units
21
+ users: Users
21
22
  mdms:
22
23
  menu_title: MDMs
23
24
  hd: HD
@@ -26,6 +26,7 @@ en:
26
26
  demographics: Demographics
27
27
  clinical_summary: Clinical Summary
28
28
  inpatient_admissions: Inpatient Admissions (%{count})
29
+ messages: Messages
29
30
  proms: PROMS
30
31
  modalities:
31
32
  heading: Modalities
@@ -24,4 +24,6 @@ en:
24
24
  hbv3: HBV Vaccination 3
25
25
  hbv4: HBV Vaccination 4
26
26
  hbv_booster: HBV Booster
27
+ influenza: Influenza
28
+ pneumococcus: Pneumococcus
27
29
  patient_refused: Patient Refused
@@ -7,6 +7,7 @@ super_admin:
7
7
  - Renalware::HD::Dialyser
8
8
  - Renalware::HD::CannulationType
9
9
  - Renalware::System::Download
10
+ - Renalware::Pathology::ObservationDescription
10
11
  admin:
11
12
  - Renalware::User
12
13
  - Renalware::BagType
@@ -28,6 +28,7 @@ Renalware::Engine.routes.draw do
28
28
  draw :snippets
29
29
  draw :system
30
30
  draw :transplants
31
+ draw :users
31
32
  draw :virology
32
33
 
33
34
  # Last
@@ -2,7 +2,7 @@
2
2
 
3
3
  namespace :messaging do
4
4
  namespace :internal do
5
- resources :messages, only: [:new, :create] do
5
+ resources :messages, only: [:new, :create, :index] do
6
6
  resources :receipts, only: [] do
7
7
  patch :mark_as_read, on: :member
8
8
  end
@@ -14,3 +14,11 @@ namespace :messaging do
14
14
  end
15
15
  end
16
16
  end
17
+
18
+ resources :patients, only: [] do
19
+ namespace :messaging do
20
+ namespace :internal do
21
+ resources :messages, only: :index
22
+ end
23
+ end
24
+ end
@@ -28,6 +28,7 @@ end
28
28
 
29
29
  namespace :pathology do
30
30
  resources :code_groups
31
+ resources :observation_descriptions, except: :destroy
31
32
  namespace :requests do
32
33
  # NOTE: This needs to be POST since the params may exceed url char limit in GET
33
34
  post "requests/new", to: "requests#new", as: "new_request"
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  namespace :patients do
4
+ get "mdms/:scope", to: "mdms#show", as: :mdms
4
5
  resources :primary_care_physicians
5
6
  resources :practices, only: [] do
6
7
  collection do
@@ -5,6 +5,9 @@ namespace :system do
5
5
  resources :user_feedback, except: :destroy, controller: "user_feedback"
6
6
  resources :messages
7
7
  resources :downloads
8
+ resources :view_metadata, only: [:edit, :update] do
9
+ patch :restore, on: :member
10
+ end
8
11
  end
9
12
 
10
13
  match "/404", to: "system/errors#not_found", via: :all
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ resources :users, only: :index
@@ -0,0 +1,18 @@
1
+ -- Note there is already a convert_to_float function but that remains untouched - this version
2
+ -- has different arguments so is a new (overlaoded) function.
3
+ CREATE OR REPLACE FUNCTION renalware.convert_to_float(v_input text, default_value_if_cannot_be_coerced float)
4
+ RETURNS float AS $$
5
+ DECLARE v_float_value float DEFAULT NULL;
6
+ BEGIN
7
+ BEGIN
8
+ v_float_value := v_input::float;
9
+ EXCEPTION WHEN OTHERS THEN
10
+ RETURN default_value_if_cannot_be_coerced;
11
+ END;
12
+ RETURN v_float_value;
13
+ END;
14
+ $$ LANGUAGE plpgsql;
15
+
16
+ COMMENT ON FUNCTION renalware.convert_to_float(text, float) IS
17
+ 'Tries to coerce v_input into a float (double precision) and it it cannot,
18
+ returns default_value_if_cannot_be_coerced';