renalware-core 2.0.139 → 2.0.140

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/renalware/rollup_compiled.js +50 -0
  3. data/app/assets/stylesheets/renalware/medications_pdf.scss +17 -1
  4. data/app/assets/stylesheets/renalware/modules/_medications.scss +17 -0
  5. data/app/assets/stylesheets/renalware/partials/_utilities.scss +8 -0
  6. data/app/controllers/renalware/medications/home_delivery/events_controller.rb +134 -0
  7. data/app/javascript/renalware/controllers/foundation_modal_controller.js +19 -0
  8. data/app/javascript/renalware/controllers/medications/home_delivery_modal_controller.js +24 -0
  9. data/app/javascript/renalware/index.js +4 -0
  10. data/app/models/renalware/drugs/homecare_form.rb +17 -0
  11. data/app/models/renalware/drugs/supplier.rb +12 -0
  12. data/app/models/renalware/feeds/hl7_message.rb +2 -2
  13. data/app/models/renalware/medications.rb +6 -0
  14. data/app/models/renalware/medications/delivery/event.rb +48 -0
  15. data/app/models/renalware/medications/delivery/event_prescription.rb +24 -0
  16. data/app/models/renalware/medications/delivery/homecare_forms_adapter.rb +104 -0
  17. data/app/models/renalware/medications/delivery/purchase_order_number.rb +27 -0
  18. data/app/models/renalware/medications/prescriptions_by_drug_type_id_query.rb +21 -0
  19. data/app/models/renalware/medications/provider.rb +20 -0
  20. data/app/views/renalware/medications/home_delivery/events/_edit.html.slim +71 -0
  21. data/app/views/renalware/medications/home_delivery/events/edit.html.slim +1 -0
  22. data/app/views/renalware/medications/home_delivery/events/edit.js.erb +4 -0
  23. data/app/views/renalware/medications/home_delivery/events/new.js.erb +3 -0
  24. data/app/views/renalware/medications/home_delivery/events/update.js.erb +5 -0
  25. data/app/views/renalware/medications/home_delivery/prescriptions/index.pdf.slim +4 -1
  26. data/app/views/renalware/medications/prescriptions/_form.html.slim +4 -0
  27. data/app/views/renalware/medications/prescriptions/index.html.slim +15 -5
  28. data/app/views/renalware/shared/_modal_close_link.html.slim +1 -1
  29. data/config/routes/medications.rb +5 -4
  30. data/db/migrate/20200301113102_create_drug_homecare_suppliers.rb +73 -0
  31. data/db/migrate/20200301124200_create_medication_delivery_events.rb +49 -0
  32. data/db/migrate/20200301124300_create_medication_delivery_event_prescriptions.rb +35 -0
  33. data/db/migrate/20200306183423_add_next_delivery_date_to_prescriptions.rb +7 -0
  34. data/lib/renalware/configuration.rb +7 -0
  35. data/lib/renalware/engine.rb +1 -0
  36. data/lib/renalware/version.rb +1 -1
  37. data/spec/factories/drugs/homecare_forms.rb +13 -0
  38. data/spec/factories/drugs/suppliers.rb +7 -0
  39. data/spec/factories/medications/delivery/events.rb +13 -0
  40. data/spec/support/pages/medications/home_delivery_dialog.rb +77 -0
  41. metadata +39 -13
  42. data/app/controllers/renalware/medications/home_delivery/prescriptions_controller.rb +0 -51
  43. data/app/models/renalware/letters/printing/create_pdf_by_interleaving_address_sheet_and_letter_for_each_recipient.rb.dead +0 -90
  44. data/app/models/renalware/pathology/consultant.rb.dead +0 -10
  45. data/app/models/renalware/pathology/view_observation_results.rb.dead +0 -64
  46. data/app/models/renalware/patients/ingestion/update_master_patient_index_job.rb.dead +0 -20
  47. data/app/presenters/renalware/admin/users/summary_part.rb.dead +0 -25
  48. data/app/presenters/renalware/ukrdc/modality_presenter.rb.dead +0 -8
  49. data/app/views/renalware/admin/users/_summary_part.html.slim.dead +0 -4
  50. data/app/views/renalware/letters/lists/index.html.slim.dead +0 -101
  51. data/app/views/renalware/letters/lists/index.html.slim.dead1 +0 -90
  52. data/app/views/renalware/mdm/_biopsies.html.slim.dead +0 -18
@@ -0,0 +1,35 @@
1
+ class CreateMedicationDeliveryEventPrescriptions < ActiveRecord::Migration[5.2]
2
+ def change
3
+ # rubocop:disable Rails/CreateTableWithTimestamps
4
+ within_renalware_schema do
5
+ create_table(
6
+ :medication_delivery_event_prescriptions,
7
+ comment: "A cross reference table between delivery_events and prescriptions"
8
+ ) do |t|
9
+ t.references(
10
+ :event,
11
+ foreign_key: { to_table: :medication_delivery_events },
12
+ index: false,
13
+ null: false
14
+ )
15
+ t.references(
16
+ :prescription,
17
+ foreign_key: { to_table: :medication_prescriptions },
18
+ index: false,
19
+ null: false
20
+ )
21
+ end
22
+ # rubocop:enable Rails/CreateTableWithTimestamps
23
+
24
+ add_index(
25
+ :medication_delivery_event_prescriptions,
26
+ [
27
+ :event_id,
28
+ :prescription_id
29
+ ],
30
+ unique: true,
31
+ name: :idx_medication_delivery_event_prescriptions
32
+ )
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,7 @@
1
+ class AddNextDeliveryDateToPrescriptions < ActiveRecord::Migration[5.2]
2
+ def change
3
+ within_renalware_schema do
4
+ add_column :medication_prescriptions, :next_delivery_date, :date
5
+ end
6
+ end
7
+ end
@@ -99,6 +99,13 @@ module Renalware
99
99
  config_accessor(:generate_pathology_request_forms_from_hd_mdm_listing) { true }
100
100
  config_accessor(:disable_inputs_controlled_by_tissue_typing_feed) { false }
101
101
  config_accessor(:disable_inputs_controlled_by_demographics_feed) { false }
102
+ config_accessor(:medication_delivery_purchase_order_prefix) { "R" }
103
+ config_accessor(:medication_homecare_pdf_forms) do
104
+ # esa: { provider: :generic, version: 1 },
105
+ {
106
+ immunosuppressant: { provider: :generic, version: 1 }
107
+ }
108
+ end
102
109
 
103
110
  # A host app can override this to add/remove/re-order the clinical summary display
104
111
  # Note these have to be strings - they mapped to constants in ClinicalSummaryPresenter.
@@ -45,6 +45,7 @@ require "puma"
45
45
  require "pundit"
46
46
  require "ransack"
47
47
  require "record_tag_helper"
48
+ require "renalware/forms"
48
49
  require "pandoc-ruby"
49
50
  require "rack/attack"
50
51
  require "ruby-hl7"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Renalware
4
- VERSION = "2.0.139"
4
+ VERSION = "2.0.140"
5
5
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :homecare_form, class: "Renalware::Drugs::HomecareForm" do
5
+ association :supplier, factory: :drug_supplier
6
+ drug_type
7
+ form_name { "form_name" }
8
+ form_version { "form_version" }
9
+ prescription_durations { [1, 3, 6] }
10
+ prescription_duration_default { 3 }
11
+ prescription_duration_unit { "month" }
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :drug_supplier, class: "Renalware::Drugs::Supplier" do
5
+ name { "Generic" }
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :medication_delivery_event, class: "Renalware::Medications::Delivery::Event" do
5
+ homecare_form factory: :homecare_form
6
+ patient
7
+ accountable
8
+ printed { false }
9
+ reference_number { Time.zone.now.to_i }
10
+ drug_type
11
+ prescription_duration { 1 }
12
+ end
13
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+ require_relative "../page_object"
5
+ require "capybara-select-2"
6
+
7
+ module Pages
8
+ module Medications
9
+ class HomeDeliveryDialog < PageObject
10
+ include CapybaraSelect2
11
+ pattr_initialize [:patient!]
12
+
13
+ def path
14
+ patient_prescriptions_path(
15
+ patient,
16
+ treatable_type: patient.class.to_s,
17
+ treatable_id: patient
18
+ )
19
+ end
20
+
21
+ def open
22
+ visit path
23
+ within ".page-actions" do
24
+ click_on "Print home delivery drugs"
25
+ end
26
+ end
27
+
28
+ def drug_type
29
+ within("#print-home-delivery-drugs-modal") do
30
+ find("#event_drug_type_id").find("option[selected]").text
31
+ end
32
+ end
33
+
34
+ def prescription_duration
35
+ within("#print-home-delivery-drugs-modal") do
36
+ find("#event_prescription_duration").find("option[selected]").text
37
+ end
38
+ end
39
+
40
+ def print
41
+ within("#print-home-delivery-drugs-modal") do
42
+ click_on "Print"
43
+ end
44
+ end
45
+
46
+ def drug_type_css
47
+ "#print-home-delivery-drugs-modal #event_drug_type_id"
48
+ end
49
+
50
+ def prescription_duration_css
51
+ "#print-home-delivery-drugs-modal #event_prescription_duration"
52
+ end
53
+
54
+ def indicate_printing_was_succesful
55
+ within("#print-home-delivery-drugs-modal") do
56
+ click_on "Yes - mark as printed"
57
+ end
58
+ end
59
+
60
+ def visible?
61
+ page.has_css?("#print-home-delivery-drugs-modal .modal", visible: true)
62
+ end
63
+
64
+ def has_enabled_print_button?
65
+ within("#print-home-delivery-drugs-modal") do
66
+ has_css?("a.home-delivery--print:not([disabled])")
67
+ end
68
+ end
69
+
70
+ def has_no_prescriptions_error?
71
+ within("#print-home-delivery-drugs-modal") do
72
+ has_content?("There are no home delivery prescriptions for this drug type")
73
+ end
74
+ end
75
+ end
76
+ end
77
+ 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.139
4
+ version: 2.0.140
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airslie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-04 00:00:00.000000000 Z
11
+ date: 2020-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview-component
@@ -766,6 +766,20 @@ dependencies:
766
766
  - - "~>"
767
767
  - !ruby/object:Gem::Version
768
768
  version: 1.0.0
769
+ - !ruby/object:Gem::Dependency
770
+ name: renalware-forms
771
+ requirement: !ruby/object:Gem::Requirement
772
+ requirements:
773
+ - - ">="
774
+ - !ruby/object:Gem::Version
775
+ version: 0.1.3
776
+ type: :runtime
777
+ prerelease: false
778
+ version_requirements: !ruby/object:Gem::Requirement
779
+ requirements:
780
+ - - ">="
781
+ - !ruby/object:Gem::Version
782
+ version: 0.1.3
769
783
  - !ruby/object:Gem::Dependency
770
784
  name: ruby-hl7
771
785
  requirement: !ruby/object:Gem::Requirement
@@ -1288,7 +1302,7 @@ files:
1288
1302
  - app/controllers/renalware/mdm_controller.rb
1289
1303
  - app/controllers/renalware/mdm_patients_controller.rb
1290
1304
  - app/controllers/renalware/medications/drug_types/prescriptions_controller.rb
1291
- - app/controllers/renalware/medications/home_delivery/prescriptions_controller.rb
1305
+ - app/controllers/renalware/medications/home_delivery/events_controller.rb
1292
1306
  - app/controllers/renalware/medications/prescriptions_controller.rb
1293
1307
  - app/controllers/renalware/medications/terminations_controller.rb
1294
1308
  - app/controllers/renalware/messaging/internal/messages_controller.rb
@@ -1458,7 +1472,9 @@ files:
1458
1472
  - app/inputs/simple_time_input.rb
1459
1473
  - app/inputs/user_picker_input.rb
1460
1474
  - app/javascript/renalware/controllers/another_test_controller.js
1475
+ - app/javascript/renalware/controllers/foundation_modal_controller.js
1461
1476
  - app/javascript/renalware/controllers/hd/prescription_administration_controller.js
1477
+ - app/javascript/renalware/controllers/medications/home_delivery_modal_controller.js
1462
1478
  - app/javascript/renalware/controllers/test_controller.js
1463
1479
  - app/javascript/renalware/controllers/toggle_controller.js
1464
1480
  - app/javascript/renalware/index.js
@@ -1566,6 +1582,8 @@ files:
1566
1582
  - app/models/renalware/drugs.rb
1567
1583
  - app/models/renalware/drugs/classification.rb
1568
1584
  - app/models/renalware/drugs/drug.rb
1585
+ - app/models/renalware/drugs/homecare_form.rb
1586
+ - app/models/renalware/drugs/supplier.rb
1569
1587
  - app/models/renalware/drugs/type.rb
1570
1588
  - app/models/renalware/events.rb
1571
1589
  - app/models/renalware/events/biopsy.rb
@@ -1714,7 +1732,6 @@ files:
1714
1732
  - app/models/renalware/letters/primary_care_physician.rb
1715
1733
  - app/models/renalware/letters/printing/batch_compile_pdfs.rb
1716
1734
  - app/models/renalware/letters/printing/complete_batch.rb
1717
- - app/models/renalware/letters/printing/create_pdf_by_interleaving_address_sheet_and_letter_for_each_recipient.rb.dead
1718
1735
  - app/models/renalware/letters/printing/duplex_interleaved_pdf_renderer.rb
1719
1736
  - app/models/renalware/letters/printing/pdf_combining.rb
1720
1737
  - app/models/renalware/letters/printing/printable_recipients.rb
@@ -1736,12 +1753,17 @@ files:
1736
1753
  - app/models/renalware/low_clearance/referrer.rb
1737
1754
  - app/models/renalware/low_clearance/version.rb
1738
1755
  - app/models/renalware/medications.rb
1756
+ - app/models/renalware/medications/delivery/event.rb
1757
+ - app/models/renalware/medications/delivery/event_prescription.rb
1758
+ - app/models/renalware/medications/delivery/homecare_forms_adapter.rb
1759
+ - app/models/renalware/medications/delivery/purchase_order_number.rb
1739
1760
  - app/models/renalware/medications/dose_unit.rb
1740
1761
  - app/models/renalware/medications/medication_route.rb
1741
1762
  - app/models/renalware/medications/patient_listener.rb
1742
1763
  - app/models/renalware/medications/prescription.rb
1743
1764
  - app/models/renalware/medications/prescription_termination.rb
1744
1765
  - app/models/renalware/medications/prescription_version.rb
1766
+ - app/models/renalware/medications/prescriptions_by_drug_type_id_query.rb
1745
1767
  - app/models/renalware/medications/prescriptions_by_drug_type_query.rb
1746
1768
  - app/models/renalware/medications/prescriptions_query.rb
1747
1769
  - app/models/renalware/medications/provider.rb
@@ -1774,7 +1796,6 @@ files:
1774
1796
  - app/models/renalware/pathology/clinic.rb
1775
1797
  - app/models/renalware/pathology/code_group.rb
1776
1798
  - app/models/renalware/pathology/code_group_membership.rb
1777
- - app/models/renalware/pathology/consultant.rb.dead
1778
1799
  - app/models/renalware/pathology/create_observation_requests.rb
1779
1800
  - app/models/renalware/pathology/create_observations_grouped_by_date_table.rb
1780
1801
  - app/models/renalware/pathology/current_observation.rb
@@ -1844,7 +1865,6 @@ files:
1844
1865
  - app/models/renalware/pathology/requests/sample_type.rb
1845
1866
  - app/models/renalware/pathology/results.rb
1846
1867
  - app/models/renalware/pathology/version.rb
1847
- - app/models/renalware/pathology/view_observation_results.rb.dead
1848
1868
  - app/models/renalware/patient.rb
1849
1869
  - app/models/renalware/patients.rb
1850
1870
  - app/models/renalware/patients/abridgement.rb
@@ -1863,7 +1883,6 @@ files:
1863
1883
  - app/models/renalware/patients/ingestion/message_mapper.rb
1864
1884
  - app/models/renalware/patients/ingestion/message_mappers/patient.rb
1865
1885
  - app/models/renalware/patients/ingestion/update_master_patient_index.rb
1866
- - app/models/renalware/patients/ingestion/update_master_patient_index_job.rb.dead
1867
1886
  - app/models/renalware/patients/language.rb
1868
1887
  - app/models/renalware/patients/last_successful_practice_sync_date_query.rb
1869
1888
  - app/models/renalware/patients/mdm_list_query.rb
@@ -2170,7 +2189,6 @@ files:
2170
2189
  - app/presenters/renalware/address_presenter/block.rb
2171
2190
  - app/presenters/renalware/address_presenter/short.rb
2172
2191
  - app/presenters/renalware/address_presenter/single_line.rb
2173
- - app/presenters/renalware/admin/users/summary_part.rb.dead
2174
2192
  - app/presenters/renalware/admissions/admission_presenter.rb
2175
2193
  - app/presenters/renalware/admissions/consult_presenter.rb
2176
2194
  - app/presenters/renalware/admissions/consult_summary_part.rb
@@ -2256,7 +2274,6 @@ files:
2256
2274
  - app/presenters/renalware/transplants/patient_presenter.rb
2257
2275
  - app/presenters/renalware/transplants/recipient_dashboard_presenter.rb
2258
2276
  - app/presenters/renalware/transplants/wait_list_registration_presenter.rb
2259
- - app/presenters/renalware/ukrdc/modality_presenter.rb.dead
2260
2277
  - app/presenters/renalware/ukrdc/pathology_observation_presenter.rb
2261
2278
  - app/presenters/renalware/ukrdc/pathology_observation_request_presenter.rb
2262
2279
  - app/presenters/renalware/ukrdc/patient_presenter.rb
@@ -2324,7 +2341,6 @@ files:
2324
2341
  - app/views/renalware/admin/user_mailer/approval.text.erb
2325
2342
  - app/views/renalware/admin/user_mailer/unexpiry.text.erb
2326
2343
  - app/views/renalware/admin/users/_filters.html.slim
2327
- - app/views/renalware/admin/users/_summary_part.html.slim.dead
2328
2344
  - app/views/renalware/admin/users/_tabs.html.slim
2329
2345
  - app/views/renalware/admin/users/edit.html.slim
2330
2346
  - app/views/renalware/admin/users/index.html.slim
@@ -2659,8 +2675,6 @@ files:
2659
2675
  - app/views/renalware/letters/lists/_letter.html.slim
2660
2676
  - app/views/renalware/letters/lists/_table.html.slim
2661
2677
  - app/views/renalware/letters/lists/_tabs.html.slim
2662
- - app/views/renalware/letters/lists/index.html.slim.dead
2663
- - app/views/renalware/letters/lists/index.html.slim.dead1
2664
2678
  - app/views/renalware/letters/lists/show.html.slim
2665
2679
  - app/views/renalware/letters/lists/show.js.erb
2666
2680
  - app/views/renalware/letters/parts/_allergies.html.slim
@@ -2679,7 +2693,6 @@ files:
2679
2693
  - app/views/renalware/low_clearance/mdm_patients/_tabs.html.slim
2680
2694
  - app/views/renalware/low_clearance/profiles/_summary.html.slim
2681
2695
  - app/views/renalware/low_clearance/profiles/edit.html.slim
2682
- - app/views/renalware/mdm/_biopsies.html.slim.dead
2683
2696
  - app/views/renalware/mdm/_clinic_visits.html.slim
2684
2697
  - app/views/renalware/mdm/_events.html.slim
2685
2698
  - app/views/renalware/mdm/_letters.html.slim
@@ -2699,6 +2712,11 @@ files:
2699
2712
  - app/views/renalware/medications/drug_types/prescriptions/_filters.html.slim
2700
2713
  - app/views/renalware/medications/drug_types/prescriptions/_table.html.slim
2701
2714
  - app/views/renalware/medications/drug_types/prescriptions/index.html.slim
2715
+ - app/views/renalware/medications/home_delivery/events/_edit.html.slim
2716
+ - app/views/renalware/medications/home_delivery/events/edit.html.slim
2717
+ - app/views/renalware/medications/home_delivery/events/edit.js.erb
2718
+ - app/views/renalware/medications/home_delivery/events/new.js.erb
2719
+ - app/views/renalware/medications/home_delivery/events/update.js.erb
2702
2720
  - app/views/renalware/medications/home_delivery/prescriptions/index.pdf.slim
2703
2721
  - app/views/renalware/medications/prescriptions/_current.html.slim
2704
2722
  - app/views/renalware/medications/prescriptions/_extended_patient_details.html.slim
@@ -3836,6 +3854,10 @@ files:
3836
3854
  - db/migrate/20200129093835_create_system_dashboards.rb
3837
3855
  - db/migrate/20200204153231_alter_hd_prescription_administrations.rb
3838
3856
  - db/migrate/20200205121805_remove_created_by_on_pathology_code_groups.rb
3857
+ - db/migrate/20200301113102_create_drug_homecare_suppliers.rb
3858
+ - db/migrate/20200301124200_create_medication_delivery_events.rb
3859
+ - db/migrate/20200301124300_create_medication_delivery_event_prescriptions.rb
3860
+ - db/migrate/20200306183423_add_next_delivery_date_to_prescriptions.rb
3839
3861
  - db/seeds.rb
3840
3862
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
3841
3863
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb
@@ -4059,6 +4081,8 @@ files:
4059
4081
  - spec/factories/directory/people.rb
4060
4082
  - spec/factories/drugs/drug.rb
4061
4083
  - spec/factories/drugs/drug_types.rb
4084
+ - spec/factories/drugs/homecare_forms.rb
4085
+ - spec/factories/drugs/suppliers.rb
4062
4086
  - spec/factories/events/events.rb
4063
4087
  - spec/factories/events/events_types.rb
4064
4088
  - spec/factories/feeds/file.rb
@@ -4097,6 +4121,7 @@ files:
4097
4121
  - spec/factories/low_clearance/modality_descriptions.rb
4098
4122
  - spec/factories/low_clearance/patients.rb
4099
4123
  - spec/factories/low_clearance/profiles.rb
4124
+ - spec/factories/medications/delivery/events.rb
4100
4125
  - spec/factories/medications/medication_route.rb
4101
4126
  - spec/factories/medications/prescription.rb
4102
4127
  - spec/factories/medications/prescription_terminations.rb
@@ -4214,6 +4239,7 @@ files:
4214
4239
  - spec/support/pages/letters/form.rb
4215
4240
  - spec/support/pages/letters/patient_letters.rb
4216
4241
  - spec/support/pages/low_clearance/profile_page.rb
4242
+ - spec/support/pages/medications/home_delivery_dialog.rb
4217
4243
  - spec/support/pages/medications/prescription_fom.rb
4218
4244
  - spec/support/pages/page_object.rb
4219
4245
  - spec/support/pathology_spec_helper.rb
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_dependency "renalware/medications"
4
-
5
- module Renalware
6
- module Medications
7
- module HomeDelivery
8
- class PrescriptionsController < BaseController
9
- include Renalware::Concerns::PdfRenderable
10
- include PresenterHelper
11
-
12
- def index
13
- respond_to do |format|
14
- format.pdf do
15
- authorize prescriptions
16
- render_index_pdf prescriptions
17
- end
18
- end
19
- end
20
-
21
- private
22
-
23
- def prescriptions
24
- @prescriptions ||= begin
25
- patient
26
- .prescriptions
27
- .current
28
- .where(provider: :home_delivery)
29
- .includes(:medication_route, :drug)
30
- end
31
- end
32
-
33
- def render_index_pdf(prescriptions)
34
- options = default_pdf_options.merge!(
35
- pdf: pdf_filename,
36
- layout: "renalware/layouts/letter",
37
- locals: {
38
- patient: patient,
39
- prescriptions: present(prescriptions, PrescriptionPresenter)
40
- }
41
- )
42
- render options
43
- end
44
-
45
- def pdf_filename
46
- "#{patient.local_patient_id} prescriptions-for-home-delivery"
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,90 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_dependency "renalware/letters"
4
- require "attr_extras"
5
-
6
- module Renalware
7
- module Letters
8
- module Printing
9
- # Build PDF for printing. We are targetting an envelope stuffer so there will be an address
10
- # cover sheet in front of each letter.
11
- # So for a letter where the patient is the main recipient, and we CC to the GP (no practice
12
- # email address so snail mailing) and 1 extra CC (a contact) the output will look like
13
- # this:
14
- #
15
- # 1. Patient address cover sheet
16
- # 2. Letter
17
- # 3. GP address cover sheet
18
- # 2. Letter
19
- # 5. Contact address cover sheet
20
- # 2. Letter
21
- #
22
- # Note however the we always pad each item (address sheet, letter) with blank pages to make
23
- # sure duplex printing does not cause the next page recipient's content to be rendered on the
24
- # back of the ast page of the previous letter for example/
25
- #
26
- # Compiles print content for all input letters and outputs the merged PDF to output_file.
27
- # Allows batch printing if you want to print say all 2 page letters together.
28
- # The caller may choose for example to send the output_file could be sent back to the browser
29
- # for manual printing using (eg using send_file) or copy the merged PDF to a folder for
30
- # automated printing.
31
- # class CreatePdfByInterleavingAddressSheetAndLetterForEachRecipient
32
- # pattr_initialize [:letters!, :output_file!]
33
-
34
- # def call
35
- # # There is a choice of two methods of building the merged PDF. See pros and cons.
36
- # # The other is UsingSeparatePdfForEachLetterSection.
37
- # UsingOnePdfForAllLetterSections.new(
38
- # letters: letters,
39
- # output_file: output_file
40
- # ).call
41
- # end
42
-
43
- # # For each letter, uses whkhtmltopdf to build the entire print content, ie all address
44
- # # sheets and required instance of the letter are created as one fresh pdf (no cache will be
45
- # # used).
46
- # #
47
- # # Pros:
48
- # # - Quicker: For each letter only one PDF is generated, and although the generation is slow
49
- # # as it does not use the previously cached letter PDF, and it has to render all the letter
50
- # # sections, including the letter itself, for every recipient, its stil faster then
51
- # # rendering separate PDFs for each section.
52
- # # Cons:
53
- # # - wastes some resources because it does not use the cache and renders same letter
54
- # # multiple times in the views
55
- # # - cannot be 100% sure the number of pages in the final PDF will be extactly what we
56
- # # predict, so requires a check to load the pdf into a reader and validate the page_count
57
- # class UsingOnePdfForAllLetterSections
58
- # include PdfCombining
59
- # pattr_initialize [:letters!, :output_file!]
60
-
61
- # def call
62
- # in_a_temporary_folder do |dir|
63
- # Array(letters).each do |letter|
64
- # if letter.page_count.to_i < 1
65
- # raise(ArgumentError, "letter.page_count not set on letter.id=#{letter.id}")
66
- # end
67
-
68
- # letter_filename = create_letter_pdf_in(dir, letter)
69
- # files << letter_filename
70
- # end
71
- # combine_multiple_pdfs_into_one(dir, output_file)
72
- # # For debuging:
73
- # # FileUtils.cp output_file, "/Users/tim/Desktop/x.pdf"
74
- # # `open /Users/tim/Desktop/x.pdf`
75
- # end
76
- # end
77
-
78
- # private
79
-
80
- # def create_letter_pdf_in(dir, letter)
81
- # filename = "letter_#{letter.id}.pdf"
82
- # path = dir.join(filename)
83
- # File.open(path, "wb") { |file| file.write(DuplexInterleavedPdfRenderer.call(letter)) }
84
- # filename
85
- # end
86
- end
87
- end
88
- end
89
- end
90
- end