renalware-core 2.0.0.pre.beta12 → 2.0.0.pre.rc1
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/stylesheets/renalware/modules/_letters.scss +0 -1
- data/app/assets/stylesheets/renalware/modules/_pathology.scss +4 -0
- data/app/assets/stylesheets/renalware/partials/_beta_banner.scss +26 -0
- data/app/assets/stylesheets/renalware/partials/_errors.scss +4 -0
- data/app/controllers/renalware/admissions/consults_controller.rb +0 -7
- data/app/controllers/renalware/concerns/devise_controller_methods.rb +9 -9
- data/app/controllers/renalware/hd/mdm_controller.rb +2 -3
- data/app/controllers/renalware/hd/mdm_patients_controller.rb +7 -1
- data/app/controllers/renalware/letters/letters_controller.rb +1 -1
- data/app/controllers/renalware/letters/lists_controller.rb +13 -6
- data/app/controllers/renalware/mdm_controller.rb +1 -1
- data/app/controllers/renalware/mdm_patients_controller.rb +1 -1
- data/app/controllers/renalware/patients/bookmarks_controller.rb +1 -1
- data/app/controllers/renalware/patients/clinical_summaries_controller.rb +1 -1
- data/app/controllers/renalware/pd/mdm_controller.rb +2 -3
- data/app/controllers/renalware/pd/mdm_patients_controller.rb +2 -0
- data/app/controllers/renalware/renal/low_clearance/mdm_controller.rb +15 -0
- data/app/controllers/renalware/renal/low_clearance/mdm_patients_controller.rb +29 -0
- data/app/controllers/renalware/session_timeout_controller.rb +2 -0
- data/app/controllers/renalware/system/user_feedback_controller.rb +35 -0
- data/app/controllers/renalware/transplants/mdm_controller.rb +1 -3
- data/app/controllers/renalware/transplants/mdm_patients_controller.rb +2 -0
- data/app/helpers/renalware/application_helper.rb +1 -42
- data/app/helpers/renalware/clinic_helper.rb +3 -1
- data/app/helpers/renalware/infection_organisms_helper.rb +20 -0
- data/app/helpers/renalware/mdm_helper.rb +9 -7
- data/app/helpers/renalware/prescriptions_helper.rb +20 -0
- data/app/helpers/renalware/side_nav_helper.rb +0 -8
- data/app/jobs/application_job.rb +2 -0
- data/app/models/concerns/renalware/explicit_state_model.rb +2 -0
- data/app/models/concerns/renalware/patient_pathology_scopes.rb +39 -0
- data/app/models/concerns/renalware/personable.rb +3 -2
- data/app/models/renalware/clinics/appointment.rb +4 -4
- data/app/models/renalware/clinics/clinic_visit.rb +2 -2
- data/app/models/renalware/drugs/classification.rb +11 -0
- data/app/models/renalware/drugs/drug.rb +3 -3
- data/app/models/renalware/drugs/type.rb +2 -1
- data/app/models/renalware/hd/mdm_patients_query.rb +4 -9
- data/app/models/renalware/hd/session/closed.rb +10 -3
- data/app/models/renalware/hd/session.rb +2 -1
- data/app/models/renalware/hd/sessions/auditable_session_collection.rb +7 -7
- data/app/models/renalware/letters/archive.rb +1 -1
- data/app/models/renalware/letters/description.rb +1 -1
- data/app/models/renalware/letters/event/clinic_visit.rb +4 -0
- data/app/models/renalware/letters/letter_factory.rb +1 -0
- data/app/models/renalware/letters/part/allergies.rb +1 -1
- data/app/models/renalware/letters/part/prescriptions.rb +1 -1
- data/app/models/renalware/letters/part/problems.rb +1 -1
- data/app/models/renalware/letters/part/recent_pathology_results.rb +14 -12
- data/app/models/renalware/letters/part.rb +3 -2
- data/app/models/renalware/letters/recipient.rb +1 -1
- data/app/models/renalware/letters/signature.rb +3 -1
- data/app/models/renalware/pathology/current_observations_for_descriptions_query.rb +7 -4
- data/app/models/renalware/pathology/observations_for_descriptions_query.rb +1 -2
- data/app/models/renalware/patients/bookmark.rb +1 -1
- data/app/models/renalware/patients/patient_hospital_identifiers.rb +4 -4
- data/app/models/renalware/patients/practice.rb +3 -3
- data/app/models/renalware/patients/primary_care_physician.rb +2 -2
- data/app/models/renalware/renal/low_clearance/mdm_patients_query.rb +63 -0
- data/app/models/renalware/renal/low_clearance/modality_description.rb +13 -0
- data/app/models/renalware/renal/profile.rb +2 -0
- data/app/models/renalware/renal/registry/preflight_checks/deaths_query.rb +1 -1
- data/app/models/renalware/renal/version.rb +9 -0
- data/app/models/renalware/renal.rb +4 -0
- data/app/models/renalware/role.rb +4 -3
- data/app/models/renalware/roles_user.rb +6 -0
- data/app/models/renalware/system/user_feedback.rb +16 -0
- data/app/models/renalware/transplants/donor_modality_description.rb +3 -0
- data/app/models/renalware/transplants/recipient_modality_description.rb +3 -0
- data/app/models/renalware/user.rb +14 -9
- data/app/models/renalware.rb +2 -5
- data/app/policies/renalware/base_policy.rb +1 -1
- data/app/policies/renalware/system/user_feedback_policy.rb +8 -0
- data/app/presenters/renalware/hd/mdm_presenter.rb +2 -0
- data/app/presenters/renalware/hd/session_access_presenter.rb +1 -1
- data/app/presenters/renalware/hd/session_presenter.rb +4 -5
- data/app/presenters/renalware/hd/station_presenter.rb +1 -1
- data/app/presenters/renalware/letters/letter_presenter.rb +4 -2
- data/app/presenters/renalware/mdm_presenter.rb +3 -3
- data/app/presenters/renalware/pathology/observations_diff.rb +110 -0
- data/app/presenters/renalware/renal/clinical_summary_presenter.rb +32 -4
- data/app/presenters/renalware/renal/low_clearance/mdm_presenter.rb +14 -0
- data/app/views/renalware/accesses/assessments/show.html.slim +1 -1
- data/app/views/renalware/accesses/dashboards/show.html.slim +1 -1
- data/app/views/renalware/accesses/procedures/show.html.slim +1 -1
- data/app/views/renalware/accesses/profiles/_list.html.slim +1 -1
- data/app/views/renalware/accesses/profiles/show.html.slim +1 -1
- data/app/views/renalware/admissions/consults/_form.html.slim +12 -12
- data/app/views/renalware/admissions/requests/_create_request_link.html.slim +1 -1
- data/app/views/renalware/admissions/requests/_form.html.slim +1 -1
- data/app/views/renalware/clinical/allergies/_new.html.slim +3 -3
- data/app/views/renalware/clinical/allergy_statuses/_form.html.slim +3 -3
- data/app/views/renalware/clinical/dry_weights/{_row.html.slim → _dry_weight.html.slim} +0 -0
- data/app/views/renalware/clinical/dry_weights/_list.html.slim +1 -2
- data/app/views/renalware/clinical/dry_weights/index.html.slim +1 -2
- data/app/views/renalware/clinical/profiles/show.html.slim +1 -1
- data/app/views/renalware/events/types/index.html.slim +1 -1
- data/app/views/renalware/hd/diaries/show.pdf.slim +1 -0
- data/app/views/renalware/hd/diary_slots/_form.html.slim +10 -10
- data/app/views/renalware/hd/diary_slots/_tab.html.slim +4 -4
- data/app/views/renalware/hd/mdm/_sessions.html.slim +1 -1
- data/app/views/renalware/hd/mdm_patients/_table.html.slim +7 -8
- data/app/views/renalware/hd/ongoing_sessions/_table.html.slim +1 -2
- data/app/views/renalware/hd/sessions/_form.html.slim +2 -2
- data/app/views/renalware/hd/sessions/_list.html.slim +1 -1
- data/app/views/renalware/hd/sessions/_row.html.slim +1 -1
- data/app/views/renalware/hd/sessions/_session_nav.html.slim +1 -1
- data/app/views/renalware/hd/sessions/_table.html.slim +1 -1
- data/app/views/renalware/hd/sessions/closed/_row.html.slim +1 -1
- data/app/views/renalware/hd/sessions/open/_row.html.slim +1 -1
- data/app/views/renalware/hd/stations/edit.html.slim +1 -1
- data/app/views/renalware/hd/stations/index.html.slim +1 -1
- data/app/views/renalware/hd/stations/new.html.slim +1 -1
- data/app/views/renalware/layouts/_patient.html.slim +1 -1
- data/app/views/renalware/layouts/application.html.slim +3 -1
- data/app/views/renalware/letters/contacts/_new_person.html.slim +2 -2
- data/app/views/renalware/letters/contacts/_person_from_directory.html.slim +2 -2
- data/app/views/renalware/letters/formatted_letters/_letter.html.slim +3 -3
- data/app/views/renalware/letters/formatted_letters/show.html.slim +1 -1
- data/app/views/renalware/letters/formatted_letters/show.inlinepdf.slim +1 -1
- data/app/views/renalware/letters/formatted_letters/show.pdf.slim +1 -1
- data/app/views/renalware/letters/letters/_electronic_ccs.html.slim +1 -1
- data/app/views/renalware/letters/letters/_form.html.slim +5 -2
- data/app/views/renalware/letters/letters/_pathology.html.slim +26 -0
- data/app/views/renalware/letters/letters/_preview.html.slim +3 -3
- data/app/views/renalware/letters/letters/edit.html.slim +11 -12
- data/app/views/renalware/letters/letters/new.html.slim +1 -1
- data/app/views/renalware/letters/lists/_letter.html.slim +1 -2
- data/app/views/renalware/letters/lists/show.html.slim +13 -14
- data/app/views/renalware/letters/parts/_recent_pathology_results.html.slim +3 -8
- data/app/views/renalware/letters/shared/_electronic_cc_type_tabs.html.slim +3 -3
- data/app/views/renalware/mdm/_letters.html.slim +1 -1
- data/app/views/renalware/mdm/_measurements.html.slim +1 -1
- data/app/views/renalware/mdm_patients/_patient.html.slim +1 -1
- data/app/views/renalware/mdm_patients/_table.html.slim +11 -13
- data/app/views/renalware/messaging/internal/messages/_form.html.slim +7 -7
- data/app/views/renalware/messaging/internal/messages/_send_message_link.html.slim +1 -1
- data/app/views/renalware/messaging/internal/messages/_send_reply_link.html.slim +1 -1
- data/app/views/renalware/messaging/internal/receipts/_sent_receipt.html.slim +1 -1
- data/app/views/renalware/messaging/shared/_messages_type_tabs.html.slim +3 -3
- data/app/views/renalware/navigation/_branding.html.slim +1 -1
- data/app/views/renalware/navigation/_mdms.html.slim +1 -0
- data/app/views/renalware/pathology/observations/_diff.html.slim +22 -0
- data/app/views/renalware/patients/_layout.html.slim +1 -1
- data/app/views/renalware/patients/alerts/_create_alert_link.html.slim +1 -1
- data/app/views/renalware/patients/alerts/_form.html.slim +4 -4
- data/app/views/renalware/patients/alerts/_list.html.slim +1 -2
- data/app/views/renalware/patients/bookmarks/_delete.html.slim +1 -1
- data/app/views/renalware/patients/bookmarks/_new.html.slim +8 -8
- data/app/views/renalware/patients/clinical_summaries/_events.html.slim +6 -4
- data/app/views/renalware/patients/clinical_summaries/_letters.html.slim +6 -3
- data/app/views/renalware/patients/clinical_summaries/_prescriptions.html.slim +2 -2
- data/app/views/renalware/patients/clinical_summaries/_problems.html.slim +2 -2
- data/app/views/renalware/patients/clinical_summaries/show.html.slim +14 -4
- data/app/views/renalware/patients/patients/show.html.slim +1 -1
- data/app/views/renalware/patients/side_menu/_modalities.html.slim +2 -2
- data/app/views/renalware/patients/worries/_delete.html.slim +1 -1
- data/app/views/renalware/patients/worries/_new.html.slim +6 -6
- data/app/views/renalware/pd/dashboards/show.html.slim +1 -1
- data/app/views/renalware/pd/infection_organisms/_table.html.slim +3 -3
- data/app/views/renalware/pd/pet_adequacy_results/_form.html.slim +23 -23
- data/app/views/renalware/pd/regime_bags/_form.html.slim +5 -5
- data/app/views/renalware/pd/regime_bags/_regime_bag.html.slim +2 -2
- data/app/views/renalware/pd/regime_bags/_regime_bags.html.slim +1 -1
- data/app/views/renalware/pd/regimes/_current_regime.html.slim +1 -1
- data/app/views/renalware/problems/problems/index.html.slim +1 -1
- data/app/views/renalware/renal/low_clearance/mdm/_bottom.html.slim +3 -0
- data/app/views/renalware/renal/low_clearance/mdm/_low_clearance_profile.html.slim +4 -0
- data/app/views/renalware/renal/low_clearance/mdm/_top.html.slim +5 -0
- data/app/views/renalware/renal/low_clearance/mdm_patients/_filters.html.slim +9 -0
- data/app/views/renalware/renal/profiles/_mini.html.slim +1 -1
- data/app/views/renalware/reporting/audits/index.html.slim +1 -1
- data/app/views/renalware/research/study_participants/_form.html.slim +3 -3
- data/app/views/renalware/shared/_modal_close_link.html.slim +1 -1
- data/app/views/renalware/shared/documents/_blood_pressure_input.html.slim +1 -1
- data/app/views/renalware/snippets/snippets/_form.html.slim +4 -4
- data/app/views/renalware/snippets/snippets/_list.html.slim +3 -3
- data/app/views/renalware/snippets/snippets/_row.html.slim +2 -2
- data/app/views/renalware/snippets/snippets/_table.html.slim +7 -7
- data/app/views/renalware/snippets/snippets/edit.html.slim +1 -1
- data/app/views/renalware/snippets/snippets/new.html.slim +1 -1
- data/app/views/renalware/system/user_feedback/_banner.html.slim +9 -0
- data/app/views/renalware/system/user_feedback/new.html.slim +13 -0
- data/app/views/renalware/transplants/donor_dashboards/show.html.slim +2 -2
- data/app/views/renalware/transplants/recipient_dashboards/show.html.slim +2 -2
- data/config/initializers/inflections.rb +2 -0
- data/config/locales/custom.yml +7 -0
- data/config/locales/renalware/letters/letter.en.yml +2 -2
- data/config/locales/renalware/navigation/renal.en.yml +1 -0
- data/config/locales/renalware/renal/low_clearance.en.yml +15 -0
- data/config/permissions.yml +1 -0
- data/config/routes.rb +10 -0
- data/db/migrate/20171114120904_add_pathology_snapshot_to_letters.rb +5 -0
- data/db/migrate/20171123123712_add_id_to_roles_users.rb +5 -0
- data/db/migrate/20171123143534_add_pk_to_drug_types_drugs.rb +18 -0
- data/db/migrate/20171123154116_create_renal_versions.rb +14 -0
- data/db/migrate/20171128163543_add_more_missing_indexes.rb +16 -0
- data/db/migrate/20171206121652_add_loinc_code_to_observation_descriptions.rb +5 -0
- data/db/migrate/20171208211206_create_user_feedback.rb +10 -0
- data/db/migrate/20171211130716_remove_unused_patients_cols.rb +6 -0
- data/db/seeds/default/modalities/descriptions.rb +1 -0
- data/db/views/reporting_anaemia_audit_v01.sql +1 -1
- data/db/views/reporting_bone_audit_v01.sql +1 -1
- data/lib/renalware/configuration.rb +3 -0
- data/lib/renalware/version.rb +1 -1
- data/spec/factories/modalities/modality_descriptions.rb +3 -2
- data/spec/factories/renal/lcc_modality_description.rb +9 -0
- data/spec/factories/system/roles.rb +2 -2
- data/spec/factories/system/users.rb +3 -3
- data/spec/support/login_macros.rb +2 -2
- data/spec/support/roles_spec_helper.rb +1 -1
- metadata +35 -6
- data/app/models/renalware/patients/message_listener.rb +0 -31
- data/config/initializers/version.rb +0 -3
- data/spec/support/database_cleaner.rb +0 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 368a9f7e47981dd189746ea33f2f9170da40feea
|
|
4
|
+
data.tar.gz: 661e00b27713f1b17a461bfff57e9afda54ce746
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 343b0bab9e105e8413782e4c4bd310e6ae25982090e8bd1cfdde21e72b3c914b458914f6a42078a0fd5a5c5ad2064144fe3e0b8d66d49c517706e421da0e3830
|
|
7
|
+
data.tar.gz: 5745969d2babe47614fdcb95717fb837071c0dfce4b6f782c1d60a7418792efb3a380b7409c520a4fc2f3ceeaa249412eb7c08f6a29ddce065f6f3bb0d088be4
|
data/README.md
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.beta_banner {
|
|
2
|
+
background-color: $nhs-orange;
|
|
3
|
+
padding: 0.4rem 1rem;
|
|
4
|
+
color: $white;
|
|
5
|
+
text-align: center;
|
|
6
|
+
|
|
7
|
+
span {
|
|
8
|
+
font-size: 1.1rem;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.button {
|
|
12
|
+
margin: 0;
|
|
13
|
+
margin-left: 1rem;
|
|
14
|
+
padding: 0.3rem 0.8rem;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.new_feedback {
|
|
19
|
+
.radio {
|
|
20
|
+
label {
|
|
21
|
+
input {
|
|
22
|
+
margin: 0 1rem 0.5rem 0
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -52,13 +52,6 @@ module Renalware
|
|
|
52
52
|
|
|
53
53
|
private
|
|
54
54
|
|
|
55
|
-
def present(consults)
|
|
56
|
-
CollectionPresenter.new(
|
|
57
|
-
Consult.all.order(created_at: :desc).page(page).per(per_page),
|
|
58
|
-
ConsultPresenter
|
|
59
|
-
)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
55
|
def find_and_authorize_consult
|
|
63
56
|
Consult.find(params[:id]).tap do |consult|
|
|
64
57
|
authorize consult
|
|
@@ -41,15 +41,15 @@ module Renalware
|
|
|
41
41
|
devise_parameter_sanitizer.permit(
|
|
42
42
|
:account_update,
|
|
43
43
|
keys: [
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
:given_name,
|
|
45
|
+
:family_name,
|
|
46
|
+
:username,
|
|
47
|
+
:email,
|
|
48
|
+
:password,
|
|
49
|
+
:password_confirmation,
|
|
50
|
+
:current_password,
|
|
51
|
+
:professional_position,
|
|
52
|
+
:signature
|
|
53
53
|
]
|
|
54
54
|
)
|
|
55
55
|
end
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
require_dependency "renalware/hd
|
|
1
|
+
require_dependency "renalware/hd"
|
|
2
2
|
|
|
3
3
|
module Renalware
|
|
4
4
|
module HD
|
|
5
5
|
class MDMController < Renalware::MDMController
|
|
6
|
-
before_action :load_patient
|
|
7
|
-
|
|
8
6
|
def show
|
|
7
|
+
authorize patient
|
|
9
8
|
mdm_presenter = HD::MDMPresenter.new(patient: patient, view_context: view_context)
|
|
10
9
|
render_show(mdm_presenter: mdm_presenter)
|
|
11
10
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require_dependency "renalware/hd"
|
|
2
|
+
|
|
1
3
|
module Renalware
|
|
2
4
|
module HD
|
|
3
5
|
class MDMPatientsController < Renalware::MDMPatientsController
|
|
@@ -8,7 +10,11 @@ module Renalware
|
|
|
8
10
|
end
|
|
9
11
|
|
|
10
12
|
def index
|
|
11
|
-
|
|
13
|
+
query = HD::MDMPatientsQuery.new(
|
|
14
|
+
relation: HD::Patient.eager_load(hd_profile: [:hospital_unit]),
|
|
15
|
+
q: params[:q]
|
|
16
|
+
)
|
|
17
|
+
render_index(query: query,
|
|
12
18
|
page_title: t(".page_title"),
|
|
13
19
|
view_proc: ->(patient) { patient_hd_mdm_path(patient) },
|
|
14
20
|
patient_presenter_class: HD::PatientPresenter)
|
|
@@ -184,7 +184,7 @@ module Renalware
|
|
|
184
184
|
[
|
|
185
185
|
:event_type, :event_id, :clinical,
|
|
186
186
|
:letterhead_id, :author_id, :description, :issued_on, :enclosures,
|
|
187
|
-
:salutation, :body, :notes,
|
|
187
|
+
:salutation, :body, :notes, :pathology_timestamp,
|
|
188
188
|
main_recipient_attributes: main_recipient_attributes,
|
|
189
189
|
cc_recipients_attributes: cc_recipients_attributes,
|
|
190
190
|
electronic_cc_recipient_ids: []
|
|
@@ -7,14 +7,21 @@ module Renalware
|
|
|
7
7
|
|
|
8
8
|
def show
|
|
9
9
|
query = LetterQuery.new(q: params[:q])
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
letters = find_and_authorize_letters(query)
|
|
11
|
+
|
|
12
|
+
render locals: {
|
|
13
|
+
letters: letters,
|
|
14
|
+
authors: User.author.ordered,
|
|
15
|
+
typists: User.ordered,
|
|
16
|
+
q: query.search
|
|
17
|
+
}
|
|
18
|
+
end
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
private
|
|
15
21
|
|
|
16
|
-
|
|
17
|
-
|
|
22
|
+
def find_and_authorize_letters(query)
|
|
23
|
+
collection = call_query(query).page(page).per(per_page)
|
|
24
|
+
present_letters(collection).tap { |letters| authorize letters }
|
|
18
25
|
end
|
|
19
26
|
|
|
20
27
|
def present_letters(letters)
|
|
@@ -22,7 +22,7 @@ module Renalware
|
|
|
22
22
|
else
|
|
23
23
|
skip_authorization
|
|
24
24
|
end
|
|
25
|
-
fallback_location = patient.
|
|
25
|
+
fallback_location = patient.presence || root_path
|
|
26
26
|
redirect_back(fallback_location: patient_path(fallback_location),
|
|
27
27
|
notice: success_msg_for("bookmark"))
|
|
28
28
|
end
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
require_dependency "renalware/
|
|
1
|
+
require_dependency "renalware/pd"
|
|
2
2
|
|
|
3
3
|
module Renalware
|
|
4
4
|
module PD
|
|
5
5
|
class MDMController < Renalware::MDMController
|
|
6
|
-
before_action :load_patient
|
|
7
|
-
|
|
8
6
|
def show
|
|
7
|
+
authorize patient
|
|
9
8
|
mdm_presenter = PD::MDMPresenter.new(patient: patient, view_context: view_context)
|
|
10
9
|
render_show(mdm_presenter: mdm_presenter)
|
|
11
10
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_dependency "renalware/renal"
|
|
2
|
+
|
|
3
|
+
module Renalware
|
|
4
|
+
module Renal
|
|
5
|
+
module LowClearance
|
|
6
|
+
class MDMController < Renalware::MDMController
|
|
7
|
+
def show
|
|
8
|
+
authorize patient
|
|
9
|
+
presenter = LowClearance::MDMPresenter.new(patient: patient, view_context: view_context)
|
|
10
|
+
render_show(mdm_presenter: presenter)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require_dependency "renalware/renal"
|
|
2
|
+
|
|
3
|
+
module Renalware
|
|
4
|
+
module Renal
|
|
5
|
+
module LowClearance
|
|
6
|
+
class MDMPatientsController < Renalware::MDMPatientsController
|
|
7
|
+
def index
|
|
8
|
+
render_index(query: query,
|
|
9
|
+
page_title: t(".page_title"),
|
|
10
|
+
view_proc: ->(patient) { patient_renal_low_clearance_mdm_path(patient) })
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def query
|
|
16
|
+
LowClearance::MDMPatientsQuery.new(query: q, named_filter: named_filter)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def named_filter
|
|
20
|
+
params[:named_filter]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def q
|
|
24
|
+
params[:q]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -17,6 +17,7 @@ module Renalware
|
|
|
17
17
|
# We could return the amount of time remaining before the session expires like so
|
|
18
18
|
# time_left = Devise.timeout_in - (Time.now - user_session["last_request_at"]).round
|
|
19
19
|
# and display this to the user if required.
|
|
20
|
+
# rubocop :disable Naming/PredicateName
|
|
20
21
|
def has_user_timed_out
|
|
21
22
|
skip_authorization
|
|
22
23
|
if referrer_is_a_devise_url? || !current_users_session_has_timed_out?
|
|
@@ -26,6 +27,7 @@ module Renalware
|
|
|
26
27
|
head :unauthorized
|
|
27
28
|
end
|
|
28
29
|
end
|
|
30
|
+
# rubocop :enable Naming/PredicateName
|
|
29
31
|
|
|
30
32
|
# A user could invoke this action to keep their session alive, by for example
|
|
31
33
|
# clicking on a "Keep my session active" button which makes an ajax call to this action.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Renalware
|
|
2
|
+
module System
|
|
3
|
+
class UserFeedbackController < BaseController
|
|
4
|
+
def new
|
|
5
|
+
feedback = UserFeedback.new
|
|
6
|
+
authorize feedback
|
|
7
|
+
render_new(feedback)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def create
|
|
11
|
+
feedback = UserFeedback.new(user_feedback_params)
|
|
12
|
+
feedback.author = current_user
|
|
13
|
+
authorize feedback
|
|
14
|
+
|
|
15
|
+
if feedback.save
|
|
16
|
+
redirect_to root_url, notice: "Feedback registered, thank you"
|
|
17
|
+
else
|
|
18
|
+
render_new(feedback)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def render_new(feedback)
|
|
25
|
+
render :new, locals: { feedback: feedback }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def user_feedback_params
|
|
29
|
+
params
|
|
30
|
+
.require(:feedback)
|
|
31
|
+
.permit(:comment, :category)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
require_dependency "renalware/hd/base_controller"
|
|
2
1
|
require_dependency "renalware/transplants"
|
|
3
2
|
|
|
4
3
|
module Renalware
|
|
5
4
|
module Transplants
|
|
6
5
|
class MDMController < Renalware::MDMController
|
|
7
|
-
before_action :load_patient
|
|
8
|
-
|
|
9
6
|
def show
|
|
7
|
+
authorize patient
|
|
10
8
|
mdm_presenter = Transplants::MDMPresenter.new(patient: patient, view_context: view_context)
|
|
11
9
|
render_show(mdm_presenter: mdm_presenter)
|
|
12
10
|
end
|
|
@@ -65,7 +65,7 @@ module Renalware
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
def default_for_blank(val, msg)
|
|
68
|
-
val.
|
|
68
|
+
val.presence || msg
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def default_for_blank_date(date, msg)
|
|
@@ -76,46 +76,6 @@ module Renalware
|
|
|
76
76
|
val.blank? ? msg : "#{val} #{unit}"
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
def medication_and_route(med_route)
|
|
80
|
-
if med_route.blank?
|
|
81
|
-
"No medication prescribed"
|
|
82
|
-
else
|
|
83
|
-
other_route = "Route: Other (Please specify in notes)"
|
|
84
|
-
safe_join(
|
|
85
|
-
med_route.map do |m|
|
|
86
|
-
route = if m.medication_route.name == other_route
|
|
87
|
-
m.medication_route.full_name
|
|
88
|
-
else
|
|
89
|
-
m.medication_route.name
|
|
90
|
-
end
|
|
91
|
-
"<li>
|
|
92
|
-
#{m.drug.name} - #{route}
|
|
93
|
-
</li>".html_safe
|
|
94
|
-
end
|
|
95
|
-
)
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def organisms_and_sensitivities(infection_organisms)
|
|
100
|
-
if infection_organisms.blank?
|
|
101
|
-
"Unknown"
|
|
102
|
-
else
|
|
103
|
-
safe_join(
|
|
104
|
-
infection_organisms.map do |io|
|
|
105
|
-
"<li>#{io.organism_code.name} - #{io.sensitivity}</li>".html_safe
|
|
106
|
-
end
|
|
107
|
-
)
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def organisms(infection_organisms)
|
|
112
|
-
if infection_organisms.blank?
|
|
113
|
-
"Unknown"
|
|
114
|
-
else
|
|
115
|
-
safe_join(infection_organisms.map { |io| "<li>#{io.organism_code.name}</li>".html_safe })
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
|
|
119
79
|
def pipe_separator
|
|
120
80
|
" | ".html_safe
|
|
121
81
|
end
|
|
@@ -130,7 +90,6 @@ module Renalware
|
|
|
130
90
|
end
|
|
131
91
|
|
|
132
92
|
def inline_image(file_path)
|
|
133
|
-
# InlineImage.new("/app/assets/images/#{file_path}")
|
|
134
93
|
InlineImage.new(asset_path(file_path))
|
|
135
94
|
end
|
|
136
95
|
|
|
@@ -7,7 +7,9 @@ module Renalware
|
|
|
7
7
|
else
|
|
8
8
|
link_to("Draft Letter", new_patient_letters_letter_path(
|
|
9
9
|
patient,
|
|
10
|
-
event_type: Renalware::Clinics::ClinicVisit.name.to_s,
|
|
10
|
+
event_type: Renalware::Clinics::ClinicVisit.name.to_s,
|
|
11
|
+
event_id: clinic_visit.id,
|
|
12
|
+
clinical: true
|
|
11
13
|
))
|
|
12
14
|
end
|
|
13
15
|
end
|
|
@@ -7,5 +7,25 @@ module Renalware
|
|
|
7
7
|
def new_pd_infection_organism_path(infectable)
|
|
8
8
|
super(infectable_type: infectable.class.to_s, infectable_id: infectable.id)
|
|
9
9
|
end
|
|
10
|
+
|
|
11
|
+
def organisms_and_sensitivities(infection_organisms)
|
|
12
|
+
if infection_organisms.blank?
|
|
13
|
+
"Unknown"
|
|
14
|
+
else
|
|
15
|
+
safe_join(
|
|
16
|
+
infection_organisms.map do |io|
|
|
17
|
+
"<li>#{io.organism_code.name} - #{io.sensitivity}</li>".html_safe
|
|
18
|
+
end
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def organisms(infection_organisms)
|
|
24
|
+
if infection_organisms.blank?
|
|
25
|
+
"Unknown"
|
|
26
|
+
else
|
|
27
|
+
safe_join(infection_organisms.map { |io| "<li>#{io.organism_code.name}</li>".html_safe })
|
|
28
|
+
end
|
|
29
|
+
end
|
|
10
30
|
end
|
|
11
31
|
end
|
|
@@ -17,11 +17,12 @@ module Renalware
|
|
|
17
17
|
|
|
18
18
|
def path
|
|
19
19
|
@path ||= begin
|
|
20
|
-
|
|
20
|
+
return if modality_description.type.blank?
|
|
21
|
+
case modality_description_symbol
|
|
21
22
|
when :pd then patient_pd_mdm_path(patient)
|
|
22
23
|
when :hd then patient_hd_mdm_path(patient)
|
|
23
24
|
when :transplant then patient_transplants_mdm_path(patient)
|
|
24
|
-
when :
|
|
25
|
+
when :low_clearance then patient_renal_low_clearance_mdm_path(patient)
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
end
|
|
@@ -32,11 +33,8 @@ module Renalware
|
|
|
32
33
|
|
|
33
34
|
private
|
|
34
35
|
|
|
35
|
-
attr_reader :patient
|
|
36
|
-
|
|
37
|
-
def modality_description_name
|
|
38
|
-
modality_description.name
|
|
39
|
-
end
|
|
36
|
+
attr_reader :patient
|
|
37
|
+
delegate :name, to: :modality_description, prefix: true, allow_nil: true
|
|
40
38
|
|
|
41
39
|
def modality_description
|
|
42
40
|
current_modality = patient.current_modality || NullObject.instance
|
|
@@ -46,6 +44,10 @@ module Renalware
|
|
|
46
44
|
def mdm_name
|
|
47
45
|
"#{modality_description_name} MDM"
|
|
48
46
|
end
|
|
47
|
+
|
|
48
|
+
def modality_description_symbol
|
|
49
|
+
modality_description.becomes(modality_description.type.constantize).to_sym
|
|
50
|
+
end
|
|
49
51
|
end
|
|
50
52
|
end
|
|
51
53
|
end
|
|
@@ -35,5 +35,25 @@ module Renalware
|
|
|
35
35
|
def default_provider(provider)
|
|
36
36
|
provider == "gp" ? "checked" : nil
|
|
37
37
|
end
|
|
38
|
+
|
|
39
|
+
def medication_and_route(med_route)
|
|
40
|
+
if med_route.blank?
|
|
41
|
+
"No medication prescribed"
|
|
42
|
+
else
|
|
43
|
+
other_route = "Route: Other (Please specify in notes)"
|
|
44
|
+
safe_join(
|
|
45
|
+
med_route.map do |m|
|
|
46
|
+
route = if m.medication_route.name == other_route
|
|
47
|
+
m.medication_route.full_name
|
|
48
|
+
else
|
|
49
|
+
m.medication_route.name
|
|
50
|
+
end
|
|
51
|
+
"<li>
|
|
52
|
+
#{m.drug.name} - #{route}
|
|
53
|
+
</li>".html_safe
|
|
54
|
+
end
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
38
58
|
end
|
|
39
59
|
end
|
|
@@ -2,14 +2,6 @@ require_dependency "renalware/patients"
|
|
|
2
2
|
|
|
3
3
|
module Renalware
|
|
4
4
|
module SideNavHelper
|
|
5
|
-
def display_pd_menu?(patient)
|
|
6
|
-
true
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def display_hd_menu?(patient)
|
|
10
|
-
true
|
|
11
|
-
end
|
|
12
|
-
|
|
13
5
|
def find_user_bookmark_for_patient(patient)
|
|
14
6
|
user = Renalware::Patients.cast_user(current_user)
|
|
15
7
|
user.bookmark_for_patient(patient)
|
data/app/jobs/application_job.rb
CHANGED
|
@@ -51,6 +51,7 @@ module Renalware
|
|
|
51
51
|
module ClassMethods
|
|
52
52
|
# Adds a ActiveRecord scopes for each state defined; e.g. `Letter.draft`
|
|
53
53
|
#
|
|
54
|
+
# rubocop :disable Naming/PredicateName
|
|
54
55
|
def has_states(*states)
|
|
55
56
|
states.each do |state|
|
|
56
57
|
state_scope(state, state)
|
|
@@ -64,6 +65,7 @@ module Renalware
|
|
|
64
65
|
states
|
|
65
66
|
end
|
|
66
67
|
end
|
|
68
|
+
# rubocop :enable Naming/PredicateName
|
|
67
69
|
|
|
68
70
|
# Allows for custom scope names, example:
|
|
69
71
|
#
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require_dependency "renalware"
|
|
2
|
+
|
|
3
|
+
# Mix this module into a Patient Query object for example in order to include the patient's
|
|
4
|
+
# current key pathology and enable sorting on pathology date and value fields using
|
|
5
|
+
# ransack's sort_link helper in the view.
|
|
6
|
+
#
|
|
7
|
+
module Renalware
|
|
8
|
+
module PatientPathologyScopes
|
|
9
|
+
def with_current_key_pathology
|
|
10
|
+
includes(:current_key_observation_set).joins(:current_key_observation_set)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Define some ransackers to make it easier to sort the table (using sort_link)
|
|
14
|
+
# on pathology dates and values. Note it wasn't possible just to use say
|
|
15
|
+
# = sort_link(.., "pathology_current_key_observation_sets.cre_observed_at", ..)
|
|
16
|
+
# or
|
|
17
|
+
# = sort_link(.., :pathology_current_key_observation_set_cre_observed_at", ..)
|
|
18
|
+
# as ransack wasn't happy and discarded the sort predicate.
|
|
19
|
+
# So here we mix in useful ransackers as short cut to use in sort_link
|
|
20
|
+
#
|
|
21
|
+
# Example usage:
|
|
22
|
+
# = sort_link(<url>, :cre_observed_at, "CRE date")
|
|
23
|
+
#
|
|
24
|
+
def self.extended(base)
|
|
25
|
+
%i(hgb ure cre).each do |code|
|
|
26
|
+
base.ransacker(code) { pathology_sort_predicate("#{code}_result") }
|
|
27
|
+
base.ransacker(:"#{code}_date") { pathology_sort_predicate("#{code}_observed_at") }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
%i(mdrd).each do |code|
|
|
31
|
+
base.ransacker(code) { pathology_sort_predicate("#{code}_result") }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.pathology_sort_predicate(column)
|
|
36
|
+
Arel.sql("pathology_current_key_observation_sets.#{column}")
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -4,7 +4,8 @@ module Renalware
|
|
|
4
4
|
|
|
5
5
|
included do
|
|
6
6
|
class_eval do
|
|
7
|
-
|
|
7
|
+
validates :given_name, presence: true
|
|
8
|
+
validates :family_name, presence: true
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def full_name
|
|
@@ -22,7 +23,7 @@ module Renalware
|
|
|
22
23
|
|
|
23
24
|
def salutation
|
|
24
25
|
parts = [Renalware.config.salutation_prefix]
|
|
25
|
-
parts << (title.
|
|
26
|
+
parts << (title.presence || given_name)
|
|
26
27
|
parts << family_name
|
|
27
28
|
parts.compact.join(" ")
|
|
28
29
|
end
|
|
@@ -7,10 +7,10 @@ module Renalware
|
|
|
7
7
|
belongs_to :clinic
|
|
8
8
|
belongs_to :user
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
validates :starts_at, presence: true
|
|
11
|
+
validates :patient, presence: true
|
|
12
|
+
validates :clinic, presence: true
|
|
13
|
+
validates :user, presence: true
|
|
14
14
|
|
|
15
15
|
validates :starts_at, timeliness: { type: :datetime }
|
|
16
16
|
|
|
@@ -15,8 +15,8 @@ module Renalware
|
|
|
15
15
|
belongs_to :clinic
|
|
16
16
|
has_many :clinic_letters
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
validates :date, presence: true
|
|
19
|
+
validates :clinic, presence: true
|
|
20
20
|
|
|
21
21
|
validates :date, timeliness: { type: :date }
|
|
22
22
|
validates :time, timeliness: { type: :time, allow_blank: true }
|