renalware-core 2.0.77 → 2.0.78

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/renalware/hd/avf_avg_assessment.jpg +0 -0
  3. data/app/assets/javascripts/renalware/table.js +16 -0
  4. data/app/assets/stylesheets/renalware/base/_variables.scss +2 -1
  5. data/app/assets/stylesheets/renalware/lib/_foundation_and_overrides.scss +1 -1
  6. data/app/assets/stylesheets/renalware/modules/_admissions.scss +0 -5
  7. data/app/assets/stylesheets/renalware/modules/_clinical.scss +22 -6
  8. data/app/assets/stylesheets/renalware/modules/_hd.scss +0 -9
  9. data/app/assets/stylesheets/renalware/modules/_pathology.scss +49 -5
  10. data/app/assets/stylesheets/renalware/modules/_patients.scss +5 -2
  11. data/app/assets/stylesheets/renalware/modules/_system.scss +65 -0
  12. data/app/assets/stylesheets/renalware/partials/_button.scss +1 -1
  13. data/app/assets/stylesheets/renalware/partials/_forms.scss +7 -7
  14. data/app/assets/stylesheets/renalware/partials/_layout.scss +1 -1
  15. data/app/assets/stylesheets/renalware/partials/_lists.scss +11 -0
  16. data/app/assets/stylesheets/renalware/partials/_mdm.scss +0 -6
  17. data/app/assets/stylesheets/renalware/partials/_modal_window.scss +10 -2
  18. data/app/assets/stylesheets/renalware/partials/_navigation.scss +2 -2
  19. data/app/assets/stylesheets/renalware/partials/_print.scss +1 -1
  20. data/app/assets/stylesheets/renalware/partials/_tables.scss +40 -20
  21. data/app/assets/stylesheets/renalware/partials/_typography.scss +1 -0
  22. data/app/controllers/renalware/accesses/assessments_controller.rb +2 -2
  23. data/app/controllers/renalware/accesses/procedures_controller.rb +1 -1
  24. data/app/controllers/renalware/accesses/profiles_controller.rb +2 -2
  25. data/app/controllers/renalware/admin/users_controller.rb +1 -1
  26. data/app/controllers/renalware/admissions/consults_controller.rb +6 -3
  27. data/app/controllers/renalware/clinical/body_compositions_controller.rb +2 -2
  28. data/app/controllers/renalware/clinics/clinic_visits_controller.rb +2 -2
  29. data/app/controllers/renalware/deaths_controller.rb +1 -1
  30. data/app/controllers/renalware/drugs/drugs_controller.rb +1 -1
  31. data/app/controllers/renalware/hd/cannulation_types_controller.rb +3 -3
  32. data/app/controllers/renalware/hd/current_profile_controller.rb +1 -1
  33. data/app/controllers/renalware/hd/preference_sets_controller.rb +1 -1
  34. data/app/controllers/renalware/hospitals/wards_controller.rb +1 -1
  35. data/app/controllers/renalware/letters/letters_controller.rb +5 -5
  36. data/app/controllers/renalware/medications/prescriptions_controller.rb +1 -1
  37. data/app/controllers/renalware/messaging/internal/messages_controller.rb +6 -6
  38. data/app/controllers/renalware/modalities/descriptions_controller.rb +3 -3
  39. data/app/controllers/renalware/modalities/modalities_controller.rb +1 -1
  40. data/app/controllers/renalware/pathology/patient_rules_controller.rb +3 -3
  41. data/app/controllers/renalware/patients/primary_care_physicians_controller.rb +2 -2
  42. data/app/controllers/renalware/pd/bag_types_controller.rb +2 -2
  43. data/app/controllers/renalware/pd/exit_site_infections_controller.rb +2 -2
  44. data/app/controllers/renalware/pd/regimes_controller.rb +1 -1
  45. data/app/controllers/renalware/pd/training_sessions_controller.rb +2 -2
  46. data/app/controllers/renalware/renal/profiles_controller.rb +1 -1
  47. data/app/controllers/renalware/reporting/audits_controller.rb +1 -1
  48. data/app/controllers/renalware/system/downloads_controller.rb +96 -0
  49. data/app/controllers/renalware/transplants/donations_controller.rb +2 -2
  50. data/app/controllers/renalware/transplants/donor_operations_controller.rb +2 -2
  51. data/app/controllers/renalware/transplants/donor_workups_controller.rb +1 -1
  52. data/app/controllers/renalware/transplants/recipient_followups_controller.rb +13 -12
  53. data/app/controllers/renalware/transplants/recipient_operations_controller.rb +2 -2
  54. data/app/controllers/renalware/transplants/recipient_workups_controller.rb +1 -1
  55. data/app/controllers/renalware/transplants/registration_statuses_controller.rb +3 -3
  56. data/app/controllers/renalware/transplants/registrations_controller.rb +1 -1
  57. data/app/documents/renalware/dated_integer.rb +1 -1
  58. data/app/documents/renalware/hd/session_document.rb +11 -0
  59. data/app/documents/renalware/infection_status.rb +1 -1
  60. data/app/documents/renalware/transplants/donor_operation_document.rb +3 -3
  61. data/app/documents/renalware/transplants/registration_document.rb +2 -2
  62. data/app/drops/renalware/pd/patient_drop.rb +1 -1
  63. data/app/helpers/renalware/application_helper.rb +2 -2
  64. data/app/helpers/renalware/clinic_helper.rb +5 -5
  65. data/app/helpers/renalware/drugs_helper.rb +1 -1
  66. data/app/helpers/renalware/layout_helper.rb +1 -1
  67. data/app/helpers/renalware/pd_helper.rb +2 -2
  68. data/app/helpers/renalware/snippets_helper.rb +3 -3
  69. data/app/helpers/renalware/transplant_helper.rb +2 -2
  70. data/app/models/concerns/renalware/feeds/job.rb +2 -2
  71. data/app/models/concerns/renalware/hd/session_scopes.rb +4 -4
  72. data/app/models/renalware/admissions/consult.rb +2 -2
  73. data/app/models/renalware/admissions/request.rb +1 -1
  74. data/app/models/renalware/admissions/request_reason.rb +1 -1
  75. data/app/models/renalware/clinics/clinic_visit.rb +1 -1
  76. data/app/models/renalware/events/investigation.rb +2 -2
  77. data/app/models/renalware/feeds/file.rb +1 -1
  78. data/app/models/renalware/feeds/files/practice_memberships/import_job.rb +1 -1
  79. data/app/models/renalware/feeds/files/practices/csv_organisation.rb +1 -1
  80. data/app/models/renalware/feeds/files/practices/xml_parser.rb +1 -1
  81. data/app/models/renalware/feeds/files/primary_care_physicians/import_job.rb +1 -1
  82. data/app/models/renalware/hd/diary.rb +1 -1
  83. data/app/models/renalware/hd/diary_slot.rb +2 -2
  84. data/app/models/renalware/hd/schedule_definition.rb +1 -1
  85. data/app/models/renalware/hd/session/closed.rb +5 -0
  86. data/app/models/renalware/hd/sessions/auditable_session_collection.rb +3 -3
  87. data/app/models/renalware/hd/station.rb +2 -2
  88. data/app/models/renalware/hd/weekly_diary.rb +1 -1
  89. data/app/models/renalware/hospitals/ward.rb +1 -1
  90. data/app/models/renalware/letters/electronic_receipt.rb +1 -1
  91. data/app/models/renalware/letters/letterhead.rb +1 -1
  92. data/app/models/renalware/medications/prescription.rb +2 -2
  93. data/app/models/renalware/messaging/internal/message.rb +1 -1
  94. data/app/models/renalware/messaging/internal/receipt.rb +1 -1
  95. data/app/models/renalware/pathology/code_group.rb +52 -0
  96. data/app/models/renalware/pathology/code_group_membership.rb +19 -0
  97. data/app/models/renalware/pathology/current_observation_set.rb +1 -1
  98. data/app/models/renalware/pathology/observation_description.rb +8 -2
  99. data/app/models/renalware/pathology/request_description.rb +1 -1
  100. data/app/models/renalware/pathology/requests/drug.rb +1 -1
  101. data/app/models/renalware/pathology/requests/patient_rule.rb +1 -1
  102. data/app/models/renalware/pathology/requests/request.rb +2 -2
  103. data/app/models/renalware/patient.rb +1 -1
  104. data/app/models/renalware/patients/patient_hospital_identifiers.rb +2 -2
  105. data/app/models/renalware/pd/apd/glucose_calculator.rb +1 -1
  106. data/app/models/renalware/pd/bag_type.rb +1 -1
  107. data/app/models/renalware/pd/capd_regime.rb +1 -1
  108. data/app/models/renalware/pd/peritonitis_episode_type_description.rb +1 -1
  109. data/app/models/renalware/pd/regime.rb +3 -3
  110. data/app/models/renalware/pd/regime_termination.rb +4 -4
  111. data/app/models/renalware/problems/problem.rb +1 -1
  112. data/app/models/renalware/renal/aki_alert.rb +3 -3
  113. data/app/models/renalware/reporting/audit.rb +1 -1
  114. data/app/models/renalware/system/country.rb +1 -1
  115. data/app/models/renalware/system/download.rb +22 -0
  116. data/app/models/renalware/system/download_query.rb +23 -0
  117. data/app/models/renalware/system/message.rb +1 -1
  118. data/app/models/renalware/transplants/donor_stage.rb +2 -2
  119. data/app/models/renalware/transplants/recipient_followup.rb +1 -0
  120. data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +1 -1
  121. data/app/models/renalware/ukrdc/modality_code.rb +14 -0
  122. data/app/models/renalware/ukrdc/transmission_log.rb +2 -2
  123. data/app/models/renalware/user.rb +2 -2
  124. data/app/policies/renalware/system/download_policy.rb +21 -0
  125. data/app/presenters/renalware/hd/dashboard_presenter.rb +1 -1
  126. data/app/presenters/renalware/hd/diary_presenter.rb +1 -1
  127. data/app/presenters/renalware/hd/mdm_presenter.rb +2 -1
  128. data/app/presenters/renalware/hd/profile_presenter.rb +2 -2
  129. data/app/presenters/renalware/letters/part_class_filter.rb +1 -1
  130. data/app/presenters/renalware/pathology/observations_diff.rb +1 -1
  131. data/app/presenters/renalware/pathology/observations_for_codes_presenter.rb +2 -2
  132. data/app/presenters/renalware/system/users_presenter.rb +1 -1
  133. data/app/views/renalware/admissions/_summary_part.html.slim +4 -4
  134. data/app/views/renalware/api/ukrdc/patients/show.xml.builder +1 -1
  135. data/app/views/renalware/devise/sessions/new.html.slim +1 -1
  136. data/app/views/renalware/events/events/_summary_part.html.slim +2 -1
  137. data/app/views/renalware/hd/accesses/_summary.html.slim +1 -1
  138. data/app/views/renalware/hd/current_profile/_summary.html.slim +2 -2
  139. data/app/views/renalware/hd/mdm/_sessions.html.slim +4 -3
  140. data/app/views/renalware/hd/sessions/_form.html.slim +25 -8
  141. data/app/views/renalware/hd/sessions/_show.html.slim +5 -0
  142. data/app/views/renalware/layouts/_patient.html.slim +2 -0
  143. data/app/views/renalware/letters/_summary_part.html.slim +4 -3
  144. data/app/views/renalware/mdm/_biopsies.html.slim +4 -3
  145. data/app/views/renalware/mdm/_clinic_visits.html.slim +13 -11
  146. data/app/views/renalware/mdm/_events.html.slim +2 -1
  147. data/app/views/renalware/mdm/_letters.html.slim +6 -6
  148. data/app/views/renalware/mdm/_pathology.html.slim +4 -3
  149. data/app/views/renalware/mdm/_prescriptions.html.slim +2 -1
  150. data/app/views/renalware/mdm/_problems.html.slim +9 -7
  151. data/app/views/renalware/mdm/prescriptions/_table.html.slim +4 -2
  152. data/app/views/renalware/mdm/show.html.slim +1 -0
  153. data/app/views/renalware/navigation/_branding.html.slim +1 -1
  154. data/app/views/renalware/navigation/_help_items.html.slim +2 -1
  155. data/app/views/renalware/pathology/historical_observation_results/_table.html.slim +4 -1
  156. data/app/views/renalware/pathology/historical_observation_results/index.html.slim +1 -1
  157. data/app/views/renalware/pathology/recent_observation_results/_table.html.slim +4 -1
  158. data/app/views/renalware/system/downloads/_form.html.slim +11 -0
  159. data/app/views/renalware/system/downloads/edit.html.slim +2 -0
  160. data/app/views/renalware/system/downloads/index.html.slim +47 -0
  161. data/app/views/renalware/system/downloads/new.html.slim +2 -0
  162. data/app/views/renalware/transplants/mdm/_bottom.html.slim +0 -3
  163. data/app/views/renalware/transplants/recipient_followups/_form.html.slim +1 -0
  164. data/app/views/renalware/transplants/recipient_followups/show.html.slim +2 -1
  165. data/app/views/renalware/transplants/recipient_operations/_mdm_list.html.slim +7 -6
  166. data/app/views/renalware/virology/profiles/_summary.html.slim +1 -1
  167. data/config/locales/renalware/hd/session.en.yml +26 -0
  168. data/config/locales/renalware/transplants/recipient_followup.yml +1 -0
  169. data/config/permissions.yml +1 -0
  170. data/config/routes/fallbacks.rb +1 -1
  171. data/config/routes/hd.rb +6 -6
  172. data/config/routes/letters.rb +4 -4
  173. data/config/routes/system.rb +1 -0
  174. data/config/routes/transplants.rb +6 -6
  175. data/config/routes/virology.rb +2 -2
  176. data/db/migrate/20190511164137_create_ukrdc_modality_codes.rb +12 -0
  177. data/db/migrate/20190512155900_create_system_help_files.rb +14 -0
  178. data/db/migrate/20190513131826_add_view_count_to_system_help.rb +7 -0
  179. data/db/migrate/20190513135312_create_pathology_code_groups.rb +30 -0
  180. data/db/migrate/20190516093707_add_graft_nephectomy_on_to_tx_op_followup.rb +5 -0
  181. data/db/seeds/default/seeds.rb +1 -0
  182. data/db/seeds/default/ukrdc/modality_codes.csv +76 -0
  183. data/db/seeds/default/ukrdc/modality_codes.rb +17 -0
  184. data/db/seeds/default/ukrdc/seeds.rb +3 -0
  185. data/lib/core_extensions/active_support/duration.rb +1 -1
  186. data/lib/renalware/engine.rb +1 -0
  187. data/lib/renalware/version.rb +1 -1
  188. data/spec/factories/hd/hd_session_document.rb +5 -0
  189. data/spec/factories/letters/primary_care_physicians.rb +2 -2
  190. data/spec/factories/pathology/observation_descriptions.rb +1 -1
  191. data/spec/factories/pathology/requests/drug_category.rb +1 -1
  192. data/spec/factories/pathology/requests/global_rule_set.rb +1 -1
  193. data/spec/factories/pathology/requests/patient_rule.rb +1 -1
  194. data/spec/factories/system/downloads.rb +19 -0
  195. data/spec/factories/transplants/donor_stage.rb +1 -1
  196. data/spec/factories/transplants/registration_status_descriptions.rb +1 -1
  197. data/spec/factories/transplants/registrations.rb +1 -1
  198. data/spec/support/factory_bot.rb +2 -2
  199. metadata +40 -18
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/pathology"
4
+
5
+ module Renalware
6
+ module Pathology
7
+ # An ObservationDescription can be a member of many groups (a set of descriptions used for
8
+ # displaying or printing a subset of context-specific results). Within each group,
9
+ # say, 'letters', a description might be in a sub group (which merely serves to pull results
10
+ # together in groups on the page for clarity) and within that group might have a position wich
11
+ # determines its order in the subgroup.
12
+ class CodeGroupMembership < ApplicationRecord
13
+ validates :position_within_subgroup, presence: true
14
+ validates :subgroup, presence: true
15
+ belongs_to :code_group
16
+ belongs_to :observation_description
17
+ end
18
+ end
19
+ end
@@ -32,7 +32,7 @@ module Renalware
32
32
 
33
33
  def values_for_codes(codes)
34
34
  codes = Array(codes)
35
- values.select{ |code, _| codes.include?(code) }
35
+ values.select { |code, _| codes.include?(code) }
36
36
  end
37
37
 
38
38
  def self.null_values_hash
@@ -5,10 +5,16 @@ require_dependency "renalware/pathology"
5
5
  module Renalware
6
6
  module Pathology
7
7
  class ObservationDescription < ApplicationRecord
8
+ belongs_to :measurement_unit
8
9
  has_many :observations,
9
10
  class_name: "Pathology::Observation",
10
- inverse_of: :description
11
- belongs_to :measurement_unit
11
+ inverse_of: :description,
12
+ dependent: :restrict_with_exception
13
+ has_many :code_group_memberships,
14
+ foreign_key: :observation_description_id,
15
+ dependent: :destroy
16
+ has_many :code_groups,
17
+ through: :code_group_memberships
12
18
 
13
19
  scope :in_display_order, lambda {
14
20
  where("display_group is not null and display_order is not null")
@@ -9,7 +9,7 @@ module Renalware
9
9
  belongs_to :lab
10
10
  has_many :global_rule_sets, class_name: "::Renalware::Pathology::Requests::GlobalRuleSet"
11
11
  has_and_belongs_to_many :requests,
12
- class_name: "::Renalware::Pathology::Requests::Request"
12
+ class_name: "::Renalware::Pathology::Requests::Request"
13
13
 
14
14
  validates :lab, presence: true
15
15
 
@@ -7,7 +7,7 @@ module Renalware
7
7
  module Requests
8
8
  class Drug < ActiveType::Record[Renalware::Drugs::Drug]
9
9
  has_and_belongs_to_many :drug_categories,
10
- join_table: "pathology_requests_drugs_drug_categories"
10
+ join_table: "pathology_requests_drugs_drug_categories"
11
11
  end
12
12
  end
13
13
  end
@@ -13,7 +13,7 @@ module Renalware
13
13
  belongs_to :patient, class_name: "::Renalware::Pathology::Patient"
14
14
  belongs_to :lab, class_name: "::Renalware::Pathology::Lab"
15
15
  has_and_belongs_to_many :requests,
16
- class_name: "::Renalware::Pathology::Requests::Request"
16
+ class_name: "::Renalware::Pathology::Requests::Request"
17
17
 
18
18
  validates :lab, presence: true
19
19
  validates :test_description, presence: true
@@ -14,9 +14,9 @@ module Renalware
14
14
  belongs_to :clinic, class_name: "::Renalware::Clinics::Clinic"
15
15
  belongs_to :consultant, class_name: "::Renalware::Pathology::Consultant"
16
16
  has_and_belongs_to_many :request_descriptions,
17
- class_name: "::Renalware::Pathology::RequestDescription"
17
+ class_name: "::Renalware::Pathology::RequestDescription"
18
18
  has_and_belongs_to_many :patient_rules,
19
- class_name: "::Renalware::Pathology::Requests::PatientRule"
19
+ class_name: "::Renalware::Pathology::Requests::PatientRule"
20
20
 
21
21
  validates :patient, presence: true
22
22
  validates :clinic, presence: true
@@ -156,7 +156,7 @@ module Renalware
156
156
  # TODO: Use a constant for the max number of local patient ids
157
157
  def upcase_local_patient_ids
158
158
  self.local_patient_id = local_patient_id.upcase if local_patient_id.present?
159
- (2..5).each{ |index| upcase_local_patient_id(index) }
159
+ (2..5).each { |index| upcase_local_patient_id(index) }
160
160
  end
161
161
 
162
162
  def upcase_local_patient_id(index)
@@ -49,11 +49,11 @@ module Renalware
49
49
  # Renders all patients hospital numbers in the format e.g.
50
50
  # "KCH: X12344 QEH: 12123123 XXX: Xxxxx ..."
51
51
  def to_s
52
- all.map{ |name, hosp_no| "#{name}: #{hosp_no}" }.join(" ")
52
+ all.map { |name, hosp_no| "#{name}: #{hosp_no}" }.join(" ")
53
53
  end
54
54
 
55
55
  def to_s_multiline
56
- all.map{ |name, hosp_no| "#{name}: #{hosp_no}" }.join("<br>").html_safe
56
+ all.map { |name, hosp_no| "#{name}: #{hosp_no}" }.join("<br>").html_safe
57
57
  end
58
58
 
59
59
  # Returns true if the patient has a hospital number at the requested hospital.
@@ -63,7 +63,7 @@ module Renalware
63
63
  end
64
64
 
65
65
  def bags_having_glucose_strength(bags, strength)
66
- bags.select{ |bag| bag.bag_type.glucose_strength == strength.to_sym }
66
+ bags.select { |bag| bag.bag_type.glucose_strength == strength.to_sym }
67
67
  end
68
68
  end
69
69
  end
@@ -8,7 +8,7 @@ module Renalware
8
8
  acts_as_paranoid
9
9
  extend Enumerize
10
10
 
11
- scope :ordered, ->{ order(manufacturer: :asc, description: :asc) }
11
+ scope :ordered, -> { order(manufacturer: :asc, description: :asc) }
12
12
 
13
13
  enumerize :glucose_strength, in: { not_applicable: 0, low: 1, medium: 2, high: 3 }
14
14
 
@@ -60,7 +60,7 @@ module Renalware
60
60
  end
61
61
 
62
62
  def daily_average
63
- per_week_total = weekly_totals.inject(0.0){ |sum, volume| sum + volume }
63
+ per_week_total = weekly_totals.inject(0.0) { |sum, volume| sum + volume }
64
64
  per_week_total / 7.to_f
65
65
  end
66
66
  end
@@ -6,7 +6,7 @@ module Renalware
6
6
  module PD
7
7
  class PeritonitisEpisodeTypeDescription < ApplicationRecord
8
8
  has_many :peritonitis_episode_types,
9
- class_name: "PD::PeritonitisEpisodeType"
9
+ class_name: "PD::PeritonitisEpisodeType"
10
10
  end
11
11
  end
12
12
  end
@@ -15,9 +15,9 @@ module Renalware
15
15
  has_many :bags, class_name: "Renalware::PD::RegimeBag"
16
16
  has_many :bag_types, through: :bags
17
17
  has_one :termination,
18
- class_name: "RegimeTermination",
19
- dependent: :delete,
20
- inverse_of: :regime
18
+ class_name: "RegimeTermination",
19
+ dependent: :delete,
20
+ inverse_of: :regime
21
21
 
22
22
  accepts_nested_attributes_for :bags, allow_destroy: true
23
23
 
@@ -10,10 +10,10 @@ module Renalware
10
10
  belongs_to :regime, touch: true
11
11
 
12
12
  validates :terminated_on,
13
- timeliness: {
14
- type: :date,
15
- on_or_after: ->(termination) { termination.regime.start_date }
16
- }
13
+ timeliness: {
14
+ type: :date,
15
+ on_or_after: ->(termination) { termination.regime.start_date }
16
+ }
17
17
  end
18
18
  end
19
19
  end
@@ -16,7 +16,7 @@ module Renalware
16
16
 
17
17
  scope :ordered, -> { order(position: :asc) }
18
18
  scope :with_notes, -> { includes(:notes) }
19
- scope :with_patient, ->{ includes(:patient) }
19
+ scope :with_patient, -> { includes(:patient) }
20
20
 
21
21
  validates :patient, presence: true
22
22
  validates :description, presence: true
@@ -7,7 +7,7 @@ module Renalware
7
7
  class AKIAlert < ApplicationRecord
8
8
  include Accountable
9
9
  include PatientsRansackHelper
10
- scope :ordered, ->{ order(created_at: :desc) }
10
+ scope :ordered, -> { order(created_at: :desc) }
11
11
  belongs_to :patient, class_name: "Renal::Patient", touch: true
12
12
  belongs_to :action, class_name: "Renal::AKIAlertAction"
13
13
  belongs_to :hospital_ward, class_name: "Hospitals::Ward"
@@ -15,8 +15,8 @@ module Renalware
15
15
  validates :max_aki, inclusion: 1..3, allow_nil: true
16
16
  alias_attribute :decided_by, :updated_by
17
17
 
18
- scope :today, ->{ where(created_at: Time.zone.today.all_day) }
19
- scope :hotlist, ->{ where(hotlist: true) }
18
+ scope :today, -> { where(created_at: Time.zone.today.all_day) }
19
+ scope :hotlist, -> { where(hotlist: true) }
20
20
 
21
21
  has_paper_trail class_name: "Renalware::Renal::Version", on: [:create, :update, :destroy]
22
22
 
@@ -8,7 +8,7 @@ module Renalware
8
8
  validates :name, presence: true
9
9
  validates :view_name, presence: true
10
10
 
11
- scope :enabled, ->{ where(enabled: true) }
11
+ scope :enabled, -> { where(enabled: true) }
12
12
 
13
13
  def self.available_audit_materialized_views
14
14
  result = connection.execute("SELECT oid::regclass::text FROM pg_class
@@ -9,7 +9,7 @@ module Renalware
9
9
  validates :alpha2, presence: true, uniqueness: true
10
10
  validates :alpha3, presence: true, uniqueness: true
11
11
 
12
- default_scope ->{ order(position: :asc) }
12
+ default_scope -> { order(position: :asc) }
13
13
 
14
14
  def to_s
15
15
  name
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/system"
4
+
5
+ module Renalware
6
+ module System
7
+ class Download < ApplicationRecord
8
+ include Accountable
9
+ acts_as_paranoid
10
+ validates :name, presence: true, uniqueness: true
11
+ has_one_attached :file
12
+ validates :file, presence: true
13
+ validate :validate_presence_of_file_attachment
14
+
15
+ private
16
+
17
+ def validate_presence_of_file_attachment
18
+ errors[:file] << "Please specify a file to upload" unless file.attached?
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/system"
4
+
5
+ module Renalware
6
+ module System
7
+ class DownloadQuery
8
+ attr_reader :query_params
9
+
10
+ def initialize(query_params)
11
+ @query_params = query_params || {}
12
+ end
13
+
14
+ def call
15
+ search.result.includes(:updated_by)
16
+ end
17
+
18
+ def search
19
+ @search ||= Download.order(view_count: :desc, name: :asc).ransack(query_params)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -12,7 +12,7 @@ module Renalware
12
12
  timeliness: { type: :datetime, allow_blank: true, after: :display_from }
13
13
  enumerize :severity, in: %i(default warning info success)
14
14
 
15
- scope :active, lambda{
15
+ scope :active, lambda {
16
16
  where(
17
17
  "display_from <= ? and (display_until is null or display_until >= ?)",
18
18
  Time.zone.now,
@@ -16,8 +16,8 @@ module Renalware
16
16
  validates :stage_status, presence: true
17
17
  validates :started_on, presence: true
18
18
 
19
- scope :current, ->{ where(terminated_on: nil) }
20
- scope :ordered, ->{ order(terminated_on: :desc, started_on: :desc) }
19
+ scope :current, -> { where(terminated_on: nil) }
20
+ scope :ordered, -> { order(terminated_on: :desc, started_on: :desc) }
21
21
  end
22
22
  end
23
23
  end
@@ -22,6 +22,7 @@ module Renalware
22
22
  has_document class_name: "Renalware::Transplants::RecipientFollowupDocument"
23
23
 
24
24
  validates :stent_removed_on, timeliness: { type: :date, allow_blank: true }
25
+ validates :graft_nephrectomy_on, timeliness: { type: :date, allow_blank: true }
25
26
  validates :transplant_failed_on, timeliness: { type: :date, allow_blank: true }
26
27
  validates :transplant_failed_on,
27
28
  presence: true,
@@ -107,7 +107,7 @@ module Renalware
107
107
  logger.info("Files saved to #{summary.archive_folder}")
108
108
  logger.info "*** Summary ***"
109
109
  logger.info "Took #{summary.milliseconds_taken.to_i / 1000} seconds"
110
- summary.results.map{ |key, value| logger.info("#{key}: #{value}") }
110
+ summary.results.map { |key, value| logger.info("#{key}: #{value}") }
111
111
  end
112
112
  # rubocop:enable Metrics/AbcSize
113
113
 
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/ukrdc"
4
+
5
+ module Renalware
6
+ module UKRDC
7
+ # Represents a Renal Reg modality QBL or Text code and description
8
+ # e.g. (1) Haemodialysis
9
+ # TXT refers to Renal Reg Patient timeline information
10
+ # QBL refers to Renal Reg Patient monthy treatment history
11
+ class ModalityCode < ApplicationRecord
12
+ end
13
+ end
14
+ end
@@ -9,7 +9,7 @@ module Renalware
9
9
  validates :status, presence: true
10
10
  belongs_to :patient, class_name: "Renalware::Patient"
11
11
  enum status: [:undefined, :error, :unsent_no_change_since_last_send, :sent]
12
- scope :ordered, ->{ order(sent_at: :asc) }
12
+ scope :ordered, -> { order(sent_at: :asc) }
13
13
 
14
14
  def self.with_logging(patient, request_uuid)
15
15
  log = new(patient: patient, sent_at: Time.zone.now, request_uuid: request_uuid)
@@ -25,7 +25,7 @@ module Renalware
25
25
  def self.formatted_exception(error)
26
26
  [
27
27
  "#{error.backtrace.first}: #{error.message} (#{error.class})",
28
- error.backtrace.drop(1).map{ |line| "\t#{line}" }
28
+ error.backtrace.drop(1).map { |line| "\t#{line}" }
29
29
  ].join("\n")
30
30
  end
31
31
  end
@@ -16,11 +16,11 @@ module Renalware
16
16
  validate :approval_with_roles, on: :update
17
17
  validates :professional_position, presence: {
18
18
  on: :update,
19
- if: ->(user){ user.with_extended_validation }
19
+ if: ->(user) { user.with_extended_validation }
20
20
  }
21
21
  validates :signature, presence: {
22
22
  on: :update,
23
- if: ->(user){ user.with_extended_validation }
23
+ if: ->(user) { user.with_extended_validation }
24
24
  }
25
25
 
26
26
  scope :unapproved, -> { where(approved: [nil, false]) }
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/snippets"
4
+
5
+ module Renalware
6
+ module System
7
+ class DownloadPolicy < BasePolicy
8
+ def new?
9
+ user_is_super_admin?
10
+ end
11
+
12
+ def create?
13
+ user_is_super_admin?
14
+ end
15
+
16
+ def destroy?
17
+ user_is_super_admin?
18
+ end
19
+ end
20
+ end
21
+ end
@@ -30,7 +30,7 @@ module Renalware
30
30
  .deleted
31
31
  .ordered
32
32
  .limit(3)
33
- .for_patient(patient).map{ |prof| ProfilePresenter.new(prof) }
33
+ .for_patient(patient).map { |prof| ProfilePresenter.new(prof) }
34
34
  end
35
35
  end
36
36
 
@@ -38,7 +38,7 @@ module Renalware
38
38
  end
39
39
 
40
40
  def each_station
41
- stations.each_with_index{ |station, index| yield(station, index + 1) if block_given? }
41
+ stations.each_with_index { |station, index| yield(station, index + 1) if block_given? }
42
42
  end
43
43
 
44
44
  def each_day(diurnal_period, station)
@@ -16,7 +16,8 @@ module Renalware
16
16
  @sessions ||= begin
17
17
  sessions = Sessions::LatestPatientSessionsQuery
18
18
  .new(patient: patient)
19
- .call(max_sessions: 6).includes(:patient, :hospital_unit)
19
+ .call(max_sessions: 6)
20
+ .includes(:patient, :hospital_unit, :signed_on_by, :signed_off_by)
20
21
  CollectionPresenter.new(sessions, SessionPresenter, view_context)
21
22
  end
22
23
  end
@@ -26,7 +26,7 @@ module Renalware
26
26
  delegate :type,
27
27
  :loading_dose,
28
28
  :hourly_dose,
29
- to: :anticoagulant, allow_nil: true, prefix: true
29
+ to: :anticoagulant, allow_nil: true, prefix: true
30
30
 
31
31
  delegate :unit_code,
32
32
  to: :hospital_unit, prefix: true, allow_nil: true
@@ -72,7 +72,7 @@ module Renalware
72
72
  ScheduleDefinition
73
73
  .includes(:diurnal_period)
74
74
  .ordered
75
- .map{ |definition| [definition.to_s, definition.id] }
75
+ .map { |definition| [definition.to_s, definition.id] }
76
76
  end
77
77
 
78
78
  def last_update