renalware-core 2.0.24 → 2.0.25
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 +19 -5
- data/app/assets/images/renalware/print-button-example.png +0 -0
- data/app/assets/stylesheets/renalware/partials/_layout.scss +4 -0
- data/app/assets/stylesheets/renalware/pdf.scss +12 -0
- data/app/assets/stylesheets/renalware/protocol_pdf.scss +4 -0
- data/app/assets/stylesheets/renalware/table_pdf.scss +210 -0
- data/app/controllers/renalware/admissions/consults_controller.rb +24 -6
- data/app/controllers/renalware/concerns/pdf_renderable.rb +11 -2
- data/app/controllers/renalware/renal/aki_alerts_controller.rb +29 -7
- data/app/controllers/renalware/transplants/registration_statuses_controller.rb +1 -1
- data/app/models/renalware/admissions/consult_query.rb +3 -0
- data/app/models/renalware/feeds/message_processor.rb +5 -0
- data/app/models/renalware/feeds/persist_message.rb +4 -1
- data/app/models/renalware/renal.rb +1 -1
- data/app/models/renalware/renal/aki_alert.rb +1 -0
- data/app/presenters/renalware/admissions/admission_presenter.rb +1 -1
- data/app/views/renalware/admissions/consults/_filters.html.slim +10 -1
- data/app/views/renalware/admissions/consults/_filters.pdf.slim +32 -0
- data/app/views/renalware/admissions/consults/_table.html.slim +9 -8
- data/app/views/renalware/admissions/consults/_table.pdf.slim +35 -0
- data/app/views/renalware/admissions/consults/index.html.slim +7 -0
- data/app/views/renalware/admissions/consults/index.pdf.slim +10 -0
- data/app/views/renalware/hd/sessions/_empty_row.html.slim +2 -0
- data/app/views/renalware/hd/sessions/_row.html.slim +3 -0
- data/app/views/renalware/hd/sessions/_show.html.slim +5 -6
- data/app/views/renalware/hd/sessions/_thead.html.slim +4 -0
- data/app/views/renalware/layouts/pdf.pdf.slim +1 -1
- data/app/views/renalware/letters/contacts/_edit.html.slim +1 -1
- data/app/views/renalware/renal/aki_alerts/_filters.pdf.slim +25 -0
- data/app/views/renalware/renal/aki_alerts/_table.pdf.slim +29 -0
- data/app/views/renalware/renal/aki_alerts/edit.html.slim +1 -1
- data/app/views/renalware/renal/aki_alerts/index.html.slim +10 -0
- data/app/views/renalware/renal/aki_alerts/index.pdf.slim +14 -0
- data/app/views/renalware/shared/_please_print_using_print_button_warning.html.slim +18 -0
- data/app/views/renalware/transplants/donor_followups/_form.html.slim +2 -2
- data/app/views/renalware/transplants/recipient_followups/_form.html.slim +6 -1
- data/app/views/renalware/transplants/registration_statuses/_inputs.html.slim +4 -0
- data/app/views/renalware/transplants/registration_statuses/_list.html.slim +18 -5
- data/config/locales/custom.yml +2 -3
- data/config/locales/renalware/hd/session.en.yml +3 -0
- data/db/migrate/20180510151959_update_hd_overall_audit_to_version_7.rb +6 -0
- data/db/migrate/20180511100345_add_notes_to_transplant_registration_statuses.rb +5 -0
- data/db/migrate/20180511140415_add_message_hash_messaging_messages.rb +6 -0
- data/db/seeds/default/deaths/death_causes.rb +4 -4
- data/db/seeds/default/patients/patients_languages.rb +4 -3
- data/db/seeds/default/renal/prd_descriptions.rb +7 -5
- data/db/seeds/default/system/countries.rb +10 -6
- data/db/views/reporting_hd_overall_audit_v07.sql +44 -0
- data/lib/renalware/configuration.rb +4 -0
- data/lib/renalware/engine.rb +2 -0
- data/lib/renalware/version.rb +1 -1
- data/spec/factories/admissions/consults.rb +12 -0
- data/spec/support/capybara.rb +16 -21
- metadata +15 -3
- data/spec/support/poltergeist.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30e742fd5ca6fbadf5677398c873b1a644ac00076e7da84387ba9892252496ac
|
4
|
+
data.tar.gz: 4a575ab8a82880f2b9e66901415c42fd118e7cd0833d986bd899553ae0dbf317
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db22bef034ecdcef77e77d15a524a3a924d42fec046b377ca3f666a1d7070dd9288c1e355cc540013fdf585d11f2711e1a4043e55bd84796fe97b0e2c7d129e3
|
7
|
+
data.tar.gz: 13ac8dd0fb46a1eb03594e8c7dce8be3ddf9bcd423fcf15faa7491c7cbedd395c03b66835fd5d082d7de65a5f3db02f727186f5eb10b1a08d0b4587dc7c1cafa
|
data/README.md
CHANGED
@@ -117,12 +117,26 @@ delayed_job logs to its own log. To see the output:
|
|
117
117
|
|
118
118
|
## Running tests
|
119
119
|
|
120
|
-
Install
|
121
|
-
Download from [here](http://phantomjs.org/download.html) of follow these instructions
|
120
|
+
### Install chromedriver
|
122
121
|
|
123
|
-
|
124
|
-
|
125
|
-
|
122
|
+
On a Mac:
|
123
|
+
|
124
|
+
```
|
125
|
+
brew install chromedriver
|
126
|
+
gem install chromedriver-helper
|
127
|
+
chromedriver-update
|
128
|
+
```
|
129
|
+
|
130
|
+
If you have chromedriver errors it maybe your installed version of Chrome is not
|
131
|
+
compatible your chromedriver version.
|
132
|
+
|
133
|
+
In this case check your versions
|
134
|
+
```
|
135
|
+
chromedriver -v
|
136
|
+
chrome -v
|
137
|
+
``
|
138
|
+
and consult the driver release notee eg for [2.38](https://chromedriver.storage.googleapis.com/2.38/notes.txt)
|
139
|
+
to check compatibility
|
126
140
|
|
127
141
|
### RSpec unit and integration tests
|
128
142
|
|
Binary file
|
@@ -1,3 +1,14 @@
|
|
1
|
+
html,
|
2
|
+
body {
|
3
|
+
font-size: 10px;
|
4
|
+
font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
|
5
|
+
}
|
6
|
+
|
7
|
+
.page-break {
|
8
|
+
display:block;
|
9
|
+
clear:both;
|
10
|
+
page-break-after:always;
|
11
|
+
}
|
1
12
|
|
2
13
|
.letter-wrapper {
|
3
14
|
&.draft, &.pendingreview {
|
@@ -6,3 +17,4 @@
|
|
6
17
|
background-position: center center;
|
7
18
|
}
|
8
19
|
}
|
20
|
+
|
@@ -0,0 +1,210 @@
|
|
1
|
+
|
2
|
+
.noprint {
|
3
|
+
display: none !important;
|
4
|
+
min-width: 0em !important;
|
5
|
+
}
|
6
|
+
|
7
|
+
.print-only {
|
8
|
+
display: block;
|
9
|
+
}
|
10
|
+
|
11
|
+
a,
|
12
|
+
a:visited {
|
13
|
+
color: #000;
|
14
|
+
text-decoration: none;
|
15
|
+
}
|
16
|
+
|
17
|
+
.pdf {
|
18
|
+
// Header with Main title to the left and a muted subtitle to the right
|
19
|
+
.header {
|
20
|
+
h1, h2 {
|
21
|
+
margin-bottom: 7px;
|
22
|
+
margin-top: 0px;
|
23
|
+
line-height: 2rem;
|
24
|
+
}
|
25
|
+
h1 {
|
26
|
+
float: left;
|
27
|
+
font-size: 2rem;
|
28
|
+
}
|
29
|
+
|
30
|
+
h2 {
|
31
|
+
float: right;
|
32
|
+
font-size: 1.7rem;
|
33
|
+
line-height: 1.7rem;
|
34
|
+
font-weight: normal;
|
35
|
+
margin-top: 4px;
|
36
|
+
}
|
37
|
+
|
38
|
+
.muted {
|
39
|
+
color: #555;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
table {
|
44
|
+
width: 100%;
|
45
|
+
border-collapse: collapse;
|
46
|
+
|
47
|
+
// Could make this the default pdf table style but separate class for now
|
48
|
+
&.spacy {
|
49
|
+
td,
|
50
|
+
th {
|
51
|
+
padding: 4px 0;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
&.nested-table-in-order-to-prevent-orphaned-rows {
|
56
|
+
page-break-inside: avoid !important;
|
57
|
+
border-top: solid 1px #000;
|
58
|
+
}
|
59
|
+
|
60
|
+
tr {
|
61
|
+
page-break-inside: avoid;
|
62
|
+
}
|
63
|
+
|
64
|
+
th {
|
65
|
+
text-align: left;
|
66
|
+
padding: 4px 0;
|
67
|
+
}
|
68
|
+
|
69
|
+
td {
|
70
|
+
border-bottom: solid 1px #ddd;
|
71
|
+
}
|
72
|
+
|
73
|
+
td,
|
74
|
+
th {
|
75
|
+
page-break-inside: avoid;
|
76
|
+
|
77
|
+
p {
|
78
|
+
padding: 0;
|
79
|
+
margin: 0;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
// This section displays a summary of applied filters as a table
|
85
|
+
.filter-summary {
|
86
|
+
clear: both;
|
87
|
+
margin-bottom: 8px;
|
88
|
+
|
89
|
+
table {
|
90
|
+
width: auto;
|
91
|
+
}
|
92
|
+
|
93
|
+
th, td {
|
94
|
+
border: none;
|
95
|
+
}
|
96
|
+
|
97
|
+
th {
|
98
|
+
padding-left: 8px;
|
99
|
+
padding-right: 3px;
|
100
|
+
}
|
101
|
+
|
102
|
+
th:first-child {
|
103
|
+
text-decoration: underline;
|
104
|
+
padding-left: 0px;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
// Table helper classes copied form the main application
|
109
|
+
tr th,
|
110
|
+
tr td {
|
111
|
+
&.col-width-date {
|
112
|
+
width: 7.8em;
|
113
|
+
|
114
|
+
&.wide {
|
115
|
+
width: 9rem;
|
116
|
+
}
|
117
|
+
}
|
118
|
+
|
119
|
+
&.col-width-time {
|
120
|
+
width: 3rem;
|
121
|
+
min-width: 2.7rem;
|
122
|
+
}
|
123
|
+
|
124
|
+
&.col-width-date-time {
|
125
|
+
width: 9.5rem;
|
126
|
+
min-width: 9.3rem;
|
127
|
+
}
|
128
|
+
|
129
|
+
&.col-width-reference-without-prefix {
|
130
|
+
width: 7rem;
|
131
|
+
min-width: 5.5rem;
|
132
|
+
white-space: nowrap;
|
133
|
+
}
|
134
|
+
|
135
|
+
&.col-width-reference-no {
|
136
|
+
width: 8rem;
|
137
|
+
min-width: 8rem;
|
138
|
+
white-space: nowrap;
|
139
|
+
}
|
140
|
+
|
141
|
+
&.col-width-nhs-no {
|
142
|
+
width: 7rem;
|
143
|
+
min-width: 7rem;
|
144
|
+
white-space: nowrap;
|
145
|
+
}
|
146
|
+
|
147
|
+
&.col-width-bp {
|
148
|
+
width: 4.5rem;
|
149
|
+
min-width: 3.8rem;
|
150
|
+
}
|
151
|
+
|
152
|
+
&.col-width-toggle {
|
153
|
+
width: 9.7rem;
|
154
|
+
min-width: 9.7rem;
|
155
|
+
}
|
156
|
+
|
157
|
+
&.col-width-tiny {
|
158
|
+
width: 3rem;
|
159
|
+
}
|
160
|
+
|
161
|
+
&.col-width-tinyish {
|
162
|
+
width: 5rem;
|
163
|
+
min-width: 4.5rem;
|
164
|
+
}
|
165
|
+
|
166
|
+
&.col-width-small {
|
167
|
+
width: 7rem;
|
168
|
+
min-width: 5.1rem;
|
169
|
+
}
|
170
|
+
|
171
|
+
&.col-width-medium {
|
172
|
+
width: 12rem;
|
173
|
+
min-width: 10rem;
|
174
|
+
}
|
175
|
+
|
176
|
+
&.col-width-medium-ish {
|
177
|
+
width: 14rem;
|
178
|
+
min-width: 12rem;
|
179
|
+
}
|
180
|
+
|
181
|
+
&.col-width-large {
|
182
|
+
width: 20rem;
|
183
|
+
min-width: 15rem;
|
184
|
+
}
|
185
|
+
|
186
|
+
&.column-6-width {
|
187
|
+
width: 6%;
|
188
|
+
}
|
189
|
+
|
190
|
+
&.col-width-6 {
|
191
|
+
width: 6rem;
|
192
|
+
}
|
193
|
+
|
194
|
+
&.col-width-9 {
|
195
|
+
width: 9rem;
|
196
|
+
}
|
197
|
+
|
198
|
+
&.col-width-11 {
|
199
|
+
width: 11rem;
|
200
|
+
}
|
201
|
+
|
202
|
+
&.col-width-13 {
|
203
|
+
width: 13rem;
|
204
|
+
}
|
205
|
+
|
206
|
+
&.at-least {
|
207
|
+
width: auto;
|
208
|
+
}
|
209
|
+
}
|
210
|
+
}
|
@@ -7,17 +7,35 @@ module Renalware
|
|
7
7
|
module Admissions
|
8
8
|
class ConsultsController < BaseController
|
9
9
|
include Renalware::Concerns::Pageable
|
10
|
+
include Renalware::Concerns::PdfRenderable
|
10
11
|
|
11
12
|
# rubocop:disable Metrics/AbcSize
|
12
13
|
def index
|
13
14
|
session[:consults_results] = nil if params.key?(:reset)
|
14
15
|
query = ConsultQuery.new(params[:q])
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
|
17
|
+
respond_to do |format|
|
18
|
+
format.pdf do
|
19
|
+
consults = query.call
|
20
|
+
authorize consults
|
21
|
+
options = default_pdf_options.merge!(
|
22
|
+
pdf: "Admission Consults #{I18n.l(Time.zone.today)}",
|
23
|
+
locals: {
|
24
|
+
consults: CollectionPresenter.new(consults, ConsultPresenter),
|
25
|
+
query: query.search
|
26
|
+
}
|
27
|
+
)
|
28
|
+
render options
|
29
|
+
end
|
30
|
+
format.html do
|
31
|
+
consults = query.call.page(page).per(per_page)
|
32
|
+
authorize consults
|
33
|
+
render locals: {
|
34
|
+
consults: CollectionPresenter.new(consults, ConsultPresenter),
|
35
|
+
query: query.search
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
21
39
|
end
|
22
40
|
# rubocop:enable Metrics/AbcSize
|
23
41
|
|
@@ -10,19 +10,23 @@ module Renalware
|
|
10
10
|
included do
|
11
11
|
protected
|
12
12
|
|
13
|
+
# rubocop:disable Metrics/MethodLength
|
13
14
|
def default_pdf_options
|
14
15
|
{
|
15
16
|
page_size: "A4",
|
16
17
|
layout: "renalware/layouts/pdf",
|
17
18
|
disposition: "inline",
|
19
|
+
margin: { top: 10, bottom: 10, left: 10, right: 10 },
|
18
20
|
footer: {
|
19
21
|
font_size: 8,
|
20
|
-
right: "Page [page] of [topage]"
|
22
|
+
right: "Page [page] of [topage]",
|
23
|
+
left: I18n.l(Time.zone.now)
|
21
24
|
},
|
22
|
-
show_as_html:
|
25
|
+
show_as_html: render_pdf_as_html?,
|
23
26
|
encoding: "UTF-8"
|
24
27
|
}
|
25
28
|
end
|
29
|
+
# rubocop:enable Metrics/MethodLength
|
26
30
|
|
27
31
|
# Render a Liquid template loaded from the database.
|
28
32
|
# The template may have variable place holders w.g. {{ patient.name }} and these
|
@@ -37,6 +41,11 @@ module Renalware
|
|
37
41
|
|
38
42
|
private
|
39
43
|
|
44
|
+
def render_pdf_as_html?
|
45
|
+
Renalware.config.render_pdf_as_html_for_debugging ||
|
46
|
+
(Rails.env.development? || Rails.env.test?) && params.key?(:debug)
|
47
|
+
end
|
48
|
+
|
40
49
|
# By default if no variables supplied, we insert the patient drop to allow basic patient
|
41
50
|
# data to be accessed in the template with eg {{ patient.name }}
|
42
51
|
# Note the has key must be a string and not a symbol.
|
@@ -6,17 +6,17 @@ module Renalware
|
|
6
6
|
module Renal
|
7
7
|
class AKIAlertsController < BaseController
|
8
8
|
include Renalware::Concerns::Pageable
|
9
|
+
include Renalware::Concerns::PdfRenderable
|
9
10
|
|
10
11
|
def index
|
11
12
|
query = search_form.query
|
12
|
-
alerts = query.call
|
13
|
+
alerts = query.call
|
13
14
|
authorize alerts
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
}
|
15
|
+
|
16
|
+
respond_to do |format|
|
17
|
+
format.pdf { render_index_pdf(query, alerts) }
|
18
|
+
format.html { render_index_html(query, alerts) }
|
19
|
+
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def edit
|
@@ -35,6 +35,28 @@ module Renalware
|
|
35
35
|
|
36
36
|
private
|
37
37
|
|
38
|
+
def render_index_pdf(query, alerts)
|
39
|
+
options = default_pdf_options.merge!(
|
40
|
+
pdf: "AKI Alerts #{I18n.l(Time.zone.today)}",
|
41
|
+
locals: {
|
42
|
+
alerts: alerts,
|
43
|
+
form: search_form,
|
44
|
+
search: query.search,
|
45
|
+
path_params: path_params
|
46
|
+
}
|
47
|
+
)
|
48
|
+
render options
|
49
|
+
end
|
50
|
+
|
51
|
+
def render_index_html(query, alerts)
|
52
|
+
render locals: {
|
53
|
+
alerts: alerts.page(page).per(per_page),
|
54
|
+
form: search_form,
|
55
|
+
search: query.search,
|
56
|
+
path_params: path_params
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
38
60
|
def search_form
|
39
61
|
@search_form ||= begin
|
40
62
|
options = params.key?(:q) ? search_params : {}
|