renalware-core 2.0.0.pre.beta12 → 2.0.0.pre.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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 }
|