renalware-core 2.0.125 → 2.0.126
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/assets/javascripts/renalware/components/masonry.run.js +28 -3
- data/app/assets/javascripts/renalware/components/tabs.js +12 -9
- data/app/assets/javascripts/renalware/components/toggler.js +29 -0
- data/app/assets/stylesheets/renalware/modules/_hd.scss +52 -33
- data/app/assets/stylesheets/renalware/partials/_tabs.scss +26 -0
- data/app/assets/stylesheets/renalware/partials/_toggling.scss +23 -0
- data/app/controllers/renalware/events/lists_controller.rb +58 -0
- data/app/controllers/renalware/hd/sessions_controller.rb +13 -1
- data/app/helpers/renalware/toggle_helper.rb +25 -0
- data/app/models/renalware/events/event_list_query.rb +45 -0
- data/app/models/renalware/events/lists/form.rb +41 -0
- data/app/models/renalware/hd/prescription_administration.rb +1 -0
- data/app/presenters/renalware/hd/dashboard_presenter.rb +14 -3
- data/app/presenters/renalware/hd/session_presenter.rb +3 -3
- data/app/presenters/renalware/medications/prescription_presenter.rb +9 -0
- data/app/views/renalware/events/events/_event.html.slim +2 -0
- data/app/views/renalware/events/events/_table.html.slim +8 -3
- data/app/views/renalware/events/lists/_filters.html.slim +29 -0
- data/app/views/renalware/events/lists/_table.html.slim +29 -0
- data/app/views/renalware/events/lists/_tabs.html.slim +0 -0
- data/app/views/renalware/events/lists/show.slim +9 -0
- data/app/views/renalware/hd/current_profile/_summary.html.slim +1 -1
- data/app/views/renalware/hd/historical_profiles/_table.html.slim +1 -1
- data/app/views/renalware/hd/sessions/_administered_drugs_row.html.slim +27 -0
- data/app/views/renalware/hd/sessions/_administered_drugs_thead.html.slim +11 -0
- data/app/views/renalware/hd/sessions/_row.html.slim +43 -43
- data/app/views/renalware/hd/sessions/_table.html.slim +25 -7
- data/app/views/renalware/hd/sessions/_thead.html.slim +5 -2
- data/app/views/renalware/hd/sessions/closed/_administered_drugs_row.html.slim +3 -0
- data/app/views/renalware/hd/sessions/dna/_administered_drugs_row.html.slim +11 -0
- data/app/views/renalware/hd/sessions/dna/_row.html.slim +12 -14
- data/app/views/renalware/hd/sessions/open/_administered_drugs_row.html.slim +3 -0
- data/app/views/renalware/mdm/_prescriptions.html.slim +2 -2
- data/app/views/renalware/navigation/_renal.html.slim +1 -0
- data/app/views/renalware/transplants/mdm/_prescriptions.html.slim +4 -4
- data/config/locales/renalware/events/events.yml +1 -0
- data/config/locales/renalware/hd/session.en.yml +3 -0
- data/config/locales/renalware/navigation/renal.en.yml +1 -0
- data/config/routes/events.rb +8 -0
- data/db/migrate/20191203112310_add_pg_stat_statements_extension.rb +6 -0
- data/lib/renalware/version.rb +1 -1
- metadata +15 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1b4b5e0615d605d093018e57c295da81fa8b2c7b51bd83b8ab02065ce357c91
|
4
|
+
data.tar.gz: f78640822218ff8dfbae7ef9281d0cb9c5636791222fbb06a37cd36001b41ee8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4074e24c734e3c38efb99687920d41ab1ac0e555dc6663a7cc356fc8035465b94ffa18be1ddcf8c2bbafd2e347a77caf0cf7806cd7d201980e699d8077bfcb6
|
7
|
+
data.tar.gz: 680f524d251700a637fec7a8900a4c242cc691fad41d868254a773bd8de314859fbd7510bcb67fc01481cb300456b1bbebfee17aac0df95f0d86b63671ddd18e
|
@@ -1,3 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
var Renalware = typeof Renalware === 'undefined' ? {} : Renalware;
|
2
|
+
|
3
|
+
Renalware.MasonryHelper = (function() {
|
4
|
+
var setupMasonry = function() {
|
5
|
+
$('.grid > .row').masonry({ itemSelector: '.columns' });
|
6
|
+
}
|
7
|
+
|
8
|
+
var refreshMasonry = function() {
|
9
|
+
$('.grid > .row').masonry('layout');
|
10
|
+
}
|
11
|
+
|
12
|
+
var triggerMasonryRefresh = function() {
|
13
|
+
setTimeout(refreshMasonry, 100);
|
14
|
+
}
|
15
|
+
|
16
|
+
var createHandlerToTriggerMasonryRefresh = function() {
|
17
|
+
$("[data-trigger-masonry-refresh]").on("click", triggerMasonryRefresh);
|
18
|
+
}
|
19
|
+
|
20
|
+
return {
|
21
|
+
init: function () {
|
22
|
+
setupMasonry();
|
23
|
+
createHandlerToTriggerMasonryRefresh();
|
24
|
+
}
|
25
|
+
};
|
26
|
+
}());
|
27
|
+
|
28
|
+
$(document).ready(Renalware.MasonryHelper.init);
|
@@ -1,13 +1,16 @@
|
|
1
1
|
function initTabs() {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
2
|
+
$(".sub-nav.with-tabs dl a").on("click", function(e) {
|
3
|
+
e.preventDefault();
|
4
|
+
var anchor = e.target
|
5
|
+
var dl = $(anchor).closest("dl");
|
6
|
+
var dd = $(anchor).closest("dd");
|
7
|
+
var idToDeactivate = $("dd.active a", dl).attr("href");
|
8
|
+
$("dd.active", dl).removeClass("active")
|
9
|
+
$(dd).addClass("active");
|
10
|
+
var idToActivate = anchor.getAttribute("href");
|
11
|
+
$(idToDeactivate).hide();
|
12
|
+
$(idToActivate).show();
|
13
|
+
})
|
11
14
|
}
|
12
15
|
|
13
16
|
$(function() {
|
@@ -57,6 +57,35 @@ function initTogglers() {
|
|
57
57
|
triggerMasonryLayoutRefresh();
|
58
58
|
})
|
59
59
|
}
|
60
|
+
|
61
|
+
// These two handlers mimic the row-toggler stimulus stimulus controller methods which
|
62
|
+
// are not ywt wired up because of lack of stimulus polyfill support in the asset pipline
|
63
|
+
// which means stimulus will not work with IE11. Hence the use of data-action etc here so
|
64
|
+
// once stimulus is working we can remove these 2 handlers without changing any markup.
|
65
|
+
|
66
|
+
// This handler toggles the last tr in the current tbody. We use multiple tbodys in each table
|
67
|
+
// to make toggling like this simpler, and to group the related (visible and toggleable) rows
|
68
|
+
// together.
|
69
|
+
// Note table must have the .toggleable class
|
70
|
+
$("a[data-action='row-toggler#toggleRow']").on("click", function(event) {
|
71
|
+
event.preventDefault();
|
72
|
+
$(event.target).closest("tbody").toggleClass("toggleable--open");
|
73
|
+
triggerMasonryLayoutRefresh();
|
74
|
+
});
|
75
|
+
|
76
|
+
// This handler toggles the last tr in each tbody in the current table.
|
77
|
+
// The link will probably sit in a thead < th
|
78
|
+
$("a[data-action='row-toggler#toggleTable']").on("click", function(event) {
|
79
|
+
event.preventDefault();
|
80
|
+
var link = event.target;
|
81
|
+
var table = $(link).closest("table");
|
82
|
+
var thead = $(link).closest("thead");
|
83
|
+
var tbodies = $("tbody", table);
|
84
|
+
var hide = thead.hasClass("toggleable--open");
|
85
|
+
thead.toggleClass("toggleable--open");
|
86
|
+
$(tbodies).toggleClass("toggleable--open", !hide);
|
87
|
+
triggerMasonryLayoutRefresh();
|
88
|
+
});
|
60
89
|
}
|
61
90
|
|
62
91
|
$(function() {
|
@@ -254,7 +254,7 @@ label#toggle-full-hd-profile {
|
|
254
254
|
.full-hd-profile {
|
255
255
|
max-height: 0;
|
256
256
|
overflow-y: hidden;
|
257
|
-
transition: max-height .3s ease 0s;
|
257
|
+
//transition: max-height .3s ease 0s;
|
258
258
|
}
|
259
259
|
|
260
260
|
input#toggle-full-hd-profile-input {
|
@@ -268,8 +268,9 @@ input#toggle-full-hd-profile-input {
|
|
268
268
|
// End CSS-only toggle of full HD Profile
|
269
269
|
|
270
270
|
table.hd-sessions {
|
271
|
-
border-collapse: collapse;
|
272
271
|
border-spacing: 0;
|
272
|
+
border-collapse: collapse;
|
273
|
+
|
273
274
|
td {
|
274
275
|
height: 2rem;
|
275
276
|
}
|
@@ -279,13 +280,11 @@ table.hd-sessions {
|
|
279
280
|
}
|
280
281
|
|
281
282
|
thead {
|
282
|
-
|
283
|
-
&:nth-of-type(even) {
|
284
|
-
background-color: #f5f5f5;
|
285
|
-
}
|
283
|
+
border-bottom: solid 1px #222;
|
286
284
|
|
285
|
+
tr {
|
287
286
|
th {
|
288
|
-
border:
|
287
|
+
border-bottom: none;
|
289
288
|
padding: 3px;
|
290
289
|
vertical-align: top;
|
291
290
|
}
|
@@ -300,41 +299,38 @@ table.hd-sessions {
|
|
300
299
|
}
|
301
300
|
|
302
301
|
tbody {
|
303
|
-
|
304
|
-
&:nth-of-type(even) {
|
305
|
-
background-color: $white;
|
306
|
-
}
|
302
|
+
border-top: solid 1px #555;
|
307
303
|
|
308
|
-
|
309
|
-
|
310
|
-
|
304
|
+
&:last-child {
|
305
|
+
border-bottom: solid 1px #BBB;
|
306
|
+
}
|
311
307
|
|
312
|
-
|
313
|
-
|
314
|
-
|
308
|
+
&:hover {
|
309
|
+
background-color: $table-row-hover-colour !important;
|
310
|
+
}
|
315
311
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
}
|
312
|
+
&.dna {
|
313
|
+
td {
|
314
|
+
background-color: #E6EFF8;
|
320
315
|
}
|
316
|
+
}
|
321
317
|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
}
|
318
|
+
&.open {
|
319
|
+
td {
|
320
|
+
background-color: #FFF1CC; // #FFF1CC; // #ffffc8;
|
326
321
|
}
|
322
|
+
}
|
327
323
|
|
324
|
+
&.dna {
|
328
325
|
td {
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
}
|
326
|
+
// background-color: #eee;
|
327
|
+
background-color: #E6EFF8;
|
328
|
+
}
|
329
|
+
}
|
334
330
|
|
335
|
-
|
336
|
-
|
337
|
-
|
331
|
+
td {
|
332
|
+
&.derived {
|
333
|
+
font-style: italic;
|
338
334
|
}
|
339
335
|
}
|
340
336
|
}
|
@@ -598,3 +594,26 @@ use flexbox to layout items inside each prescription.
|
|
598
594
|
}
|
599
595
|
}
|
600
596
|
}
|
597
|
+
|
598
|
+
table.hd-session-drugs {
|
599
|
+
thead {
|
600
|
+
border-bottom: solid 1px #222;
|
601
|
+
}
|
602
|
+
|
603
|
+
tr {
|
604
|
+
span.given {
|
605
|
+
@include badge;
|
606
|
+
}
|
607
|
+
&.administered-true {
|
608
|
+
span.given {
|
609
|
+
background-color: $nhs-light-green;
|
610
|
+
}
|
611
|
+
}
|
612
|
+
|
613
|
+
&.administered-false {
|
614
|
+
span.given {
|
615
|
+
background-color: $nhs-red;
|
616
|
+
}
|
617
|
+
}
|
618
|
+
}
|
619
|
+
}
|
@@ -81,3 +81,29 @@
|
|
81
81
|
}
|
82
82
|
}
|
83
83
|
}
|
84
|
+
|
85
|
+
|
86
|
+
.sub-nav {
|
87
|
+
&.with-tabs {
|
88
|
+
position: relative;
|
89
|
+
margin: 0;
|
90
|
+
padding: 0;
|
91
|
+
|
92
|
+
dl {
|
93
|
+
position: relative;
|
94
|
+
top: 1px;
|
95
|
+
z-index: 2; // So we can overlap .tab-bottom-border
|
96
|
+
}
|
97
|
+
|
98
|
+
.tab-bottom-border {
|
99
|
+
position: relative;
|
100
|
+
display: block;
|
101
|
+
z-index: 0;
|
102
|
+
color: $table-border-colour;
|
103
|
+
background-color: $table-border-colour;
|
104
|
+
padding: 0;
|
105
|
+
margin: 0;
|
106
|
+
margin-bottom: 1rem;
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
@@ -36,3 +36,26 @@ th.togglers .toggler {
|
|
36
36
|
th.togglers {
|
37
37
|
width: 1rem;
|
38
38
|
}
|
39
|
+
|
40
|
+
// row-toggler-controller classes
|
41
|
+
.toggleable {
|
42
|
+
.toggleable--open {
|
43
|
+
td .toggler i:before {
|
44
|
+
content: asset-data-url("renalware/icons/chevron-up.svg");
|
45
|
+
}
|
46
|
+
|
47
|
+
th .toggler i:before {
|
48
|
+
content: asset-data-url("renalware/icons/chevrons-up.svg");
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
tbody {
|
53
|
+
tr:last-child {
|
54
|
+
display: none
|
55
|
+
}
|
56
|
+
|
57
|
+
&.toggleable--open tr:last-child {
|
58
|
+
display: table-row;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "renalware/events"
|
4
|
+
|
5
|
+
module Renalware
|
6
|
+
module Events
|
7
|
+
class ListsController < BaseController
|
8
|
+
include Renalware::Concerns::Pageable
|
9
|
+
|
10
|
+
def show
|
11
|
+
query = EventListQuery.new(params: form.attributes)
|
12
|
+
events = query.call.page(page).per(per_page)
|
13
|
+
authorize events
|
14
|
+
render locals: { events: events, q: query.search, form: form }
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def form
|
20
|
+
@form ||= form_for(named_filter)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Get requests to #show may have a filter param {} if filters where selectec (eg an event
|
24
|
+
# type) and if any sorting was done there will also be e.g. params[:q][:s] = "something asc"
|
25
|
+
# The EventListQuery just accepts our form object, from which it attributes to ransack, so
|
26
|
+
# here we need to make sure the search
|
27
|
+
def form_for(named_filter)
|
28
|
+
Lists::Form.new(
|
29
|
+
named_filter: named_filter,
|
30
|
+
params: add_ransack_search_param_to_filter_parameters
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
def named_filter
|
35
|
+
@named_filter ||= params.fetch(:named_filter, "all").to_sym
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_ransack_search_param_to_filter_parameters
|
39
|
+
filter_parameters.merge(s: params.dig(:q, :s))
|
40
|
+
end
|
41
|
+
|
42
|
+
def filter_parameters
|
43
|
+
return {} unless params.key?(:filters)
|
44
|
+
|
45
|
+
params
|
46
|
+
.require(:filters)
|
47
|
+
.permit(
|
48
|
+
:event_type_id_eq,
|
49
|
+
:created_by_id_eq,
|
50
|
+
:created_at_gteq,
|
51
|
+
:created_at_lteq,
|
52
|
+
:from,
|
53
|
+
:to
|
54
|
+
)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -16,7 +16,19 @@ module Renalware
|
|
16
16
|
query = sessions_query
|
17
17
|
sessions = query
|
18
18
|
.call
|
19
|
-
.
|
19
|
+
.eager_load(
|
20
|
+
:hospital_unit,
|
21
|
+
:patient,
|
22
|
+
:signed_on_by,
|
23
|
+
:signed_off_by,
|
24
|
+
prescription_administrations: [
|
25
|
+
{
|
26
|
+
prescription: [:medication_route, :drug]
|
27
|
+
},
|
28
|
+
:administered_by,
|
29
|
+
:reason
|
30
|
+
])
|
31
|
+
.merge(PrescriptionAdministration.ordered)
|
20
32
|
.page(page)
|
21
33
|
.per(per_page || 15)
|
22
34
|
authorize sessions
|
@@ -42,5 +42,30 @@ module Renalware
|
|
42
42
|
toggler(row_selector)
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
46
|
+
# Create a link in a thead > tr > th that will toggle the last row in all tbodies in the table.
|
47
|
+
def rows_toggler(link_title: "Toggle all rows")
|
48
|
+
link_to(
|
49
|
+
"#",
|
50
|
+
data: { action: "row-toggler#toggleTable" },
|
51
|
+
class: "toggler",
|
52
|
+
title: link_title
|
53
|
+
) do
|
54
|
+
content_tag(:i)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Create a link to be used in a tbody > tr > td that will toggle the last row in the current
|
59
|
+
# tbody.
|
60
|
+
def row_toggler(link_title: "Toggle")
|
61
|
+
link_to(
|
62
|
+
"#",
|
63
|
+
data: { action: "row-toggler#toggleRow" },
|
64
|
+
class: "toggler",
|
65
|
+
title: link_title
|
66
|
+
) do
|
67
|
+
content_tag(:i)
|
68
|
+
end
|
69
|
+
end
|
45
70
|
end
|
46
71
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "renalware/clinics"
|
4
|
+
|
5
|
+
module Renalware
|
6
|
+
module Events
|
7
|
+
class EventListQuery
|
8
|
+
attr_reader :params
|
9
|
+
|
10
|
+
def initialize(params: {})
|
11
|
+
@params = params
|
12
|
+
@params[:s] = "created_at DESC" if @params[:s].blank?
|
13
|
+
end
|
14
|
+
|
15
|
+
def call
|
16
|
+
search
|
17
|
+
.result
|
18
|
+
.eager_load(:event_type, :created_by, :patient)
|
19
|
+
.ordered
|
20
|
+
end
|
21
|
+
|
22
|
+
def search
|
23
|
+
@search ||= Event.include(Ransackers).ransack(params)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Create ransackers to mixin to Event at runtime.
|
27
|
+
# These for instance cast created_at to a date so that for instance the predicate
|
28
|
+
# created_gteq excludes any time references - using created_gteq and created_lteq without
|
29
|
+
# this creates SQL that cannot find an event on one day, because of the way Ransack adds
|
30
|
+
# start of date and end of day times.
|
31
|
+
module Ransackers
|
32
|
+
extend ActiveSupport::Concern
|
33
|
+
included do
|
34
|
+
ransacker :created_at, type: :date do
|
35
|
+
Arel.sql("DATE(events.created_at)")
|
36
|
+
end
|
37
|
+
|
38
|
+
ransacker :created_at, type: :date do
|
39
|
+
Arel.sql("DATE(events.created_at)")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
module Events
|
5
|
+
module Lists
|
6
|
+
# Form object to help us build and parse the appropriate filters for the
|
7
|
+
# events_lists controller
|
8
|
+
class Form
|
9
|
+
delegate_missing_to :@handler
|
10
|
+
|
11
|
+
def initialize(named_filter:, params: {})
|
12
|
+
@handler = create_filter_specific_object_to_handle_all_requests(named_filter, params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_filter_specific_object_to_handle_all_requests(named_filter, params)
|
16
|
+
handler_klass = "#{self.class.name}::#{named_filter.to_s.classify}Events"
|
17
|
+
handler_klass.constantize.new(params)
|
18
|
+
end
|
19
|
+
|
20
|
+
class AllEvents
|
21
|
+
include ActiveModel::Model
|
22
|
+
include Virtus::Model
|
23
|
+
|
24
|
+
attribute :s, String # sort order, not really part of the form
|
25
|
+
attribute :event_type_id_eq, Integer
|
26
|
+
attribute :created_by_id_eq, Integer
|
27
|
+
attribute :created_at_gteq, Date
|
28
|
+
attribute :created_at_lteq, Date
|
29
|
+
|
30
|
+
def event_type_options
|
31
|
+
Events::Type.order(:name).pluck(:name, :id)
|
32
|
+
end
|
33
|
+
|
34
|
+
def created_by_options
|
35
|
+
User.excluding_system_user.ordered
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -24,6 +24,7 @@ module Renalware
|
|
24
24
|
validates :witnessed_by, presence: true, if: :validate_administrator_and_witness?
|
25
25
|
validate :check_administrator_authorisation_token
|
26
26
|
validate :check_witness_authorisation_token
|
27
|
+
scope :ordered, -> { order(created_at: :desc) }
|
27
28
|
|
28
29
|
private
|
29
30
|
|
@@ -45,14 +45,25 @@ module Renalware
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
# rubocop:disable Metrics/MethodLength
|
48
49
|
def sessions
|
49
50
|
@sessions ||= begin
|
50
|
-
hd_sessions = Session
|
51
|
-
|
52
|
-
|
51
|
+
hd_sessions = Session
|
52
|
+
.eager_load(
|
53
|
+
:hospital_unit,
|
54
|
+
:patient,
|
55
|
+
:signed_on_by,
|
56
|
+
:signed_off_by,
|
57
|
+
prescription_administrations: [
|
58
|
+
{ prescription: [:medication_route, :drug] }, :administered_by, :reason
|
59
|
+
]
|
60
|
+
)
|
61
|
+
.for_patient(patient)
|
62
|
+
.limit(10).ordered.merge(PrescriptionAdministration.ordered)
|
53
63
|
CollectionPresenter.new(hd_sessions, SessionPresenter, view_context)
|
54
64
|
end
|
55
65
|
end
|
66
|
+
# rubocop:enable Metrics/MethodLength
|
56
67
|
|
57
68
|
def can_add_hd_profile?
|
58
69
|
profile.new_record? && policy_for(profile).edit? && has_ever_been_on_hd?
|
@@ -153,9 +153,9 @@ module Renalware
|
|
153
153
|
end
|
154
154
|
|
155
155
|
# Ensure drug administrations are always in the same order.
|
156
|
-
def prescription_administrations
|
157
|
-
|
158
|
-
end
|
156
|
+
# def prescription_administrations
|
157
|
+
# __getobj__.prescription_administrations.order(created_at: :asc)
|
158
|
+
# end
|
159
159
|
|
160
160
|
protected
|
161
161
|
|
@@ -8,6 +8,8 @@ tr
|
|
8
8
|
td.nowrap= l event.created_at.to_date
|
9
9
|
- unless local_assigns[:exclude_type_column] == true
|
10
10
|
td= event.event_type
|
11
|
+
- if local_assigns[:include_patient_column] == true
|
12
|
+
td= default_patient_link(event.patient)
|
11
13
|
td.col-width-medium-with-ellipsis
|
12
14
|
= render partial: event.to_cell_partial_path,
|
13
15
|
locals: { event: event }
|
@@ -9,6 +9,8 @@ table.has-togglable-rows.events-table
|
|
9
9
|
th.col-width-date=t(".created_at")
|
10
10
|
- unless local_assigns.fetch(:exclude_type_column, false)
|
11
11
|
th.col-width-large= t(".type")
|
12
|
+
- if local_assigns.fetch(:include_patient_column, false)
|
13
|
+
th.col-width-large= t(".patient")
|
12
14
|
th= t(".description")
|
13
15
|
th.created_at.col-width-date-time= t(".date_time")
|
14
16
|
th.created_by.col-width-medium= t(".created_by")
|
@@ -18,6 +20,9 @@ table.has-togglable-rows.events-table
|
|
18
20
|
/ an Edit link or Type column in certain circumstances.
|
19
21
|
= render partial: "renalware/events/events/event",
|
20
22
|
collection: events,
|
21
|
-
locals: {
|
22
|
-
|
23
|
-
|
23
|
+
locals: { \
|
24
|
+
exclude_type_column: local_assigns[:exclude_type_column],
|
25
|
+
include_patient_column: local_assigns[:include_patient_column],
|
26
|
+
edit_proc: local_assigns[:edit_proc],
|
27
|
+
toggle_prefix: toggle_prefix \
|
28
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
.search-form.filters
|
2
|
+
= simple_form_for form,
|
3
|
+
as: :filters,
|
4
|
+
url: renalware.events_filtered_list_path(named_filter: :all),
|
5
|
+
html: { autocomplete: "off" },
|
6
|
+
method: :get do |f|
|
7
|
+
.row
|
8
|
+
.small-6.medium-3.large-2.columns
|
9
|
+
= f.input :event_type_id_eq,
|
10
|
+
collection: form.event_type_options,
|
11
|
+
input_html: { class: "searchable_select" },
|
12
|
+
label: "Event type"
|
13
|
+
.small-6.medium-3.large-2.columns
|
14
|
+
= f.input :created_by_id_eq,
|
15
|
+
as: :user_picker,
|
16
|
+
collection: form.created_by_options,
|
17
|
+
label: "Created by"
|
18
|
+
.small-6.medium-2.large-2.columns
|
19
|
+
= f.input :created_at_gteq,
|
20
|
+
as: :date_picker,
|
21
|
+
label: "From"
|
22
|
+
.small-6.medium-2.large-2.columns
|
23
|
+
= f.input :created_at_lteq,
|
24
|
+
as: :date_picker,
|
25
|
+
label: "To"
|
26
|
+
.small-12.medium-2.large-2.columns.actions.end
|
27
|
+
= f.submit t("helpers.submit.filter"), class: "button secondary"
|
28
|
+
span= " or "
|
29
|
+
= link_to t("helpers.reset"), renalware.events_filtered_list_path(named_filter: :all)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/= render "renalware/events/events/table", events: events, include_patient_column: true
|
2
|
+
|
3
|
+
- toggle_prefix ||= "event"
|
4
|
+
|
5
|
+
table.has-togglable-rows.events-table
|
6
|
+
thead
|
7
|
+
tr
|
8
|
+
th.noprint.togglers= table_toggler
|
9
|
+
- if local_assigns[:edit_proc]
|
10
|
+
th.col-width-tiny
|
11
|
+
th.col-width-date= sort_link(q, :created_at, "Added", default_order: :desc)
|
12
|
+
th.col-width-large= sort_link(q, :event_type_name, "Type", default_order: :asc)
|
13
|
+
th.col-width-large= sort_link(q, :patient_family_name, ["patient_family_name", "patient_given_name asc"], "Patient")
|
14
|
+
th Desscription
|
15
|
+
th.created_at.col-width-date-time= sort_link(q, :date_time, "Date/Time", default_order: :desc)
|
16
|
+
th.created_by.col-width-medium= sort_link(q, :created_by_family_name, ["created_by_family_name", "created_by_given_name asc"], "Created by", default_order: :asc)
|
17
|
+
tbody
|
18
|
+
/ Note we can't use cached: true yet when rendering the events collection, as each row is
|
19
|
+
/ used in a different context and displays there slightly differently, for example showing
|
20
|
+
/ an Edit link or Type column in certain circumstances.
|
21
|
+
= render partial: "renalware/events/events/event",
|
22
|
+
collection: events,
|
23
|
+
locals: { \
|
24
|
+
exclude_type_column: false,
|
25
|
+
include_patient_column: true,
|
26
|
+
toggle_prefix: toggle_prefix \
|
27
|
+
}
|
28
|
+
|
29
|
+
= paginate events
|
File without changes
|
@@ -5,7 +5,7 @@ article.hd-profile-summary
|
|
5
5
|
li= link_to "View", patient_hd_current_profile_path(patient), class: "button"
|
6
6
|
li= link_to "Edit", edit_patient_hd_current_profile_path(patient), class: "button"
|
7
7
|
li
|
8
|
-
label#toggle-full-hd-profile(for="toggle-full-hd-profile-input") Toggle full profile
|
8
|
+
label.trigger-masonry-refresh#toggle-full-hd-profile(for="toggle-full-hd-profile-input") Toggle full profile
|
9
9
|
|
10
10
|
input#toggle-full-hd-profile-input(type="checkbox")
|
11
11
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
- drugs_count = session.prescription_administrations.length
|
2
|
+
- rows_span = drugs_count + 1
|
3
|
+
tbody.hd-session-row(class=[session.state, stripe_class])
|
4
|
+
tr
|
5
|
+
td.noprint(rowspan=rows_span)= row_toggler
|
6
|
+
td(rowspan=rows_span)= session.edit_or_view_url
|
7
|
+
td(rowspan=rows_span)= session.performed_on
|
8
|
+
td.col-width-medium-with-ellipsis(rowspan=rows_span)= session.hospital_unit_unit_code
|
9
|
+
- if drugs_count.zero?
|
10
|
+
td
|
11
|
+
td
|
12
|
+
td
|
13
|
+
td
|
14
|
+
td
|
15
|
+
- session.prescription_administrations.each do |da|
|
16
|
+
tr(class="administered-#{da.administered?}")
|
17
|
+
td= Renalware::Medications::PrescriptionPresenter.new(da.prescription).to_s
|
18
|
+
td
|
19
|
+
span.given= yes_no da.administered?
|
20
|
+
td.col-width-medium-with-ellipsis= da.administered_by
|
21
|
+
td.col-width-medium-with-ellipsis= da.reason&.name
|
22
|
+
td= da.notes
|
23
|
+
tr
|
24
|
+
td(colspan=9)
|
25
|
+
.quick-preview
|
26
|
+
= definition_list_for(session, size: :large) do |list|
|
27
|
+
= list.definition(:notes){ |value| simple_format(value) }
|
@@ -0,0 +1,11 @@
|
|
1
|
+
thead
|
2
|
+
tr
|
3
|
+
th.togglers.noprint= rows_toggler
|
4
|
+
th.noprint.col-width-small
|
5
|
+
th.col-width-date= t(".date")
|
6
|
+
th.col-width-small= t(".site")
|
7
|
+
th.col-width-large Prescription
|
8
|
+
th.col-width-tiny Given
|
9
|
+
th.col-width-small Given by
|
10
|
+
th.col-width-medium Reason not given
|
11
|
+
th Notes
|
@@ -1,44 +1,44 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
= session.edit_or_view_url
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
1
|
+
tbody.hd-session-row(class=[session.state, stripe_class])
|
2
|
+
tr
|
3
|
+
td.noprint(rowspan=2)= row_toggler
|
4
|
+
td.noprint(rowspan=2)= session.edit_or_view_url
|
5
|
+
td.col-width-date(rowspan=2)= session.performed_on
|
6
|
+
td= session.hospital_unit_unit_code
|
7
|
+
td= session.start_time
|
8
|
+
td.derived(rowspan=2)= session.duration
|
9
|
+
td= session.before_measurement_for(:weight)
|
10
|
+
td= session.before_measurement_for(:pulse)
|
11
|
+
td= session.before_measurement_for(:temperature)
|
12
|
+
td= session.before_measurement_for(:respiratory_rate)
|
13
|
+
td.nowrap= session.before_measurement_for(:bm_stix)
|
14
|
+
td.nowrap= session.before_measurement_for(:blood_pressure)
|
15
|
+
td.nowrap(rowspan=2)= session.arterial_pressure
|
16
|
+
td.nowrap(rowspan=2)= session.venous_pressure
|
17
|
+
td.nowrap(rowspan=2)= session.blood_flow
|
18
|
+
td.nowrap(rowspan=2)= session.litres_processed
|
19
|
+
td.nowrap(rowspan=2)= session.fluid_removed
|
20
|
+
td.nowrap(rowspan=2)= session.machine_no
|
21
|
+
td.nowrap(rowspan=2)= session.machine_ktv
|
22
|
+
td.nowrap(rowspan=2)= session.machine_urr
|
23
|
+
td.print-only(rowspan=2)
|
24
|
+
td.print-only(rowspan=2)= session.notes
|
25
|
+
td.print-only= session.signed_on_by
|
26
26
|
|
27
|
-
tr(class=[session.state, stripe_class])
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
27
|
+
tr(class=[session.state, stripe_class])
|
28
|
+
td= tooltip(label: session.summarised_access_used, content: session.access_used)
|
29
|
+
td= session.end_time
|
30
|
+
td.nowrap
|
31
|
+
= session.after_measurement_for(:weight)
|
32
|
+
- if (change = session.change_in(:weight))
|
33
|
+
i=" (#{change})"
|
34
|
+
td.nowrap= session.after_measurement_for(:pulse)
|
35
|
+
td.nowrap= session.after_measurement_for(:temperature)
|
36
|
+
td.nowrap= session.after_measurement_for(:respiratory_rate)
|
37
|
+
td.nowrap= session.after_measurement_for(:bm_stix)
|
38
|
+
td.nowrap= session.after_measurement_for(:blood_pressure)
|
39
|
+
td.print-only= session.signed_off_by
|
40
|
+
tr
|
41
|
+
td(colspan=20)
|
42
|
+
.quick-preview
|
43
|
+
= definition_list_for(session, size: :large) do |list|
|
44
|
+
= list.definition(:notes){ |value| simple_format(value) }
|
@@ -1,9 +1,27 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
.sub-nav.with-tabs
|
3
|
+
dl
|
4
|
+
dd.active
|
5
|
+
= link_to "Details", "#hd-sessions", data: { "trigger-masonry-refresh" => true }
|
6
|
+
dd
|
7
|
+
= link_to "Drugs given", "#hd-session-drugs", data: { "trigger-masonry-refresh" => true }
|
8
|
+
hr.tab-bottom-border
|
9
|
+
/ .column_hover
|
10
|
+
table.toggleable.auto-layout.hd-sessions#hd-sessions
|
2
11
|
= render "renalware/hd/sessions/thead"
|
3
12
|
|
4
|
-
|
5
|
-
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
13
|
+
- sessions.each_with_index do |session, index|
|
14
|
+
- stripe_class = index % 2 == 0 ? "even" : "odd"
|
15
|
+
= render "renalware/hd/sessions/#{session.state}/row",
|
16
|
+
session: session,
|
17
|
+
stripe_class: stripe_class
|
18
|
+
|
19
|
+
/.column_hover
|
20
|
+
table.toggleable.auto-layout.hd-sessions.hd-session-drugs#hd-session-drugs(style="display: none")
|
21
|
+
= render "renalware/hd/sessions/administered_drugs_thead"
|
22
|
+
|
23
|
+
- sessions.each_with_index do |session, index|
|
24
|
+
- stripe_class = index % 2 == 0 ? "even" : "odd"
|
25
|
+
= render "renalware/hd/sessions/#{session.state}/administered_drugs_row",
|
26
|
+
session: session,
|
27
|
+
stripe_class: stripe_class
|
@@ -1,10 +1,12 @@
|
|
1
1
|
thead
|
2
|
+
/ - 20.times do
|
3
|
+
/ colgroup
|
2
4
|
tr
|
3
|
-
th
|
5
|
+
th
|
4
6
|
th.noprint.col-width-small(rowspan=3)
|
5
7
|
th.col-width-date(rowspan=3 valign="top")= t(".date")
|
6
8
|
th.col-width-small= t(".site")
|
7
|
-
th.col-width-time
|
9
|
+
th.col-width-time= t(".time")
|
8
10
|
th.col-width-time(rowspan=3)= t(".duration")
|
9
11
|
th.col-width-tiny= t(".weight")
|
10
12
|
th.col-width-tiny= t(".pulse")
|
@@ -23,6 +25,7 @@ thead
|
|
23
25
|
th.col-width-user.text-center.print-only= t(".user")
|
24
26
|
|
25
27
|
tr.row2
|
28
|
+
th.togglers.noprint(rowspan=2)= rows_toggler
|
26
29
|
th(rowspan=2)= t(".access")
|
27
30
|
th.col-width-time= t(".start_time")
|
28
31
|
th.col-width-small= t(".pre")
|
@@ -0,0 +1,11 @@
|
|
1
|
+
tbody(class=[session.state, stripe_class])
|
2
|
+
tr
|
3
|
+
td.noprint= row_toggler
|
4
|
+
td= session.performed_on
|
5
|
+
td= session.hospital_unit_unit_code
|
6
|
+
td(colspan=6) Did not attend
|
7
|
+
tr
|
8
|
+
td(colspan=10)
|
9
|
+
.quick-preview
|
10
|
+
= definition_list_for(session, size: :large) do |list|
|
11
|
+
= list.definition(:notes){ |value| simple_format(value) }
|
@@ -1,14 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
= session.edit_or_view_url
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
= definition_list_for(session, size: :large) do |list|
|
14
|
-
= list.definition(:notes) { |value| simple_format(value) }
|
1
|
+
tbody(class=[session.state, stripe_class])
|
2
|
+
tr
|
3
|
+
td.noprint= row_toggler
|
4
|
+
td.noprint= session.edit_or_view_url
|
5
|
+
td= session.performed_on
|
6
|
+
td= session.hospital_unit_unit_code
|
7
|
+
td(colspan=16) Did not attend
|
8
|
+
tr
|
9
|
+
td(colspan=20)
|
10
|
+
.quick-preview
|
11
|
+
= definition_list_for(session, size: :large) do |list|
|
12
|
+
= list.definition(:notes){ |value| simple_format(value) }
|
@@ -10,8 +10,8 @@ article
|
|
10
10
|
- if local_assigns[:with_esa] == true
|
11
11
|
|
12
12
|
ul.tab-strip(data-tab)
|
13
|
-
li.tab-title.active= link_to "Current", "#current"
|
14
|
-
li.tab-title= link_to "EPO History", "#epo-history"
|
13
|
+
li.tab-title.active= link_to "Current", "#current", data: { "trigger-masonry-refresh" => true }
|
14
|
+
li.tab-title= link_to "EPO History", "#epo-history", data: { "trigger-masonry-refresh" => true }
|
15
15
|
|
16
16
|
.tabs-content
|
17
17
|
#current.content.active
|
@@ -3,6 +3,7 @@ li.has-dropdown
|
|
3
3
|
ul.dropdown
|
4
4
|
li= link_to t(".appointments"), appointments_path
|
5
5
|
li= link_to t(".clinic_visits"), clinic_visits_path
|
6
|
+
li= link_to t(".events"), events_filtered_list_path
|
6
7
|
li= link_to t(".tx_wait_list"), transplants_wait_list_path(named_filter: "active")
|
7
8
|
li= link_to t(".live_donors"), transplants_live_donors_path
|
8
9
|
li= link_to t(".ongoing_hd_sessions"), hd_ongoing_sessions_path
|
@@ -8,10 +8,10 @@ article
|
|
8
8
|
#prescriptions.expandable
|
9
9
|
|
10
10
|
ul.tab-strip(data-tab)
|
11
|
-
li.tab-title.active= link_to "Current", "#current"
|
12
|
-
li.tab-title= link_to "Current Immunosuppressant", "#current_immunosuppressant"
|
13
|
-
li.tab-title= link_to "Historical", "#historical"
|
14
|
-
li.tab-title= link_to "Historical Immunosuppressant", "#historical_immunosuppressant"
|
11
|
+
li.tab-title.active= link_to "Current", "#current", data: { "trigger-masonry-refresh" => true }
|
12
|
+
li.tab-title= link_to "Current Immunosuppressant", "#current_immunosuppressant", data: { "trigger-masonry-refresh" => true }
|
13
|
+
li.tab-title= link_to "Historical", "#historical", data: { "trigger-masonry-refresh" => true }
|
14
|
+
li.tab-title= link_to "Historical Immunosuppressant", "#historical_immunosuppressant", data: { "trigger-masonry-refresh" => true }
|
15
15
|
|
16
16
|
.tabs-content
|
17
17
|
#current.content.active
|
data/config/routes/events.rb
CHANGED
data/lib/renalware/version.rb
CHANGED
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.126
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airslie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview-component
|
@@ -1171,6 +1171,7 @@ files:
|
|
1171
1171
|
- app/controllers/renalware/drugs/drugs_controller.rb
|
1172
1172
|
- app/controllers/renalware/events/events_controller.rb
|
1173
1173
|
- app/controllers/renalware/events/investigations_controller.rb
|
1174
|
+
- app/controllers/renalware/events/lists_controller.rb
|
1174
1175
|
- app/controllers/renalware/events/swabs_controller.rb
|
1175
1176
|
- app/controllers/renalware/events/types_controller.rb
|
1176
1177
|
- app/controllers/renalware/feeds/hl7_test_messages_controller.rb
|
@@ -1496,9 +1497,11 @@ files:
|
|
1496
1497
|
- app/models/renalware/events/biopsy.rb
|
1497
1498
|
- app/models/renalware/events/create_event.rb
|
1498
1499
|
- app/models/renalware/events/event.rb
|
1500
|
+
- app/models/renalware/events/event_list_query.rb
|
1499
1501
|
- app/models/renalware/events/event_query.rb
|
1500
1502
|
- app/models/renalware/events/investigation.rb
|
1501
1503
|
- app/models/renalware/events/line_change_event_query.rb
|
1504
|
+
- app/models/renalware/events/lists/form.rb
|
1502
1505
|
- app/models/renalware/events/simple.rb
|
1503
1506
|
- app/models/renalware/events/swab.rb
|
1504
1507
|
- app/models/renalware/events/type.rb
|
@@ -2365,6 +2368,10 @@ files:
|
|
2365
2368
|
- app/views/renalware/events/events/toggled_cell/_swab.html.slim
|
2366
2369
|
- app/views/renalware/events/investigations/_list.html.slim
|
2367
2370
|
- app/views/renalware/events/investigations/edit.html.slim
|
2371
|
+
- app/views/renalware/events/lists/_filters.html.slim
|
2372
|
+
- app/views/renalware/events/lists/_table.html.slim
|
2373
|
+
- app/views/renalware/events/lists/_tabs.html.slim
|
2374
|
+
- app/views/renalware/events/lists/show.slim
|
2368
2375
|
- app/views/renalware/events/swabs/_list.html.slim
|
2369
2376
|
- app/views/renalware/events/swabs/edit.html.slim
|
2370
2377
|
- app/views/renalware/events/swabs/new.html.slim
|
@@ -2444,6 +2451,8 @@ files:
|
|
2444
2451
|
- app/views/renalware/hd/scheduling/diary_slots/update.js.erb
|
2445
2452
|
- app/views/renalware/hd/session_forms/batches/_create.html.slim
|
2446
2453
|
- app/views/renalware/hd/session_forms/batches/create.js.erb
|
2454
|
+
- app/views/renalware/hd/sessions/_administered_drugs_row.html.slim
|
2455
|
+
- app/views/renalware/hd/sessions/_administered_drugs_thead.html.slim
|
2447
2456
|
- app/views/renalware/hd/sessions/_empty_row.html.slim
|
2448
2457
|
- app/views/renalware/hd/sessions/_form.html.slim
|
2449
2458
|
- app/views/renalware/hd/sessions/_form_actions.html.slim
|
@@ -2454,9 +2463,11 @@ files:
|
|
2454
2463
|
- app/views/renalware/hd/sessions/_show.html.slim
|
2455
2464
|
- app/views/renalware/hd/sessions/_table.html.slim
|
2456
2465
|
- app/views/renalware/hd/sessions/_thead.html.slim
|
2466
|
+
- app/views/renalware/hd/sessions/closed/_administered_drugs_row.html.slim
|
2457
2467
|
- app/views/renalware/hd/sessions/closed/_form.html.slim
|
2458
2468
|
- app/views/renalware/hd/sessions/closed/_row.html.slim
|
2459
2469
|
- app/views/renalware/hd/sessions/closed/_show.html.slim
|
2470
|
+
- app/views/renalware/hd/sessions/dna/_administered_drugs_row.html.slim
|
2460
2471
|
- app/views/renalware/hd/sessions/dna/_form.html.slim
|
2461
2472
|
- app/views/renalware/hd/sessions/dna/_row.html.slim
|
2462
2473
|
- app/views/renalware/hd/sessions/dna/_show.html.slim
|
@@ -2464,6 +2475,7 @@ files:
|
|
2464
2475
|
- app/views/renalware/hd/sessions/form/_drugs_to_be_administered.html.slim
|
2465
2476
|
- app/views/renalware/hd/sessions/index.html.slim
|
2466
2477
|
- app/views/renalware/hd/sessions/new.html.slim
|
2478
|
+
- app/views/renalware/hd/sessions/open/_administered_drugs_row.html.slim
|
2467
2479
|
- app/views/renalware/hd/sessions/open/_form.html.slim
|
2468
2480
|
- app/views/renalware/hd/sessions/open/_hd_prescriptions.html.slim
|
2469
2481
|
- app/views/renalware/hd/sessions/open/_row.html.slim
|
@@ -3706,6 +3718,7 @@ files:
|
|
3706
3718
|
- db/migrate/20191029095202_add_deleted_at_to_problem_notes.rb
|
3707
3719
|
- db/migrate/20191105095304_update_views_to_exclude_deleted_sessions.rb
|
3708
3720
|
- db/migrate/20191108105923_add_named_consultant_to_patients.rb
|
3721
|
+
- db/migrate/20191203112310_add_pg_stat_statements_extension.rb
|
3709
3722
|
- db/seeds.rb
|
3710
3723
|
- db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
|
3711
3724
|
- db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb
|