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
@@ -38,24 +38,28 @@
38
38
  br
39
39
  .panel
40
40
  h2
41
- i.fas.fa-info-circle style="color: #00a499"
42
- span(style="padding-left: 5px") Tips
43
- p
44
- | The list of patients to include in a mailshot it determined by the SQL View chosen above.
45
- |  It is intended that a systems or database administrator create this view for you in the
46
- |  renalware database. The view should have one column called 'patient_id' and return the ids
47
- |  of all the patients you want to send this letter to.
48
- |  You should ideally create the view in the hospital's
49
- |  own postgres schema eg 'renalware_kch' in the case of Kings College Hospital.
50
- p Here is a (somewhat pointless) example of a compatible SQL view definition:
51
- p
52
- code
53
- | CREATE OR REPLACE VIEW
54
- br
55
- | renalware_kch.letter_mailshot_patients_where_surname_starts_with_r AS
56
- br
57
- | SELECT id as patient_id
58
- br
59
- | FROM patients
60
- br
61
- | WHERE family_name like 'R%';
41
+ i.fas.fa-info-circle
42
+ span.pl-3 Help
43
+
44
+ markdown:
45
+ The list of patients to include in a mailshot it determined by the SQL View chosen above.
46
+ It is intended that a systems or database administrator create this view for you in the
47
+ renalware database. The view should have one column called 'patient_id' and return the ids
48
+ of all the patients you want to send this letter to.
49
+
50
+ You should ideally create the view in the hospital's
51
+ own postgres schema (eg 'renalware_kch' in the case of Kings College Hospital) in order to
52
+ indicate your view is hospital-specific.
53
+
54
+ **Note that in order for your view to appear in the dropdown above, its name must start
55
+ with `letter_mailshot_`**
56
+
57
+ Here is a (somewhat pointless) example of a compatible SQL view definition:
58
+
59
+ ```
60
+ CREATE OR REPLACE VIEW
61
+ renalware_kch.letter_mailshot_patients_where_surname_starts_with_r AS
62
+ SELECT id as patient_id
63
+ FROM patients
64
+ WHERE family_name like 'R%';
65
+ ```
@@ -1,5 +1,5 @@
1
1
  .list.allergies
2
- h3 Allergies:
2
+ b.subtitle Allergies:
3
3
  - if allergies.any?
4
4
  ul
5
5
  - allergies.each do |allergy|
@@ -1,5 +1,5 @@
1
1
  .list.problems
2
- h3 Problems
2
+ b.subtitle Problems
3
3
 
4
4
  - if problems.any?
5
5
  ul.indented
@@ -1,3 +1,3 @@
1
1
  .list.investigations
2
- h3 Recent Investigations
2
+ b.subtitle Recent Investigations
3
3
  p= recent_pathology_results.results || " None"
@@ -7,7 +7,7 @@
7
7
  remote: true,
8
8
  authenticity_token: true,
9
9
  method: :patch,
10
- data: { target: "home-delivery-modal.form" },
10
+ data: { "home-delivery-modal-target" => "form" },
11
11
  as: :event) do |f|
12
12
 
13
13
  .modal__header
@@ -24,7 +24,7 @@
24
24
  / - the first is initially displayed and has the print options and a print button
25
25
  / - the second is displayed once Print has been clicked, and asked asks for feedback as to
26
26
  / whether printing was successful or not. It it was successful we set
27
- .form-fields data-target="home-delivery-modal.printOptions"
27
+ .form-fields data-home-delivery-modal-target="printOptions"
28
28
  - homecare_forms = Renalware::Drugs::HomecareForm.all
29
29
  = f.association :drug_type,
30
30
  collection: Renalware::Drugs::Type.where(id: homecare_forms.map(&:drug_type_id)),
@@ -32,7 +32,7 @@
32
32
  input_html: { \
33
33
  data: { \
34
34
  action: "change->home-delivery-modal#refreshForm", \
35
- target: "home-delivery-modal.drugtype" \
35
+ "home-delivery-modal-target" => "drugtype" \
36
36
  } \
37
37
  },
38
38
  wrapper: :horizontal_medium
@@ -59,7 +59,7 @@
59
59
  data: { action: "click->home-delivery-modal#askForPrintFeedback" },
60
60
  **disabled_args
61
61
 
62
- .show-after-printing.visuallyhidden data-target="home-delivery-modal.printFeedback"
62
+ .show-after-printing.visuallyhidden data-home-delivery-modal-target="printFeedback"
63
63
 
64
64
  h2 Was printing successful?
65
65
  .right
@@ -1,4 +1,4 @@
1
- h3 Current Medications
1
+ b.subtitle Current Medications
2
2
 
3
3
  - if prescriptions.blank?
4
4
  p.prescription No medications listed
@@ -1,5 +1,5 @@
1
1
  - if prescriptions.any?
2
- h3 Drugs to give on Haemodialysis
2
+ b.subtitle Drugs to give on Haemodialysis
3
3
 
4
4
  ul
5
5
  - prescriptions.each do |prescription|
@@ -38,16 +38,16 @@ ruby:
38
38
  required: false,
39
39
  wrapper: :horizontal_datepicker
40
40
 
41
- span(data-target= "prescriptions.providers")
41
+ span(data-prescriptions-target= "providers")
42
42
  = f.input :provider,
43
43
  collection: provider_codes,
44
44
  as: :inline_radio_buttons,
45
45
  label_method: :to_label,
46
46
  wrapper: :horizontal_medium,
47
- input_html: { data: { action: "change->prescriptions#toggleDeliveryDates", target: "prescriptions.providers"} }
47
+ input_html: { data: { action: "change->prescriptions#toggleDeliveryDates", "prescriptions.target" => "providers"} }
48
48
 
49
49
  / Only show this if home_delivery provider is active/selected. See prescriptions stimulus controller.
50
- .home_delivery_dates(style="display:none" data-target="prescriptions.homeDeliveryDates")
50
+ .home_delivery_dates(style="display:none" data-prescriptions-target="homeDeliveryDates")
51
51
  .row
52
52
  .small-12.medium-4.large-3.columns
53
53
  .small-12.medium-8.large-9.columns
@@ -1,5 +1,4 @@
1
1
  - recently_changed = defined?(recently_changed) && recently_changed
2
-
3
2
  li.prescription class=("recently_changed" if recently_changed)
4
3
  = prescription.drug.name
5
4
  = blank_separator
@@ -8,6 +7,9 @@ li.prescription class=("recently_changed" if recently_changed)
8
7
  = prescription.medication_route.code
9
8
  = blank_separator
10
9
  = prescription.frequency
10
+ = blank_separator
11
+ i
12
+ b= prescription.provider_suffix
11
13
 
12
14
  / We pass in date_changed if the prescription is recently_changed or recently_stopped
13
15
  / It could be the prescribed_on or terminated_on date
@@ -1,4 +1,4 @@
1
- h3 Recently Stopped Medications
1
+ b.subtitle Recently Stopped Medications
2
2
 
3
3
  - if prescriptions.blank?
4
4
  p.prescription None
@@ -22,7 +22,7 @@
22
22
  - items.each do |item|
23
23
  .download
24
24
  .file
25
- = link_to(system_download_path(item), target: "_blank") do
25
+ = link_to(system_download_path(item), target: "_blank", rel: "noopener") do
26
26
  i.far.fa-file-alt
27
27
  .details
28
28
  h3= link_to(item.name, system_download_path(item), target: "_blank")
@@ -1,4 +1,4 @@
1
- - severities = Renalware::System::Message.severity.values.map{|val| [val&.humanize, val] }
1
+ - severities = Renalware::System::Message.severity.values.map{ |val| [val&.humanize, val] }
2
2
  = simple_form_for(message,
3
3
  as: :message,
4
4
  html: { autocomplete: "off" }) do |f|
@@ -28,9 +28,9 @@ table.sortables(style="list-style-type: none;")
28
28
  td.border-0
29
29
  code= col.code
30
30
  td.text-center.border-0
31
- input.m-0(type="checkbox" name="view_metadata[columns][][hidden]" checked=col.hidden)
31
+ input.m-0(type="checkbox" name="view_metadata[columns][][hidden]" checked=col.hidden style="margin:0")
32
32
  td.border-0
33
- input.m-0(type="text" name="view_metadata[columns][][name]" value=col.name)
33
+ input.m-0(type="text" name="view_metadata[columns][][name]" value=col.name style="margin:0")
34
34
  td.border-0
35
35
  select.m-0(name="view_metadata[columns][][width]")
36
36
  option(value="")
@@ -38,18 +38,18 @@ ruby:
38
38
  / Tabs - see also js stimulus tabs-controller
39
39
  div(data-controller="tabs" data-tabs-active-tab="-mb-px border-l border-t border-r rounded-t")
40
40
  ul.list-reset.flex.border-b.ml-0
41
- li.-mb-px.mr-1(data-target="tabs.tab" data-action="click->tabs#change")
41
+ li.-mb-px.mr-1(data-tabs-target="tab" data-action="click->tabs#change")
42
42
  a.bg-white.inline-block.py-2.px-4.text-blue-500.hover:text-blue-700.font-semibold.no-underline(href="#") Columns
43
- li.-mb-px.mr-1(data-target="tabs.tab" data-action="click->tabs#change")
43
+ li.-mb-px.mr-1(data-tabs-target="tab" data-action="click->tabs#change")
44
44
  a.bg-white.inline-block.py-2.px-4.text-blue-500.hover:text-blue-700.font-semibold.no-underline(href="#") Filters
45
- li.-mb-px.mr-1(data-target="tabs.tab" data-action="click->tabs#change")
45
+ li.-mb-px.mr-1(data-tabs-target="tab" data-action="click->tabs#change")
46
46
  a.bg-white.inline-block.py-2.px-4.text-blue-500.hover:text-blue-700.font-semibold.no-underline(href="#") Previous versions
47
47
 
48
- .hidden.py-4.px-4.border-l.border-b.border-r(data-target="tabs.panel")
48
+ .hidden.py-4.px-4.border-l.border-b.border-r(data-tabs-target="panel")
49
49
  = render "columns_table", view: view
50
- .hidden.py-4.px-4.border-l.border-b.border-r(data-target="tabs.panel")
50
+ .hidden.py-4.px-4.border-l.border-b.border-r(data-tabs-target="panel")
51
51
  = render "filters_form", view: view
52
- .hidden.py-4.px-4.border-l.border-b.border-r(data-target="tabs.panel")
52
+ .hidden.py-4.px-4.border-l.border-b.border-r(data-tabs-target="panel")
53
53
  = render "versions", view: view
54
54
 
55
55
  .modal__footer
@@ -0,0 +1,5 @@
1
+ li.patient-alert.vaccination
2
+ i.fas.fa-syringe
3
+ - title = Renalware::Virology::VaccinationType.find_by(code: event.document&.type)&.name
4
+ span.title= link_to title, patient_virology_dashboard_path
5
+ span.date= l(event.date_time.to_date)
@@ -1,2 +1,2 @@
1
1
  / See Vaccination.to_partial_path etc
2
- = event.document.type.text
2
+ = event.document.to_s
@@ -1,4 +1,6 @@
1
1
  / See Vaccination.to_partial_path etc
2
2
  / Pulled into the New Event form via a js get to EventsController#new
3
3
  = f.simple_fields_for :document, event.document do |fd|
4
- = fd.input :type, wrapper: :horizontal_medium
4
+ /= fd.input :type, wrapper: :horizontal_medium
5
+ = fd.input :type, wrapper: :horizontal_medium, collection: Renalware::Virology::VaccinationType.ordered.pluck(:name, :code)
6
+ = fd.input :drug, wrapper: :horizontal_medium, collection: Renalware::Drugs::Drug.for(:vaccine).pluck(:name, :name)
@@ -3,6 +3,8 @@
3
3
 
4
4
  dl.dl-horizontal
5
5
  dt= attr_name(document, :type, suffix: ":")
6
- dd= document.type&.text || t("unspecified")
6
+ dd= document.type_name.presence || t("unspecified")
7
+ dt= attr_name(document, :drug, suffix: ":")
8
+ dd= document.drug.presence || t("unspecified")
7
9
  dt= attr_name(event, :notes, suffix: ":")
8
10
  dd= event.notes&.html_safe || t("unspecified")
@@ -5,7 +5,7 @@ require "core_extensions/i18n/always_cascade"
5
5
  require "core_extensions/dumb_delegator"
6
6
  # require "core_extensions/active_record/sort"
7
7
  require "core_extensions/date"
8
- require "core_extensions/active_support/duration"
8
+ require "core_extensions/active_support/duration_additions"
9
9
  require "core_extensions/scenic"
10
10
  require "core_extensions/hash"
11
11
  require "core_extensions/active_record/migration_helpers"
@@ -32,6 +32,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
32
32
  inflect.acronym "CCs"
33
33
  inflect.acronym "CM"
34
34
  inflect.acronym "CSV"
35
+ inflect.acronym "CRF"
35
36
  inflect.acronym "DNA"
36
37
  inflect.acronym "EDTA"
37
38
  inflect.acronym "ESRF"
@@ -55,6 +56,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
55
56
  inflect.acronym "EQ5D"
56
57
  inflect.acronym "EQ5D5L"
57
58
  inflect.acronym "POS"
59
+ inflect.acronym "YAML"
58
60
  inflect.irregular "feedback", "feedback"
59
61
  inflect.acronym "NHS"
60
62
  inflect.uncountable %w(cache)
@@ -24,4 +24,8 @@ en:
24
24
  hbv3: HBV Vaccination 3
25
25
  hbv4: HBV Vaccination 4
26
26
  hbv_booster: HBV Booster
27
+ influenza: Influenza
28
+ pneumococcus: Pneumococcus
29
+ covid19_1: COVID-19 1
30
+ covid19_2: COVID-19 2
27
31
  patient_refused: Patient Refused
@@ -0,0 +1,7 @@
1
+ class UpdateMedicationCurrentPrescriptionsView < ActiveRecord::Migration[5.2]
2
+ def change
3
+ within_renalware_schema do
4
+ replace_view :medication_current_prescriptions, version: 2, revert_to_version: 1
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class UpdatePDMDMPatientsView1 < ActiveRecord::Migration[5.2]
2
+ def change
3
+ within_renalware_schema do
4
+ update_view :pd_mdm_patients, version: 3, revert_to_version: 2
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ class CreateVirologyVaccinationTypes < ActiveRecord::Migration[5.2]
2
+ within_renalware_schema do
3
+ def change
4
+ create_table :virology_vaccination_types do |t|
5
+ t.string :code, null: false, index: { unique: true }
6
+ t.string :name, null: false, index: { unique: true }
7
+ t.integer :position, null: false, default: 0
8
+ t.datetime :deleted_at
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ class CreateEventTypeAlertTriggers < ActiveRecord::Migration[6.0]
2
+ def change
3
+ within_renalware_schema do
4
+ create_table(
5
+ :event_type_alert_triggers,
6
+ comment: "Matching alerts are displayed on patient pages"
7
+ ) do |t|
8
+ t.references :event_type, foreign_key: true, null: false
9
+ t.text :when_event_document_contains
10
+ t.text :when_event_description_contains
11
+ t.timestamps null: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -20,3 +20,4 @@ require_relative "./practices/seeds"
20
20
  require_relative "./pd/seeds"
21
21
  require_relative "./renal/seeds"
22
22
  require_relative "./transplants/seeds"
23
+ require_relative "./virology/seeds"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./vaccination_types"
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Renalware
4
+ module Virology
5
+ log "Adding virology vaccination types" do
6
+ {
7
+ hbv1: "HBV Vaccination 1",
8
+ hbv2: "HBV Vaccination 2",
9
+ hbv3: "HBV Vaccination 3",
10
+ hbv4: "HBV Vaccination 4",
11
+ hbv_booster: "HBV Booster",
12
+ influenza: "Influenza",
13
+ pneumococcus: "Pneumococcus",
14
+ covid19_1: "COVID-19 1",
15
+ covid19_2: "COVID-19 2",
16
+ patient_refused: "Patient Refused",
17
+ patient_refused_covid19: "Patient refused Covid-19 vaccine",
18
+ patient_refused_covid19_pfizer: "Patient refused Covid-19 vaccine Pfizer",
19
+ patient_refused_covid19_astrazenica: "Patient refused Covid-19 vaccine Astra Zeneca"
20
+ }.each do |code, name|
21
+ VaccinationType.find_or_create_by!(code: code, name: name)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,4 +1,5 @@
1
- SELECT mp.id,
1
+ SELECT
2
+ mp.id,
2
3
  mp.patient_id,
3
4
  mp.drug_id,
4
5
  mp.treatable_type,
@@ -0,0 +1,30 @@
1
+ SELECT distinct on (mp.patient_id, mp.id)
2
+ mp.id,
3
+ mp.patient_id,
4
+ mp.drug_id,
5
+ mp.treatable_type,
6
+ mp.treatable_id,
7
+ mp.dose_amount,
8
+ mp.dose_unit,
9
+ mp.medication_route_id,
10
+ mp.route_description,
11
+ mp.frequency,
12
+ mp.notes,
13
+ mp.prescribed_on,
14
+ mp.provider,
15
+ mp.created_at,
16
+ mp.updated_at,
17
+ mp.created_by_id,
18
+ mp.updated_by_id,
19
+ mp.administer_on_hd,
20
+ mp.last_delivery_date,
21
+ drugs.name as drug_name,
22
+ drug_types.code AS drug_type_code,
23
+ drug_types.name AS drug_type_name
24
+ FROM medication_prescriptions mp
25
+ left outer join medication_prescription_terminations mpt ON mpt.prescription_id = mp.id
26
+ inner JOIN drugs ON drugs.id = mp.drug_id
27
+ left outer join drug_types_drugs ON drug_types_drugs.drug_id = drugs.id
28
+ left outer join drug_types ON drug_types_drugs.drug_type_id = drug_types.id
29
+ where (mpt.terminated_on IS NULL OR mpt.terminated_on > current_date)
30
+ order by mp.patient_id asc, mp.id asc;
@@ -0,0 +1,50 @@
1
+ select
2
+ distinct on (P.id)
3
+ P.id,
4
+ P.secure_id,
5
+ (upper(P.family_name) || ', ' || P.given_name) as "patient_name",
6
+ P.nhs_number,
7
+ P.local_patient_id as hospital_numbers,
8
+ P.sex,
9
+ P.born_on,
10
+ date_part('year', age(P.born_on)) as "age",
11
+ RPROF.esrf_on,
12
+ Mx.modality_name,
13
+ case
14
+ when pw.id > 0 then true
15
+ else false
16
+ end as on_worryboard,
17
+ TXRSD."name" tx_status,
18
+ case pr.type
19
+ when 'Renalware::PD::APDRegime' then 'APD'
20
+ when 'Renalware::PD::CAPDRegime' then 'CAPD'
21
+ end as pd_type,
22
+ (select
23
+ date(date_time)
24
+ from events e
25
+ inner join event_types et on et.id = e.event_type_id
26
+ where et.slug = 'pd_line_changes'
27
+ and e.patient_id = P.id
28
+ order by date_time desc limit 1) as last_line_change_date,
29
+ pesi.diagnosis_date as last_esi_date,
30
+ ppe.diagnosis_date as last_peritonitis_date,
31
+ (select bmi from clinic_visits cv2 where cv2.patient_id = P.id and bmi > 0 order by date desc limit 1) as bmi,
32
+ PA.values -> 'HGB' ->> 'result' as hgb,
33
+ (PA.values -> 'HGB' ->> 'observed_at')::date as hgb_date,
34
+ PA.values -> 'URE' ->> 'result' as ure,
35
+ (PA.values -> 'URE' ->> 'observed_at')::date as ure_date,
36
+ PA.values -> 'CRE' ->> 'result' as cre,
37
+ (PA.values -> 'CRE' ->> 'observed_at')::date as cre_date,
38
+ PA.values -> 'EGFR' ->> 'result' as egfr
39
+ from renalware.patients P
40
+ left outer join patient_worries pw on pw.patient_id = p.id
41
+ left outer join renalware.pathology_current_observation_sets PA on PA.patient_id = P.id
42
+ left outer join renalware.renal_profiles RPROF on RPROF.patient_id = P.id
43
+ left outer join renalware.transplant_registrations TXR on TXR.patient_id = P.id
44
+ left outer join renalware.transplant_registration_statuses TXRS on TXRS.registration_id = TXR.id AND TXRS.terminated_on IS NULL
45
+ left outer join renalware.transplant_registration_status_descriptions TXRSD on TXRSD.id = TXRS.description_id
46
+ left outer join renalware.pd_regimes pr on pr.patient_id = P.id and pr.start_date <= current_date and pr.end_date is null
47
+ left outer join renalware.pd_exit_site_infections pesi on pesi.patient_id = P.id
48
+ left outer join pd_peritonitis_episodes ppe on ppe.patient_id = P.id
49
+ inner join renalware.patient_current_modalities Mx on Mx.patient_id = P.id and Mx.modality_code = 'pd'
50
+ order by P.id, pr.start_date desc, pr.created_at desc, pesi.diagnosis_date desc, ppe.diagnosis_date desc;