renalware-core 2.0.46 → 2.0.47

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 (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)