renalware-core 2.0.40 → 2.0.41
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/app/controllers/renalware/clinics/appointments_controller.rb +26 -0
- data/app/models/renalware/clinics/appointment.rb +2 -2
- data/app/models/renalware/medications/prescription.rb +5 -1
- data/app/models/renalware/patients/patient_search.rb +1 -1
- data/app/views/renalware/clinics/appointments/index.html.slim +6 -2
- data/app/views/renalware/clinics/appointments/new.html.slim +29 -0
- data/app/views/renalware/navigation/_patient_search.html.slim +1 -0
- data/config/routes.rb +1 -1
- data/lib/renalware/version.rb +1 -1
- data/spec/support/select2_spec_helper.rb +32 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4028a0511b757d40f892d8b53f96aad528c613903b72b565cdb3aaba0fb24475
|
4
|
+
data.tar.gz: 15c5b296ecf7ae47466c7e33480146b3cf00a6dfe88a4c3da0fc6e0dd1a40714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4415c46fd5f27d2b770675aff7c2fe215605b3a538702a6ef605a0c89f62e15a02bd2cbf733333a3a2a4096450049b9b51e60caf0979c98d4c0d59c0df7e583f
|
7
|
+
data.tar.gz: fd3490bad516d1d04f5fb2c384537b83acc1d5c79fd8d4cc0aec949452dc3f62716ce7ce5839e780bf1c9e4efce7c70db365ba58d1c0a18a221be13ef0efa57d
|
@@ -21,8 +21,28 @@ module Renalware
|
|
21
21
|
}
|
22
22
|
end
|
23
23
|
|
24
|
+
def new
|
25
|
+
render_new(Appointment.new)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create
|
29
|
+
appointment = Appointment.new(appointment_params)
|
30
|
+
appointment.user = current_user
|
31
|
+
authorize appointment
|
32
|
+
if appointment.save
|
33
|
+
redirect_to appointments_path, notice: t(".success", model_name: "Appointment")
|
34
|
+
else
|
35
|
+
render_new(appointment)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
24
39
|
private
|
25
40
|
|
41
|
+
def render_new(appointment)
|
42
|
+
authorize appointment
|
43
|
+
render :new, locals: { appointment: appointment }
|
44
|
+
end
|
45
|
+
|
26
46
|
def build_params_for_html_form(appointments)
|
27
47
|
OpenStruct.new(
|
28
48
|
patient_ids: appointments.map(&:patient_id).uniq
|
@@ -34,6 +54,12 @@ module Renalware
|
|
34
54
|
.fetch(:q, {})
|
35
55
|
.merge(page: page, per_page: per_page)
|
36
56
|
end
|
57
|
+
|
58
|
+
def appointment_params
|
59
|
+
params
|
60
|
+
.require(:clinics_appointment)
|
61
|
+
.permit(:patient_id, :clinic_id, :starts_at)
|
62
|
+
end
|
37
63
|
end
|
38
64
|
end
|
39
65
|
end
|
@@ -10,8 +10,8 @@ module Renalware
|
|
10
10
|
belongs_to :user
|
11
11
|
|
12
12
|
validates :starts_at, presence: true
|
13
|
-
validates :
|
14
|
-
validates :
|
13
|
+
validates :patient_id, presence: true
|
14
|
+
validates :clinic_id, presence: true
|
15
15
|
validates :user, presence: true
|
16
16
|
|
17
17
|
validates :starts_at, timeliness: { type: :datetime }
|
@@ -13,7 +13,11 @@ module Renalware
|
|
13
13
|
has_paper_trail class_name: "Renalware::Medications::PrescriptionVersion"
|
14
14
|
|
15
15
|
belongs_to :patient, touch: true
|
16
|
-
|
16
|
+
|
17
|
+
# A drug can be soft-deleted (its deleted_at set) so that it can no longer be prescribed.
|
18
|
+
# We need to be sure we can still display deleted drugs in the read-only context of an
|
19
|
+
# existing prescription, so we include deleted drugs in the relationship.
|
20
|
+
belongs_to :drug, -> { with_deleted }, class_name: "Renalware::Drugs::Drug"
|
17
21
|
belongs_to :treatable, polymorphic: true
|
18
22
|
belongs_to :medication_route
|
19
23
|
|
@@ -1,3 +1,8 @@
|
|
1
|
+
= content_for(:actions) do
|
2
|
+
= link_to "Add",
|
3
|
+
new_appointment_path,
|
4
|
+
class: "button"
|
5
|
+
|
1
6
|
= within_admin_layout(title: "Upcoming Clinic Visit Appointments") do
|
2
7
|
|
3
8
|
.search-form.filters
|
@@ -70,8 +75,7 @@
|
|
70
75
|
|
71
76
|
td= I18n.l appointment.starts_on
|
72
77
|
td= appointment.start_time
|
73
|
-
td=
|
74
|
-
patient_clinical_summary_path(patient_id: appointment.patient)
|
78
|
+
td= default_patient_link(appointment.patient)
|
75
79
|
td= appointment.patient.sex.code
|
76
80
|
td= appointment.patient.age
|
77
81
|
td= appointment.patient.current_modality
|
@@ -0,0 +1,29 @@
|
|
1
|
+
= within_admin_layout(title: "New",
|
2
|
+
breadcrumbs: breadcrumb_for("Clinic Appointments", appointments_path)) do
|
3
|
+
|
4
|
+
= simple_form_for appointment,
|
5
|
+
url: appointments_path,
|
6
|
+
method: :post,
|
7
|
+
html: { autocomplete: "off" },
|
8
|
+
wrapper: "horizontal_form" do |f|
|
9
|
+
|
10
|
+
/ Note the shenanigans to get the select2 to redisplay the patient after a validation error
|
11
|
+
/ or on an edit. Selected: 1 means just select the option at index 1 - option at index 0 is always
|
12
|
+
/ the blank option. Selecting index 1 fails silently if there is nothing there (no patient
|
13
|
+
/ selected yet) otherwise it will display the selected patient who will always be
|
14
|
+
/ at option index 1.
|
15
|
+
= f.input :patient_id,
|
16
|
+
wrapper: :horizontal_medium,
|
17
|
+
collection: [[appointment.patient&.to_s(:long), appointment.patient&.id]],
|
18
|
+
selected: 1,
|
19
|
+
input_html: { \
|
20
|
+
class: "patient-id-select2 patient-ajax-search",
|
21
|
+
data: { "ajax--url" => search_patients_path(format: :json),
|
22
|
+
placeholder: "Search by patient name or hospital/NHS no." } \
|
23
|
+
}
|
24
|
+
|
25
|
+
= f.input :clinic_id,
|
26
|
+
collection: Renalware::Clinics::Clinic.all,
|
27
|
+
wrapper: :horizontal_medium
|
28
|
+
= f.input :starts_at, as: :datetime_picker, wrapper: :horizontal_datepicker
|
29
|
+
= f.submit class: :button
|
data/config/routes.rb
CHANGED
@@ -115,7 +115,7 @@ Renalware::Engine.routes.draw do
|
|
115
115
|
resource :worryboard, only: :show, controller: "patients/worryboard"
|
116
116
|
|
117
117
|
# Clinics
|
118
|
-
resources :appointments, controller: "clinics/appointments", only: [:index]
|
118
|
+
resources :appointments, controller: "clinics/appointments", only: [:new, :create, :index]
|
119
119
|
resources :clinic_visits, only: :index, controller: "clinics/visits"
|
120
120
|
|
121
121
|
resources :deaths, only: :index, as: :patient_deaths
|
data/lib/renalware/version.rb
CHANGED
@@ -12,4 +12,36 @@ module Select2SpecHelper
|
|
12
12
|
matches = body.find_all(".select2-results li", text: value)
|
13
13
|
matches.last.click
|
14
14
|
end
|
15
|
+
|
16
|
+
# select2_ajax helper to make capybara work with ajax-enabled Select2 elements
|
17
|
+
# assumes 'placeholder' option is used in Select2 (if it is using ajax, it should be)
|
18
|
+
#
|
19
|
+
# usage:
|
20
|
+
#
|
21
|
+
# it "should have a select2 field for searching by team name" do
|
22
|
+
# @team = Factory :team
|
23
|
+
# select2_ajax @team.name, from: "Select a Team", minlength: 4
|
24
|
+
# click_button "Join"
|
25
|
+
# page.should have_content "You are now on '#{@team.name}'."
|
26
|
+
# end
|
27
|
+
# Thx to https://gist.github.com/sbeam/3849340
|
28
|
+
def select2_ajax(value, options = {})
|
29
|
+
if !options.is_a?(Hash) || !options.key?(:from)
|
30
|
+
raise "Must pass a hash containing 'from'"
|
31
|
+
end
|
32
|
+
|
33
|
+
placeholder = options[:from]
|
34
|
+
minlength = options[:minlength] || 4
|
35
|
+
|
36
|
+
# click_link placeholder
|
37
|
+
|
38
|
+
page.find(:xpath, "//*[text()='#{placeholder}']").click
|
39
|
+
|
40
|
+
js = %Q|container = $('.select2-container:contains("#{placeholder}")');
|
41
|
+
$('input[type=text]', container).val('#{value[0, minlength]}').trigger('keyup');
|
42
|
+
window.setTimeout( function() {
|
43
|
+
$('li:contains("#{value}")', container).click();
|
44
|
+
}, 5000);|
|
45
|
+
page.execute_script(js)
|
46
|
+
end
|
15
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: renalware-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.41
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airslie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_type
|
@@ -2058,6 +2058,7 @@ files:
|
|
2058
2058
|
- app/views/renalware/clinical/profiles/edit.html.slim
|
2059
2059
|
- app/views/renalware/clinical/profiles/show.html.slim
|
2060
2060
|
- app/views/renalware/clinics/appointments/index.html.slim
|
2061
|
+
- app/views/renalware/clinics/appointments/new.html.slim
|
2061
2062
|
- app/views/renalware/clinics/clinic_visits/_clinic_visit.html.slim
|
2062
2063
|
- app/views/renalware/clinics/clinic_visits/_form.html.slim
|
2063
2064
|
- app/views/renalware/clinics/clinic_visits/_table.html.slim
|