renalware-core 2.0.0.pre.rc13 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/renalware/base/_variables.scss +3 -3
  3. data/app/assets/stylesheets/renalware/modules/_clinical.scss +107 -4
  4. data/app/assets/stylesheets/renalware/modules/_patients.scss +0 -77
  5. data/app/assets/stylesheets/renalware/partials/_layout.scss +67 -7
  6. data/app/assets/stylesheets/renalware/partials/_navigation.scss +2 -7
  7. data/app/assets/stylesheets/renalware/partials/_tables.scss +1 -1
  8. data/app/controllers/renalware/base_controller.rb +5 -0
  9. data/app/controllers/renalware/clinics/visits_controller.rb +1 -1
  10. data/app/controllers/renalware/concerns/pdf_renderable.rb +2 -1
  11. data/app/controllers/renalware/devise/sessions_controller.rb +5 -0
  12. data/app/controllers/renalware/letters/pdf_letter_cache_controller.rb +13 -0
  13. data/app/controllers/renalware/pd/regimes_controller.rb +1 -1
  14. data/app/controllers/renalware/renal/aki_alerts_controller.rb +20 -3
  15. data/app/controllers/renalware/research/studies_controller.rb +3 -1
  16. data/app/controllers/renalware/session_timeout_controller.rb +1 -1
  17. data/app/models/renalware/letters/html_renderer.rb +2 -1
  18. data/app/models/renalware/letters/pdf_letter_cache.rb +4 -1
  19. data/app/models/renalware/letters/pdf_renderer.rb +2 -1
  20. data/app/models/renalware/pathology/create_observations_grouped_by_date_table.rb +0 -3
  21. data/app/models/renalware/pathology/observations_grouped_by_date_query.rb +7 -1
  22. data/app/models/renalware/pd/apd_regime.rb +6 -0
  23. data/app/models/renalware/renal/aki_alert.rb +1 -0
  24. data/app/models/renalware/renal/aki_alert_query.rb +32 -0
  25. data/app/models/renalware/renal/aki_alert_search_form.rb +31 -0
  26. data/app/models/renalware/system/event.rb +12 -0
  27. data/app/models/renalware/system/user_feedback.rb +3 -1
  28. data/app/models/renalware/system/visit.rb +11 -0
  29. data/app/presenters/renalware/events/summary_part.rb +3 -1
  30. data/app/presenters/renalware/letters/summary_part.rb +1 -1
  31. data/app/presenters/renalware/mdm_presenter.rb +4 -1
  32. data/app/presenters/renalware/medications/summary_part.rb +2 -0
  33. data/app/presenters/renalware/problems/summary_part.rb +4 -2
  34. data/app/presenters/renalware/summary_part.rb +4 -0
  35. data/app/views/renalware/accesses/procedures/_list.html.slim +7 -5
  36. data/app/views/renalware/accesses/profiles/_list.html.slim +5 -5
  37. data/app/views/renalware/admin/cache/show.html.slim +26 -2
  38. data/app/views/renalware/devise/sessions/_warning.html.slim +7 -0
  39. data/app/views/renalware/devise/sessions/new.html.slim +15 -21
  40. data/app/views/renalware/events/events/_summary_part.html.slim +1 -1
  41. data/app/views/renalware/events/events/cell/_investigation.html.slim +0 -2
  42. data/app/views/renalware/events/events/toggled_cell/_biopsy.html.slim +1 -1
  43. data/app/views/renalware/events/events/toggled_cell/_investigation.html.slim +1 -1
  44. data/app/views/renalware/events/events/toggled_cell/_simple.html.slim +1 -1
  45. data/app/views/renalware/events/events/toggled_cell/_swab.html.slim +1 -1
  46. data/app/views/renalware/hd/cannulation_types/_form.html.slim +7 -10
  47. data/app/views/renalware/hd/cannulation_types/edit.html.slim +2 -1
  48. data/app/views/renalware/hd/cannulation_types/index.html.slim +4 -3
  49. data/app/views/renalware/hd/cannulation_types/new.html.slim +2 -1
  50. data/app/views/renalware/hd/dialysers/_form.html.slim +8 -11
  51. data/app/views/renalware/hd/dialysers/edit.html.slim +2 -1
  52. data/app/views/renalware/hd/dialysers/index.html.slim +4 -3
  53. data/app/views/renalware/hd/dialysers/new.html.slim +2 -1
  54. data/app/views/renalware/layouts/_non_patient.html.slim +14 -13
  55. data/app/views/renalware/layouts/_patient.html.slim +5 -5
  56. data/app/views/renalware/letters/_summary_part.html.slim +1 -1
  57. data/app/views/renalware/letters/letters/show.html.slim +16 -15
  58. data/app/views/renalware/medications/_summary_part.html.slim +18 -17
  59. data/app/views/renalware/modalities/reasons/index.html.slim +1 -3
  60. data/app/views/renalware/navigation/_footer.html.slim +2 -2
  61. data/app/views/renalware/navigation/_help_items.html.slim +1 -0
  62. data/app/views/renalware/navigation/_more_help_items.html.slim +1 -0
  63. data/app/views/renalware/navigation/_user.html.slim +4 -0
  64. data/app/views/renalware/pathology/requests/requests/index.html.slim +40 -42
  65. data/app/views/renalware/pathology/requests/rules/index.html.slim +15 -18
  66. data/app/views/renalware/patients/_side_menu.html.slim +0 -1
  67. data/app/views/renalware/patients/alerts/_alert.html.slim +7 -7
  68. data/app/views/renalware/patients/alerts/_list.html.slim +1 -3
  69. data/app/views/renalware/patients/alerts/create.js.erb +1 -1
  70. data/app/views/renalware/patients/alerts/destroy.js.erb +1 -1
  71. data/app/views/renalware/patients/primary_care_physicians/_form.html.slim +22 -25
  72. data/app/views/renalware/patients/primary_care_physicians/edit.html.slim +2 -1
  73. data/app/views/renalware/patients/primary_care_physicians/index.html.slim +4 -3
  74. data/app/views/renalware/patients/primary_care_physicians/new.html.slim +2 -1
  75. data/app/views/renalware/patients/side_menu/_general.html.slim +1 -1
  76. data/app/views/renalware/pd/_apd_regimes.html.slim +4 -38
  77. data/app/views/renalware/pd/_capd_regimes.html.slim +4 -45
  78. data/app/views/renalware/pd/_regimes.html.slim +32 -0
  79. data/app/views/renalware/pd/assessments/_form.html.slim +8 -5
  80. data/app/views/renalware/pd/regimes/_apd_fields.html.slim +1 -0
  81. data/app/views/renalware/pd/regimes/_apd_regime_show.html.slim +2 -0
  82. data/app/views/renalware/pd/regimes/_current_apd_regime.html.slim +3 -0
  83. data/app/views/renalware/problems/problems/_summary_part.html.slim +1 -1
  84. data/app/views/renalware/renal/aki_alerts/_filters.html.slim +25 -0
  85. data/app/views/renalware/renal/aki_alerts/index.html.slim +18 -14
  86. data/app/views/renalware/research/_alert.html.slim +6 -0
  87. data/app/views/renalware/research/_alerts.html.slim +6 -0
  88. data/app/views/renalware/research/studies/index.html.slim +2 -0
  89. data/app/views/renalware/system/email_templates/index.html.slim +7 -8
  90. data/app/views/renalware/system/user_feedback/new.html.slim +3 -7
  91. data/app/views/renalware/transplants/mdm/_pathology_cmvdna.html.slim +0 -1
  92. data/app/views/renalware/virology/vaccinations/_toggled_cell.html.slim +1 -1
  93. data/config/initializers/ahoy.rb +14 -0
  94. data/config/locales/renalware/events/investigation.en.yml +8 -0
  95. data/config/locales/renalware/patients/side_menu.en.yml +1 -1
  96. data/config/routes.rb +1 -0
  97. data/db/migrate/20180307191650_add_dwell_time_to_pd_regime.rb +5 -0
  98. data/db/migrate/20180307223111_create_system_visits_and_events.rb +44 -0
  99. data/db/migrate/20180309140316_add_unique_constraint_to_obr_requestor.rb +5 -0
  100. data/db/migrate/20180311071146_update_patient_summaries_to_version6.rb +5 -0
  101. data/db/views/patient_summaries_v06.sql +16 -0
  102. data/lib/renalware/configuration.rb +3 -0
  103. data/lib/renalware/engine.rb +1 -1
  104. data/lib/renalware/version.rb +1 -1
  105. data/spec/factories/pathology/observation_requests.rb +3 -1
  106. metadata +34 -8
  107. data/app/assets/stylesheets/renalware/patient_pages.scss +0 -43
  108. data/app/views/renalware/hd/cannulation_types/_header.html.slim +0 -5
  109. data/app/views/renalware/hd/dialysers/_header.html.slim +0 -5
  110. data/app/views/renalware/patients/primary_care_physicians/_header.html.slim +0 -5
@@ -0,0 +1,7 @@
1
+ .alert-box.warning
2
+ | NOTICE: This system contains patient clinical records. All information is highly
3
+ | confidential and must be treated as such. All data must be used with the Data
4
+ | Protection Act and related legislation and in compliance with security policies
5
+ | governing use of this system. Unauthorised, illegal or improper use may result
6
+ | in disciplinary action and civil or criminal prosecution. By continuing to access
7
+ | this system you agree that such access and use is subject to the foregoing.
@@ -1,25 +1,19 @@
1
- .row.small-8.large-12
2
- h3 Log in to Renalware
1
+ .main-content
2
+ .row.small-8.large-12
3
+ h3 Log in to Renalware
3
4
 
4
- .alert-box.warning
5
- | NOTICE: This system contains patient clinical records. All information is highly 
6
- | confidential and must be treated as such. All data must be used with the Data 
7
- | Protection Act and related legislation and in compliance with security policies 
8
- | governing use of this system. Unauthorised, illegal or improper use may result 
9
- | in disciplinary action and civil or criminal prosecution. By continuing to access 
10
- | this system you agree that such access and use is subject to the foregoing.
5
+ = render "warning"
11
6
 
12
- .row.small-6.large-3
7
+ .row.small-6.large-3
8
+ = simple_form_for(resource,
9
+ as: resource_name,
10
+ url: session_path(resource_name),
11
+ html: { autocomplete: "off" }) do |f|
12
+ = f.input :username, input_html: { autofocus: true }, required: false
13
+ = f.input :password, input_html: { autocomplete: "off" }
14
+ /= f.input(:remember_me, as: :boolean, boolean_style: :inline) if devise_mapping.rememberable?
13
15
 
14
- = simple_form_for(resource,
15
- as: resource_name,
16
- url: session_path(resource_name),
17
- html: { autocomplete: "off" }) do |f|
18
- = f.input :username, input_html: { autofocus: true }, required: false
19
- = f.input :password, input_html: { autocomplete: "off" }
20
- = f.input(:remember_me, as: :boolean, boolean_style: :inline) if devise_mapping.rememberable?
16
+ .actions
17
+ = f.submit "Log in", class: "button save"
21
18
 
22
- .actions
23
- = f.submit "Log in", class: "button save"
24
-
25
- = render "devise/shared/links"
19
+ = render "devise/shared/links"
@@ -1,4 +1,4 @@
1
- - cache(summary_part) do
1
+ - cache_if(summary_part.cache?, summary_part) do
2
2
  #events.summary-part--events
3
3
  article
4
4
  header
@@ -1,7 +1,5 @@
1
1
  - document = event.document
2
2
 
3
- | Type:
4
- | 
5
3
  = document.type&.text || t("unspecified")
6
4
  |   
7
5
  | Result:
@@ -6,4 +6,4 @@ dl.dl-horizontal
6
6
  dt= attr_name(document, :result2, suffix: ":")
7
7
  dd= document.result2&.text || t("unspecified")
8
8
  dt= attr_name(event, :notes, suffix: ":")
9
- dd= event.notes
9
+ dd= event.notes&.html_safe
@@ -8,4 +8,4 @@ dl.dl-horizontal
8
8
  dt= attr_name(document, :result, suffix: ":")
9
9
  dd= document.result || t("unspecified")
10
10
  dt= attr_name(event, :notes, suffix: ":")
11
- dd= event.notes || t("unspecified")
11
+ dd= event.notes&.html_safe || t("unspecified")
@@ -2,4 +2,4 @@ dl.dl-horizontal
2
2
  dt= attr_name(event, :description, suffix: ":")
3
3
  dd= event.description
4
4
  dt= attr_name(event, :notes, suffix: ":")
5
- dd= event.notes
5
+ dd= event.notes&.html_safe
@@ -3,4 +3,4 @@ dl.dl-horizontal
3
3
  dt= attr_name(document, :location, suffix: ":")
4
4
  dd= document.location.present? ? document.location : t("unspecified")
5
5
  dt= attr_name(event, :notes, suffix: ":")
6
- dd= event.notes
6
+ dd= event.notes&.html_safe
@@ -1,12 +1,9 @@
1
- .row
2
- = render "header"
3
- = render "renalware/shared/errors", model: cannulation_type
1
+ = render "renalware/shared/errors", model: cannulation_type
4
2
 
5
- .row
6
- .large-6.columns
7
- = simple_form_for cannulation_type, html: { autocomplete: "off" } do |f|
8
- = f.input :name, autofocus: true
3
+ .large-6.columns
4
+ = simple_form_for cannulation_type, html: { autocomplete: "off" } do |f|
5
+ = f.input :name, autofocus: true
9
6
 
10
- = f.button :submit
11
- span= " or "
12
- = link_to "cancel", hd_cannulation_types_path
7
+ = f.button :submit
8
+ span= " or "
9
+ = link_to "cancel", hd_cannulation_types_path
@@ -1 +1,2 @@
1
- = render "form", cannulation_type: cannulation_type
1
+ = within_admin_layout(title: "Edit HD Cannulation Type") do
2
+ = render "form", cannulation_type: cannulation_type
@@ -1,7 +1,8 @@
1
- .row
2
- = render "header"
1
+ = within_admin_layout(title: "HD Cannulation Types") do
2
+ dl.sub-nav
3
+ dd= link_to "List", hd_cannulation_types_path
4
+ dd= link_to "Add type", new_hd_cannulation_type_path
3
5
 
4
- .row
5
6
  table.auto-layout
6
7
  thead
7
8
  tr
@@ -1 +1,2 @@
1
- = render "form", cannulation_type: cannulation_type
1
+ = within_admin_layout(title: "New Cannulation Type") do
2
+ = render "form", cannulation_type: cannulation_type
@@ -1,13 +1,10 @@
1
- .row
2
- = render "header"
3
- = render "renalware/shared/errors", model: dialyser
1
+ /= render "header"
2
+ = render "renalware/shared/errors", model: dialyser
4
3
 
5
- .row
6
- .large-6.columns
7
- = simple_form_for dialyser, html: { autocomplete: "off" } do |f|
8
- = f.input :group, autofocus: true
9
- = f.input :name
4
+ = simple_form_for dialyser, html: { autocomplete: "off" } do |f|
5
+ = f.input :group, autofocus: true, wrapper: :horizontal_small
6
+ = f.input :name, wrapper: :horizontal_small
10
7
 
11
- = f.button :submit
12
- span= " or "
13
- = link_to "cancel", hd_dialysers_path
8
+ = f.button :submit
9
+ span= " or "
10
+ = link_to "cancel", hd_dialysers_path
@@ -1 +1,2 @@
1
- = render "form", dialyser: dialyser
1
+ = within_admin_layout(title: "Edit HD Dialyser") do
2
+ = render "form", dialyser: dialyser
@@ -1,7 +1,8 @@
1
- .row
2
- = render "header"
1
+ = within_admin_layout(title: "HD Dialysers") do
2
+ dl.sub-nav
3
+ dd= link_to "List", hd_dialysers_path
4
+ dd= link_to "Add dialyser", new_hd_dialyser_path
3
5
 
4
- .row
5
6
  table.auto-layout
6
7
  thead
7
8
  tr
@@ -1 +1,2 @@
1
- = render "form", dialyser: dialyser
1
+ = within_admin_layout(title: "New HD Dialyser") do
2
+ = render "form", dialyser: dialyser
@@ -1,16 +1,17 @@
1
1
  - generate_page_title(local_assigns: local_assigns)
2
2
 
3
- .non-patient-page
4
- .row
5
- ul.page-heading.columns.small-12
6
- li
7
- h1
8
- = breadcrumbs_and_title(breadcrumbs: local_assigns[:breadcrumbs],
9
- title: local_assigns[:title])
10
- li.page-actions
11
- / Output any page-level actions
12
- = yield(:actions)
3
+ .non-patient-page.main-content
4
+ .layout-wrapper
5
+ .row
6
+ ul.page-heading.columns.small-12
7
+ li
8
+ h1
9
+ = breadcrumbs_and_title(breadcrumbs: local_assigns[:breadcrumbs],
10
+ title: local_assigns[:title])
11
+ li.page-actions
12
+ / Output any page-level actions
13
+ = yield(:actions)
13
14
 
14
- .row
15
- .columns.small-12
16
- = yield
15
+ .row
16
+ .columns.small-12
17
+ = yield
@@ -1,6 +1,3 @@
1
- - content_for(:css) do
2
- = stylesheet_link_tag "renalware/patient_pages", media: :all
3
-
4
1
  - content_for(:header) do
5
2
  = render "renalware/patients/header", patient: current_patient
6
3
 
@@ -11,11 +8,14 @@ nav.patient-side-nav.full-screenable
11
8
  .layout-wrapper
12
9
  = render "renalware/patients/side_menu", patient: current_patient
13
10
 
14
- .patient-content.full-screenable
11
+ .main-content.patient-content.full-screenable
15
12
  .layout-wrapper
16
13
  = render "renalware/patients/mini_profile", patient: current_patient
14
+ .patient-alerts.lozenge
15
+ ul
16
+ = render "renalware/patients/alerts/list", patient: current_patient
17
+ = render "renalware/research/alerts", patient: current_patient
17
18
  = render "renalware/clinical/header", patient: current_patient
18
- = render "renalware/patients/alerts/list", patient: current_patient
19
19
  .row.collapse
20
20
  - if local_assigns[:title].present?
21
21
  ul.page-heading.columns.small-12
@@ -1,4 +1,4 @@
1
- - cache(summary_part) do
1
+ - cache_if(summary_part.cache?, summary_part) do
2
2
  #letters.summary-part--letters
3
3
  article
4
4
  header
@@ -1,17 +1,18 @@
1
- .letter-preview-admin
2
- .row
3
- .columns.large-8
4
- .row
5
- .columns.large-4
6
- p Status: #{@letter.state.upcase}
7
- .columns.large-8
8
- p Typist: #{@letter.typist}
9
- .row
10
- .columns.large-12
11
- div= render "actions", letter: @letter
1
+ .main-content
2
+ .letter-preview-admin
3
+ .row
4
+ .columns.large-8
5
+ .row
6
+ .columns.large-4
7
+ p Status: #{@letter.state.upcase}
8
+ .columns.large-8
9
+ p Typist: #{@letter.typist}
10
+ .row
11
+ .columns.large-12
12
+ div= render "actions", letter: @letter
12
13
 
13
- .columns.large-4
14
- p Notes:
15
- = simple_format @letter.notes
14
+ .columns.large-4
15
+ p Notes:
16
+ = simple_format @letter.notes
16
17
 
17
- = content_tag :iframe, "", src: patient_letters_letter_preview_path(@letter), class: "fullsize"
18
+ = content_tag :iframe, "", src: patient_letters_letter_preview_path(@letter), class: "fullsize"
@@ -1,19 +1,20 @@
1
- - cache(summary_part) do
2
- .summary-part--prescriptions
3
- #current-prescriptions
4
- article
5
- header
6
- h2
7
- = link_to "Current Prescriptions (#{summary_part.current_prescriptions.length})",
8
- patient_prescriptions_path(summary_part.patient)
1
+ / Not caching this in 2.0 - needs a bit more testing
2
+ / - cache_if(summary_part.cache?, summary_part) do
3
+ .summary-part--prescriptions
4
+ #current-prescriptions
5
+ article
6
+ header
7
+ h2
8
+ = link_to "Current Prescriptions (#{summary_part.current_prescriptions.length})",
9
+ patient_prescriptions_path(summary_part.patient)
9
10
 
10
- = link_to patient_prescriptions_path(summary_part.patient), class: "button" do
11
- | Add
11
+ = link_to patient_prescriptions_path(summary_part.patient), class: "button" do
12
+ | Add
12
13
 
13
- ul.no-bullet
14
- - summary_part.current_prescriptions.each do |prescription|
15
- li class="drug-#{drug_types_colour_tag(prescription.drug_types)}"
16
- = "#{prescription.drug.name}, "
17
- = "#{prescription.dose}, "
18
- = "#{prescription.medication_route.code} #{prescription.frequency} - "
19
- = l(prescription.prescribed_on)
14
+ ul.no-bullet
15
+ - summary_part.current_prescriptions.each do |prescription|
16
+ li class="drug-#{drug_types_colour_tag(prescription.drug_types)}"
17
+ = "#{prescription.drug.name}, "
18
+ = "#{prescription.dose}, "
19
+ = "#{prescription.medication_route.code} #{prescription.frequency} - "
20
+ = l(prescription.prescribed_on)
@@ -1,7 +1,5 @@
1
- .row
2
- h1 Renal Registry Reason for Change Codes
1
+ = within_admin_layout(title: "Renal Registry Reason for Change Codes") do
3
2
 
4
- .row
5
3
  table.responsive
6
4
  caption Haemodialysis to PD
7
5
  thead
@@ -1,3 +1,3 @@
1
- - if defined?(semantic_app_version)
2
- footer
1
+ footer
2
+ - if defined?(semantic_app_version)
3
3
  | Renalware® v#{semantic_app_version} © #{Date.current.year} Airslie Ltd   
@@ -3,5 +3,6 @@ li.has-dropdown
3
3
  ul.dropdown
4
4
  li
5
5
  = link_to "Renal Reg HD/PD Reasons for Change", modalities_reasons_path
6
+ = render "renalware/navigation/more_help_items"
6
7
  li.info
7
8
  | Version #{semantic_app_version}
@@ -0,0 +1 @@
1
+ / Host app may want to override this
@@ -1,3 +1,7 @@
1
+ -if Renalware.config.display_feedback_button_in_navbar && current_user.present?
2
+ li.show-for-medium-up= link_to("Feedback",
3
+ new_system_user_feedback_path,
4
+ class: "button secondary")
1
5
  li.has-dropdown
2
6
  = link_to dashboard_path do
3
7
  i.fa.fa-home
@@ -1,45 +1,43 @@
1
- .row
2
- h1 Request Form Print History
1
+ = within_admin_layout(title: "Request Form Print History") do
2
+ .row
3
+ .search-form
4
+ fieldset
5
+ legend Filters
6
+ = simple_form_for query,
7
+ as: :q,
8
+ url: pathology_requests_requests_path,
9
+ html: { autocomplete: "off" },
10
+ method: :get do |f|
11
+ .row
12
+ .large-4.columns
13
+ = f.input :created_on_eq, as: :date_picker, label: "Printed on"
14
+ .large-8.columns.actions
15
+ = f.submit t("helpers.submit.filter"), class: "button"
16
+ span= " or "
17
+ = link_to t("helpers.reset"), pathology_requests_requests_path
3
18
 
4
- .row
5
- .search-form
6
- fieldset
7
- legend Filters
8
- = simple_form_for query,
9
- as: :q,
10
- url: pathology_requests_requests_path,
11
- html: { autocomplete: "off" },
12
- method: :get do |f|
13
- .row
14
- .large-4.columns
15
- = f.input :created_on_eq, as: :date_picker, label: "Printed on"
16
- .large-8.columns.actions
17
- = f.submit t("helpers.submit.filter"), class: "button"
18
- span= " or "
19
- = link_to t("helpers.reset"), pathology_requests_requests_path
20
-
21
- .row
22
- - if requests.empty?
23
- p No requests forms have been printed yet.
24
- - else
25
- table#requests
26
- thead
27
- tr
28
- th
29
- th Patient
30
- th Clinic
31
- th Consultant
32
- th Printed On
33
- th Printed By
34
-
35
- tbody
36
- - requests.each do |request|
19
+ .row
20
+ - if requests.empty?
21
+ p No requests forms have been printed yet.
22
+ - else
23
+ table#requests
24
+ thead
37
25
  tr
38
- td = link_to "View", pathology_requests_request_path(id: request.id, format: "pdf")
39
- td = request.patient.full_name
40
- td = request.clinic.name
41
- td = request.consultant.full_name
42
- td = I18n.l request.printed_on
43
- td = request.created_by.full_name
26
+ th
27
+ th Patient
28
+ th Clinic
29
+ th Consultant
30
+ th Printed On
31
+ th Printed By
32
+
33
+ tbody
34
+ - requests.each do |request|
35
+ tr
36
+ td = link_to "View", pathology_requests_request_path(id: request.id, format: "pdf")
37
+ td = request.patient.full_name
38
+ td = request.clinic.name
39
+ td = request.consultant.full_name
40
+ td = I18n.l request.printed_on
41
+ td = request.created_by.full_name
44
42
 
45
- = paginate requests
43
+ = paginate requests