renalware-core 2.0.44 → 2.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/renalware/application.scss +1 -0
  3. data/app/assets/stylesheets/renalware/modules/_clinical.scss +3 -1
  4. data/app/assets/stylesheets/renalware/modules/_patients.scss +0 -1
  5. data/app/assets/stylesheets/renalware/modules/_snippets.scss +3 -1
  6. data/app/assets/stylesheets/renalware/partials/_button.scss +6 -2
  7. data/app/assets/stylesheets/renalware/partials/_tables.scss +1 -1
  8. data/app/assets/stylesheets/renalware/partials/_tabs.scss +3 -1
  9. data/app/assets/stylesheets/renalware/table_pdf.scss +1 -1
  10. data/app/controllers/renalware/clinics/appointments_controller.rb +1 -3
  11. data/app/controllers/renalware/clinics/visits_controller.rb +2 -5
  12. data/app/controllers/renalware/patients/worryboard_controller.rb +2 -4
  13. data/app/controllers/renalware/renal/aki_alerts_controller.rb +2 -7
  14. data/app/documents/renalware/dated_confirmation.rb +1 -1
  15. data/app/documents/renalware/transplants/recipient_operation_document.rb +1 -1
  16. data/app/helpers/renalware/drugs_helper.rb +6 -3
  17. data/app/helpers/renalware/primary_care_physicians_helper.rb +3 -1
  18. data/app/jobs/refresh_materialized_view_job.rb +20 -0
  19. data/app/jobs/renalware/hd/generate_monthly_statistics.rb +3 -0
  20. data/app/mailers/renalware/previews/report_preview.rb +14 -0
  21. data/app/mailers/renalware/reporting/report_mailer.rb +57 -0
  22. data/app/models/concerns/renalware/broadcasting.rb +28 -4
  23. data/app/models/renalware/patients/worry_query.rb +0 -2
  24. data/app/models/renalware/renal/aki_alert_search_form.rb +1 -3
  25. data/app/models/renalware/ukrdc/send_patients.rb +25 -1
  26. data/app/models/renalware/ukrdc/transmission_log.rb +1 -1
  27. data/app/presenters/renalware/ukrdc/patient_presenter.rb +1 -1
  28. data/app/views/renalware/admin/users/index.html.slim +2 -2
  29. data/app/views/renalware/admissions/consults/index.html.slim +1 -1
  30. data/app/views/renalware/admissions/requests/_create_request_link.html.slim +1 -1
  31. data/app/views/renalware/admissions/requests/_request.html.slim +2 -2
  32. data/app/views/renalware/base/_modality_missing_warning.html.slim +1 -1
  33. data/app/views/renalware/clinical/allergies/_mini.html.slim +1 -1
  34. data/app/views/renalware/clinics/appointments/index.html.slim +3 -3
  35. data/app/views/renalware/hd/dashboards/_page_actions.html.slim +3 -3
  36. data/app/views/renalware/hd/diaries/edit.html.slim +2 -2
  37. data/app/views/renalware/hd/diaries/index.html.slim +1 -1
  38. data/app/views/renalware/hd/stations/_station.html.slim +1 -1
  39. data/app/views/renalware/letters/electronic_receipts/_table.html.slim +1 -1
  40. data/app/views/renalware/letters/lists/_letter.html.slim +1 -1
  41. data/app/views/renalware/low_clearance/dashboards/_page_actions.html.slim +2 -2
  42. data/app/views/renalware/mdm/_top_navigation.html.slim +1 -1
  43. data/app/views/renalware/medications/prescriptions/index.html.slim +1 -1
  44. data/app/views/renalware/messaging/internal/messages/_send_message_link.html.slim +1 -1
  45. data/app/views/renalware/messaging/internal/messages/_send_reply_link.html.slim +1 -1
  46. data/app/views/renalware/messaging/internal/receipts/_receipt.html.slim +1 -1
  47. data/app/views/renalware/navigation/_patient_search.html.slim +1 -1
  48. data/app/views/renalware/navigation/_user.html.slim +1 -1
  49. data/app/views/renalware/patients/_header.html.slim +2 -2
  50. data/app/views/renalware/patients/alerts/_alert.html.slim +2 -2
  51. data/app/views/renalware/patients/alerts/_create_alert_link.html.slim +1 -1
  52. data/app/views/renalware/patients/bookmarks/_delete.html.slim +5 -4
  53. data/app/views/renalware/patients/bookmarks/_new.html.slim +1 -1
  54. data/app/views/renalware/patients/patients/_patient.html.slim +2 -2
  55. data/app/views/renalware/patients/worries/_delete.html.slim +1 -1
  56. data/app/views/renalware/patients/worries/_new.html.slim +1 -1
  57. data/app/views/renalware/pd/dashboards/show/_page_actions.html.slim +4 -4
  58. data/app/views/renalware/pd/exit_site_infections/show.html.slim +1 -1
  59. data/app/views/renalware/pd/peritonitis_episodes/show.html.slim +1 -1
  60. data/app/views/renalware/problems/problems/_current_table.html.slim +1 -1
  61. data/app/views/renalware/renal/aki_alerts/index.html.slim +1 -1
  62. data/app/views/renalware/reporting/report_mailer/daily_summary.html.slim +14 -0
  63. data/app/views/renalware/reporting/report_mailer/daily_summary.text.erb +15 -0
  64. data/app/views/renalware/research/_alert.html.slim +2 -2
  65. data/app/views/renalware/shared/_modal_close_link.html.slim +1 -1
  66. data/app/views/renalware/snippets/snippets/_list.html.slim +2 -2
  67. data/app/views/renalware/snippets/snippets/_search_form.html.slim +1 -1
  68. data/app/views/renalware/transplants/live_donors/_filters.html.slim +1 -1
  69. data/app/views/renalware/transplants/recipient_dashboards/_modality_missing_warning.html.slim +1 -1
  70. data/app/views/renalware/transplants/recipient_dashboards/_page_actions.html.slim +1 -1
  71. data/config/gpg/renalware_test.gpg +0 -0
  72. data/config/initializers/ransack.rb +1 -1
  73. data/config/initializers/renalware.rb +20 -2
  74. data/config/locales/renalware/reporting/reporting_daily.en.yml +7 -0
  75. data/config/locales/renalware/virology/virology.en.yml +1 -0
  76. data/db/migrate/20180831134606_add_reporting_indexes.rb +13 -0
  77. data/db/migrate/20180831134926_create_daily_reports.rb +6 -0
  78. data/db/seeds/default/reporting/audits.yml +1 -2
  79. data/db/views/reporting_daily_letters_v01.sql +3 -0
  80. data/db/views/reporting_daily_pathology_v01.sql +16 -0
  81. data/lib/gpg_encrypt_folder.rb +74 -0
  82. data/lib/renalware/configuration.rb +5 -0
  83. data/lib/renalware/engine.rb +5 -4
  84. data/lib/renalware/version.rb +1 -1
  85. data/lib/tasks/audit.rake +5 -0
  86. data/lib/tasks/reporting.rake +9 -0
  87. metadata +43 -16
@@ -1,4 +1,4 @@
1
1
  = link_to "#",
2
2
  "aria-label" => "Close",
3
3
  class: "reveal-modal-close" do
4
- i.fa.fa-close
4
+ i.fas.fa-window-close
@@ -9,11 +9,11 @@
9
9
  ul.tabs
10
10
  li(class= "#{'active' if author == :me}")
11
11
  = link_to snippets_path, remote: remote do
12
- i.fa.fa-user
12
+ i.fas.fa-user
13
13
  | Mine
14
14
  li(class= "#{'active' if author == :anyone}")
15
15
  = link_to snippets_path(author: :anyone), remote: remote do
16
- i.fa.fa-users
16
+ i.fas.fa-users
17
17
  | Everyone's
18
18
 
19
19
  = render "search_form", search: search, author: author, remote: remote
@@ -12,4 +12,4 @@
12
12
  class: "radius radius-left"
13
13
  .columns.small-2.large-1
14
14
  = f.button class: "button tiny postfix radius radius-right" do
15
- i.fa.fa-search
15
+ i.fas.fa-search
@@ -12,7 +12,7 @@
12
12
 
13
13
  .columns.small-6.medium-4.end
14
14
  = f.button class: "button", name: nil do
15
- i.fa.fa-search
15
+ i.fas.fa-search
16
16
  |   Filter
17
17
  = " or "
18
18
  = link_to "reset", transplants_live_donors_path
@@ -1,3 +1,3 @@
1
1
  li.missing-modality-warning
2
- i.fa.fa-info
2
+ i.fas.fa-info
3
3
  span= message
@@ -1,6 +1,6 @@
1
1
  - if patient.ever_been_a_recipient?
2
2
  = link_to(patient_transplants_mdm_path(patient), class: "button with-icon secondary") do
3
- i.fa.fa-group
3
+ i.fas.fa-group
4
4
  = t(".mdm")
5
5
 
6
6
  a.button.dropdown(href="#"
Binary file
@@ -7,7 +7,7 @@ Ransack.configure do |config|
7
7
 
8
8
  # Raise errors if a query contains an unknown predicate or attribute.
9
9
  # Default is true (do not raise error on unknown conditions).
10
- config.ignore_unknown_conditions = !Rails.env.development?
10
+ config.ignore_unknown_conditions = !(Rails.env.development? || Rails.env.test?)
11
11
 
12
12
  # Globally display sort links without the order indicator arrow.
13
13
  # Default is false (sort order indicators are displayed).
@@ -2,8 +2,26 @@
2
2
 
3
3
  require_dependency "renalware"
4
4
 
5
- # New subscription registry - previous implementation does not work across threads
6
-
5
+ # New subscription registry - previous implementation does not work across threads.
6
+ # Each key in the map (hash) is the name of a class that broadacasts/publishes messages.
7
+ # Entries in the array (value) for that key are classes which subscribe to events in the
8
+ # publishing class. If you want a subscriber to listen asynchronously for events via ActiveJob,
9
+ # use an Subscriber instance like so
10
+ # "Renalware::Modalities::ChangePatientModality" => [
11
+ # Renalware::Broadcasting::Subscriber.new("Renalware::Patients::DummyListener", async: true),
12
+ # ...
13
+ # ]
14
+ # TODO: Ideally we would like an API something like this:
15
+ # Renalware.configure do |config|
16
+ # config.broadcast_subscription_map.configure do |publishers|
17
+ # publishers[Renalware::Modalities::ChangePatientModality] do |publisher|
18
+ # publisher.add_subscriber(Renalware::X)
19
+ # publisher.add_subscriber(Renalware::y, async: true)
20
+ # end
21
+ # end
22
+ # end
23
+ # As it stands its a bit too easy for the exposed subscription map hash to be overwritten by a host
24
+ # application with confusing and undesirable outcomes.
7
25
  Renalware.configure do |config|
8
26
  config.broadcast_subscription_map = {
9
27
  "Renalware::Modalities::ChangePatientModality" => [
@@ -0,0 +1,7 @@
1
+ en:
2
+ renalware:
3
+ reporting:
4
+ reporting_daily_pathology:
5
+ title: Pathology
6
+ reporting_daily_letters:
7
+ title: Letters
@@ -23,3 +23,4 @@ en:
23
23
  hbv3: HBV Vaccination 3
24
24
  hbv4: HBV Vaccination 4
25
25
  hbv_booster: HBV Booster
26
+ patient_refused: Patient Refused
@@ -0,0 +1,13 @@
1
+ class AddReportingIndexes < ActiveRecord::Migration[5.1]
2
+ def up
3
+ connection.execute(<<-SQL)
4
+ CREATE INDEX pathology_observations_created_on ON pathology_observations USING btree ((created_at::date));
5
+ SQL
6
+ end
7
+
8
+ def down
9
+ connection.execute(<<-SQL)
10
+ DROP INDEX pathology_observations_created_on;
11
+ SQL
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ class CreateDailyReports < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_view :reporting_daily_pathology
4
+ create_view :reporting_daily_letters
5
+ end
6
+ end
@@ -1,6 +1,6 @@
1
1
  -
2
2
  name: Main Authors
3
- description: A list of authors with their letter statistics.
3
+ description: A list of authors with statistics across the last 3 months of letters.
4
4
  view_name: reporting_main_authors_audit
5
5
  materialized: true
6
6
  refresh_schedule: "1 0 * * *"
@@ -329,4 +329,3 @@
329
329
  }
330
330
  ]
331
331
  }
332
-
@@ -0,0 +1,3 @@
1
+ select
2
+ (select count(*) from letter_letters where created_at::date = now()::date) as letters_created_today,
3
+ (select count(*) from letter_letters where completed_at::date = now()::date) as letters_printed_today;
@@ -0,0 +1,16 @@
1
+ -- A pathology report to help identify any HL7/delayed_job issues
2
+ -- the name of the view (the filename here) is significant as we'll compile all reporting_daily_*
3
+ -- views into a daily digest email
4
+ select
5
+ (select count(*) from delayed_jobs) as delayed_jobs_total,
6
+ (select count(*) from delayed_jobs where attempts = 0) as delayed_jobs_unprocessed,
7
+ (select count(*) from delayed_jobs where last_error is not null and failed_at is null ) as delayed_jobs_retrying,
8
+ (select count(*) from delayed_jobs where last_error is not null and failed_at is null ) as delayed_jobs_failed,
9
+ (select max(created_at) from delayed_jobs) as delayed_jobs_latest_entry,
10
+ (select count(*) from delayed_jobs where created_at >= now()::date) as delayed_jobs_added_today,
11
+ (select jsonb_agg(query) from (select priority, count(*) from delayed_jobs group by priority ) query) as delayed_jobs_priority_counts,
12
+ (select count(*) from feed_messages) as feed_messages_total,
13
+ (select count(*) from feed_messages where created_at >= now()::date) as feed_messages_added_today,
14
+ (select max(created_at) from feed_messages) as feed_messages_added_latest_entry, -- will be slow, needs index on feed_messages.created_at
15
+ (select count(*) from pathology_observations where created_at::date >= now()::date) as pathology_observations_added_today,
16
+ (select max(observed_at) from pathology_observations) as pathology_observations_latest_observed_at;
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "attr_extras"
4
+
5
+ # Shell out to gpg with a a command like this
6
+ # gpg --armor --no-default-keyring --keyring keyring.gpg
7
+ # --trust-model always -r 'renalware_test'
8
+ # --output output.xml.enc
9
+ # --encrypt input.xml
10
+ #
11
+ # Note if you want to see a more verbose output you can add -vv but don't do this here
12
+ # as it outputs info to stderr and causes an error to be raised.
13
+ #
14
+ # Some options may be omitted optional depending on how GPG is set up however as we may use
15
+ # more than 1 GPG key on thie server, we are explicitly setting the
16
+ # Recipient may be optional e.g. --recipient 'patient view'
17
+ class GpgEncryptFolder
18
+ pattr_initialize [:folder!, :options!]
19
+
20
+ def call
21
+ Dir.glob(folder.join("xml", "*.xml")) do |file|
22
+ GpgEncryptFile.new(file: file, options: options).call
23
+ end
24
+ end
25
+ end
26
+
27
+ class GpgOptions
28
+ attr_reader_initialize [:recipient, :keyring, :homedir, :filename_transform]
29
+ end
30
+
31
+ class GpgEncryptFile
32
+ pattr_initialize [:file!, :options!]
33
+
34
+ def call
35
+ err = Open3.popen3(gpg_command) do |_stdin, _stdout, stderr|
36
+ stderr.read
37
+ end
38
+ raise "Error encrypting UKRDC files: #{err}" unless err.empty?
39
+ end
40
+
41
+ private
42
+
43
+ def gpg_command
44
+ GpgCommand.new(file: file, options: options).to_s
45
+ end
46
+ end
47
+
48
+ class GpgCommand
49
+ pattr_initialize [:file!, :options!]
50
+
51
+ def to_s
52
+ "gpg --armor --no-default-keyring --trust-model always "\
53
+ "#{keyring} #{homedir} #{recipient} "\
54
+ "-o #{encrypted_filename} "\
55
+ "--encrypt #{file}"
56
+ end
57
+
58
+ def recipient
59
+ options.recipient && "--recipient #{options.recipient}"
60
+ end
61
+
62
+ def homedir
63
+ options.homedir && "--homedir #{options.homedir}"
64
+ end
65
+
66
+ def keyring
67
+ "--keyring #{options.keyring}"
68
+ end
69
+
70
+ # Calls a proc to transform the in file name into an out file name
71
+ def encrypted_filename
72
+ options.filename_transform.call(file)
73
+ end
74
+ end
@@ -56,6 +56,11 @@ module Renalware
56
56
  config_accessor(:ukrdc_default_changes_since_date) {
57
57
  Date.parse(ENV.fetch("UKRDC_DEFAULT_CHANGES_SINCE_DATE", "2018-01-01"))
58
58
  }
59
+ config_accessor(:ukrdc_gpg_recipient) { ENV.fetch("UKRDC_GPG_RECIPIENT", "renalware_test") }
60
+ config_accessor(:ukrdc_gpg_homedir) { ENV["UKRDC_GPG_HOMEDIR"] }
61
+ config_accessor(:ukrdc_gpg_keyring) do
62
+ ENV.fetch("UKRDC_GPG_KEYRING", Engine.root.join("config", "gpg", "renalware_test.gpg"))
63
+ end
59
64
 
60
65
  # We override this in some tests as a means of getting wicked_Pdf to generate an HTML version
61
66
  # of the PDF so we can examine its content
@@ -18,7 +18,7 @@ require "dotenv-rails"
18
18
  require "dumb_delegator"
19
19
  require "email_validator"
20
20
  require "enumerize"
21
- require "font-awesome-rails"
21
+ require "font-awesome-sass"
22
22
  require "foundation-rails"
23
23
  require "friendly_id"
24
24
  require "hashdiff"
@@ -51,6 +51,7 @@ require "validates_timeliness"
51
51
  require "virtus"
52
52
  require "wicked_pdf"
53
53
  require "wisper"
54
+ require "wisper/activejob"
54
55
  require "rails-assets-foundation-datepicker"
55
56
  require "rails-assets-select2"
56
57
  if ENV["RAILS_ENV"] == "development"
@@ -79,9 +80,9 @@ module Renalware
79
80
  config.autoload_paths += Dir["#{config.root}/lib/**/"]
80
81
  config.autoload_paths += %W(#{config.root}/app/validators/concerns)
81
82
 
82
- config.generators do |g|
83
- g.test_framework :rspec
84
- g.fixture_replacement :factory_girl, dir: "../../spec/factories"
83
+ config.generators do |gens|
84
+ gens.test_framework :rspec
85
+ gens.fixture_replacement :factory_girl, dir: "../../spec/factories"
85
86
  end
86
87
 
87
88
  initializer :add_locales do |app|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Renalware
4
- VERSION = "2.0.44"
4
+ VERSION = "2.0.45"
5
5
  end
data/lib/tasks/audit.rake CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
4
  namespace :audit do
3
5
  desc <<-DESC
@@ -23,6 +25,9 @@ begin
23
25
  month: ENV["month"],
24
26
  year: ENV["year"]
25
27
  ).call
28
+
29
+ # Refresh the materialized view which will aggregate the monthly hd_patient_statistics data
30
+ RefreshMaterializedViewJob.perform_later(view_name: "renalware.reporting_hd_overall_audit")
26
31
  end
27
32
  end
28
33
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :reporting do
4
+ desc "Send a daily system report email to confguired recpients"
5
+ task send_daily_summary_email: :environment do
6
+ recipents = Array(ENV.fetch("DAILY_REPORT_EMAIL_RECIPIENTS", "dev@airslie.com").split(","))
7
+ Renalware::Reporting::ReportMailer.daily_summary(to: recipents)
8
+ end
9
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renalware-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.44
4
+ version: 2.0.45
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airslie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-29 00:00:00.000000000 Z
11
+ date: 2018-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_type
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 4.4.0
215
+ version: 4.5.0
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 4.4.0
222
+ version: 4.5.0
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: dotenv-rails
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -277,19 +277,19 @@ dependencies:
277
277
  - !ruby/object:Gem::Version
278
278
  version: 2.2.2
279
279
  - !ruby/object:Gem::Dependency
280
- name: font-awesome-rails
280
+ name: font-awesome-sass
281
281
  requirement: !ruby/object:Gem::Requirement
282
282
  requirements:
283
283
  - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: 4.7.0.3
285
+ version: 5.3.1
286
286
  type: :runtime
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: 4.7.0.3
292
+ version: 5.3.1
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: foundation-rails
295
295
  requirement: !ruby/object:Gem::Requirement
@@ -548,14 +548,14 @@ dependencies:
548
548
  requirements:
549
549
  - - "~>"
550
550
  - !ruby/object:Gem::Version
551
- version: 1.0.0
551
+ version: 1.1.3
552
552
  type: :runtime
553
553
  prerelease: false
554
554
  version_requirements: !ruby/object:Gem::Requirement
555
555
  requirements:
556
556
  - - "~>"
557
557
  - !ruby/object:Gem::Version
558
- version: 1.0.0
558
+ version: 1.1.3
559
559
  - !ruby/object:Gem::Dependency
560
560
  name: puma
561
561
  requirement: !ruby/object:Gem::Requirement
@@ -576,14 +576,14 @@ dependencies:
576
576
  requirements:
577
577
  - - "~>"
578
578
  - !ruby/object:Gem::Version
579
- version: 1.1.0
579
+ version: 2.0.0
580
580
  type: :runtime
581
581
  prerelease: false
582
582
  version_requirements: !ruby/object:Gem::Requirement
583
583
  requirements:
584
584
  - - "~>"
585
585
  - !ruby/object:Gem::Version
586
- version: 1.1.0
586
+ version: 2.0.0
587
587
  - !ruby/object:Gem::Dependency
588
588
  name: rack-attack
589
589
  requirement: !ruby/object:Gem::Requirement
@@ -646,14 +646,14 @@ dependencies:
646
646
  requirements:
647
647
  - - "~>"
648
648
  - !ruby/object:Gem::Version
649
- version: 1.8.7
649
+ version: 2.0.1
650
650
  type: :runtime
651
651
  prerelease: false
652
652
  version_requirements: !ruby/object:Gem::Requirement
653
653
  requirements:
654
654
  - - "~>"
655
655
  - !ruby/object:Gem::Version
656
- version: 1.8.7
656
+ version: 2.0.1
657
657
  - !ruby/object:Gem::Dependency
658
658
  name: record_tag_helper
659
659
  requirement: !ruby/object:Gem::Requirement
@@ -683,19 +683,19 @@ dependencies:
683
683
  - !ruby/object:Gem::Version
684
684
  version: 1.2.0
685
685
  - !ruby/object:Gem::Dependency
686
- name: sass-rails
686
+ name: sassc-rails
687
687
  requirement: !ruby/object:Gem::Requirement
688
688
  requirements:
689
689
  - - "~>"
690
690
  - !ruby/object:Gem::Version
691
- version: 5.0.7
691
+ version: 1.3.0
692
692
  type: :runtime
693
693
  prerelease: false
694
694
  version_requirements: !ruby/object:Gem::Requirement
695
695
  requirements:
696
696
  - - "~>"
697
697
  - !ruby/object:Gem::Version
698
- version: 5.0.7
698
+ version: 1.3.0
699
699
  - !ruby/object:Gem::Dependency
700
700
  name: scenic
701
701
  requirement: !ruby/object:Gem::Requirement
@@ -864,6 +864,20 @@ dependencies:
864
864
  - - "~>"
865
865
  - !ruby/object:Gem::Version
866
866
  version: 2.0.0
867
+ - !ruby/object:Gem::Dependency
868
+ name: wisper-activejob
869
+ requirement: !ruby/object:Gem::Requirement
870
+ requirements:
871
+ - - "~>"
872
+ - !ruby/object:Gem::Version
873
+ version: 1.0.0
874
+ type: :runtime
875
+ prerelease: false
876
+ version_requirements: !ruby/object:Gem::Requirement
877
+ requirements:
878
+ - - "~>"
879
+ - !ruby/object:Gem::Version
880
+ version: 1.0.0
867
881
  - !ruby/object:Gem::Dependency
868
882
  name: wkhtmltopdf-binary
869
883
  requirement: !ruby/object:Gem::Requirement
@@ -1284,6 +1298,7 @@ files:
1284
1298
  - app/jobs/application_job.rb
1285
1299
  - app/jobs/feed_job.rb
1286
1300
  - app/jobs/hl7_message_example.yml
1301
+ - app/jobs/refresh_materialized_view_job.rb
1287
1302
  - app/jobs/renalware/hd/generate_monthly_statistics.rb
1288
1303
  - app/jobs/renalware/hd/generate_monthly_statistics_for_patient_job.rb
1289
1304
  - app/jobs/renalware/hd/update_rolling_patient_statistics_job.rb
@@ -1292,7 +1307,9 @@ files:
1292
1307
  - app/mailers/renalware/admin/user_mailer.rb
1293
1308
  - app/mailers/renalware/letters/delivery/errors.rb
1294
1309
  - app/mailers/renalware/letters/delivery/practice_mailer.rb
1310
+ - app/mailers/renalware/previews/report_preview.rb
1295
1311
  - app/mailers/renalware/previews/user_mailer_preview.rb
1312
+ - app/mailers/renalware/reporting/report_mailer.rb
1296
1313
  - app/models/application_record.rb
1297
1314
  - app/models/concerns/renalware/accountable.rb
1298
1315
  - app/models/concerns/renalware/broadcasting.rb
@@ -2602,6 +2619,8 @@ files:
2602
2619
  - app/views/renalware/reporting/audits/edit.html.slim
2603
2620
  - app/views/renalware/reporting/audits/index.html.slim
2604
2621
  - app/views/renalware/reporting/audits/show.html.slim
2622
+ - app/views/renalware/reporting/report_mailer/daily_summary.html.slim
2623
+ - app/views/renalware/reporting/report_mailer/daily_summary.text.erb
2605
2624
  - app/views/renalware/research/_alert.html.slim
2606
2625
  - app/views/renalware/research/_alerts.html.slim
2607
2626
  - app/views/renalware/research/studies/_form.html.slim
@@ -2761,6 +2780,7 @@ files:
2761
2780
  - config/autoprefixer.yml
2762
2781
  - config/cable.yml
2763
2782
  - config/cucumber.yml
2783
+ - config/gpg/renalware_test.gpg
2764
2784
  - config/initializers/ahoy.rb
2765
2785
  - config/initializers/backtrace_silencers.rb
2766
2786
  - config/initializers/client_side_validations.rb
@@ -2867,6 +2887,7 @@ files:
2867
2887
  - config/locales/renalware/renal/profile.en.yml
2868
2888
  - config/locales/renalware/renal/registry.en.yml
2869
2889
  - config/locales/renalware/reporting/audit.en.yml
2890
+ - config/locales/renalware/reporting/reporting_daily.en.yml
2870
2891
  - config/locales/renalware/research/study_participant.en.yml
2871
2892
  - config/locales/renalware/shared.yml
2872
2893
  - config/locales/renalware/snippets/snippets.en.yml
@@ -3308,6 +3329,8 @@ files:
3308
3329
  - db/migrate/20180803131157_add_uuid_to_hd_transmission_logs.rb
3309
3330
  - db/migrate/20180814103916_create_index_on_lower_patient_family_name.rb
3310
3331
  - db/migrate/20180815144429_update_hd_overall_audit_to_version_8.rb
3332
+ - db/migrate/20180831134606_add_reporting_indexes.rb
3333
+ - db/migrate/20180831134926_create_daily_reports.rb
3311
3334
  - db/seeds.rb
3312
3335
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
3313
3336
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb
@@ -3407,6 +3430,8 @@ files:
3407
3430
  - db/views/patient_summaries_v06.sql
3408
3431
  - db/views/reporting_anaemia_audit_v01.sql
3409
3432
  - db/views/reporting_bone_audit_v01.sql
3433
+ - db/views/reporting_daily_letters_v01.sql
3434
+ - db/views/reporting_daily_pathology_v01.sql
3410
3435
  - db/views/reporting_hd_blood_pressures_audit_v01.sql
3411
3436
  - db/views/reporting_hd_overall_audit_v01.sql
3412
3437
  - db/views/reporting_hd_overall_audit_v02.sql
@@ -3442,6 +3467,7 @@ files:
3442
3467
  - lib/dropdown_button_item.rb
3443
3468
  - lib/duration_calculator.rb
3444
3469
  - lib/git_commit_sha.rb
3470
+ - lib/gpg_encrypt_folder.rb
3445
3471
  - lib/hash_collection.rb
3446
3472
  - lib/inline_image.rb
3447
3473
  - lib/numeric_inclusion_validator.rb
@@ -3468,6 +3494,7 @@ files:
3468
3494
  - lib/tasks/feeds/files.rake
3469
3495
  - lib/tasks/hd.rake
3470
3496
  - lib/tasks/pathology.rake
3497
+ - lib/tasks/reporting.rake
3471
3498
  - lib/tasks/ukrdc.rake
3472
3499
  - lib/templates/slim/scaffold/_form.html.slim
3473
3500
  - lib/test_support/ajax_helpers.rb