renalware-core 2.0.46 → 2.0.47

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -11
  3. data/app/assets/javascripts/renalware/clipboard_setup.js +37 -0
  4. data/app/assets/javascripts/renalware/navigation.js +3 -3
  5. data/app/assets/stylesheets/renalware/base/_variables.scss +2 -0
  6. data/app/assets/stylesheets/renalware/lib/_foundation_and_overrides.scss +1 -0
  7. data/app/assets/stylesheets/renalware/modules/_clipboard.scss +12 -0
  8. data/app/assets/stylesheets/renalware/modules/_patients.scss +9 -0
  9. data/app/assets/stylesheets/renalware/partials/_button.scss +2 -1
  10. data/app/assets/stylesheets/renalware/partials/_layout.scss +30 -2
  11. data/app/assets/stylesheets/renalware/partials/_navigation.scss +30 -21
  12. data/app/assets/stylesheets/renalware/partials/_tables.scss +18 -3
  13. data/app/controllers/renalware/accesses/plans_controller.rb +1 -0
  14. data/app/controllers/renalware/admissions/requests_controller.rb +1 -0
  15. data/app/controllers/renalware/clinical/dry_weights_controller.rb +1 -0
  16. data/app/controllers/renalware/concerns/cache_busting.rb +1 -1
  17. data/app/controllers/renalware/events/events_controller.rb +3 -0
  18. data/app/controllers/renalware/hd/diary_slots_controller.rb +1 -0
  19. data/app/controllers/renalware/hospitals/wards_controller.rb +1 -1
  20. data/app/controllers/renalware/letters/base_controller.rb +4 -0
  21. data/app/controllers/renalware/letters/formatted_letters_controller.rb +9 -4
  22. data/app/controllers/renalware/letters/letters_controller.rb +1 -0
  23. data/app/controllers/renalware/letters/printable_letters_controller.rb +47 -0
  24. data/app/controllers/renalware/medications/prescriptions_controller.rb +1 -1
  25. data/app/controllers/renalware/messaging/internal/messages_controller.rb +1 -0
  26. data/app/controllers/renalware/patients/primary_care_physician_controller.rb +2 -0
  27. data/app/controllers/renalware/session_timeout_controller.rb +2 -0
  28. data/app/documents/renalware/blood_pressure.rb +1 -0
  29. data/app/documents/renalware/dated_boolean_diagnosis.rb +1 -0
  30. data/app/helpers/renalware/application_helper.rb +1 -0
  31. data/app/helpers/renalware/drugs_helper.rb +1 -0
  32. data/app/helpers/renalware/form_helper.rb +1 -0
  33. data/app/helpers/renalware/hospitals_helper.rb +25 -0
  34. data/app/helpers/renalware/mdm_helper.rb +1 -0
  35. data/app/inputs/date_picker_input.rb +1 -0
  36. data/app/jobs/renalware/letters/calculate_page_count_job.rb +46 -0
  37. data/app/models/concerns/renalware/letters/letter_pathology.rb +1 -0
  38. data/app/models/concerns/renalware/patient_pathology_scopes.rb +1 -1
  39. data/app/models/concerns/renalware/patient_transplant_scopes.rb +17 -0
  40. data/app/models/concerns/renalware/patients_ransack_helper.rb +13 -11
  41. data/app/models/renalware/accesses/assessment.rb +1 -1
  42. data/app/models/renalware/accesses/procedure.rb +1 -1
  43. data/app/models/renalware/accesses/profile.rb +3 -3
  44. data/app/models/renalware/admissions/admission_search_form.rb +1 -0
  45. data/app/models/renalware/clinical/allergy_status_form.rb +1 -0
  46. data/app/models/renalware/clinical/body_composition.rb +1 -1
  47. data/app/models/renalware/clinical/dry_weight.rb +1 -1
  48. data/app/models/renalware/clinics/clinic_visit.rb +4 -1
  49. data/app/models/renalware/clinics/create_clinic_visit.rb +1 -0
  50. data/app/models/renalware/events/line_change_event_query.rb +1 -0
  51. data/app/models/renalware/feeds/files/practices/convert_xml_to_csv.rb +1 -0
  52. data/app/models/renalware/feeds/files/practices/country_map.rb +1 -0
  53. data/app/models/renalware/feeds/files/practices/xml_parser.rb +2 -0
  54. data/app/models/renalware/hd/generate_monthly_statistics_for_patient.rb +2 -0
  55. data/app/models/renalware/hd/mdm_patients_form.rb +1 -0
  56. data/app/models/renalware/hd/mdm_patients_query.rb +2 -5
  57. data/app/models/renalware/hd/modality_description.rb +1 -0
  58. data/app/models/renalware/hd/patient_listener.rb +1 -0
  59. data/app/models/renalware/hd/patient_statistics.rb +1 -0
  60. data/app/models/renalware/hd/patients_dialysing_by_schedule_query.rb +1 -0
  61. data/app/models/renalware/hd/preference_set.rb +1 -1
  62. data/app/models/renalware/hd/profile.rb +1 -1
  63. data/app/models/renalware/hd/revise_hd_profile.rb +2 -1
  64. data/app/models/renalware/hd/session.rb +1 -1
  65. data/app/models/renalware/hd/session/closed.rb +1 -0
  66. data/app/models/renalware/hd/session/dna.rb +1 -0
  67. data/app/models/renalware/hd/session_factory.rb +2 -0
  68. data/app/models/renalware/hd/sessions/auditable_session.rb +3 -0
  69. data/app/models/renalware/hd/sessions/save_session.rb +3 -0
  70. data/app/models/renalware/hd/update_rolling_patient_statistics.rb +1 -0
  71. data/app/models/renalware/hospitals/ward.rb +1 -0
  72. data/app/models/renalware/letters/contact.rb +1 -1
  73. data/app/models/renalware/letters/delivery/email_letter_to_practice.rb +1 -0
  74. data/app/models/renalware/letters/event.rb +1 -0
  75. data/app/models/renalware/letters/html_renderer.rb +3 -0
  76. data/app/models/renalware/letters/letter.rb +1 -1
  77. data/app/models/renalware/letters/letter_factory.rb +2 -0
  78. data/app/models/renalware/letters/part/clinical_observations.rb +1 -0
  79. data/app/models/renalware/letters/part/recent_pathology_results.rb +3 -0
  80. data/app/models/renalware/letters/pdf_letter_cache.rb +5 -4
  81. data/app/models/renalware/letters/pdf_renderer.rb +3 -3
  82. data/app/models/renalware/letters/primary_care_physician.rb +1 -0
  83. data/app/models/renalware/letters/printing/create_pdf_by_interleaving_address_sheet_and_letter_for_each_recipient.rb +139 -0
  84. data/app/models/renalware/letters/printing/duplex_interleaved_pdf_renderer.rb +39 -0
  85. data/app/models/renalware/letters/printing/pdf_combining.rb +64 -0
  86. data/app/models/renalware/letters/printing/printable_recipients.rb +20 -0
  87. data/app/models/renalware/letters/recipient.rb +7 -2
  88. data/app/models/renalware/letters/recipient_address_pdf_renderer.rb +26 -0
  89. data/app/models/renalware/letters/recipient_params_processor.rb +1 -0
  90. data/app/models/renalware/low_clearance/mdm_patients_query.rb +2 -0
  91. data/app/models/renalware/low_clearance/profile.rb +2 -1
  92. data/app/models/renalware/medications/prescription.rb +3 -1
  93. data/app/models/renalware/messaging/internal/message_form_builder.rb +1 -0
  94. data/app/models/renalware/modalities/change_patient_modality.rb +1 -0
  95. data/app/models/renalware/pathology/message_listener.rb +1 -0
  96. data/app/models/renalware/pathology/observation_requests_attributes_builder.rb +2 -0
  97. data/app/models/renalware/pathology/observations_grouped_by_date_query.rb +1 -0
  98. data/app/models/renalware/pathology/observations_jsonb_serializer.rb +1 -0
  99. data/app/models/renalware/pathology/requests/global_rule/observation_result.rb +1 -0
  100. data/app/models/renalware/pathology/requests/global_rule/prescription_drug.rb +1 -0
  101. data/app/models/renalware/pathology/requests/global_rule/prescription_drug_category.rb +1 -0
  102. data/app/models/renalware/pathology/requests/global_rule/prescription_drug_type.rb +1 -0
  103. data/app/models/renalware/pathology/requests/global_rule/request_result.rb +3 -0
  104. data/app/models/renalware/pathology/requests/global_rule_set.rb +2 -0
  105. data/app/models/renalware/pathology/requests/high_risk_rule_set.rb +5 -0
  106. data/app/models/renalware/patient.rb +14 -11
  107. data/app/models/renalware/patients/calculate_age.rb +47 -0
  108. data/app/models/renalware/patients/idempotent_create_patient.rb +1 -0
  109. data/app/models/renalware/patients/mdm_patients_query.rb +0 -2
  110. data/app/models/renalware/patients/patient_hospital_identifiers.rb +2 -0
  111. data/app/models/renalware/patients/worry.rb +1 -1
  112. data/app/models/renalware/pd/apd/available_overnight_volume.rb +2 -0
  113. data/app/models/renalware/pd/apd/calculate_volumes.rb +1 -0
  114. data/app/models/renalware/pd/apd/non_tidal_regime_calculations.rb +1 -0
  115. data/app/models/renalware/pd/apd/regime_calculations.rb +1 -0
  116. data/app/models/renalware/pd/apd/tidal_regime_calculations.rb +2 -0
  117. data/app/models/renalware/pd/mdm_patients_query.rb +2 -0
  118. data/app/models/renalware/problems/problem.rb +1 -1
  119. data/app/models/renalware/renal/profile.rb +1 -1
  120. data/app/models/renalware/renal/registry/preflight_checks/patients_query.rb +15 -2
  121. data/app/models/renalware/research/study_participant.rb +1 -0
  122. data/app/models/renalware/system/message.rb +2 -0
  123. data/app/models/renalware/system/update_user.rb +1 -2
  124. data/app/models/renalware/transplants/donation.rb +2 -1
  125. data/app/models/renalware/transplants/donor_followup.rb +2 -1
  126. data/app/models/renalware/transplants/donor_operation.rb +2 -1
  127. data/app/models/renalware/transplants/donor_workup.rb +2 -1
  128. data/app/models/renalware/transplants/recipient_followup.rb +2 -1
  129. data/app/models/renalware/transplants/recipient_operation.rb +2 -1
  130. data/app/models/renalware/transplants/recipient_workup.rb +2 -1
  131. data/app/models/renalware/transplants/registration.rb +2 -1
  132. data/app/models/renalware/ukrdc/send_patient.rb +1 -0
  133. data/app/policies/renalware/base_policy.rb +2 -0
  134. data/app/policies/renalware/clinics/clinic_visit_policy.rb +1 -0
  135. data/app/presenters/renalware/admissions/admission_presenter.rb +1 -0
  136. data/app/presenters/renalware/clinical/header_presenter.rb +1 -1
  137. data/app/presenters/renalware/dashboard/dashboard_presenter.rb +1 -1
  138. data/app/presenters/renalware/hd/profile_document_presenter.rb +1 -0
  139. data/app/presenters/renalware/hd/profile_presenter.rb +4 -0
  140. data/app/presenters/renalware/hd/session_access_presenter.rb +3 -0
  141. data/app/presenters/renalware/hd/session_presenter.rb +2 -0
  142. data/app/presenters/renalware/hd/station_presenter.rb +1 -0
  143. data/app/presenters/renalware/hd/unmet_preferences_presenter.rb +2 -0
  144. data/app/presenters/renalware/hospitals/ward_presenter.rb +21 -0
  145. data/app/presenters/renalware/letters/letter_presenter.rb +16 -5
  146. data/app/presenters/renalware/medications/prescription_presenter.rb +1 -0
  147. data/app/presenters/renalware/pathology/observation_set_presenter.rb +2 -0
  148. data/app/presenters/renalware/patient_presenter.rb +1 -0
  149. data/app/presenters/renalware/pd/peritonitis_episode_presenter.rb +1 -0
  150. data/app/presenters/renalware/reporting/audit_presenter.rb +1 -0
  151. data/app/presenters/renalware/system/users_presenter.rb +1 -0
  152. data/app/presenters/renalware/transplants/donor_dashboard_presenter.rb +1 -1
  153. data/app/presenters/renalware/transplants/wait_list_registration_presenter.rb +2 -0
  154. data/app/presenters/renalware/ukrdc/patient_presenter.rb +2 -0
  155. data/app/validators/renalware/letters/author_signature_validator.rb +1 -0
  156. data/app/validators/renalware/patients/blood_pressure_validator.rb +1 -0
  157. data/app/validators/renalware/patients/bm_stix_validator.rb +1 -0
  158. data/app/validators/renalware/patients/height_validator.rb +1 -0
  159. data/app/validators/renalware/patients/pulse_validator.rb +1 -0
  160. data/app/validators/renalware/patients/temperature_validator.rb +1 -0
  161. data/app/validators/renalware/patients/weight_validator.rb +1 -0
  162. data/app/values/renalware/address.rb +1 -0
  163. data/app/values/renalware/bmi.rb +1 -0
  164. data/app/views/renalware/admin/users/_filters.html.slim +0 -8
  165. data/app/views/renalware/admin/users/_tabs.html.slim +7 -0
  166. data/app/views/renalware/admin/users/index.html.slim +6 -2
  167. data/app/views/renalware/admissions/admissions/_filters.html.slim +1 -2
  168. data/app/views/renalware/admissions/admissions/_form.html.slim +1 -9
  169. data/app/views/renalware/admissions/admissions/index.html.slim +3 -1
  170. data/app/views/renalware/admissions/consults/_form.html.slim +3 -7
  171. data/app/views/renalware/admissions/consults/index.html.slim +3 -1
  172. data/app/views/renalware/api/ukrdc/patients/_patient.xml.builder +1 -0
  173. data/app/views/renalware/clinics/appointments/index.html.slim +16 -15
  174. data/app/views/renalware/clinics/clinic_visits/_table.html.slim +1 -1
  175. data/app/views/renalware/clinics/clinic_visits/_table_row.html.slim +10 -0
  176. data/app/views/renalware/clinics/visits/_table.html.slim +2 -2
  177. data/app/views/renalware/clinics/visits/_table_row.html.slim +10 -0
  178. data/app/views/renalware/clinics/visits/index.html.slim +2 -2
  179. data/app/views/renalware/deaths/index.html.slim +6 -1
  180. data/app/views/renalware/directory/people/index.html.slim +2 -1
  181. data/app/views/renalware/drugs/drugs/index.html.slim +2 -2
  182. data/app/views/renalware/events/types/{_header.html.slim → _header.html.slim.dead} +0 -0
  183. data/app/views/renalware/hd/cannulation_types/index.html.slim +3 -1
  184. data/app/views/renalware/hd/dialysers/index.html.slim +2 -1
  185. data/app/views/renalware/hd/mdm_patients/index.html.slim +3 -2
  186. data/app/views/renalware/hd/ongoing_sessions/show.html.slim +3 -1
  187. data/app/views/renalware/hd/sessions/_row.html.slim +11 -1
  188. data/app/views/renalware/hd/sessions/_thead.html.slim +1 -1
  189. data/app/views/renalware/hd/sessions/dna/_row.html.slim +11 -1
  190. data/app/views/renalware/hospitals/wards/_form.html.slim +1 -0
  191. data/app/views/renalware/hospitals/wards/index.html.slim +9 -6
  192. data/app/views/renalware/layouts/_non_patient.html.slim +16 -9
  193. data/app/views/renalware/letters/electronic_receipts/read.html.slim +6 -2
  194. data/app/views/renalware/letters/electronic_receipts/sent.html.slim +6 -2
  195. data/app/views/renalware/letters/electronic_receipts/unread.html.slim +6 -2
  196. data/app/views/renalware/letters/formatted_letters/_letter.html.slim +3 -2
  197. data/app/views/renalware/letters/letters/_additional_ccs.html.slim +1 -1
  198. data/app/views/renalware/letters/letters/_form.html.slim +2 -5
  199. data/app/views/renalware/letters/letters/_main_recipient.html.slim +2 -3
  200. data/app/views/renalware/letters/letters/edit.html.slim +1 -0
  201. data/app/views/renalware/letters/letters/new.html.slim +1 -1
  202. data/app/views/renalware/letters/lists/_letter.html.slim +14 -3
  203. data/app/views/renalware/letters/lists/_table.html.slim +2 -1
  204. data/app/views/renalware/letters/lists/show.html.slim +27 -25
  205. data/app/views/renalware/letters/printable_letters/_recipient_address_cover_sheet.html.slim +40 -0
  206. data/app/views/renalware/letters/printable_letters/show.pdf.slim +10 -0
  207. data/app/views/renalware/letters/shared/_electronic_cc_type_tabs.html.slim +6 -4
  208. data/app/views/renalware/low_clearance/mdm_patients/{_filters.html.slim → _tabs.html.slim} +2 -2
  209. data/app/views/renalware/mdm_patients/_table.html.slim +1 -1
  210. data/app/views/renalware/mdm_patients/index.html.slim +5 -5
  211. data/app/views/renalware/medications/drug_types/prescriptions/_filters.html.slim +1 -1
  212. data/app/views/renalware/medications/drug_types/prescriptions/index.html.slim +3 -1
  213. data/app/views/renalware/medications/prescriptions/_tables.html.slim +2 -2
  214. data/app/views/renalware/messaging/internal/receipts/read.html.slim +6 -2
  215. data/app/views/renalware/messaging/internal/receipts/sent.html.slim +6 -2
  216. data/app/views/renalware/messaging/internal/receipts/unread.html.slim +6 -2
  217. data/app/views/renalware/messaging/shared/_messages_type_tabs.html.slim +6 -4
  218. data/app/views/renalware/modalities/descriptions/{_header.html.slim → _header.html.slim.dead} +0 -0
  219. data/app/views/renalware/pathology/_navigation.html.slim +8 -7
  220. data/app/views/renalware/patients/_header.html.slim +3 -3
  221. data/app/views/renalware/patients/_index_header.html.slim +1 -1
  222. data/app/views/renalware/patients/patients/edit.html.slim +2 -1
  223. data/app/views/renalware/patients/patients/index.html.slim +3 -1
  224. data/app/views/renalware/patients/patients/new.html.slim +1 -2
  225. data/app/views/renalware/patients/primary_care_physicians/index.html.slim +2 -1
  226. data/app/views/renalware/patients/worryboard/show.html.slim +3 -1
  227. data/app/views/renalware/problems/problems/_archived_table.html.slim +1 -1
  228. data/app/views/renalware/problems/problems/index.html.slim +1 -1
  229. data/app/views/renalware/renal/aki_alerts/_filters.html.slim +8 -8
  230. data/app/views/renalware/renal/aki_alerts/edit.html.slim +1 -6
  231. data/app/views/renalware/renal/aki_alerts/index.html.slim +3 -1
  232. data/app/views/renalware/renal/registry_preflight_checks/_filters.html.slim +5 -0
  233. data/app/views/renalware/renal/registry_preflight_checks/_table.html.slim +4 -1
  234. data/app/views/renalware/renal/registry_preflight_checks/deaths.html.slim +5 -1
  235. data/app/views/renalware/renal/registry_preflight_checks/patients.html.slim +5 -1
  236. data/app/views/renalware/transplants/mdm_patients/{_filters.html.slim → _filters.html.slim.dead} +0 -0
  237. data/app/views/renalware/transplants/mdm_patients/_tabs.html.slim +8 -0
  238. data/app/views/renalware/transplants/wait_lists/show.html.slim +2 -1
  239. data/config/initializers/ransack.rb +11 -0
  240. data/config/initializers/renalware.rb +6 -1
  241. data/config/locales/renalware/low_clearance/low_clearance.en.yml +2 -2
  242. data/config/locales/renalware/transplants/mdm.en.yml +2 -2
  243. data/config/routes.rb +5 -0
  244. data/db/migrate/20180831134926_create_daily_reports.rb +5 -0
  245. data/db/migrate/20180907100545_add_page_count_to_letters.rb +5 -0
  246. data/db/migrate/20181001162513_add_active_to_hospital_wards.rb +5 -0
  247. data/lib/collection_presenter.rb +1 -0
  248. data/lib/core_extensions/active_record/sort.rb +1 -0
  249. data/lib/document/base.rb +1 -0
  250. data/lib/document/embedded.rb +1 -0
  251. data/lib/dropdown_button_item.rb +1 -0
  252. data/lib/renalware/remembered_preferences.rb +2 -0
  253. data/lib/renalware/version.rb +1 -1
  254. data/lib/sql/index_case_stmt.rb +1 -0
  255. data/lib/tasks/reporting.rake +1 -1
  256. data/spec/support/letters_spec_helper.rb +74 -2
  257. data/spec/support/matchers/have_pdf_page_text.rb +15 -0
  258. metadata +51 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 732d240382d52f901ed4a804957ec8e0292e26488815f741621e14a970d15e23
4
- data.tar.gz: 6cf0e31ee2963a78d8aa91b9998f5081fb390fcb15bb80a1300d16507b283743
3
+ metadata.gz: 3ceaae4c4c26c671caa4da27416d96cc43315b50219b3982bae000496fef512c
4
+ data.tar.gz: ce820d00e37efabd91cd73048d9dc0f7291934405a13efec313a210c22deff7c
5
5
  SHA512:
6
- metadata.gz: d066affb2c30cc96a351589326374ae2405b9fc961bd5b01417a042033dbfaf35837dccfb988a4da6a07e16f8f939f85ce90244f85aac246801ceed8c3f6eb46
7
- data.tar.gz: 639120743e01a18283491366adb983c4647ffa97efd8408b11d0a259883a2b98e2e4cb27d347cd40dc28eff7228b1cfd6a15d69a15138f15957813c6846679fb
6
+ metadata.gz: 3be41bddd11e27dee28f68f622c82c1b86a3c1c63b914796545734086e3ffaa666841e2e7b83b3f43359c46670c49cb162bf1fce7071ddbbaf78e3b8605ab9b7
7
+ data.tar.gz: 29d06725b86f2bed93d794278f605f6af9f0298f03f9b87d00c3a3922e502c26ac4c4add04b44b00f1948034991e847f597dfde16ddc488c18b0bffb2c46d14f
data/README.md CHANGED
@@ -120,20 +120,15 @@ delayed_job logs to its own log. To see the output:
120
120
 
121
121
  On a Mac:
122
122
 
123
- ```
124
- brew install chromedriver
125
- gem install chromedriver-helper
126
- chromedriver-update
127
- ```
123
+ - Download chromedriver from eg [here](https://chromedriver.storage.googleapis.com/index.html?path=2.38/)
124
+ - Unzip and place in location in your PATH eh `/usr/local/bin`
125
+ - If you have chromedriver errors it maybe your installed version of Chrome is not
126
+ compatible your chromedriver version. In this case check your versions with
128
127
 
129
- If you have chromedriver errors it maybe your installed version of Chrome is not
130
- compatible your chromedriver version.
131
-
132
- In this case check your versions
133
128
  ```
134
129
  chromedriver -v
135
130
  chrome -v
136
- ``
131
+ ```
137
132
  and consult the driver release notee eg for [2.38](https://chromedriver.storage.googleapis.com/2.38/notes.txt)
138
133
  to check compatibility
139
134
 
@@ -220,7 +215,7 @@ To make awesome_print the default formatter in irb, add the following to `~/.irb
220
215
  require "awesome_print"
221
216
  AwesomePrint.irb!
222
217
 
223
- #### Docker - WIP!
218
+ #### Docker - WIP!
224
219
 
225
220
  ```
226
221
  docker build -t renalware .
@@ -14,4 +14,41 @@ $(document).ready(function(){
14
14
  $.post(invocation_url);
15
15
  }
16
16
  });
17
+
18
+
19
+ // Adapted from https://alligator.io/js/copying-to-clipboard/
20
+ // When a user clicks on a .clipboardable, copy the contents to the clipboard
21
+ // and toggle a 'success' class for shot while to provide visual feedback.
22
+ /*
23
+ Have disabled this for now until we can get the UI a little better. Atm if the user
24
+ drags to select the text, we remove their selection here - a bit confusing for them.
25
+ We maybe should highlight the element text on a click and then copy, but leave the
26
+ text highlighted so the usr can manually copy if they don't realise it has been done for them.
27
+ And allow them to highlight manually. Or provide a Copy button which pops up or something.
28
+
29
+ $(".clipboardable").on('click', function(e) {
30
+ var selection = window.getSelection();
31
+ var range = document.createRange();
32
+ range.selectNodeContents(this);
33
+ selection.removeAllRanges();
34
+ selection.addRange(range);
35
+
36
+ console.log(range);
37
+
38
+ try {
39
+ document.execCommand('copy');
40
+ selection.removeAllRanges();
41
+
42
+ var original = this.textContent;
43
+ this.classList.add('success');
44
+
45
+ setTimeout(() => {
46
+ this.classList.remove('success');
47
+ }, 1200);
48
+ } catch(e) {
49
+ // for now do nothing as this is not a crucial error
50
+ // but we could display a js modal error dialog
51
+ }
52
+ });
53
+ */
17
54
  });
@@ -9,9 +9,9 @@ $(document).ready(function(){
9
9
  }
10
10
  });
11
11
 
12
-
13
- $("dd").each(function(){
14
- var $href = $(this).find('a').attr('href');
12
+ // Auto select the active tab based on the url, unless the subnav has the no-js-selection class
13
+ $(".sub-nav:not('.no-js-selection') dd").each(function(){
14
+ var $href = $(this).find("a").attr('href');
15
15
  if ($href === window.location.pathname) {
16
16
  $(this).addClass('active');
17
17
  }
@@ -61,6 +61,8 @@ $drug-type-default-colour: none;
61
61
  $drug-type-esa-colour: #FFFF99;
62
62
  $drug-type-immunosuppressant-colour: #CCFeFF;
63
63
 
64
+ $tab-border-color: $off-white;
65
+
64
66
  // Patient header/banner
65
67
  $patient-header-muted-color: #777;
66
68
  $patient-header-icon-color: #bbb;
@@ -123,6 +123,7 @@ $alert-color: lighten($original-alert-color, 10%);
123
123
  // $info-color: #a0d3e8;
124
124
 
125
125
  $white: #FFFFFF;
126
+ $nearly-white: #FEFEFE;
126
127
  $ghost: #FAFAFA;
127
128
  $snow: #F9F9F9;
128
129
  // $vapor: #F6F6F6;
@@ -0,0 +1,12 @@
1
+ /* After a click and copied to clipboard */
2
+
3
+ .clipboardable {
4
+ transition: background-color .1s ease-in;
5
+ transition: background-color .3s ease-out;
6
+ border: solid 1px transparent;
7
+ border-radius: 3px;
8
+
9
+ &.success {
10
+ background-color: $nhs-light-blue;
11
+ }
12
+ }
@@ -154,6 +154,9 @@ ul.provider {
154
154
  padding: 0;
155
155
  text-transform: uppercase;
156
156
 
157
+ // Don't highlight the dt if a user double clicks/highlights the adjacent dd
158
+ user-select: none;
159
+
157
160
  @media print, #{$large-up} {
158
161
  font-size: .7em;
159
162
  }
@@ -165,6 +168,12 @@ ul.provider {
165
168
  font-size: 1em;
166
169
  margin: 0 .5em 0 .1em;
167
170
 
171
+ // When the user clicks the content, select it all
172
+ &.selectable {
173
+ user-select: all;
174
+ -ms-user-select: all;
175
+ }
176
+
168
177
  &.name {
169
178
  display: inline;
170
179
  font-size: 1.4em;
@@ -10,7 +10,8 @@
10
10
  .page-actions {
11
11
  .button {
12
12
  margin-right: 0.8rem;
13
- margin-bottom: 0.4rem;
13
+ margin-bottom: 0;
14
+ padding: 0.5rem 1rem;
14
15
  }
15
16
 
16
17
  @media print {
@@ -139,10 +139,38 @@ section.display {
139
139
  }
140
140
 
141
141
  .non-patient-page {
142
- padding-top: 1rem;
143
142
  padding-bottom: 3rem;
144
143
 
144
+ .non-patient-page-header {
145
+ margin: 0;
146
+ padding:0;
147
+ margin-bottom: .5rem;
148
+
149
+ &.with-tabs {
150
+ border-bottom: 1px solid $tab-border-color;
151
+ margin-bottom: 1.5rem;
152
+
153
+ .page-heading {
154
+ margin-bottom: .8rem;
155
+ }
156
+ }
157
+ }
158
+
159
+ ul, dl {
160
+ float: none;
161
+ display: block;
162
+ margin-bottom: 0;
163
+ }
164
+
165
+ .sub-nav {
166
+ top: 1px;
167
+ position: relative;
168
+ }
169
+
145
170
  .page-heading {
146
- margin-bottom: 0.5rem;
171
+ padding: 1.4rem 0 .7rem;
172
+ margin: 0;
173
+ float: left;
174
+ clear: both;
147
175
  }
148
176
  }
@@ -201,7 +201,7 @@ dd.patient-name {
201
201
  }
202
202
 
203
203
  .sub-nav {
204
- background-color: $white;
204
+ background-color: transparent;
205
205
  float: left;
206
206
  margin: 0 0 1rem;
207
207
  padding: 0;
@@ -212,35 +212,44 @@ dd.patient-name {
212
212
  margin: 0 0.25rem 0 0;
213
213
  }
214
214
 
215
+ // Used when tabs are local to an area of a page and not inside a page-heading
216
+ // Adds a border under the tabs, and the tabs within must be offset down by 1px
217
+ // so that the active one seems to have no bottom border.
218
+ .tabs-container {
219
+ border-bottom: 1px solid $tab-border-color;
220
+ float: left;
221
+ width: 100%;
222
+ clear: both;
223
+ margin-bottom: 1rem;
224
+
225
+ .sub-nav {
226
+ margin: 0;
227
+ position: relative;
228
+ top: 1px;
229
+ }
230
+ }
231
+
215
232
  .sub-nav dd a {
216
- background-color: $off-white;
217
- border-top-left-radius: 3px;
218
- border-top-right-radius: 3px;
219
- border-bottom-left-radius: 0;
220
- border-bottom-right-radius: 0;
221
- color: $link-colour;
222
233
  display: block;
223
- padding: 0.2rem 0.5rem;
224
- text-decoration: underline;
234
+ color: $monsoon;
235
+ background-color: transparent;
236
+ text-decoration: none;
237
+ white-space: nowrap;
238
+ border: solid transparent;
239
+ border-width: 3px 1px 1px;
240
+ border-radius: 3px 3px 0 0;
241
+ padding: 0.3rem 1.3rem;
225
242
  }
226
243
 
227
244
  .sub-nav dd a:hover {
228
- background-color: $link-colour;
229
- color: $white;
245
+ color: $dark-grey;
230
246
  }
231
247
 
232
248
  .sub-nav dd.active a {
233
- background-color: $white;
234
- border-top: 1px solid $table-border-colour;
235
- border-right: 1px solid $table-border-colour;
236
- border-left: 1px solid $table-border-colour;
237
- border-top-left-radius: 3px;
238
- border-top-right-radius: 3px;
239
- border-bottom-left-radius: 0;
240
- border-bottom-right-radius: 0;
249
+ border-color: $nhs-orange $tab-border-color transparent;
241
250
  color: $dark-grey;
242
- padding: 0.2rem 0.5rem;
243
- text-decoration: none;
251
+ background-color: $white;
252
+ padding: 0.3rem 1.3rem;
244
253
  }
245
254
 
246
255
  .sub-nav dd.active {
@@ -46,11 +46,12 @@ table {
46
46
  border-collapse: collapse;
47
47
 
48
48
  thead {
49
+ background-color: transparent;
49
50
  border-bottom: solid 1px $letter-preview-background-colour;
50
- border-top: solid 1px $letter-preview-background-colour;
51
+ //border-top: solid 1px $letter-preview-background-colour;
51
52
 
52
53
  a {
53
- color: $oil;
54
+ color: $muted-dark-grey;
54
55
  text-decoration: underline;
55
56
  }
56
57
 
@@ -244,9 +245,14 @@ table {
244
245
  min-width: 12rem;
245
246
  }
246
247
 
248
+ &.col-width-medium-plus {
249
+ width: 15rem;
250
+ min-width: 14rem;
251
+ }
252
+
247
253
  &.col-width-large {
248
254
  width: 20rem;
249
- min-width: 15rem;
255
+ min-width: 17rem;
250
256
  }
251
257
 
252
258
  &.column-6-width {
@@ -269,6 +275,11 @@ table {
269
275
  width: 13rem;
270
276
  }
271
277
 
278
+ &.col-width-17 {
279
+ width: 17rem;
280
+ min-width: 17rem;
281
+ }
282
+
272
283
  &.at-least {
273
284
  width: auto;
274
285
  }
@@ -389,3 +400,7 @@ table {
389
400
  }
390
401
  }
391
402
  }
403
+
404
+ table tr.even, table tr.alt, table tr:nth-of-type(even) {
405
+ background: $table-even-row-colour;
406
+ }
@@ -45,6 +45,7 @@ module Renalware
45
45
  Plan.transaction do
46
46
  if current_plan.present?
47
47
  return true if current_plan.identical_to?(plan) # no change, no new plan to be created
48
+
48
49
  current_plan.terminate_by(current_user)
49
50
  end
50
51
  plan.save!
@@ -25,6 +25,7 @@ module Renalware
25
25
  unless request.save_by(current_user)
26
26
  return render_new(request)
27
27
  end
28
+
28
29
  flash.now[:notice] = success_msg_for("admission request")
29
30
  end
30
31
 
@@ -52,6 +52,7 @@ module Renalware
52
52
 
53
53
  def save_path_to_return_to
54
54
  return unless request.format == :html
55
+
55
56
  session[:return_to] ||= request.referer
56
57
  end
57
58
 
@@ -15,7 +15,7 @@ module Renalware
15
15
  end
16
16
 
17
17
  def bust_cache
18
- response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
18
+ response.headers["Cache-Control"] = "no-cache, no-store"
19
19
  response.headers["Pragma"] = "no-cache"
20
20
  response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
21
21
  end
@@ -72,6 +72,7 @@ module Renalware
72
72
 
73
73
  def save_path_to_return_to
74
74
  return unless request.format == :html
75
+
75
76
  session[:return_to] ||= request.path
76
77
  end
77
78
 
@@ -113,12 +114,14 @@ module Renalware
113
114
  def event_type
114
115
  return Events::Type.find(event_type_id) if event_type_id.present?
115
116
  return Events::Type.find_by!(slug: event_type_slug) if event_type_slug.present?
117
+
116
118
  Events::Type.new
117
119
  end
118
120
 
119
121
  def event_type_id
120
122
  @event_type_id ||= begin
121
123
  return event_params[:event_type_id] if params[:events_event]
124
+
122
125
  params[:event_type_id]
123
126
  end
124
127
  end
@@ -152,6 +152,7 @@ module Renalware
152
152
  if patient_ids.length > 1
153
153
  raise ArgumentError, "More than one id submitted in patient_id[] : #{patient_ids}"
154
154
  end
155
+
155
156
  patient_ids.first
156
157
  end
157
158
 
@@ -71,7 +71,7 @@ module Renalware
71
71
  end
72
72
 
73
73
  def ward_params
74
- params.require(:ward).permit(:code, :name)
74
+ params.require(:ward).permit(:code, :name, :active)
75
75
  end
76
76
  end
77
77
  end
@@ -3,6 +3,10 @@
3
3
  module Renalware
4
4
  module Letters
5
5
  class BaseController < Renalware::BaseController
6
+ def patient
7
+ Letters.cast_patient(super)
8
+ end
9
+
6
10
  private
7
11
 
8
12
  def load_patient
@@ -34,11 +34,16 @@ module Renalware
34
34
  LetterPresenterFactory.new(letter)
35
35
  end
36
36
 
37
+ # Here we are jsut printing an ahoc letter for manual stuffing so we pass in
38
+ # an argument to prompt adhic CSS to be included so for example the CCs at the bottom of the
39
+ # letter will render with more padding. See LetterPresenter
37
40
  def render_pdf(letter)
38
- send_data(PdfRenderer.call(letter),
39
- filename: letter.pdf_filename,
40
- type: "application/pdf",
41
- disposition: disposition)
41
+ send_data(
42
+ PdfRenderer.call(letter, adhoc_printing: true),
43
+ filename: letter.pdf_filename,
44
+ type: "application/pdf",
45
+ disposition: disposition
46
+ )
42
47
  end
43
48
 
44
49
  def render_rtf(letter)