renalware-core 2.0.157 → 2.0.162

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 (227) 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/{core.js.erb → core.js} +0 -5
  6. data/app/assets/javascripts/renalware/rollup_compiled.css +42050 -42050
  7. data/app/assets/javascripts/renalware/rollup_compiled.js +768 -201
  8. data/app/assets/stylesheets/renalware/modules/_clinical.scss +41 -0
  9. data/app/components/renalware/admissions/active_consult_alert_component.html.slim +1 -1
  10. data/app/components/renalware/article_component.rb +1 -1
  11. data/app/components/renalware/letters/letters_in_progress_component.rb +1 -5
  12. data/app/components/renalware/letters/unread_electronic_ccs_component.rb +1 -4
  13. data/app/components/renalware/medications/tabbed_prescriptions_list_component.html.slim +2 -2
  14. data/app/components/renalware/pathology/sparkline_component.html.slim +1 -1
  15. data/app/components/renalware/patients/bookmarks_component.rb +1 -5
  16. data/app/components/renalware/patients/messages_component.rb +2 -8
  17. data/app/components/renalware/pd/adequacy_results_component.rb +1 -1
  18. data/app/components/renalware/pd/pet_results_component.html.slim +5 -7
  19. data/app/components/renalware/surveys/eq5d_component.rb +1 -5
  20. data/app/components/renalware/surveys/pos_s_component.rb +1 -5
  21. data/app/components/renalware/system/admin_menu_component.rb +1 -4
  22. data/app/components/renalware/system/users_awaiting_approval_component.rb +1 -5
  23. data/app/controllers/renalware/api/token_authenticated_api_controller.rb +1 -1
  24. data/app/controllers/renalware/api/v1/medications/prescriptions_controller.rb +1 -1
  25. data/app/controllers/renalware/api/v1/patients/patients_controller.rb +1 -1
  26. data/app/controllers/renalware/events/events_controller.rb +0 -1
  27. data/app/controllers/renalware/pd/pet_results_controller.rb +1 -1
  28. data/{lib → app/documents}/document/attribute_initializer.rb +0 -0
  29. data/{lib → app/documents}/document/attribute_initializer/active_model.rb +0 -0
  30. data/{lib → app/documents}/document/attribute_initializer/base.rb +0 -0
  31. data/{lib → app/documents}/document/attribute_initializer/enum.rb +0 -0
  32. data/{lib → app/documents}/document/base.rb +0 -0
  33. data/{lib → app/documents}/document/embedded.rb +0 -0
  34. data/{lib → app/documents}/document/enum.rb +0 -0
  35. data/app/javascript/renalware/controllers/modal_controller.js +1 -1
  36. data/app/jobs/renalware/hd/generate_monthly_statistics.rb +1 -1
  37. data/app/jobs/renalware/hd/generate_monthly_statistics_for_patient_job.rb +1 -1
  38. data/app/jobs/renalware/letters/calculate_page_count_job.rb +0 -1
  39. data/app/jobs/renalware/letters/mailshots/create_mailshot_letters_job.rb +0 -1
  40. data/app/jobs/renalware/letters/printing/batch_print_job.rb +0 -1
  41. data/app/jobs/renalware/letters/save_rtf_letter_to_file_job.rb +1 -1
  42. data/app/mailers/renalware/letters/{delivery/errors.rb → delivery.rb} +2 -1
  43. data/app/mailers/renalware/letters/delivery/practice_mailer.rb +2 -2
  44. data/app/models/concerns/renalware/deviseable.rb +3 -3
  45. data/app/models/renalware/admissions/admission_query.rb +0 -1
  46. data/{lib → app/models}/renalware/automatic_age_calculator.rb +0 -0
  47. data/app/models/renalware/clinical/create_allergy.rb +4 -4
  48. data/app/models/renalware/clinics/create_clinic_visit.rb +4 -4
  49. data/app/models/renalware/clinics/current_observations.rb +3 -4
  50. data/app/models/renalware/events/alertable_events_query.rb +27 -0
  51. data/app/models/renalware/events/create_event.rb +0 -1
  52. data/app/models/renalware/events/event.rb +4 -0
  53. data/app/models/renalware/events/event_type_alert_trigger.rb +15 -0
  54. data/app/models/renalware/events/type.rb +7 -0
  55. data/app/models/renalware/feeds/files/exceptions.rb +1 -0
  56. data/app/models/renalware/feeds/files/practice_memberships/import_csv.rb +0 -1
  57. data/app/models/renalware/feeds/files/primary_care_physicians/import_csv.rb +0 -1
  58. data/app/models/renalware/feeds/message_processor.rb +0 -1
  59. data/app/models/renalware/hd/prescription_administration.rb +6 -4
  60. data/app/models/renalware/hd/profiles_in_date_range_query.rb +1 -6
  61. data/app/models/renalware/hd/scheduling/diary_range.rb +1 -2
  62. data/app/models/renalware/hd/scheduling/find_or_create_diary_by_week_query.rb +1 -1
  63. data/app/models/renalware/hd/session_forms/batch.rb +0 -1
  64. data/app/models/renalware/hd/session_forms/batch_compile_pdfs.rb +0 -1
  65. data/app/models/renalware/hd/session_forms/batch_item.rb +0 -1
  66. data/app/models/renalware/hd/sessions/close_stale_open_sessions.rb +0 -1
  67. data/app/models/renalware/letters/approve_letter.rb +0 -1
  68. data/app/models/renalware/letters/complete_letter.rb +0 -1
  69. data/app/models/renalware/letters/delivery/delivery_policy.rb +0 -1
  70. data/app/models/renalware/letters/delivery/email_letter_to_practice.rb +0 -1
  71. data/app/models/renalware/letters/delivery/practice_email.rb +0 -1
  72. data/app/models/renalware/letters/html_renderer.rb +1 -1
  73. data/app/models/renalware/letters/letter_factory.rb +1 -1
  74. data/app/models/renalware/letters/part/recent_pathology_results.rb +0 -1
  75. data/app/models/renalware/letters/pathology_layout.rb +1 -1
  76. data/app/models/renalware/letters/pdf_letter_cache.rb +1 -1
  77. data/app/models/renalware/letters/pdf_renderer.rb +1 -1
  78. data/app/models/renalware/letters/printing/batch_compile_pdfs.rb +0 -1
  79. data/app/models/renalware/letters/printing/complete_batch.rb +0 -1
  80. data/app/models/renalware/letters/printing/pdf_combining.rb +0 -2
  81. data/app/models/renalware/letters/resolve_default_electronic_ccs.rb +0 -2
  82. data/app/models/renalware/letters/rtf_renderer.rb +3 -2
  83. data/app/models/renalware/modalities/change_patient_modality.rb +4 -4
  84. data/app/models/renalware/pathology.rb +1 -0
  85. data/app/models/renalware/pathology/adjust_observation.rb +0 -1
  86. data/app/models/renalware/pathology/message_listener.rb +1 -1
  87. data/app/models/renalware/pathology/observation.rb +1 -1
  88. data/app/models/renalware/pathology/observation_descriptions_by_code_query.rb +1 -1
  89. data/app/models/renalware/pathology/observations_grouped_by_date_query.rb +0 -1
  90. data/app/models/renalware/pathology/observations_grouped_by_date_table.rb +0 -1
  91. data/app/models/renalware/pathology/ordered_patient_query.rb +1 -1
  92. data/app/models/renalware/pathology/requests/request_params_factory.rb +0 -1
  93. data/app/models/renalware/patients/calculate_age.rb +0 -1
  94. data/app/models/renalware/patients/clear_patient_ukrdc_data.rb +0 -1
  95. data/app/models/renalware/patients/ingestion/update_master_patient_index.rb +0 -1
  96. data/app/models/renalware/patients/last_successful_practice_sync_date_query.rb +0 -2
  97. data/app/models/renalware/patients/primary_care_physician.rb +1 -0
  98. data/app/models/renalware/patients/sync_ods_job.rb +1 -1
  99. data/app/models/renalware/patients/sync_practices_via_api.rb +1 -1
  100. data/app/models/renalware/pd.rb +5 -0
  101. data/app/models/renalware/pd/{apd/exceptions.rb → apd.rb.dead} +0 -0
  102. data/app/models/renalware/pd/apd/available_overnight_volume.rb +0 -1
  103. data/app/models/renalware/pd/apd/regime_calculations.rb +1 -1
  104. data/app/models/renalware/pd/create_regime.rb +4 -4
  105. data/app/models/renalware/pd/regimes_in_date_range_query.rb +0 -2
  106. data/app/models/renalware/pd/revise_regime.rb +5 -5
  107. data/{lib → app/models}/renalware/remembered_preferences.rb +0 -0
  108. data/app/models/renalware/research/study_participants_query.rb +0 -1
  109. data/app/models/renalware/transplants/create_donor_stage.rb +4 -4
  110. data/app/models/renalware/transplants/registrations/wait_list_query.rb +1 -1
  111. data/app/models/renalware/ukrdc.rb +1 -0
  112. data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +2 -2
  113. data/app/models/renalware/ukrdc/create_patient_xml_file.rb +1 -2
  114. data/app/models/renalware/ukrdc/export_summary.rb +0 -1
  115. data/app/models/renalware/ukrdc/housekeeping/remove_old_export_archive_folders.rb +0 -1
  116. data/app/models/renalware/ukrdc/incoming/file_list.rb +0 -2
  117. data/app/models/renalware/ukrdc/incoming/import_survey.rb +0 -1
  118. data/app/models/renalware/ukrdc/incoming/import_surveys.rb +0 -1
  119. data/app/models/renalware/ukrdc/incoming/xml_document.rb +0 -1
  120. data/app/models/renalware/ukrdc/pathology_observation_requests_query.rb +1 -2
  121. data/app/models/renalware/ukrdc/treatment_timeline/generate_timeline.rb +0 -1
  122. data/app/models/renalware/ukrdc/treatment_timeline/generate_treatments.rb +1 -1
  123. data/app/models/renalware/ukrdc/treatment_timeline/generator_factory.rb +1 -1
  124. data/app/models/renalware/ukrdc/treatment_timeline/hd/generator.rb +1 -1
  125. data/app/models/renalware/ukrdc/treatment_timeline/pd/generator.rb +0 -1
  126. data/app/models/renalware/ukrdc/treatment_timeline/pd/regime_decorator.rb +0 -1
  127. data/app/models/renalware/ukrdc/treatment_timeline/transfer_out/generator.rb +0 -1
  128. data/app/models/renalware/ukrdc/treatment_timeline/transplant/generator.rb +0 -1
  129. data/app/models/renalware/ukrdc/xml_renderer.rb +2 -2
  130. data/app/models/renalware/virology/vaccination.rb +14 -1
  131. data/app/models/renalware/virology/vaccination_type.rb +16 -0
  132. data/app/presenters/renalware/accesses/dashboard_presenter.rb +0 -1
  133. data/app/presenters/renalware/clinical/header_presenter.rb +0 -1
  134. data/app/presenters/renalware/letters/letter_presenter.rb +1 -1
  135. data/app/presenters/renalware/letters/part_class_filter.rb +0 -1
  136. data/app/presenters/renalware/letters/practice_email_meta_data.rb +0 -1
  137. data/app/presenters/renalware/low_clearance/dashboard_presenter.rb +0 -1
  138. data/app/presenters/renalware/medications/prescription_presenter.rb +7 -0
  139. data/app/presenters/renalware/pathology/observations_diff.rb +0 -1
  140. data/app/presenters/renalware/renal/clinical_summary_presenter.rb +0 -1
  141. data/app/presenters/renalware/summary_part.rb +0 -2
  142. data/app/presenters/renalware/transplants/donor_dashboard_presenter.rb +0 -1
  143. data/app/presenters/renalware/transplants/recipient_dashboard_presenter.rb +0 -1
  144. data/app/presenters/renalware/ukrdc/transplant_operation_presenter.rb +0 -1
  145. data/app/presenters/renalware/user_session_presenter.rb +1 -3
  146. data/app/values/renalware/bmi.rb +0 -2
  147. data/app/views/renalware/admin/cache/show.html.slim +0 -36
  148. data/app/views/renalware/admin/playgrounds/show.html.slim +2 -2
  149. data/app/views/renalware/events/events/_alerts.html.slim +3 -0
  150. data/app/views/renalware/events/events/alert/_simple.html.slim +5 -0
  151. data/app/views/renalware/events/events/toggled_cell/_swab.html.slim +1 -1
  152. data/app/views/renalware/hd/dashboards/_page_actions.html.slim +4 -1
  153. data/app/views/renalware/hd/mdm_patients/_patient.html.slim +1 -1
  154. data/app/views/renalware/hd/prescription_administrations/_form.html.slim +2 -2
  155. data/app/views/renalware/hd/transmission_logs/index.html.slim +2 -1
  156. data/app/views/renalware/layouts/_patient.html.slim +1 -0
  157. data/app/views/renalware/letters/batches/_create.html.slim +2 -2
  158. data/app/views/renalware/letters/contacts/_new_person.html.slim +1 -1
  159. data/app/views/renalware/letters/contacts/_person_from_directory.html.slim +1 -1
  160. data/app/views/renalware/letters/formatted_letters/_letter.html.slim +13 -14
  161. data/app/views/renalware/letters/mailshots/mailshots/_form.html.slim +25 -21
  162. data/app/views/renalware/letters/parts/_allergies.html.slim +1 -1
  163. data/app/views/renalware/letters/parts/_problems.html.slim +1 -1
  164. data/app/views/renalware/letters/parts/_recent_pathology_results.html.slim +1 -1
  165. data/app/views/renalware/medications/home_delivery/events/_edit.html.slim +4 -4
  166. data/app/views/renalware/medications/prescriptions/_current.html.slim +1 -1
  167. data/app/views/renalware/medications/prescriptions/_current_hd.html.slim +1 -1
  168. data/app/views/renalware/medications/prescriptions/_form.html.slim +3 -3
  169. data/app/views/renalware/medications/prescriptions/_prescription.html.slim +3 -1
  170. data/app/views/renalware/medications/prescriptions/_recently_stopped.html.slim +1 -1
  171. data/app/views/renalware/system/downloads/index.html.slim +1 -1
  172. data/app/views/renalware/system/messages/_form.html.slim +1 -1
  173. data/app/views/renalware/system/view_metadata/_columns_table.html.slim +2 -2
  174. data/app/views/renalware/system/view_metadata/edit.html.slim +6 -6
  175. data/app/views/renalware/virology/vaccinations/_alert.html.slim +5 -0
  176. data/app/views/renalware/virology/vaccinations/_cell.html.slim +1 -1
  177. data/app/views/renalware/virology/vaccinations/_inputs.html.slim +3 -1
  178. data/app/views/renalware/virology/vaccinations/_toggled_cell.html.slim +3 -1
  179. data/config/initializers/core_extensions.rb +1 -1
  180. data/config/initializers/inflections.rb +2 -0
  181. data/config/locales/renalware/virology/virology.en.yml +4 -0
  182. data/db/migrate/20201105153422_update_medication_current_prescriptions_view.rb +7 -0
  183. data/db/migrate/20201112152752_update_pd_mdm_patients_view1.rb +7 -0
  184. data/db/migrate/20210105163944_create_virology_vaccination_types.rb +13 -0
  185. data/db/migrate/20210115181817_create_event_type_alert_triggers.rb +15 -0
  186. data/db/seeds/default/seeds.rb +1 -0
  187. data/db/seeds/default/virology/seeds.rb +3 -0
  188. data/db/seeds/default/virology/vaccination_types.rb +25 -0
  189. data/db/views/medication_current_prescriptions_v01.sql +2 -1
  190. data/db/views/medication_current_prescriptions_v02.sql +30 -0
  191. data/db/views/pd_mdm_patients_v03.sql +50 -0
  192. data/db/views/reporting_anaemia_audit_v01.sql +0 -2
  193. data/lib/core_extensions/active_support/{duration.rb → duration_additions.rb} +0 -0
  194. data/lib/failure.rb +6 -0
  195. data/lib/gpg_encrypt_folder.rb +0 -2
  196. data/lib/month_period.rb +16 -0
  197. data/lib/renalware/configuration.rb +5 -6
  198. data/lib/renalware/version_number.rb +1 -1
  199. data/lib/service_result.rb +17 -0
  200. data/lib/sql/indexed_case_stmt.rb +1 -3
  201. data/lib/success.rb +9 -0
  202. data/lib/tasks/ukrdc.rake +1 -1
  203. data/lib/week_period.rb +57 -0
  204. data/spec/factories/events/events.rb +1 -2
  205. data/spec/factories/letters/letters.rb +4 -11
  206. data/spec/factories/medications/prescription_version.rb +1 -2
  207. data/spec/factories/patients/ethnicities.rb +1 -2
  208. data/spec/factories/pd/bag_types.rb +2 -2
  209. data/spec/factories/snippets/users.rb +1 -2
  210. data/spec/factories/transplants/recipient_followups.rb +1 -2
  211. data/spec/factories/virology/vaccination_types.rb +8 -0
  212. data/spec/factories/virology/vaccinations.rb +1 -1
  213. data/{lib/test_support → spec/support}/ajax_helpers.rb +0 -0
  214. data/{lib/test_support → spec/support}/text_editor_helpers.rb +0 -0
  215. metadata +51 -42
  216. data/app/assets/javascripts/renalware/components/reporting.js.erb +0 -0
  217. data/app/assets/javascripts/renalware/components/session_timeout_redirect.js.erb +0 -37
  218. data/app/components/renalware/system/article_component.html.slim +0 -3
  219. data/app/components/renalware/system/article_component.rb +0 -9
  220. data/app/mailers/renalware/previews/report_preview.rb +0 -14
  221. data/app/mailers/renalware/previews/ukrdc_summary_preview.rb +0 -20
  222. data/app/mailers/renalware/previews/user_mailer_preview.rb +0 -16
  223. data/lib/renalware/failure.rb +0 -6
  224. data/lib/renalware/month_period.rb +0 -18
  225. data/lib/renalware/service_result.rb +0 -19
  226. data/lib/renalware/success.rb +0 -9
  227. data/lib/renalware/week_period.rb +0 -59
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/clinical"
4
- require_dependency "renalware/success"
5
- require_dependency "renalware/failure"
4
+ require "success"
5
+ require "failure"
6
6
 
7
7
  module Renalware
8
8
  module Clinical
@@ -17,9 +17,9 @@ module Renalware
17
17
  yield allergy if block_given?
18
18
  if allergy.valid?
19
19
  save_allergy(allergy)
20
- ::Renalware::Success.new(allergy)
20
+ ::Success.new(allergy)
21
21
  else
22
- ::Renalware::Failure.new(allergy)
22
+ ::Failure.new(allergy)
23
23
  end
24
24
  end
25
25
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/clinics"
4
- require_dependency "renalware/success"
5
- require_dependency "renalware/failure"
4
+ require "success"
5
+ require "failure"
6
6
 
7
7
  module Renalware
8
8
  module Clinics
@@ -22,9 +22,9 @@ module Renalware
22
22
  visit = patient.clinic_visits.new(params)
23
23
  objects = OpenStruct.new(clinic_visit: visit, appointment: appointment)
24
24
  if visit.save && update_appointment_with(visit.id)
25
- return ::Renalware::Success.new(objects)
25
+ return ::Success.new(objects)
26
26
  else
27
- return ::Renalware::Failure.new(objects)
27
+ return ::Failure.new(objects)
28
28
  end
29
29
  end
30
30
  end
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Clinics
8
- # TODO: Move this to a view?
7
+ # TODO: Unused?
9
8
  class CurrentObservations
10
9
  NULL_DATE = nil
11
10
  pattr_initialize :patient
@@ -17,7 +16,7 @@ module Renalware
17
16
  @weight ||= begin
18
17
  result = ClinicVisit
19
18
  .most_recent_for_patient(patient)
20
- .where("weight is not null")
19
+ .where.not(weight: nil)
21
20
  .pluck(:date, :weight).first || []
22
21
 
23
22
  Observation.new(result.first, result.last)
@@ -29,7 +28,7 @@ module Renalware
29
28
  @height ||= begin
30
29
  result = ClinicVisit
31
30
  .most_recent_for_patient(patient)
32
- .where("height is not null")
31
+ .where.not(height: nil)
33
32
  .pluck(:date, :height).first || []
34
33
 
35
34
  Observation.new(result.first, result.last)
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/events"
4
+
5
+ module Renalware
6
+ module Events
7
+ # Query object that returns, for a patient, the most recent matching event (if any) for each
8
+ # event_type_alert_trigger row in the databse. The results are used to display
9
+ # alerts in the UI.
10
+ # For example given a vaccination Event::Type and an EventTypeAlertTrigger
11
+ # which is configured to find any vaccination event with the word "covid" in
12
+ # anywhere in the document, this query will return the most matching event.
13
+ # It is possible to have mltiple triggers rows for the same event type, so for eample one
14
+ # could display triggers for the most recent covid vaccination, and the most recent HBV
15
+ # vaccination.
16
+ class AlertableEventsQuery
17
+ def self.call(patient:)
18
+ Event
19
+ .for_patient(patient)
20
+ .joins(event_type: :alert_triggers)
21
+ .select("DISTINCT ON (events.patient_id, event_type_alert_triggers.id) events.*")
22
+ .where("(events.document::text ilike '%' || when_event_document_contains || '%') or (events.description ilike '%' || when_event_description_contains || '%')")
23
+ .order("events.patient_id, event_type_alert_triggers.id, events.created_at desc")
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/events"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Events
@@ -45,6 +45,10 @@ module Renalware
45
45
  end
46
46
  alias :to_input_partial_path :to_partial_path
47
47
 
48
+ def to_alert_partial_path
49
+ partial_for "alert"
50
+ end
51
+
48
52
  def to_cell_partial_path
49
53
  partial_for "cell"
50
54
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/events"
4
+
5
+ module Renalware
6
+ module Events
7
+ # Used to defines conditions where, for a particular event type, if the there is e.g. a case-
8
+ # insensitive text match against the contents of the event document (eg 'COVID')
9
+ # then an alert will be displayed in the UI (for the most recent match is there are > 1).
10
+ class EventTypeAlertTrigger < ApplicationRecord
11
+ belongs_to :event_type, class_name: "Events::Type"
12
+ validates :event_type, presence: true
13
+ end
14
+ end
15
+ end
@@ -6,6 +6,13 @@ module Renalware
6
6
  module Events
7
7
  class Type < ApplicationRecord
8
8
  self.table_name = "event_types"
9
+ has_many(
10
+ :alert_triggers,
11
+ class_name: "EventTypeAlertTrigger",
12
+ foreign_key: :event_type_id,
13
+ dependent: :destroy
14
+ )
15
+
9
16
  DEFAULT_EVENT_CLASS_NAME = "Renalware::Events::Simple"
10
17
 
11
18
  acts_as_paranoid
@@ -7,6 +7,7 @@ module Renalware
7
7
  module Files
8
8
  class Exceptions
9
9
  class FileNotFoundError < StandardError; end
10
+
10
11
  class UnexpectedCSVFormatError < StandardError; end
11
12
  end
12
13
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/feeds"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Feeds
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/feeds"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Feeds
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/feeds"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Feeds
@@ -9,10 +9,12 @@ module Renalware
9
9
  acts_as_paranoid
10
10
 
11
11
  # Set to true by the parent hd_session if we are not signing off at this stage
12
- attr_accessor :skip_witness_validation
13
- attr_accessor :skip_administrator_validation
14
- attr_accessor :administered_by_password
15
- attr_accessor :witnessed_by_password
12
+ attr_accessor(
13
+ :skip_witness_validation,
14
+ :skip_administrator_validation,
15
+ :administered_by_password,
16
+ :witnessed_by_password
17
+ )
16
18
 
17
19
  belongs_to :hd_session, class_name: "HD::Session", touch: true
18
20
  belongs_to :prescription, class_name: "Medications::Prescription"
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "attr_extras"
4
-
5
3
  module Renalware
6
4
  module HD
7
5
  class ProfilesInDateRangeQuery
@@ -13,9 +11,6 @@ module Renalware
13
11
  # so for the start date of the profile we always use created_at and ignore prescribed_on,
14
12
  # even if it is present.
15
13
  def call
16
- # p " from #{from}"
17
- # p " to #{to}"
18
-
19
14
  # If to is nil it is because modality we are targetting is a current one.
20
15
  # We need a date for the from..to range to work so use a far future one.
21
16
  @to ||= Date.parse("3000-01-01")
@@ -24,7 +19,7 @@ module Renalware
24
19
  # we will have duplicate Treatments with odd state/end date ordering
25
20
  used_profiles_ids = UKRDC::Treatment
26
21
  .where(patient: patient)
27
- .where("hd_profile_id is not null")
22
+ .where.not(hd_profile_id: nil)
28
23
  .pluck(:hd_profile_id)
29
24
  HD::Profile
30
25
  .with_deactivated
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "renalware/hd"
4
- require "renalware/week_period"
5
- require "attr_extras"
4
+ require "week_period"
6
5
 
7
6
  module Renalware
8
7
  module HD
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/hd"
4
- require "renalware/week_period"
4
+ require "week_period"
5
5
  ##
6
6
  # Returns a hospital unit's diary for the requested week (passed to #new as a WeekPeriod
7
7
  # value object).
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "attr_extras"
4
3
  require_dependency "renalware/hd"
5
4
 
6
5
  module Renalware
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module HD
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "attr_extras"
4
3
  require_dependency "renalware/hd"
5
4
 
6
5
  module Renalware
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/hd"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module HD
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -5,7 +5,7 @@ module Renalware
5
5
  # Note we cannot use a partial layout with render_to_string as it will always expect
6
6
  # the location to be in views/layouts and its not possible in Rails 5.1 to specify
7
7
  # another or absolute path
8
- class HTMLRenderer
8
+ class HtmlRenderer
9
9
  def call(letter)
10
10
  context = LettersController.new
11
11
  context.render_to_string_with_wicked_pdf(
@@ -54,7 +54,7 @@ module Renalware
54
54
  Letter::Draft.new(params.merge!(type: Letter::Draft.name, patient: patient))
55
55
  end
56
56
 
57
- # note both practice and gp need to be present before we can send to the pcp - we'll use the
57
+ # NOTE: both practice and gp need to be present before we can send to the pcp - we'll use the
58
58
  # practice address but the GP's name as the salutation.
59
59
  def include_primary_care_physician_as_default_main_recipient
60
60
  return if letter.main_recipient.present?
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "renalware/letters/part"
4
- require "attr_extras"
5
4
 
6
5
  # When rendered, the template in `to_partial_path` will be used, and our Part object here will be
7
6
  # available in the partial as `recent_pathology_results`.
@@ -11,7 +11,7 @@ module Renalware
11
11
  def each_group
12
12
  Pathology::ObservationDescription
13
13
  .select(:id, :code, :letter_group, :letter_order)
14
- .where("letter_group is not null")
14
+ .where.not(letter_group: nil)
15
15
  .order("letter_group asc, letter_order asc")
16
16
  .group_by(&:letter_group)
17
17
  .each do |group_number, descriptions|
@@ -40,7 +40,7 @@ module Renalware
40
40
  delegate :clear, to: :store
41
41
 
42
42
  def fetch(letter, **options)
43
- store.fetch(cache_key_for(letter, **options)) { yield }
43
+ store.fetch(cache_key_for(letter, **options), expires_in: 4.weeks) { yield }
44
44
  end
45
45
 
46
46
  # Note the letter must be a LetterPresenter which has a #to_html method
@@ -2,7 +2,7 @@
2
2
 
3
3
  #
4
4
  # Render a Letter to PDF. Try and get it from the cachefirst
5
- # Lean on Letters::HTMLRenderer which already renders the letter to html via
5
+ # Lean on Letters::HtmlRenderer which already renders the letter to html via
6
6
  # LetterPresenter#content.
7
7
  #
8
8
  module Renalware
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -2,8 +2,6 @@
2
2
 
3
3
  require_dependency "renalware/letters"
4
4
 
5
- require "attr_extras"
6
-
7
5
  module Renalware
8
6
  module Letters
9
7
  module Printing
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "attr_extras"
4
-
5
3
  module Renalware
6
4
  module Letters
7
5
  # This class is responsible for collating the complete set of default electronic ccs for a new
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/letters"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Letters
@@ -36,10 +35,12 @@ module Renalware
36
35
  temp_html_file.unlink # allows garbage collection and temp file removal
37
36
  end
38
37
 
38
+ # Use windows line endings (CRLF) rather than linux (LF).
39
+ # This solves a problem at Barts exporting RTFs to send to GPs
39
40
  def rtf_content_converted_from(html_temp_file)
40
41
  rtf_template = File.join(Engine.root, "lib", "pandoc", "templates", "default.rtf")
41
42
  options = { template: rtf_template }
42
- PandocRuby.html([html_temp_file.path], options, :standalone).to_rtf
43
+ PandocRuby.html([html_temp_file.path], options, :standalone).to_rtf("--eol=crlf")
43
44
  end
44
45
 
45
46
  def html_with_images_stripped