renalware-core 2.0.155 → 2.0.160

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 (199) 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/stylesheets/renalware/modules/_clinical.scss +13 -0
  8. data/app/components/renalware/admissions/active_consult_alert_component.html.slim +1 -1
  9. data/app/components/renalware/article_component.rb +1 -1
  10. data/app/components/renalware/letters/letters_in_progress_component.rb +1 -5
  11. data/app/components/renalware/letters/unread_electronic_ccs_component.rb +1 -4
  12. data/app/components/renalware/patients/bookmarks_component.rb +1 -5
  13. data/app/components/renalware/patients/messages_component.rb +2 -8
  14. data/app/components/renalware/pd/adequacy_results_component.rb +1 -1
  15. data/app/components/renalware/pd/pet_results_component.html.slim +1 -3
  16. data/app/components/renalware/surveys/eq5d_component.rb +1 -5
  17. data/app/components/renalware/surveys/pos_s_component.rb +1 -5
  18. data/app/components/renalware/system/admin_menu_component.rb +1 -4
  19. data/app/components/renalware/system/users_awaiting_approval_component.rb +1 -5
  20. data/app/controllers/renalware/api/token_authenticated_api_controller.rb +1 -1
  21. data/app/controllers/renalware/api/v1/medications/prescriptions_controller.rb +1 -1
  22. data/app/controllers/renalware/api/v1/patients/patients_controller.rb +1 -1
  23. data/app/controllers/renalware/events/events_controller.rb +0 -1
  24. data/app/controllers/renalware/pd/pet_results_controller.rb +1 -1
  25. data/{lib → app/documents}/document/attribute_initializer.rb +0 -0
  26. data/{lib → app/documents}/document/attribute_initializer/active_model.rb +0 -0
  27. data/{lib → app/documents}/document/attribute_initializer/base.rb +0 -0
  28. data/{lib → app/documents}/document/attribute_initializer/enum.rb +0 -0
  29. data/{lib → app/documents}/document/base.rb +0 -0
  30. data/{lib → app/documents}/document/embedded.rb +0 -0
  31. data/{lib → app/documents}/document/enum.rb +0 -0
  32. data/app/jobs/renalware/hd/generate_monthly_statistics.rb +1 -1
  33. data/app/jobs/renalware/hd/generate_monthly_statistics_for_patient_job.rb +1 -1
  34. data/app/jobs/renalware/letters/calculate_page_count_job.rb +0 -1
  35. data/app/jobs/renalware/letters/mailshots/create_mailshot_letters_job.rb +0 -1
  36. data/app/jobs/renalware/letters/printing/batch_print_job.rb +0 -1
  37. data/app/jobs/renalware/letters/save_rtf_letter_to_file_job.rb +1 -1
  38. data/app/mailers/renalware/letters/{delivery/errors.rb → delivery.rb} +2 -1
  39. data/app/mailers/renalware/letters/delivery/practice_mailer.rb +2 -2
  40. data/app/models/concerns/renalware/deviseable.rb +3 -3
  41. data/app/models/renalware/admissions/admission_query.rb +0 -1
  42. data/{lib → app/models}/renalware/automatic_age_calculator.rb +0 -0
  43. data/app/models/renalware/clinical/create_allergy.rb +4 -4
  44. data/app/models/renalware/clinics/create_clinic_visit.rb +4 -4
  45. data/app/models/renalware/clinics/current_observations.rb +3 -4
  46. data/app/models/renalware/events/create_event.rb +0 -1
  47. data/app/models/renalware/feeds/files/exceptions.rb +1 -0
  48. data/app/models/renalware/feeds/files/practice_memberships/import_csv.rb +0 -1
  49. data/app/models/renalware/feeds/files/primary_care_physicians/import_csv.rb +0 -1
  50. data/app/models/renalware/feeds/message_processor.rb +0 -1
  51. data/app/models/renalware/hd/prescription_administration.rb +6 -4
  52. data/app/models/renalware/hd/profiles_in_date_range_query.rb +1 -6
  53. data/app/models/renalware/hd/scheduling/diary_range.rb +1 -2
  54. data/app/models/renalware/hd/scheduling/find_or_create_diary_by_week_query.rb +1 -1
  55. data/app/models/renalware/hd/session_forms/batch.rb +0 -1
  56. data/app/models/renalware/hd/session_forms/batch_compile_pdfs.rb +0 -1
  57. data/app/models/renalware/hd/session_forms/batch_item.rb +0 -1
  58. data/app/models/renalware/hd/sessions/close_stale_open_sessions.rb +0 -1
  59. data/app/models/renalware/letters/approve_letter.rb +0 -1
  60. data/app/models/renalware/letters/complete_letter.rb +0 -1
  61. data/app/models/renalware/letters/delivery/delivery_policy.rb +0 -1
  62. data/app/models/renalware/letters/delivery/email_letter_to_practice.rb +0 -1
  63. data/app/models/renalware/letters/delivery/practice_email.rb +0 -1
  64. data/app/models/renalware/letters/html_renderer.rb +1 -1
  65. data/app/models/renalware/letters/letter_factory.rb +1 -1
  66. data/app/models/renalware/letters/part/recent_pathology_results.rb +0 -1
  67. data/app/models/renalware/letters/pathology_layout.rb +1 -1
  68. data/app/models/renalware/letters/pdf_renderer.rb +1 -1
  69. data/app/models/renalware/letters/printing/batch_compile_pdfs.rb +0 -1
  70. data/app/models/renalware/letters/printing/complete_batch.rb +0 -1
  71. data/app/models/renalware/letters/printing/pdf_combining.rb +0 -2
  72. data/app/models/renalware/letters/resolve_default_electronic_ccs.rb +0 -2
  73. data/app/models/renalware/letters/rtf_renderer.rb +3 -2
  74. data/app/models/renalware/modalities/change_patient_modality.rb +4 -4
  75. data/app/models/renalware/pathology.rb +1 -0
  76. data/app/models/renalware/pathology/adjust_observation.rb +0 -1
  77. data/app/models/renalware/pathology/message_listener.rb +1 -1
  78. data/app/models/renalware/pathology/observation.rb +1 -1
  79. data/app/models/renalware/pathology/observation_descriptions_by_code_query.rb +1 -1
  80. data/app/models/renalware/pathology/observations_grouped_by_date_query.rb +0 -1
  81. data/app/models/renalware/pathology/observations_grouped_by_date_table.rb +0 -1
  82. data/app/models/renalware/pathology/ordered_patient_query.rb +1 -1
  83. data/app/models/renalware/pathology/requests/request_params_factory.rb +0 -1
  84. data/app/models/renalware/patients/calculate_age.rb +0 -1
  85. data/app/models/renalware/patients/clear_patient_ukrdc_data.rb +0 -1
  86. data/app/models/renalware/patients/ingestion/update_master_patient_index.rb +0 -1
  87. data/app/models/renalware/patients/last_successful_practice_sync_date_query.rb +0 -2
  88. data/app/models/renalware/patients/primary_care_physician.rb +1 -0
  89. data/app/models/renalware/patients/sync_ods_job.rb +1 -1
  90. data/app/models/renalware/patients/sync_practices_via_api.rb +1 -1
  91. data/app/models/renalware/pd.rb +5 -0
  92. data/app/models/renalware/pd/{apd/exceptions.rb → apd.rb.dead} +0 -0
  93. data/app/models/renalware/pd/apd/available_overnight_volume.rb +0 -1
  94. data/app/models/renalware/pd/apd/regime_calculations.rb +1 -1
  95. data/app/models/renalware/pd/create_regime.rb +4 -4
  96. data/app/models/renalware/pd/regimes_in_date_range_query.rb +0 -2
  97. data/app/models/renalware/pd/revise_regime.rb +5 -5
  98. data/{lib → app/models}/renalware/remembered_preferences.rb +0 -0
  99. data/app/models/renalware/research/study_participants_query.rb +0 -1
  100. data/app/models/renalware/transplants/create_donor_stage.rb +4 -4
  101. data/app/models/renalware/transplants/registrations/wait_list_query.rb +1 -1
  102. data/app/models/renalware/ukrdc.rb +1 -0
  103. data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +2 -2
  104. data/app/models/renalware/ukrdc/create_patient_xml_file.rb +1 -2
  105. data/app/models/renalware/ukrdc/export_summary.rb +0 -1
  106. data/app/models/renalware/ukrdc/housekeeping/remove_old_export_archive_folders.rb +0 -1
  107. data/app/models/renalware/ukrdc/incoming/file_list.rb +0 -2
  108. data/app/models/renalware/ukrdc/incoming/import_survey.rb +0 -1
  109. data/app/models/renalware/ukrdc/incoming/import_surveys.rb +0 -1
  110. data/app/models/renalware/ukrdc/incoming/xml_document.rb +0 -1
  111. data/app/models/renalware/ukrdc/pathology_observation_requests_query.rb +1 -2
  112. data/app/models/renalware/ukrdc/treatment_timeline/generate_timeline.rb +0 -1
  113. data/app/models/renalware/ukrdc/treatment_timeline/generate_treatments.rb +1 -1
  114. data/app/models/renalware/ukrdc/treatment_timeline/generator_factory.rb +1 -1
  115. data/app/models/renalware/ukrdc/treatment_timeline/hd/generator.rb +1 -1
  116. data/app/models/renalware/ukrdc/treatment_timeline/pd/generator.rb +0 -1
  117. data/app/models/renalware/ukrdc/treatment_timeline/pd/regime_decorator.rb +0 -1
  118. data/app/models/renalware/ukrdc/treatment_timeline/transfer_out/generator.rb +0 -1
  119. data/app/models/renalware/ukrdc/treatment_timeline/transplant/generator.rb +0 -1
  120. data/app/models/renalware/ukrdc/xml_renderer.rb +2 -2
  121. data/app/models/renalware/virology/vaccination.rb +5 -0
  122. data/app/presenters/renalware/accesses/dashboard_presenter.rb +0 -1
  123. data/app/presenters/renalware/clinical/header_presenter.rb +0 -1
  124. data/app/presenters/renalware/letters/letter_presenter.rb +1 -1
  125. data/app/presenters/renalware/letters/part_class_filter.rb +0 -1
  126. data/app/presenters/renalware/letters/practice_email_meta_data.rb +0 -1
  127. data/app/presenters/renalware/low_clearance/dashboard_presenter.rb +0 -1
  128. data/app/presenters/renalware/medications/prescription_presenter.rb +7 -0
  129. data/app/presenters/renalware/pathology/observations_diff.rb +0 -1
  130. data/app/presenters/renalware/renal/clinical_summary_presenter.rb +0 -1
  131. data/app/presenters/renalware/summary_part.rb +0 -2
  132. data/app/presenters/renalware/transplants/donor_dashboard_presenter.rb +0 -1
  133. data/app/presenters/renalware/transplants/recipient_dashboard_presenter.rb +0 -1
  134. data/app/presenters/renalware/ukrdc/transplant_operation_presenter.rb +0 -1
  135. data/app/presenters/renalware/user_session_presenter.rb +1 -3
  136. data/app/values/renalware/bmi.rb +0 -2
  137. data/app/views/renalware/letters/contacts/_new_person.html.slim +1 -1
  138. data/app/views/renalware/letters/contacts/_person_from_directory.html.slim +1 -1
  139. data/app/views/renalware/letters/formatted_letters/_letter.html.slim +13 -14
  140. data/app/views/renalware/letters/mailshots/mailshots/_form.html.slim +25 -21
  141. data/app/views/renalware/letters/parts/_allergies.html.slim +1 -1
  142. data/app/views/renalware/letters/parts/_problems.html.slim +1 -1
  143. data/app/views/renalware/letters/parts/_recent_pathology_results.html.slim +1 -1
  144. data/app/views/renalware/medications/prescriptions/_current.html.slim +1 -1
  145. data/app/views/renalware/medications/prescriptions/_current_hd.html.slim +1 -1
  146. data/app/views/renalware/medications/prescriptions/_prescription.html.slim +3 -1
  147. data/app/views/renalware/medications/prescriptions/_recently_stopped.html.slim +1 -1
  148. data/app/views/renalware/system/view_metadata/_columns_table.html.slim +2 -2
  149. data/app/views/renalware/virology/vaccinations/_cell.html.slim +1 -1
  150. data/app/views/renalware/virology/vaccinations/_inputs.html.slim +1 -0
  151. data/app/views/renalware/virology/vaccinations/_toggled_cell.html.slim +2 -0
  152. data/config/initializers/core_extensions.rb +1 -1
  153. data/config/initializers/inflections.rb +2 -0
  154. data/config/locales/renalware/virology/virology.en.yml +4 -0
  155. data/db/migrate/20201020155510_add_bmi_to_clinic_visits.rb +5 -2
  156. data/db/migrate/20201020171139_update_low_clearance_mdm_patients_view.rb +1 -1
  157. data/db/migrate/20201021153832_update_supportive_care_mdm_patients_view.rb +1 -1
  158. data/db/migrate/20201021154809_update_transplant_mdm_patients_view.rb +1 -1
  159. data/db/migrate/20201023092859_remove_unused_indexes.rb +1 -1
  160. data/db/migrate/20201105153422_update_medication_current_prescriptions_view.rb +7 -0
  161. data/db/migrate/20201112152752_update_pd_mdm_patients_view1.rb +7 -0
  162. data/db/views/medication_current_prescriptions_v01.sql +2 -1
  163. data/db/views/medication_current_prescriptions_v02.sql +30 -0
  164. data/db/views/pd_mdm_patients_v03.sql +50 -0
  165. data/db/views/reporting_anaemia_audit_v01.sql +0 -2
  166. data/lib/core_extensions/active_support/{duration.rb → duration_additions.rb} +0 -0
  167. data/lib/failure.rb +6 -0
  168. data/lib/gpg_encrypt_folder.rb +0 -2
  169. data/lib/month_period.rb +16 -0
  170. data/lib/renalware/configuration.rb +5 -6
  171. data/lib/renalware/version_number.rb +1 -1
  172. data/lib/service_result.rb +17 -0
  173. data/lib/sql/indexed_case_stmt.rb +1 -3
  174. data/lib/success.rb +9 -0
  175. data/lib/tasks/ukrdc.rake +1 -1
  176. data/lib/week_period.rb +57 -0
  177. data/spec/factories/events/events.rb +1 -2
  178. data/spec/factories/letters/letters.rb +4 -11
  179. data/spec/factories/medications/prescription_version.rb +1 -2
  180. data/spec/factories/patients/ethnicities.rb +1 -2
  181. data/spec/factories/pd/bag_types.rb +2 -2
  182. data/spec/factories/snippets/users.rb +1 -2
  183. data/spec/factories/transplants/recipient_followups.rb +1 -2
  184. data/spec/factories/virology/vaccinations.rb +1 -1
  185. data/{lib/test_support → spec/support}/ajax_helpers.rb +0 -0
  186. data/{lib/test_support → spec/support}/text_editor_helpers.rb +0 -0
  187. metadata +35 -37
  188. data/app/assets/javascripts/renalware/components/reporting.js.erb +0 -0
  189. data/app/assets/javascripts/renalware/components/session_timeout_redirect.js.erb +0 -37
  190. data/app/components/renalware/system/article_component.html.slim +0 -3
  191. data/app/components/renalware/system/article_component.rb +0 -9
  192. data/app/mailers/renalware/previews/report_preview.rb +0 -14
  193. data/app/mailers/renalware/previews/ukrdc_summary_preview.rb +0 -20
  194. data/app/mailers/renalware/previews/user_mailer_preview.rb +0 -16
  195. data/lib/renalware/failure.rb +0 -6
  196. data/lib/renalware/month_period.rb +0 -18
  197. data/lib/renalware/service_result.rb +0 -19
  198. data/lib/renalware/success.rb +0 -9
  199. data/lib/renalware/week_period.rb +0 -59
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/transplants"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Transplants
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/transplants"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module Transplants
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_dependency "renalware/transplants"
4
- require "attr_extras"
5
4
 
6
5
  module Renalware
7
6
  module UKRDC
@@ -21,8 +21,6 @@ module Renalware
21
21
  # data-session-timeout="3600">
22
22
  # rubocop:disable Metrics/MethodLength
23
23
  def self.session_controller_data_attributes
24
- return {} if Renalware.config.session_expiry_use_previous_mechansim
25
-
26
24
  urls = Renalware::Engine.routes.url_helpers
27
25
  {
28
26
  data: {
@@ -39,6 +37,6 @@ module Renalware
39
37
  }
40
38
  }
41
39
  end
40
+ # rubocop:enable Metrics/MethodLength
42
41
  end
43
- # rubocop:enable Metrics/MethodLength
44
42
  end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "attr_extras"
4
-
5
3
  module Renalware
6
4
  # Value object representing Body Mass Index. Accepts only meters and kg
7
5
  #
@@ -10,7 +10,7 @@
10
10
  class: "button secondary",
11
11
  data: { behaviour: "toggle-section" }
12
12
  .right
13
- = f.submit t(".save"), class: "button"
13
+ = f.submit t(".save"), class: "button", data: { disable_with: false }
14
14
  ' or
15
15
  = link_to t(".cancel"),
16
16
  "#",
@@ -16,7 +16,7 @@
16
16
  .row
17
17
  .large-12.columns
18
18
  br
19
- = f.submit t(".save"), class: "button"
19
+ = f.submit t(".save"), class: "button", data: { disable_with: false }
20
20
  ' or
21
21
  = link_to t(".cancel"),
22
22
  "#",
@@ -4,6 +4,10 @@ scss:
4
4
  font-family: Helvetica, Arial;
5
5
  }
6
6
 
7
+ .subtitle {
8
+ font-size: .9rem;
9
+ }
10
+
7
11
  .addressee {
8
12
  width: 50%;
9
13
  float: left;
@@ -153,12 +157,11 @@ scss:
153
157
  }
154
158
 
155
159
  .allergies {
156
- margin-bottom: 1rem;
157
160
  float: left;
158
161
  clear: left;
159
162
  width: 50%;
160
163
 
161
- h3 {
164
+ h3, b {
162
165
  padding-right: 1rem;
163
166
  }
164
167
 
@@ -221,10 +224,9 @@ scss:
221
224
  }
222
225
 
223
226
  .message {
224
- margin-top: 30px;
225
- margin-bottom: 20px;
227
+ margin-top: 20px;
228
+ margin-bottom: 0px;
226
229
  clear: both;
227
-
228
230
  p {
229
231
  margin-bottom: 15px;
230
232
  }
@@ -235,9 +237,6 @@ scss:
235
237
  }
236
238
 
237
239
  .author-signature {
238
- .author-name {
239
- font-weight: bold;
240
- }
241
240
  margin-bottom: 20px;
242
241
  }
243
242
  }
@@ -320,10 +319,10 @@ scss:
320
319
  p= render "patient_summary", patient: letter.patient
321
320
 
322
321
  = render letter.parts, patient: letter.patient, letter: letter
323
-
324
- .message
325
- = letter.body&.html_safe
326
-
322
+ / empty small here is for RTF spacing
323
+ small  
324
+ .message= letter.body&.html_safe
325
+ br
327
326
  p Yours sincerely
328
327
 
329
328
  .signature.nobreak
@@ -332,7 +331,7 @@ scss:
332
331
 
333
332
  .author-signature
334
333
  p
335
- span.author-name= letter.author.signature
334
+ b= letter.author.signature
336
335
  br
337
336
  = letter.author.professional_position
338
337
 
@@ -340,7 +339,7 @@ scss:
340
339
 
341
340
  .footer
342
341
  .ccs
343
- h3 cc:
342
+ b cc:
344
343
 
345
344
  ul.electronic
346
345
  - letter.electronic_cc_recipients.each do |user|
@@ -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"
@@ -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|
@@ -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
@@ -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="")
@@ -1,2 +1,2 @@
1
1
  / See Vaccination.to_partial_path etc
2
- = event.document.type.text
2
+ = event.document.to_s
@@ -2,3 +2,4 @@
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
4
  = fd.input :type, wrapper: :horizontal_medium
5
+ = fd.input :drug, wrapper: :horizontal_medium, collection: Renalware::Drugs::Drug.for(:vaccine).pluck(:name, :name)
@@ -4,5 +4,7 @@
4
4
  dl.dl-horizontal
5
5
  dt= attr_name(document, :type, suffix: ":")
6
6
  dd= document.type&.text || 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
@@ -5,7 +5,7 @@ class AddBMIToClinicVisits < ActiveRecord::Migration[5.2]
5
5
  :clinic_visits,
6
6
  :bmi,
7
7
  :decimal,
8
- precision: 4,
8
+ precision: 10,
9
9
  scale: 1,
10
10
  null: true,
11
11
  comment: "Body Mass Index calculated using a before_save when the clinic visit is updated"
@@ -13,10 +13,13 @@ class AddBMIToClinicVisits < ActiveRecord::Migration[5.2]
13
13
 
14
14
  reversible do |direction|
15
15
  direction.up do
16
+ # Update the bmi for existing clinic visits, but restrict to avoid generating a
17
+ # non-sense value in case height or weight were entered incorrectly.
18
+ # NB: height is in metres and weight in kg
16
19
  connection.execute(
17
20
  "update renalware.clinic_visits "\
18
21
  "set bmi = round(((weight / height)::decimal / height::decimal), 1) "\
19
- "where height > 0 and weight > 0;"
22
+ "where height > 0 and height < 3 and weight > 0 and weight < 500;"
20
23
  )
21
24
  end
22
25
  direction.down do
@@ -1,4 +1,4 @@
1
- class UpdateLowClearanceMDMPatientsView < ActiveRecord::Migration[6.0]
1
+ class UpdateLowClearanceMDMPatientsView < ActiveRecord::Migration[5.2]
2
2
  def change
3
3
  within_renalware_schema do
4
4
  update_view :low_clearance_mdm_patients, version: 2, revert_to_version: 1
@@ -1,4 +1,4 @@
1
- class UpdateSupportiveCareMDMPatientsView < ActiveRecord::Migration[6.0]
1
+ class UpdateSupportiveCareMDMPatientsView < ActiveRecord::Migration[5.2]
2
2
  def change
3
3
  within_renalware_schema do
4
4
  update_view :supportive_care_mdm_patients, version: 2, revert_to_version: 1
@@ -1,4 +1,4 @@
1
- class UpdateTransplantMDMPatientsView < ActiveRecord::Migration[6.0]
1
+ class UpdateTransplantMDMPatientsView < ActiveRecord::Migration[5.2]
2
2
  def change
3
3
  within_renalware_schema do
4
4
  update_view :transplant_mdm_patients, version: 2, revert_to_version: 1
@@ -1,4 +1,4 @@
1
- class RemoveUnusedIndexes < ActiveRecord::Migration[6.0]
1
+ class RemoveUnusedIndexes < ActiveRecord::Migration[5.2]
2
2
  def change
3
3
  within_renalware_schema do
4
4
  # Covered by index_admission_requests_on_patient_id_and_deleted_at
@@ -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
@@ -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;