renalware-core 2.0.24 → 2.0.25
Sign up to get free protection for your applications and to get access to all the features.
- 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 : {}
|