renalware-core 2.0.0.pre.rc3 → 2.0.0.pre.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/MIT-LICENSE +1 -1
- data/README.md +1 -0
- data/app/assets/images/renalware/chosen-sprite.png +0 -0
- data/app/assets/images/renalware/chosen-sprite@2x.png +0 -0
- data/app/assets/images/renalware/nhs_a4_letter_logo_black.png +0 -0
- data/app/assets/images/renalware/nhs_a4_letter_logo_blue.png +0 -0
- data/app/assets/javascripts/renalware/session_timeout_redirect.js.erb +3 -1
- data/app/assets/stylesheets/renalware/base/_variables.scss +2 -0
- data/app/assets/stylesheets/renalware/modules/_admissions.scss +21 -25
- data/app/assets/stylesheets/renalware/modules/_feeds.scss +27 -0
- data/app/assets/stylesheets/renalware/modules/_letters.scss +4 -0
- data/app/assets/stylesheets/renalware/modules/_patients.scss +18 -17
- data/app/assets/stylesheets/renalware/modules/_pd.scss +8 -0
- data/app/assets/stylesheets/renalware/partials/_lists.scss +3 -0
- data/app/assets/stylesheets/renalware/partials/_modal_window.scss +7 -1
- data/app/assets/stylesheets/renalware/partials/_navigation.scss +2 -2
- data/app/assets/stylesheets/renalware/partials/_tables.scss +20 -0
- data/app/assets/stylesheets/renalware/partials/_typography.scss +4 -0
- data/app/controllers/renalware/admin/feeds/files_controller.rb +49 -0
- data/app/controllers/renalware/admissions/admissions_controller.rb +101 -0
- data/app/controllers/renalware/admissions/patient_admissions_controller.rb +20 -0
- data/app/controllers/renalware/devise/sessions_controller.rb +29 -0
- data/app/controllers/renalware/letters/approved_letters_controller.rb +9 -1
- data/app/controllers/renalware/letters/contacts_controller.rb +29 -0
- data/app/controllers/renalware/low_clearance/base_controller.rb +13 -0
- data/app/controllers/renalware/low_clearance/dashboards_controller.rb +21 -0
- data/app/controllers/renalware/low_clearance/mdm_controller.rb +13 -0
- data/app/controllers/renalware/low_clearance/mdm_patients_controller.rb +27 -0
- data/app/controllers/renalware/low_clearance/profiles_controller.rb +45 -0
- data/app/controllers/renalware/patients/primary_care_physicians_controller.rb +4 -3
- data/app/controllers/renalware/pd/exit_site_infections_controller.rb +2 -1
- data/app/controllers/renalware/transplants/donor_workups_controller.rb +5 -2
- data/app/documents/renalware/low_clearance/profile_document.rb +26 -0
- data/app/documents/renalware/renal/profile_document.rb +0 -21
- data/app/helpers/renalware/application_helper.rb +5 -0
- data/app/helpers/renalware/attribute_name_helper.rb +0 -24
- data/app/helpers/renalware/infection_organisms_helper.rb +0 -20
- data/app/helpers/renalware/mdm_helper.rb +1 -1
- data/app/helpers/renalware/pd_regimes_helper.rb +1 -5
- data/app/mailers/renalware/admin/user_mailer.rb +1 -3
- data/app/mailers/renalware/letters/delivery/errors.rb +9 -0
- data/app/mailers/renalware/letters/delivery/practice_mailer.rb +55 -0
- data/app/mailers/{previews → renalware/previews}/user_mailer_preview.rb +0 -0
- data/app/models/concerns/renalware/feeds/job.rb +30 -0
- data/app/models/concerns/renalware/letters/letter_pathology.rb +31 -8
- data/app/models/concerns/renalware/patients_ransack_helper.rb +9 -9
- data/app/models/concerns/renalware/personable.rb +8 -3
- data/app/models/concerns/renalware/string_logging.rb +11 -0
- data/app/models/renalware/admissions/admission.rb +42 -0
- data/app/models/renalware/admissions/admission_query.rb +38 -0
- data/app/models/renalware/admissions/admission_search_form.rb +51 -0
- data/app/models/renalware/clinics/clinic_visit.rb +1 -0
- data/app/models/renalware/feeds/file.rb +31 -0
- data/app/models/renalware/feeds/file_type.rb +13 -0
- data/app/models/renalware/feeds/files/create_feed_file.rb +51 -0
- data/app/models/renalware/feeds/files/enqueue_file_for_background_processing.rb +18 -0
- data/app/models/renalware/feeds/files/exceptions.rb +12 -0
- data/app/models/renalware/feeds/files/file_upload_form.rb +24 -0
- data/app/models/renalware/feeds/files/import_job_factory.rb +15 -0
- data/app/models/renalware/feeds/files/practice_memberships/import_csv.rb +30 -0
- data/app/models/renalware/feeds/files/practice_memberships/import_job.rb +49 -0
- data/app/models/renalware/feeds/files/practices/convert_xml_to_csv.rb +145 -0
- data/app/models/renalware/feeds/files/practices/country_map.rb +33 -0
- data/app/models/renalware/feeds/files/practices/csv_file.rb +23 -0
- data/app/models/renalware/feeds/files/practices/csv_organisation.rb +35 -0
- data/app/models/renalware/feeds/files/practices/import_csv.rb +30 -0
- data/app/models/renalware/feeds/files/practices/import_job.rb +58 -0
- data/app/models/renalware/feeds/files/primary_care_physicians/import_csv.rb +28 -0
- data/app/models/renalware/feeds/files/primary_care_physicians/import_job.rb +44 -0
- data/app/models/renalware/feeds/files/tissue_typing/import.rb +12 -0
- data/app/models/renalware/feeds/hl7_message.rb +15 -0
- data/app/models/renalware/hd/sessions/auditable_session.rb +1 -1
- data/app/models/renalware/hospitals/unit.rb +2 -1
- data/app/models/renalware/hospitals/ward.rb +1 -1
- data/app/models/renalware/letters/approve_letter.rb +15 -9
- data/app/models/renalware/letters/delivery/deliver_letter.rb.dead +41 -0
- data/app/models/renalware/letters/delivery/delivery_policy.rb +28 -0
- data/app/models/renalware/letters/delivery/email_letter_to_practice.rb +46 -0
- data/app/models/renalware/letters/delivery/practice_email.rb +28 -0
- data/app/models/renalware/letters/draft_letter.rb +1 -1
- data/app/models/renalware/letters/part/recent_pathology_results.rb +43 -4
- data/app/models/renalware/letters/pdf_letter_cache.rb +2 -3
- data/app/models/renalware/letters/recipient_params_processor.rb +1 -1
- data/app/models/renalware/letters/relevant_observation_description.rb +2 -3
- data/app/models/renalware/letters/revise_letter.rb +3 -1
- data/app/models/renalware/letters.rb +3 -0
- data/app/models/renalware/low_clearance/mdm_patients_query.rb +62 -0
- data/app/models/renalware/low_clearance/modality_description.rb +11 -0
- data/app/models/renalware/low_clearance/patient.rb +14 -0
- data/app/models/renalware/low_clearance/profile.rb +15 -0
- data/app/models/renalware/low_clearance/version.rb +9 -0
- data/app/models/renalware/low_clearance.rb +15 -0
- data/app/models/renalware/patient.rb +3 -0
- data/app/models/renalware/patients/patient_hospital_identifiers.rb +8 -0
- data/app/models/renalware/patients/practice.rb +4 -1
- data/app/models/renalware/patients/practice_membership.rb +12 -0
- data/app/models/renalware/patients/primary_care_physician.rb +24 -5
- data/app/models/renalware/pd/exit_site_infection.rb +6 -0
- data/app/models/renalware/pd/regime_bag.rb +1 -1
- data/app/models/renalware/problems/note.rb +1 -1
- data/app/models/renalware/renal/registry/preflight_checks/deaths_query.rb +1 -1
- data/app/models/renalware/renal.rb +0 -4
- data/app/models/renalware/system/update_user.rb +1 -1
- data/app/models/renalware/transplants/recipient_operation.rb +3 -8
- data/app/models/renalware/user.rb +3 -3
- data/app/models/renalware/zip_archive.rb +48 -0
- data/app/policies/renalware/admissions/admission_policy.rb +8 -0
- data/app/policies/renalware/feeds/file_policy.rb +25 -0
- data/app/policies/renalware/letters/letter_policy.rb +2 -0
- data/app/policies/renalware/low_clearance/profile_policy.rb +13 -0
- data/app/presenters/renalware/admissions/admission_presenter.rb +49 -0
- data/app/presenters/renalware/dashboard/dashboard_presenter.rb +1 -1
- data/app/presenters/renalware/hd/session_access_presenter.rb +1 -1
- data/app/presenters/renalware/letters/letter_form_presenter.rb +1 -1
- data/app/presenters/renalware/letters/letter_presenter.rb +6 -1
- data/app/presenters/renalware/letters/practice_email_meta_data.rb +85 -0
- data/app/presenters/renalware/low_clearance/dashboard_presenter.rb +19 -0
- data/app/presenters/renalware/low_clearance/mdm_presenter.rb +12 -0
- data/app/presenters/renalware/pathology/observation_set_presenter.rb +1 -1
- data/app/presenters/renalware/pathology/observations_diff.rb +1 -1
- data/app/presenters/renalware/renal/clinical_summary_presenter.rb +17 -1
- data/app/validators/renalware/patients/height_validator.rb +17 -0
- data/app/views/renalware/admin/feeds/files/index.html.slim +61 -0
- data/app/views/renalware/admissions/admissions/_filters.html.slim +24 -0
- data/app/views/renalware/admissions/admissions/_form.html.slim +56 -0
- data/app/views/renalware/admissions/admissions/_table.html.slim +65 -0
- data/app/views/renalware/admissions/admissions/edit.html.slim +6 -0
- data/app/views/renalware/admissions/admissions/index.html.slim +12 -0
- data/app/views/renalware/admissions/admissions/new.html.slim +6 -0
- data/app/views/renalware/admissions/consults/_form.html.slim +2 -3
- data/app/views/renalware/admissions/consults/_table.html.slim +1 -3
- data/app/views/renalware/admissions/patient_admissions/index.html.slim +10 -0
- data/app/views/renalware/clinics/clinic_visits/_table.html.slim +2 -1
- data/app/views/renalware/clinics/clinic_visits/_table_row.html.slim +1 -0
- data/app/views/renalware/drugs/drugs/index.html.slim +3 -2
- data/app/views/renalware/hd/current_profile/_summary.html.slim +8 -8
- data/app/views/renalware/hd/diary_slots/_form.html.slim +4 -4
- data/app/views/renalware/hd/mdm_patients/_patient.html.slim +0 -1
- data/app/views/renalware/hd/protocols/_profile.html.slim +4 -4
- data/app/views/renalware/letters/contacts/_contact.html.slim +5 -1
- data/app/views/renalware/letters/contacts/_edit.html.slim +30 -0
- data/app/views/renalware/letters/contacts/_form.html.slim +1 -1
- data/app/views/renalware/letters/contacts/_table.html.slim +6 -5
- data/app/views/renalware/letters/contacts/edit.html.slim +8 -0
- data/app/views/renalware/letters/contacts/edit.js.erb +9 -0
- data/app/views/renalware/letters/contacts/index.html.slim +9 -3
- data/app/views/renalware/letters/contacts/index.js.erb +1 -1
- data/app/views/renalware/letters/contacts/update.js.erb +10 -0
- data/app/views/renalware/letters/delivery/practice_mailer/patient_letter.text.erb +3 -0
- data/app/views/renalware/letters/electronic_receipts/_table.html.slim +3 -1
- data/app/views/renalware/letters/electronic_receipts/sent.html.slim +6 -9
- data/app/views/renalware/letters/formatted_letters/_letter.html.slim +26 -13
- data/app/views/renalware/letters/letters/_cc_recipient_form.html.slim +1 -1
- data/app/views/renalware/letters/letters/_form.html.slim +0 -1
- data/app/views/renalware/letters/letters/_pathology.html.slim +1 -2
- data/app/views/renalware/letters/letters/_preview.html.slim +14 -5
- data/app/views/renalware/letters/parts/_clinical_observations.html.slim +2 -2
- data/app/views/renalware/letters/parts/_recent_pathology_results.html.slim +1 -7
- data/app/views/renalware/low_clearance/dashboards/_page_actions.html.slim +19 -0
- data/app/views/renalware/low_clearance/dashboards/show.html.slim +7 -0
- data/app/views/renalware/{renal/low_clearance → low_clearance}/mdm/_bottom.html.slim +0 -0
- data/app/views/renalware/{renal/low_clearance → low_clearance}/mdm/_low_clearance_profile.html.slim +0 -0
- data/app/views/renalware/{renal/low_clearance → low_clearance}/mdm/_top.html.slim +0 -0
- data/app/views/renalware/low_clearance/mdm_patients/_filters.html.slim +9 -0
- data/app/views/renalware/low_clearance/profiles/_summary.html.slim +125 -0
- data/app/views/renalware/low_clearance/profiles/edit.html.slim +39 -0
- data/app/views/renalware/medications/prescriptions/_table.html.slim +1 -1
- data/app/views/renalware/messaging/internal/receipts/_receipt.html.slim +2 -1
- data/app/views/renalware/messaging/internal/receipts/_sent_receipt.html.slim +3 -2
- data/app/views/renalware/messaging/internal/receipts/_sent_table.html.slim +2 -1
- data/app/views/renalware/messaging/internal/receipts/_table.html.slim +1 -0
- data/app/views/renalware/navigation/_mdms.html.slim +1 -1
- data/app/views/renalware/navigation/_patients_admin.html.slim +1 -0
- data/app/views/renalware/navigation/_renalware_admin.html.slim +12 -22
- data/app/views/renalware/patients/_side_menu.html.slim +0 -1
- data/app/views/renalware/patients/clinical_summaries/_admissions.html.slim +11 -0
- data/app/views/renalware/patients/clinical_summaries/show.html.slim +7 -0
- data/app/views/renalware/patients/primary_care_physicians/_form.html.slim +1 -3
- data/app/views/renalware/patients/primary_care_physicians/_primary_care_physician.html.slim +1 -3
- data/app/views/renalware/patients/primary_care_physicians/index.html.slim +0 -1
- data/app/views/renalware/patients/side_menu/_actions.html.slim +1 -1
- data/app/views/renalware/patients/side_menu/_general.html.slim +3 -0
- data/app/views/renalware/patients/side_menu/_modalities.html.slim +4 -0
- data/app/views/renalware/pd/_pet_adequacies.html.slim +1 -1
- data/app/views/renalware/pd/dashboards/show/_page_actions.html.slim +3 -1
- data/app/views/renalware/pd/exit_site_infections/_details.html.slim +6 -1
- data/app/views/renalware/pd/exit_site_infections/_fields.html.slim +7 -0
- data/app/views/renalware/pd/exit_site_infections/_form.html.slim +6 -7
- data/app/views/renalware/pd/regime_bags/_regime_bag.html.slim +1 -1
- data/app/views/renalware/pd/regime_bags/_regime_bags.html.slim +1 -1
- data/app/views/renalware/pd/regimes/_current_regime.html.slim +6 -1
- data/app/views/renalware/pd/regimes/_glucose.html.slim +1 -3
- data/app/views/renalware/renal/profiles/_form.html.slim +0 -21
- data/app/views/renalware/renal/profiles/show.html.slim +0 -5
- data/app/views/renalware/research/study_participants/_form.html.slim +2 -2
- data/app/views/renalware/shared/_attributes_list.html.slim +4 -4
- data/app/views/renalware/snippets/snippets/_table.html.slim +10 -5
- data/app/views/renalware/transplants/donations/_form.html.slim +6 -6
- data/app/views/renalware/transplants/live_donors/_filters.html.slim +5 -5
- data/app/views/renalware/transplants/recipient_dashboards/_page_actions.html.slim +5 -1
- data/config/cucumber.yml +2 -2
- data/config/initializers/client_side_validations.rb +8 -10
- data/config/initializers/devise_security_extension.rb +1 -1
- data/config/initializers/inflections.rb +6 -1
- data/config/initializers/renalware.rb +6 -6
- data/config/locales/renalware/admissions/admissions.yml +37 -0
- data/config/locales/renalware/clinics/visit.yml +3 -0
- data/config/locales/renalware/feeds/file.en.yml +17 -0
- data/config/locales/renalware/low_clearance/dashboard.en.yml +11 -0
- data/config/locales/renalware/low_clearance/low_clearance.en.yml +14 -0
- data/config/locales/renalware/low_clearance/profile.en.yml +71 -0
- data/config/locales/renalware/messaging/internal/messages.en.yml +3 -2
- data/config/locales/renalware/patients/side_menu.en.yml +2 -0
- data/config/locales/renalware/pd/dashboard.en.yml +1 -0
- data/config/locales/renalware/pd/exit_site_infection.en.yml +10 -0
- data/config/locales/renalware/renal/profile.en.yml +0 -46
- data/config/locales/renalware/transplants/recipient_dashboards.en.yml +1 -0
- data/config/routes.rb +19 -9
- data/db/migrate/20170523125610_add_esi_fields.rb +9 -0
- data/db/migrate/20170615130714_add_deleted_at_to_practices.rb +7 -0
- data/db/migrate/20170615144802_add_name_to_patient_primary_care_physicians.rb +9 -0
- data/db/migrate/20170620121255_create_patient_practice_memberships.rb +24 -0
- data/db/migrate/20170621102157_add_unique_index_on_practice_code.rb +6 -0
- data/db/migrate/20170627110058_create_feed_file_types.rb +15 -0
- data/db/migrate/20170627110619_create_feed_files.rb +20 -0
- data/db/migrate/20171009181615_add_columns_to_drug_drugs.rb +8 -0
- data/db/migrate/20171127082158_add_region_to_addresses.rb +5 -0
- data/db/migrate/20171127092158_create_function_to_import_practices.rb +123 -0
- data/db/migrate/20171127092359_create_fn_to_insert_gps.rb +145 -0
- data/db/migrate/20171206140738_create_fn_to_load_practice_memberships_csv.rb +62 -0
- data/db/migrate/20171211131918_remove_email_from_primary_care_physicians.rb +7 -0
- data/db/migrate/20171219154529_create_admission_admissions.rb +28 -0
- data/db/migrate/20171222153815_add_unique_constraint_to_patient_practice_memberships.rb +8 -0
- data/db/migrate/20180102155055_update_patient_summaries_to_version_5.rb +5 -0
- data/db/migrate/20180105132358_add_emailed_at_to_letter_recipients.rb +6 -0
- data/db/migrate/20180108185400_remove_null_constraint_from_letters_pathology_snapshot.rb +5 -0
- data/db/migrate/20180112151706_create_low_clearance_profiles.rb +49 -0
- data/db/migrate/20180112151813_create_low_clearance_versions.rb +14 -0
- data/db/seeds/default/feeds/import_file_types.rb +35 -0
- data/db/seeds/default/feeds/seeds.rb +1 -0
- data/db/seeds/default/modalities/descriptions.rb +1 -2
- data/db/seeds/default/practices/nhs_practices_sample.csv +26 -26
- data/db/seeds/default/practices/practices.rb +1 -2
- data/db/seeds/default/practices/primary_care_physicians.rb +3 -4
- data/db/seeds/default/practices/primary_care_physicians_sample.csv +193 -193
- data/db/seeds/default/seeds.rb +1 -0
- data/db/views/patient_summaries_v05.sql +17 -0
- data/lib/dropdown_button_item.rb +1 -1
- data/lib/renalware/configuration.rb +19 -1
- data/lib/renalware/engine.rb +6 -2
- data/lib/renalware/version.rb +1 -1
- data/lib/tasks/feeds/files.rake +34 -0
- data/lib/xml_parser.rb +84 -0
- data/spec/factories/admissions/admissions.rb +11 -0
- data/spec/factories/clinics/clinic_visits.rb +2 -2
- data/spec/factories/feeds/file.rb +14 -0
- data/spec/factories/feeds/file_types.rb +17 -0
- data/spec/factories/low_clearance/modality_descriptions.rb +8 -0
- data/spec/factories/low_clearance/patients.rb +3 -0
- data/spec/factories/low_clearance/profiles.rb +3 -0
- data/spec/factories/modalities/modality_descriptions.rb +1 -1
- data/spec/factories/patients/practice_memberships.rb +7 -0
- data/spec/factories/patients/primary_care_physicians.rb +2 -4
- data/spec/factories/system/users.rb +1 -1
- data/spec/support/factory_bot.rb +1 -1
- data/spec/support/shared_examples/paranoia_examples.rb +14 -0
- metadata +172 -40
- data/app/controllers/renalware/renal/low_clearance/mdm_controller.rb +0 -15
- data/app/controllers/renalware/renal/low_clearance/mdm_patients_controller.rb +0 -29
- data/app/helpers/renalware/section_helper.rb +0 -10
- data/app/models/renalware/renal/low_clearance/mdm_patients_query.rb +0 -64
- data/app/models/renalware/renal/low_clearance/modality_description.rb +0 -13
- data/app/presenters/renalware/renal/low_clearance/mdm_presenter.rb +0 -14
- data/app/views/renalware/renal/low_clearance/mdm_patients/_filters.html.slim +0 -9
- data/app/views/renalware/transplants/registrations/_sections_nav.html.slim +0 -15
- data/config/initializers/application_controller_renderer.rb +0 -13
- data/config/initializers/assets.rb +0 -10
- data/config/initializers/renalware_core.rb +0 -15
- data/config/locales/renalware/renal/low_clearance.en.yml +0 -15
- data/spec/factories/renal/lcc_modality_description.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2adae7283349900967b688b6e5540a25f5f92bedfd851bc4c1ee4867d714cb9c
|
4
|
+
data.tar.gz: 1f294a120860167a97636ff519da463df2503391821c9ca8129dc60177796dcc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df23ef342eff7ef9344655965caae92a6bb1350936ffef3dacbf4f5889db2a2cfeb7453349383d6f58c3d0f9df8c0a4397cbf9cd0d1d9e8413c3581a051dcdc7
|
7
|
+
data.tar.gz: 7b618ddc3af4f1b0359001feaad0c3ae535b49dd1f5072a967e920f267038e6fdc6e7bd879cdf234c05d3a41183c6fd1d1ee3f4bc41aef163c5d95f9e2ae18e1
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -18,7 +18,9 @@ $(document).ready(function() {
|
|
18
18
|
if(window.location.pathname != login_path) {
|
19
19
|
$.getScript("<%= Renalware::Engine.routes.url_helpers.session_timed_out_path %>")
|
20
20
|
.fail(function(jqxhr, settings, exception) {
|
21
|
-
|
21
|
+
<% unless Rails.env.test? %>
|
22
|
+
console.log("Failed to query for session timeout");
|
23
|
+
<% end %>
|
22
24
|
});
|
23
25
|
}
|
24
26
|
};
|
@@ -1,3 +1,24 @@
|
|
1
|
+
.admissions-table table {
|
2
|
+
td, th {
|
3
|
+
vertical-align: top;
|
4
|
+
}
|
5
|
+
|
6
|
+
th.subhead {
|
7
|
+
color: $black;
|
8
|
+
text-align: center;
|
9
|
+
|
10
|
+
&.admission {
|
11
|
+
background-color: $light-yellow;
|
12
|
+
text-shadow: lighten($light-yellow, 20) .05rem .05rem;
|
13
|
+
}
|
14
|
+
|
15
|
+
&.discharge {
|
16
|
+
background-color: $light-green;
|
17
|
+
text-shadow: lighten($light-green, 20) .05rem .05rem
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
1
22
|
#admissions-request-modal {
|
2
23
|
.admissions-request-patient {
|
3
24
|
margin-bottom: 1rem;
|
@@ -38,28 +59,3 @@
|
|
38
59
|
}
|
39
60
|
}
|
40
61
|
|
41
|
-
.admissions-consults-table {
|
42
|
-
tbody tr td:last-child {
|
43
|
-
padding-top: 0.3rem;
|
44
|
-
padding-bottom: 0.3rem;
|
45
|
-
padding-right: 0;
|
46
|
-
}
|
47
|
-
|
48
|
-
td {
|
49
|
-
.button.dropdown {
|
50
|
-
padding: .2rem 2.3rem .2rem .4rem;
|
51
|
-
margin: 0;
|
52
|
-
}
|
53
|
-
.f-dropdown {
|
54
|
-
margin-left: -110px;
|
55
|
-
|
56
|
-
&.open::before,
|
57
|
-
&.open::after {
|
58
|
-
left: 160px;
|
59
|
-
}
|
60
|
-
}
|
61
|
-
.button-group {
|
62
|
-
|
63
|
-
}
|
64
|
-
}
|
65
|
-
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
.feeds-files {
|
2
|
+
td {
|
3
|
+
vertical-align: top;
|
4
|
+
}
|
5
|
+
|
6
|
+
.status span {
|
7
|
+
color: $white;
|
8
|
+
border-radius: 0.3rem;
|
9
|
+
padding: .2rem .5rem;
|
10
|
+
}
|
11
|
+
|
12
|
+
.waiting .status span {
|
13
|
+
background-color: $muted-dark-grey;
|
14
|
+
}
|
15
|
+
|
16
|
+
.processing .status span {
|
17
|
+
background-color: $nhs-warm-yellow;
|
18
|
+
}
|
19
|
+
|
20
|
+
.failure .status span {
|
21
|
+
background-color: $nhs-red;
|
22
|
+
}
|
23
|
+
|
24
|
+
.success .status span {
|
25
|
+
background-color: $nhs-green;
|
26
|
+
}
|
27
|
+
}
|
@@ -118,7 +118,7 @@ ul.provider {
|
|
118
118
|
|
119
119
|
.page-heading {
|
120
120
|
float: left;
|
121
|
-
margin:
|
121
|
+
margin: 0.5rem 0 1rem;
|
122
122
|
width: 100%;
|
123
123
|
|
124
124
|
& > li {
|
@@ -299,16 +299,19 @@ ul.provider {
|
|
299
299
|
clear: both;
|
300
300
|
height: 2rem;
|
301
301
|
padding: 0.4em 0.2em 0.5em 0.6em;
|
302
|
-
background-color: $
|
303
|
-
|
302
|
+
background-color: $nhs-orange;
|
303
|
+
color: $white;
|
304
304
|
|
305
305
|
&:hover {
|
306
|
-
background-color: lighten($
|
306
|
+
background-color: lighten($nhs-orange, 5);
|
307
|
+
}
|
308
|
+
|
309
|
+
td, td.actions a {
|
310
|
+
color: inherit;
|
307
311
|
}
|
308
312
|
|
309
313
|
td {
|
310
314
|
border: 0;
|
311
|
-
border-top: dotted 1px $light-grey;
|
312
315
|
}
|
313
316
|
|
314
317
|
.icon {
|
@@ -320,6 +323,10 @@ ul.provider {
|
|
320
323
|
overflow: hidden;
|
321
324
|
text-overflow: ellipsis;
|
322
325
|
white-space: nowrap;
|
326
|
+
|
327
|
+
&:before {
|
328
|
+
content: "Alert: ";
|
329
|
+
}
|
323
330
|
}
|
324
331
|
|
325
332
|
.author {
|
@@ -330,26 +337,20 @@ ul.provider {
|
|
330
337
|
.actions {
|
331
338
|
width: 3rem;
|
332
339
|
padding-right: 1rem;
|
333
|
-
|
334
|
-
a {
|
335
|
-
color: $dark-grey;
|
336
|
-
}
|
337
340
|
}
|
338
341
|
|
339
342
|
&.urgent {
|
340
|
-
background-color: $nhs-
|
343
|
+
background-color: $nhs-red;
|
341
344
|
|
342
345
|
&:hover {
|
343
|
-
background-color: lighten($nhs-
|
346
|
+
background-color: lighten($nhs-red, 5);
|
344
347
|
}
|
345
348
|
}
|
346
349
|
|
347
|
-
|
348
|
-
.
|
349
|
-
|
350
|
-
|
351
|
-
display: table-cell;
|
352
|
-
}
|
350
|
+
.icon {
|
351
|
+
@extend .fa;
|
352
|
+
@extend .fa-warning;
|
353
|
+
display: table-cell;
|
353
354
|
}
|
354
355
|
}
|
355
356
|
|
@@ -3,10 +3,16 @@
|
|
3
3
|
border-bottom: solid 1px $winter-sky;
|
4
4
|
margin-bottom: 10px;
|
5
5
|
|
6
|
-
h1, h2 {
|
6
|
+
h1, h2, h3 {
|
7
7
|
margin: 0 0 0.5rem 0;
|
8
8
|
font-size: 1.3rem;
|
9
9
|
color: $dark-grey;
|
10
|
+
display: inline-block;
|
11
|
+
}
|
12
|
+
|
13
|
+
h3 {
|
14
|
+
font-weight: normal;
|
15
|
+
color: $dashboard-muted-color;
|
10
16
|
}
|
11
17
|
|
12
18
|
.reveal-modal-close {
|
@@ -65,7 +65,7 @@ dd.patient-name {
|
|
65
65
|
.patient-side-nav {
|
66
66
|
background-color: $patient-menu-background-colour;
|
67
67
|
padding: 0.6rem 0;
|
68
|
-
padding-bottom:
|
68
|
+
padding-bottom: 11rem;
|
69
69
|
position: absolute;
|
70
70
|
width: $patient-side-nav-width;
|
71
71
|
overflow-y: auto;
|
@@ -87,7 +87,7 @@ dd.patient-name {
|
|
87
87
|
|
88
88
|
a {
|
89
89
|
border-radius: 3px;
|
90
|
-
padding: 0.
|
90
|
+
padding: 0.1rem 0.5rem;
|
91
91
|
text-decoration: underline;
|
92
92
|
color: $nhs-blue;
|
93
93
|
}
|
@@ -1,4 +1,24 @@
|
|
1
1
|
|
2
|
+
table td.actions-dropdown {
|
3
|
+
padding-top: 0.3rem;
|
4
|
+
padding-bottom: 0.3rem;
|
5
|
+
padding-right: 0;
|
6
|
+
|
7
|
+
.button.dropdown {
|
8
|
+
padding: .2rem 2.3rem .2rem .4rem;
|
9
|
+
margin: 0;
|
10
|
+
}
|
11
|
+
|
12
|
+
.f-dropdown {
|
13
|
+
margin-left: -110px;
|
14
|
+
|
15
|
+
&.open::before,
|
16
|
+
&.open::after {
|
17
|
+
left: 160px;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
2
22
|
table {
|
3
23
|
// This will have to be removed at some point to comply with NHS table guidelines
|
4
24
|
width: 100%;
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
module Admin
|
5
|
+
module Feeds
|
6
|
+
class FilesController < BaseController
|
7
|
+
include Renalware::Concerns::Pageable
|
8
|
+
|
9
|
+
def index
|
10
|
+
authorize files
|
11
|
+
render locals: {
|
12
|
+
files: files,
|
13
|
+
uploaded_file: Renalware::Feeds::Files::FileUploadForm.new
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def create
|
18
|
+
authorize Renalware::Feeds::File, :create?
|
19
|
+
form = Renalware::Feeds::Files::FileUploadForm.new(file_upload_params)
|
20
|
+
|
21
|
+
if form.valid?
|
22
|
+
file = Renalware::Feeds::Files::CreateFeedFile.call(
|
23
|
+
uploaded_file: Pathname.new(form.file.path),
|
24
|
+
file_type: Renalware::Feeds::FileType.find(form.file_type_id),
|
25
|
+
user: current_user
|
26
|
+
)
|
27
|
+
Renalware::Feeds::Files::EnqueueFileForBackgroundProcessing.call(file)
|
28
|
+
redirect_to(
|
29
|
+
admin_feeds_files_path,
|
30
|
+
notice: "File #{form.file.original_filename} queued for processing"
|
31
|
+
)
|
32
|
+
else
|
33
|
+
render :index, locals: { files: files, uploaded_file: form }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def files
|
40
|
+
@files ||= Renalware::Feeds::File.ordered.page(page).per(per_page)
|
41
|
+
end
|
42
|
+
|
43
|
+
def file_upload_params
|
44
|
+
params.require(:file_upload).permit(:file, :file_type_id)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require "renalware/admissions"
|
2
|
+
require "collection_presenter"
|
3
|
+
|
4
|
+
module Renalware
|
5
|
+
module Admissions
|
6
|
+
class AdmissionsController < BaseController
|
7
|
+
include Renalware::Concerns::Pageable
|
8
|
+
|
9
|
+
def index
|
10
|
+
admissions = search_form.submit.page(page).per(per_page)
|
11
|
+
authorize admissions
|
12
|
+
|
13
|
+
render locals: {
|
14
|
+
admissions: CollectionPresenter.new(admissions, AdmissionPresenter),
|
15
|
+
form: search_form
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def new
|
20
|
+
admission = Admission.new(admitted_on: Time.zone.today)
|
21
|
+
authorize admission
|
22
|
+
render_new(admission)
|
23
|
+
end
|
24
|
+
|
25
|
+
def create
|
26
|
+
admission = build_admission
|
27
|
+
authorize admission
|
28
|
+
if admission.save_by(current_user)
|
29
|
+
redirect_to admissions_admissions_path, notice: success_msg_for("admission")
|
30
|
+
else
|
31
|
+
render_new(admission)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def edit
|
36
|
+
render_edit(find_and_authorize_admission)
|
37
|
+
end
|
38
|
+
|
39
|
+
def update
|
40
|
+
admission = find_and_authorize_admission
|
41
|
+
if admission.update_by(current_user, admission_params)
|
42
|
+
redirect_to admissions_admissions_path, notice: success_msg_for("admission")
|
43
|
+
else
|
44
|
+
render_edit(admission)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def destroy
|
49
|
+
find_and_authorize_admission.destroy!
|
50
|
+
redirect_to admissions_admissions_path, notice: success_msg_for("admission")
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def build_admission
|
56
|
+
patient = Patient.find_by(id: admission_params[:patient_id])
|
57
|
+
args = admission_params.merge(modality_at_admission: patient&.current_modality)
|
58
|
+
Admission.new(args)
|
59
|
+
end
|
60
|
+
|
61
|
+
def search_form
|
62
|
+
@search_form ||= begin
|
63
|
+
options = params.key?(:query) ? search_params : {}
|
64
|
+
AdmissionSearchForm.new(options)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def find_and_authorize_admission
|
69
|
+
Admission.find(params[:id]).tap do |admission|
|
70
|
+
authorize admission
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def render_new(admission)
|
75
|
+
render :new, locals: { admission: admission }
|
76
|
+
end
|
77
|
+
|
78
|
+
def render_edit(admission)
|
79
|
+
render :edit, locals: { admission: admission }
|
80
|
+
end
|
81
|
+
|
82
|
+
def search_params
|
83
|
+
params
|
84
|
+
.require(:query) {}
|
85
|
+
.permit(:hospital_unit_id, :hospital_ward_id, :status, :term)
|
86
|
+
end
|
87
|
+
|
88
|
+
def admission_params
|
89
|
+
params
|
90
|
+
.require(:admissions_admission)
|
91
|
+
.permit(
|
92
|
+
:hospital_ward_id, :patient_id, :q,
|
93
|
+
:admitted_on, :admission_type, :consultant, :modality,
|
94
|
+
:reason_for_admission, :notes, :transferred_on, :transferred_to,
|
95
|
+
:discharged_on, :discharge_destination, :destination_notes,
|
96
|
+
:discharge_summary, :summarised_on, :summarised_by_id, :modality_at_admission
|
97
|
+
)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "renalware/admissions"
|
2
|
+
require "collection_presenter"
|
3
|
+
|
4
|
+
module Renalware
|
5
|
+
module Admissions
|
6
|
+
class PatientAdmissionsController < BaseController
|
7
|
+
include Renalware::Concerns::Pageable
|
8
|
+
|
9
|
+
def index
|
10
|
+
admissions = Admission
|
11
|
+
.where(patient_id: patient.id).page(page).per(per_page)
|
12
|
+
.order(admitted_on: :desc)
|
13
|
+
authorize admissions
|
14
|
+
render locals: {
|
15
|
+
admissions: CollectionPresenter.new(admissions, AdmissionPresenter)
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -19,6 +19,35 @@ module Renalware
|
|
19
19
|
max_duration_has_passed ? dashboard_path : super
|
20
20
|
end
|
21
21
|
|
22
|
+
# Important note: Since Devise 4.4.0 the gem's SessionsController#create will do an implicit
|
23
|
+
# check to see if the resource (User signing-in) is valid (or rather, I think it checks for the
|
24
|
+
# presence of anything in resource.errors). If the user is not valid it now
|
25
|
+
# skips the redirect to the path specified in .after_sign_in_path_for.
|
26
|
+
# The result for us was that the user _could_ log on, but they stayed on the login screen
|
27
|
+
# (the appearance of the menu indicated they were in fact logged in). The redirect was not
|
28
|
+
# happening because the user was invalid (ie there were validation errors and
|
29
|
+
# user.valid? == false).
|
30
|
+
# The reason for the validation errors is that we have some conditional validation in User;
|
31
|
+
# for instance only validate #signature during an update, not on
|
32
|
+
# a create - after all #signature is something they set up later in their 'profile'.
|
33
|
+
# So what we have to do here is stop Devise from thinking the user in invalid by skipping
|
34
|
+
# validations.
|
35
|
+
# See https://github.com/plataformatec/devise/issues/4742#issuecomment-355154023
|
36
|
+
# Note that ideally we should move signature, professional position etc to a Profile model
|
37
|
+
# and then we could remove the conditional validation.
|
38
|
+
def create
|
39
|
+
super do |resource|
|
40
|
+
# This first line clears any existing errors that prevent Devise redirecting on successful
|
41
|
+
# login. It does not negate any password validations however. Its just a workaround to get
|
42
|
+
# the redirect to work.
|
43
|
+
resource.errors.clear
|
44
|
+
# This second line means resource.valid? returns true ie conditional on: :update validations
|
45
|
+
# are skipped. This line is not necessary (clearing the error above actually solves the
|
46
|
+
# problem) but does no harm and is belt and braces.
|
47
|
+
resource.skip_validation = true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
22
51
|
private
|
23
52
|
|
24
53
|
def last_sign_in_at
|
@@ -8,7 +8,15 @@ module Renalware
|
|
8
8
|
def create
|
9
9
|
letter = @patient.letters.pending_review.find(params[:letter_id])
|
10
10
|
|
11
|
-
|
11
|
+
# See config.broadcast_subscription_map for ApproveLetter event subscribers
|
12
|
+
# We use an event subscription pattern to drive the delivery of letters at this point
|
13
|
+
# rather than hard-wiring in a call to DeliverLetter.call etc. This is because letter
|
14
|
+
# delivery is hospital-specific, and each might want to plumb in different or many classes
|
15
|
+
# to handle different aspects of letter processing - not just delivery but also EPR etc.
|
16
|
+
ApproveLetter
|
17
|
+
.build(letter)
|
18
|
+
.broadcasting_to_configured_subscribers
|
19
|
+
.call(by: current_user)
|
12
20
|
|
13
21
|
redirect_to patient_clinical_summary_path(@patient), notice: t(".success")
|
14
22
|
end
|
@@ -23,8 +23,31 @@ module Renalware
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
def edit
|
27
|
+
contact = patient.contacts.find(params[:id])
|
28
|
+
render_edit(contact)
|
29
|
+
end
|
30
|
+
|
31
|
+
def update
|
32
|
+
contact = patient.contacts.find(params[:id])
|
33
|
+
if contact.update(update_contact_params)
|
34
|
+
flash.now[:notice] = success_msg_for("contact")
|
35
|
+
render locals: { patient: patient, contact: ContactPresenter.new(contact) }
|
36
|
+
else
|
37
|
+
render_edit(contact)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
26
41
|
private
|
27
42
|
|
43
|
+
def render_edit(contact)
|
44
|
+
render :edit, locals: {
|
45
|
+
patient: patient,
|
46
|
+
contact: contact,
|
47
|
+
contact_descriptions: find_contact_descriptions
|
48
|
+
}, layout: false
|
49
|
+
end
|
50
|
+
|
28
51
|
def build_contact
|
29
52
|
Contact.new.tap(&:build_person)
|
30
53
|
end
|
@@ -55,6 +78,12 @@ module Renalware
|
|
55
78
|
.tap { |p| try_merge_person_creator(p) }
|
56
79
|
end
|
57
80
|
|
81
|
+
def update_contact_params
|
82
|
+
params
|
83
|
+
.require(:letters_contact)
|
84
|
+
.permit(:default_cc, :description_id, :other_description, :notes)
|
85
|
+
end
|
86
|
+
|
58
87
|
def contact_attributes
|
59
88
|
[
|
60
89
|
:person_id, :default_cc, :description_id, :other_description,
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_dependency "renalware/low_clearance"
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
module LowClearance
|
5
|
+
class DashboardsController < LowClearance::BaseController
|
6
|
+
def show
|
7
|
+
authorize patient
|
8
|
+
render :show, locals: {
|
9
|
+
patient: patient,
|
10
|
+
dashboard: dashboard_presenter
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def dashboard_presenter
|
17
|
+
DashboardPresenter.new(user: current_user, patient: patient)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_dependency "renalware/renal"
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
module LowClearance
|
5
|
+
class MDMController < Renalware::MDMController
|
6
|
+
def show
|
7
|
+
authorize patient
|
8
|
+
presenter = LowClearance::MDMPresenter.new(patient: patient, view_context: view_context)
|
9
|
+
render_show(mdm_presenter: presenter)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_dependency "renalware/renal"
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
module LowClearance
|
5
|
+
class MDMPatientsController < Renalware::MDMPatientsController
|
6
|
+
def index
|
7
|
+
render_index(query: query,
|
8
|
+
page_title: t(".page_title"),
|
9
|
+
view_proc: ->(patient) { patient_low_clearance_mdm_path(patient) })
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def query
|
15
|
+
LowClearance::MDMPatientsQuery.new(query: q, named_filter: named_filter)
|
16
|
+
end
|
17
|
+
|
18
|
+
def named_filter
|
19
|
+
params[:named_filter]
|
20
|
+
end
|
21
|
+
|
22
|
+
def q
|
23
|
+
params[:q]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|