renalware-core 2.0.83 → 2.0.84
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/renalware/transplants.js +3 -0
- data/app/assets/stylesheets/renalware/modules/_transplants.scss +30 -0
- data/app/controllers/renalware/transplants/recipient_followups_controller.rb +57 -23
- data/app/models/renalware/feeds/files/practice_memberships/import_job.rb +1 -1
- data/app/models/renalware/feeds/files/primary_care_physicians/import_job.rb +1 -1
- data/app/models/renalware/feeds/message_processor.rb +3 -3
- data/app/models/renalware/letters/event/clinic_visit.rb +1 -1
- data/app/models/renalware/letters/pathology_layout.rb +0 -1
- data/app/models/renalware/letters/rtf_renderer.rb +1 -1
- data/app/models/renalware/system/render_liquid_template.rb +1 -1
- data/app/models/renalware/transplants/recipient_followup.rb +9 -0
- data/app/models/renalware/transplants/registrations/wait_list_query.rb +0 -1
- data/app/models/renalware/transplants/rejection_episode.rb +22 -0
- data/app/models/renalware/transplants/rejection_treatment.rb +16 -0
- data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +3 -3
- data/app/models/renalware/ukrdc/patients_query.rb +6 -4
- data/app/models/renalware/ukrdc/transmission_log.rb +3 -3
- data/app/policies/renalware/transplants/recipient_followup_policy.rb +10 -0
- data/app/policies/renalware/transplants/rejection_episode_policy.rb +16 -0
- data/app/presenters/renalware/hd/session_presenter.rb +1 -1
- data/app/views/renalware/api/ukrdc/patients/_medications.xml.builder +0 -1
- data/app/views/renalware/transplants/recipient_followups/_form.html.slim +23 -2
- data/app/views/renalware/transplants/recipient_followups/_rejection_episode_fields.html.slim +13 -0
- data/app/views/renalware/transplants/recipient_followups/show.html.slim +7 -0
- data/app/views/renalware/transplants/recipient_operations/_list.html.slim +1 -1
- data/app/views/renalware/transplants/rejection_episodes/_table.html.slim +15 -0
- data/config/locales/renalware/transplants/rejection_episode.en.yml +7 -0
- data/db/migrate/20190612124015_create_transplant_rejection_episodes.rb +15 -0
- data/db/migrate/20190617121528_create_transplant_rejection_treatments.rb +17 -0
- data/db/seeds/default/transplants/{transplant_donor_stages.rb → donor_stages.rb} +1 -3
- data/db/seeds/default/transplants/{transplant_failure_cause_descriptions.rb → failure_cause_descriptions.rb} +0 -1
- data/db/seeds/default/transplants/{transplant_registration_statuses.rb → registration_statuses.rb} +0 -1
- data/db/seeds/default/transplants/rejection_treatments.rb +21 -0
- data/db/seeds/default/transplants/seeds.rb +4 -3
- data/lib/core_extensions/active_support/duration.rb +1 -1
- data/lib/core_extensions/i18n/always_cascade.rb +1 -1
- data/lib/document/base.rb +1 -1
- data/lib/renalware/version.rb +1 -1
- data/spec/factories/system/api_logs.rb +1 -1
- data/spec/factories/transplants/rejection_episodes.rb +9 -0
- data/spec/factories/transplants/rejection_treatments.rb +7 -0
- metadata +34 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f61c5bd90607cab06899b310da72383a3aa1ca3aff93486b8380bef054c53a22
|
4
|
+
data.tar.gz: b259dbd924ce1ec71afc4285ab6a7dfb3925e277abe45940eaa5c48e3b82984a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea7b8e06397195ebd8b2323e049c300ed8b331a2a116f54192b02719be35a500e254eeb97972a8521aeeefdca2c4cb566237a21f8865a7f9a7927e60e493d4df
|
7
|
+
data.tar.gz: dd8a0a12995f7903d4bc72daae8fa7812ed67473e95db75f4f7f7fdfe86acf79cffd546329242df09058d37accd2ed212a2d7022dbd59626c08d05b16067b2c0
|
@@ -15,3 +15,33 @@
|
|
15
15
|
}
|
16
16
|
}
|
17
17
|
}
|
18
|
+
|
19
|
+
.rejection-episode {
|
20
|
+
position: relative;
|
21
|
+
border: solid 1px #aaa;
|
22
|
+
padding: 1rem 1rem 0.2rem 1rem;
|
23
|
+
clear: both;
|
24
|
+
margin: 0 0 1rem 0;
|
25
|
+
border-radius: 2px;
|
26
|
+
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.2);
|
27
|
+
transition: 0.3s;
|
28
|
+
|
29
|
+
&:hover {
|
30
|
+
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
|
31
|
+
}
|
32
|
+
|
33
|
+
a.remove_fields {
|
34
|
+
position: absolute;
|
35
|
+
right: 12px;
|
36
|
+
top: 5px;
|
37
|
+
z-index: 1;
|
38
|
+
}
|
39
|
+
|
40
|
+
.rejection-episode--creation {
|
41
|
+
text-align: right;
|
42
|
+
padding: 0;
|
43
|
+
margin: 0;
|
44
|
+
color: $mid-grey;
|
45
|
+
font-size: .9rem;
|
46
|
+
}
|
47
|
+
}
|
@@ -2,33 +2,31 @@
|
|
2
2
|
|
3
3
|
require_dependency "renalware/transplants/base_controller"
|
4
4
|
|
5
|
+
# rubocop:disable Metrics/ClassLength
|
5
6
|
module Renalware
|
6
7
|
module Transplants
|
7
8
|
class RecipientFollowupsController < BaseController
|
8
|
-
before_action :load_patient
|
9
|
+
# before_action :load_patient
|
9
10
|
|
10
11
|
def show
|
11
|
-
|
12
|
-
|
12
|
+
followup = operation.followup
|
13
|
+
authorize followup
|
14
|
+
render locals: { patient: patient, recipient_followup: followup }
|
13
15
|
end
|
14
16
|
|
15
17
|
def new
|
16
|
-
|
17
|
-
patient: patient,
|
18
|
-
recipient_followup: operation.build_followup
|
19
|
-
}
|
18
|
+
render_new(operation.build_followup)
|
20
19
|
end
|
21
20
|
|
22
21
|
def create
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
if recipient_followup.save
|
22
|
+
followup = copy_attributes_onto_followup(operation.build_followup)
|
23
|
+
authorize followup
|
24
|
+
if followup.save
|
27
25
|
redirect_to patient_transplants_recipient_dashboard_path(patient),
|
28
|
-
notice:
|
26
|
+
notice: success_msg_for("recipient follow up")
|
29
27
|
else
|
30
|
-
flash.now[:error] =
|
31
|
-
|
28
|
+
flash.now[:error] = failed_msg_for("recipient follow up")
|
29
|
+
render_new(followup)
|
32
30
|
end
|
33
31
|
end
|
34
32
|
|
@@ -37,25 +35,47 @@ module Renalware
|
|
37
35
|
end
|
38
36
|
|
39
37
|
def update
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
if recipient_followup.save
|
38
|
+
followup = copy_attributes_onto_followup(operation.followup)
|
39
|
+
authorize followup
|
40
|
+
if followup.save
|
44
41
|
redirect_to patient_transplants_recipient_dashboard_path(patient),
|
45
42
|
notice: success_msg_for("recipient follow up")
|
46
43
|
else
|
47
44
|
flash.now[:error] = failed_msg_for("recipient follow up")
|
48
|
-
render_edit(
|
45
|
+
render_edit(followup)
|
49
46
|
end
|
50
47
|
end
|
51
48
|
|
52
49
|
protected
|
53
50
|
|
51
|
+
def copy_attributes_onto_followup(followup)
|
52
|
+
followup.attributes = followup_attributes
|
53
|
+
followup.rejection_episodes.each do |episode|
|
54
|
+
episode.by = current_user
|
55
|
+
end
|
56
|
+
followup
|
57
|
+
end
|
58
|
+
|
59
|
+
def render_new(followup)
|
60
|
+
authorize followup
|
61
|
+
render(
|
62
|
+
:new,
|
63
|
+
locals: {
|
64
|
+
patient: patient,
|
65
|
+
recipient_followup: followup
|
66
|
+
}
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
54
70
|
def render_edit(followup)
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
71
|
+
authorize followup
|
72
|
+
render(
|
73
|
+
:edit,
|
74
|
+
locals: {
|
75
|
+
patient: patient,
|
76
|
+
recipient_followup: followup
|
77
|
+
}
|
78
|
+
)
|
59
79
|
end
|
60
80
|
|
61
81
|
def operation
|
@@ -69,6 +89,7 @@ module Renalware
|
|
69
89
|
.merge(document: document_attributes)
|
70
90
|
end
|
71
91
|
|
92
|
+
# rubocop:disable Metrics/MethodLength
|
72
93
|
def attributes
|
73
94
|
[
|
74
95
|
:notes,
|
@@ -82,9 +103,21 @@ module Renalware
|
|
82
103
|
:graft_function_onset,
|
83
104
|
:last_post_transplant_dialysis_on,
|
84
105
|
:return_to_regular_dialysis_on,
|
106
|
+
rejection_episodes_attributes: [
|
107
|
+
:id,
|
108
|
+
:recorded_on,
|
109
|
+
:notes,
|
110
|
+
:treatment_id,
|
111
|
+
:created_at,
|
112
|
+
:updated_at,
|
113
|
+
:created_by_id,
|
114
|
+
:updated_by_id,
|
115
|
+
:_destroy
|
116
|
+
],
|
85
117
|
document: []
|
86
118
|
]
|
87
119
|
end
|
120
|
+
# rubocop:enable Metrics/MethodLength
|
88
121
|
|
89
122
|
def document_attributes
|
90
123
|
params
|
@@ -95,3 +128,4 @@ module Renalware
|
|
95
128
|
end
|
96
129
|
end
|
97
130
|
end
|
131
|
+
# rubocop:enable Metrics/ClassLength
|
@@ -9,7 +9,7 @@ module Renalware
|
|
9
9
|
class ImportJob < ApplicationJob
|
10
10
|
include StringLogging
|
11
11
|
include Feeds::Job
|
12
|
-
FILE_TO_EXTRACT_FROM_ARCHIVE = /epracmem.csv
|
12
|
+
FILE_TO_EXTRACT_FROM_ARCHIVE = /epracmem.csv/.freeze
|
13
13
|
|
14
14
|
def perform(file)
|
15
15
|
logging_to_stringio(strio = StringIO.new)
|
@@ -46,9 +46,9 @@ module Renalware
|
|
46
46
|
# - so that any error in the listener has its own try mechansim and does not cause the
|
47
47
|
# current job to retry,
|
48
48
|
broadcast(:message_processed, feed_message: feed_message)
|
49
|
-
rescue StandardError =>
|
50
|
-
notify_exception(
|
51
|
-
raise
|
49
|
+
rescue StandardError => e
|
50
|
+
notify_exception(e)
|
51
|
+
raise e
|
52
52
|
end
|
53
53
|
|
54
54
|
private
|
@@ -55,7 +55,7 @@ module Renalware
|
|
55
55
|
Liquid::Template.error_mode = :strict
|
56
56
|
template = Template.find_by!(name: template_name)
|
57
57
|
liquified_template = Liquid::Template.parse(template.body)
|
58
|
-
liquified_template.render!(variables,
|
58
|
+
liquified_template.render!(variables, strict_variables: true)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -18,6 +18,15 @@ module Renalware
|
|
18
18
|
belongs_to :transplant_failure_cause_description,
|
19
19
|
class_name: "Transplants::FailureCauseDescription",
|
20
20
|
foreign_key: "transplant_failure_cause_description_id"
|
21
|
+
has_many :rejection_episodes,
|
22
|
+
class_name: "RejectionEpisode",
|
23
|
+
dependent: :restrict_with_exception,
|
24
|
+
foreign_key: "followup_id",
|
25
|
+
inverse_of: :followup
|
26
|
+
|
27
|
+
accepts_nested_attributes_for :rejection_episodes,
|
28
|
+
reject_if: :all_blank,
|
29
|
+
allow_destroy: true
|
21
30
|
|
22
31
|
has_paper_trail class_name: "Renalware::Transplants::Version",
|
23
32
|
on: [:create, :update, :destroy]
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "renalware/transplants"
|
4
|
+
|
5
|
+
module Renalware
|
6
|
+
module Transplants
|
7
|
+
class RejectionEpisode < ApplicationRecord
|
8
|
+
include Accountable
|
9
|
+
has_paper_trail(
|
10
|
+
class_name: "Renalware::Transplants::Version",
|
11
|
+
on: [:create, :update, :destroy]
|
12
|
+
)
|
13
|
+
belongs_to :followup, class_name: "RecipientFollowup", touch: true
|
14
|
+
belongs_to :treatment, class_name: "RejectionTreatment"
|
15
|
+
validates :recorded_on, presence: true
|
16
|
+
validates :notes, presence: true
|
17
|
+
validates :followup, presence: true, if: proc { |re| re.followup_id.blank? }
|
18
|
+
validates :followup_id, presence: true, if: proc { |re| re.followup.blank? }
|
19
|
+
scope :ordered, -> { order(:recorded_on, :created_at) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "renalware/transplants"
|
4
|
+
|
5
|
+
module Renalware
|
6
|
+
module Transplants
|
7
|
+
class RejectionTreatment < ApplicationRecord
|
8
|
+
validates :name, presence: true
|
9
|
+
scope :ordered, -> { order(:position) }
|
10
|
+
|
11
|
+
def to_s
|
12
|
+
name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -46,10 +46,10 @@ module Renalware
|
|
46
46
|
print_summary
|
47
47
|
email_summary
|
48
48
|
end
|
49
|
-
rescue StandardError =>
|
49
|
+
rescue StandardError => e
|
50
50
|
# TODO: if fails before copying to outgoing then we should roll back BatchNumber
|
51
|
-
Engine.exception_notifier.notify(
|
52
|
-
raise
|
51
|
+
Engine.exception_notifier.notify(e)
|
52
|
+
raise e
|
53
53
|
end
|
54
54
|
|
55
55
|
private
|
@@ -20,16 +20,18 @@ module Renalware
|
|
20
20
|
class PatientsQuery
|
21
21
|
def call(changed_since: nil)
|
22
22
|
if changed_since.present?
|
23
|
-
|
23
|
+
sendable_patients.where("updated_at > ?", changed_since)
|
24
24
|
else
|
25
|
-
|
25
|
+
sendable_patients.where("(sent_to_ukrdc_at is null) or (updated_at > sent_to_ukrdc_at)")
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
30
30
|
|
31
|
-
def
|
32
|
-
Renalware::Patient.where(send_to_rpv: true)
|
31
|
+
def sendable_patients
|
32
|
+
Renalware::Patient.where(send_to_rpv: true).or(
|
33
|
+
Renalware::Patient.where(send_to_renalreg: true)
|
34
|
+
)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -15,11 +15,11 @@ module Renalware
|
|
15
15
|
log = new(patient: patient, sent_at: Time.zone.now, request_uuid: request_uuid)
|
16
16
|
yield log if block_given?
|
17
17
|
log.save!
|
18
|
-
rescue StandardError =>
|
19
|
-
log.error << formatted_exception(
|
18
|
+
rescue StandardError => e
|
19
|
+
log.error << formatted_exception(e)
|
20
20
|
log.status = :error
|
21
21
|
log.save!
|
22
|
-
raise
|
22
|
+
raise e
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.formatted_exception(error)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "renalware/transplants"
|
4
|
+
|
5
|
+
module Renalware
|
6
|
+
module Transplants
|
7
|
+
class RejectionEpisodePolicy < BasePolicy
|
8
|
+
def destroy?
|
9
|
+
return true unless record.persisted?
|
10
|
+
return true if user_is_devops? || user_is_super_admin?
|
11
|
+
|
12
|
+
false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -27,7 +27,6 @@ xml.Medications do
|
|
27
27
|
prescription.dose_unit&.text,
|
28
28
|
prescription.frequency].compact.join(" ")
|
29
29
|
|
30
|
-
|
31
30
|
# rubocop:disable Style/RescueModifier
|
32
31
|
# Only output DoseQuantity is it is an integer or decimal
|
33
32
|
dose_amount_is_a_number = Float(prescription.dose_amount) rescue nil
|
@@ -3,7 +3,7 @@ ruby:
|
|
3
3
|
|
4
4
|
.row.top
|
5
5
|
.medium-6.columns
|
6
|
-
= f.submit "Save", class: "button"
|
6
|
+
= f.submit "Save", class: "button save-button"
|
7
7
|
span= " or "
|
8
8
|
= link_to "cancel", back_path
|
9
9
|
|
@@ -56,15 +56,36 @@ ruby:
|
|
56
56
|
= render_input fd, :acute_rejection_biopsy_proven
|
57
57
|
= render_input fd, :primary_or_recurrent_renal_disease
|
58
58
|
|
59
|
+
/ followup.rejection_episodes can be dynamically added using the helpers in the cooon gem
|
60
|
+
/ We use accepts_nested.. on the server to rebuild the collection on save
|
61
|
+
article.rejection-episodes
|
62
|
+
header
|
63
|
+
h2 Transplant Rejection
|
64
|
+
= link_to_add_association "Add",
|
65
|
+
f,
|
66
|
+
:rejection_episodes,
|
67
|
+
class: "button",
|
68
|
+
data: { "association-insertion-node" => "#rejection-episodes",
|
69
|
+
"association-insertion-method" => "append" }
|
70
|
+
#rejection-episodes
|
71
|
+
/ It is important we do not try and SQL-order the episodes here as that discards the
|
72
|
+
/ unsaved ones that cocoon has kept around for us. So instead use #sort_by, allowing for
|
73
|
+
/ a nil recorded_on date if that value in a newly added and unsaved episode has not yet been
|
74
|
+
/ entered.
|
75
|
+
- episodes = f.object.rejection_episodes.sort_by{ |ep| ep.recorded_on || Time.zone.today }
|
76
|
+
= f.simple_fields_for :rejection_episodes, episodes do |episode|
|
77
|
+
= render "rejection_episode_fields", f: episode
|
78
|
+
|
59
79
|
= render layout: "renalware/shared/fieldset",
|
60
80
|
locals: { legend: "Admin", name: "admin" } do
|
61
81
|
= f.input :notes,
|
62
82
|
as: :text,
|
63
83
|
input_html: { rows: 5 }
|
64
84
|
|
85
|
+
|
65
86
|
.row
|
66
87
|
.large-12.columns
|
67
|
-
= f.submit "Save", class: "button"
|
88
|
+
= f.submit "Save", class: "button save-button"
|
68
89
|
|
69
90
|
span= " or "
|
70
91
|
= link_to "cancel", back_path
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/ Fields for cocoon gem
|
2
|
+
.rejection-episode.nested-fields(data={rejection_episode_id: f.object.id} )
|
3
|
+
- if policy(f.object).destroy?
|
4
|
+
= link_to_remove_association "Remove", f
|
5
|
+
= f.input :recorded_on, as: :date_picker, wrapper: :horizontal_datepicker
|
6
|
+
= f.association :treatment, wrapper: :horizontal_medium
|
7
|
+
= f.input :notes, as: :text, input_html: { rows: 3 }, wrapper: :horizontal_large
|
8
|
+
= f.input :updated_by_id, as: :hidden
|
9
|
+
= f.input :created_by_id, as: :hidden
|
10
|
+
= f.input :updated_at, as: :hidden
|
11
|
+
= f.input :created_at, as: :hidden
|
12
|
+
- if f.object.persisted?
|
13
|
+
.rejection-episode--creation= "Created by #{f.object.created_by} on #{l(f.object.created_at.to_date)}"
|
@@ -39,3 +39,10 @@
|
|
39
39
|
= render "renalware/shared/attributes_group",
|
40
40
|
legend: "Admin", destination: "admin",
|
41
41
|
models: { recipient_followup => [:notes] }
|
42
|
+
|
43
|
+
.columns.small-12
|
44
|
+
article
|
45
|
+
header
|
46
|
+
h2 Transplant Rejection
|
47
|
+
= render "renalware/transplants/rejection_episodes/table",
|
48
|
+
episodes: recipient_followup.rejection_episodes.ordered.includes(:created_by)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
- return if episodes.blank?
|
2
|
+
|
3
|
+
table
|
4
|
+
thead
|
5
|
+
tr
|
6
|
+
th.col-width-date Recorded On
|
7
|
+
th.col-width-medium Recorded By
|
8
|
+
th.col-width-large Treatment
|
9
|
+
th Notes
|
10
|
+
- episodes.each do |episode|
|
11
|
+
tr
|
12
|
+
td= l(episode.recorded_on)
|
13
|
+
td.col-width-medium-with-ellipsis= episode.created_by
|
14
|
+
td= episode.treatment
|
15
|
+
td= episode.notes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateTransplantRejectionEpisodes < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
create_table :transplant_rejection_episodes do |t|
|
4
|
+
t.date :recorded_on, null: false
|
5
|
+
t.text :notes
|
6
|
+
t.references :followup,
|
7
|
+
foreign_key: { to_table: :transplant_recipient_followups },
|
8
|
+
null: false,
|
9
|
+
index: true
|
10
|
+
t.references :updated_by, foreign_key: { to_table: :users }, index: true, null: false
|
11
|
+
t.references :created_by, foreign_key: { to_table: :users }, index: true, null: false
|
12
|
+
t.timestamps null: false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateTransplantRejectionTreatments < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
# The treatment given for an episode
|
4
|
+
create_table :transplant_rejection_treatments do |t|
|
5
|
+
t.text :name, null: false, index: :unique
|
6
|
+
t.integer :position, index: true, null: false, default: 0
|
7
|
+
t.timestamps null: false
|
8
|
+
end
|
9
|
+
|
10
|
+
add_reference(
|
11
|
+
:transplant_rejection_episodes,
|
12
|
+
:treatment,
|
13
|
+
foreign_key: { to_table: :transplant_rejection_treatments },
|
14
|
+
index: true
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
module Renalware
|
4
4
|
log "Adding Transplant Donor Stage Positions" do
|
5
|
-
|
6
5
|
names = [
|
7
6
|
"Currently Active",
|
8
7
|
"Active Workup but on Hold",
|
@@ -22,13 +21,12 @@ module Renalware
|
|
22
21
|
end
|
23
22
|
|
24
23
|
log "Adding Transplant Donor Stage Statuses" do
|
25
|
-
|
26
24
|
names = [
|
27
25
|
"Initial Contact",
|
28
26
|
"Initial Meeting / Tests",
|
29
27
|
"Extended Assessment",
|
30
28
|
"Awaiting HTA",
|
31
|
-
"Completed / Ready"
|
29
|
+
"Completed / Ready"
|
32
30
|
]
|
33
31
|
|
34
32
|
names.each_with_index do |name, index|
|
data/db/seeds/default/transplants/{transplant_registration_statuses.rb → registration_statuses.rb}
RENAMED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
module Renalware
|
4
4
|
log "Adding Transplant Registration Statuses" do
|
5
|
-
|
6
5
|
# HC on #1664: The only difficulty is for patients who receive a pre-emptive transplant so
|
7
6
|
# their ESRF date is the date of their transplant. The RR list does not
|
8
7
|
# accommodate that but I would put them as On Transplant List (3)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
log "Adding Transplant Rejection Treatments" do
|
5
|
+
names = [
|
6
|
+
"None",
|
7
|
+
"Methylprednisolone",
|
8
|
+
"ATG",
|
9
|
+
"Methylprednisolone and ATG",
|
10
|
+
"PEX and ivImmunoglobulin",
|
11
|
+
"Change in oral immunosuppression"
|
12
|
+
]
|
13
|
+
|
14
|
+
names.each_with_index do |name, index|
|
15
|
+
Transplants::RejectionTreatment.find_or_create_by(
|
16
|
+
name: name,
|
17
|
+
position: index
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "./
|
4
|
-
require_relative "./
|
5
|
-
require_relative "./
|
3
|
+
require_relative "./registration_statuses"
|
4
|
+
require_relative "./failure_cause_descriptions"
|
5
|
+
require_relative "./donor_stages"
|
6
|
+
require_relative "./rejection_treatments"
|
@@ -12,7 +12,7 @@ module CoreExtensions
|
|
12
12
|
# duration.inspect #=> "1 week, 0 days, and 0 hours"
|
13
13
|
# duration.to_formatted_s #=> "1 week"
|
14
14
|
#
|
15
|
-
# rubocop:disable Style/Semicolon, Style/EachWithObject
|
15
|
+
# rubocop:disable Style/Semicolon, Style/EachWithObject
|
16
16
|
def to_formatted_s
|
17
17
|
parts
|
18
18
|
.reduce(::Hash.new(0)) { |h, (l, r)| h[l] += r; h }
|
@@ -22,7 +22,7 @@ module CoreExtensions
|
|
22
22
|
module I18n
|
23
23
|
module AlwaysCascade
|
24
24
|
def translate(key, options = {})
|
25
|
-
super(key, options.merge(
|
25
|
+
super(key, options.merge(cascade: { offset: 2, skip_root: false }))
|
26
26
|
end
|
27
27
|
alias t translate
|
28
28
|
end
|
data/lib/document/base.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.84
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airslie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_type
|
@@ -310,14 +310,14 @@ dependencies:
|
|
310
310
|
requirements:
|
311
311
|
- - "~>"
|
312
312
|
- !ruby/object:Gem::Version
|
313
|
-
version: 0.3.
|
313
|
+
version: 0.3.9
|
314
314
|
type: :runtime
|
315
315
|
prerelease: false
|
316
316
|
version_requirements: !ruby/object:Gem::Requirement
|
317
317
|
requirements:
|
318
318
|
- - "~>"
|
319
319
|
- !ruby/object:Gem::Version
|
320
|
-
version: 0.3.
|
320
|
+
version: 0.3.9
|
321
321
|
- !ruby/object:Gem::Dependency
|
322
322
|
name: httparty
|
323
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -602,16 +602,16 @@ dependencies:
|
|
602
602
|
name: rack-attack
|
603
603
|
requirement: !ruby/object:Gem::Requirement
|
604
604
|
requirements:
|
605
|
-
- - "
|
605
|
+
- - ">="
|
606
606
|
- !ruby/object:Gem::Version
|
607
|
-
version: '
|
607
|
+
version: '0'
|
608
608
|
type: :runtime
|
609
609
|
prerelease: false
|
610
610
|
version_requirements: !ruby/object:Gem::Requirement
|
611
611
|
requirements:
|
612
|
-
- - "
|
612
|
+
- - ">="
|
613
613
|
- !ruby/object:Gem::Version
|
614
|
-
version: '
|
614
|
+
version: '0'
|
615
615
|
- !ruby/object:Gem::Dependency
|
616
616
|
name: rails
|
617
617
|
requirement: !ruby/object:Gem::Requirement
|
@@ -828,14 +828,14 @@ dependencies:
|
|
828
828
|
requirements:
|
829
829
|
- - "~>"
|
830
830
|
- !ruby/object:Gem::Version
|
831
|
-
version: 4.0
|
831
|
+
version: 4.1.0
|
832
832
|
type: :runtime
|
833
833
|
prerelease: false
|
834
834
|
version_requirements: !ruby/object:Gem::Requirement
|
835
835
|
requirements:
|
836
836
|
- - "~>"
|
837
837
|
- !ruby/object:Gem::Version
|
838
|
-
version: 4.0
|
838
|
+
version: 4.1.0
|
839
839
|
- !ruby/object:Gem::Dependency
|
840
840
|
name: virtus
|
841
841
|
requirement: !ruby/object:Gem::Requirement
|
@@ -854,30 +854,30 @@ dependencies:
|
|
854
854
|
name: whenever
|
855
855
|
requirement: !ruby/object:Gem::Requirement
|
856
856
|
requirements:
|
857
|
-
- - "
|
857
|
+
- - ">="
|
858
858
|
- !ruby/object:Gem::Version
|
859
|
-
version: 0
|
859
|
+
version: '0'
|
860
860
|
type: :runtime
|
861
861
|
prerelease: false
|
862
862
|
version_requirements: !ruby/object:Gem::Requirement
|
863
863
|
requirements:
|
864
|
-
- - "
|
864
|
+
- - ">="
|
865
865
|
- !ruby/object:Gem::Version
|
866
|
-
version: 0
|
866
|
+
version: '0'
|
867
867
|
- !ruby/object:Gem::Dependency
|
868
868
|
name: wicked_pdf
|
869
869
|
requirement: !ruby/object:Gem::Requirement
|
870
870
|
requirements:
|
871
|
-
- - "
|
871
|
+
- - ">="
|
872
872
|
- !ruby/object:Gem::Version
|
873
|
-
version:
|
873
|
+
version: '0'
|
874
874
|
type: :runtime
|
875
875
|
prerelease: false
|
876
876
|
version_requirements: !ruby/object:Gem::Requirement
|
877
877
|
requirements:
|
878
|
-
- - "
|
878
|
+
- - ">="
|
879
879
|
- !ruby/object:Gem::Version
|
880
|
-
version:
|
880
|
+
version: '0'
|
881
881
|
- !ruby/object:Gem::Dependency
|
882
882
|
name: wisper
|
883
883
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1010,6 +1010,7 @@ files:
|
|
1010
1010
|
- app/assets/javascripts/renalware/table.js
|
1011
1011
|
- app/assets/javascripts/renalware/tabs.js
|
1012
1012
|
- app/assets/javascripts/renalware/toggler.js
|
1013
|
+
- app/assets/javascripts/renalware/transplants.js
|
1013
1014
|
- app/assets/stylesheets/renalware/application.scss
|
1014
1015
|
- app/assets/stylesheets/renalware/base/_mixins.scss
|
1015
1016
|
- app/assets/stylesheets/renalware/base/_variables.scss
|
@@ -1813,6 +1814,8 @@ files:
|
|
1813
1814
|
- app/models/renalware/transplants/registration_status.rb
|
1814
1815
|
- app/models/renalware/transplants/registration_status_description.rb
|
1815
1816
|
- app/models/renalware/transplants/registrations/wait_list_query.rb
|
1817
|
+
- app/models/renalware/transplants/rejection_episode.rb
|
1818
|
+
- app/models/renalware/transplants/rejection_treatment.rb
|
1816
1819
|
- app/models/renalware/transplants/version.rb
|
1817
1820
|
- app/models/renalware/ukrdc.rb
|
1818
1821
|
- app/models/renalware/ukrdc/batch_number.rb
|
@@ -1905,9 +1908,11 @@ files:
|
|
1905
1908
|
- app/policies/renalware/system/message_policy.rb
|
1906
1909
|
- app/policies/renalware/system/user_feedback_policy.rb
|
1907
1910
|
- app/policies/renalware/transplants/donor_stage_policy.rb
|
1911
|
+
- app/policies/renalware/transplants/recipient_followup_policy.rb
|
1908
1912
|
- app/policies/renalware/transplants/recipient_operation_policy.rb
|
1909
1913
|
- app/policies/renalware/transplants/recipient_workup_policy.rb
|
1910
1914
|
- app/policies/renalware/transplants/registration_policy.rb
|
1915
|
+
- app/policies/renalware/transplants/rejection_episode_policy.rb
|
1911
1916
|
- app/policies/renalware/user_policy.rb
|
1912
1917
|
- app/policies/renalware/virology/dashboard_policy.rb
|
1913
1918
|
- app/policies/renalware/virology/profile_policy.rb
|
@@ -2836,6 +2841,7 @@ files:
|
|
2836
2841
|
- app/views/renalware/transplants/recipient_dashboards/_page_actions.html.slim
|
2837
2842
|
- app/views/renalware/transplants/recipient_dashboards/show.html.slim
|
2838
2843
|
- app/views/renalware/transplants/recipient_followups/_form.html.slim
|
2844
|
+
- app/views/renalware/transplants/recipient_followups/_rejection_episode_fields.html.slim
|
2839
2845
|
- app/views/renalware/transplants/recipient_followups/edit.html.slim
|
2840
2846
|
- app/views/renalware/transplants/recipient_followups/new.html.slim
|
2841
2847
|
- app/views/renalware/transplants/recipient_followups/show.html.slim
|
@@ -2863,6 +2869,7 @@ files:
|
|
2863
2869
|
- app/views/renalware/transplants/registrations/_summary.html.slim
|
2864
2870
|
- app/views/renalware/transplants/registrations/edit.html.slim
|
2865
2871
|
- app/views/renalware/transplants/registrations/show.html.slim
|
2872
|
+
- app/views/renalware/transplants/rejection_episodes/_table.html.slim
|
2866
2873
|
- app/views/renalware/transplants/wait_lists/_registration.html.slim
|
2867
2874
|
- app/views/renalware/transplants/wait_lists/show.html.slim
|
2868
2875
|
- app/views/renalware/ukrdc/summary_mailer/export_summary.html.slim
|
@@ -3003,6 +3010,7 @@ files:
|
|
3003
3010
|
- config/locales/renalware/transplants/recipient_operation.yml
|
3004
3011
|
- config/locales/renalware/transplants/recipient_workup.yml
|
3005
3012
|
- config/locales/renalware/transplants/registration.yml
|
3013
|
+
- config/locales/renalware/transplants/rejection_episode.en.yml
|
3006
3014
|
- config/locales/renalware/virology/virology.en.yml
|
3007
3015
|
- config/locales/simple_form.en.yml
|
3008
3016
|
- config/locales/validates_timeliness.en.yml
|
@@ -3493,6 +3501,8 @@ files:
|
|
3493
3501
|
- db/migrate/20190603165812_drop_import_practices_csv_function.rb
|
3494
3502
|
- db/migrate/20190607134717_add_ukrdc_modality_code_id_to_modality_descriptions.rb
|
3495
3503
|
- db/migrate/20190611152859_add_fields_to_transplant_recipient_workup.rb
|
3504
|
+
- db/migrate/20190612124015_create_transplant_rejection_episodes.rb
|
3505
|
+
- db/migrate/20190617121528_create_transplant_rejection_treatments.rb
|
3496
3506
|
- db/seeds.rb
|
3497
3507
|
- db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
|
3498
3508
|
- db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb
|
@@ -3566,11 +3576,12 @@ files:
|
|
3566
3576
|
- db/seeds/default/system/roles.rb
|
3567
3577
|
- db/seeds/default/system/seeds.rb
|
3568
3578
|
- db/seeds/default/system/users.rb
|
3579
|
+
- db/seeds/default/transplants/donor_stages.rb
|
3569
3580
|
- db/seeds/default/transplants/failure_cause_descriptions.csv
|
3581
|
+
- db/seeds/default/transplants/failure_cause_descriptions.rb
|
3582
|
+
- db/seeds/default/transplants/registration_statuses.rb
|
3583
|
+
- db/seeds/default/transplants/rejection_treatments.rb
|
3570
3584
|
- db/seeds/default/transplants/seeds.rb
|
3571
|
-
- db/seeds/default/transplants/transplant_donor_stages.rb
|
3572
|
-
- db/seeds/default/transplants/transplant_failure_cause_descriptions.rb
|
3573
|
-
- db/seeds/default/transplants/transplant_registration_statuses.rb
|
3574
3585
|
- db/seeds/default/ukrdc/modality_codes.csv
|
3575
3586
|
- db/seeds/default/ukrdc/modality_codes.rb
|
3576
3587
|
- db/seeds/default/ukrdc/seeds.rb
|
@@ -3817,6 +3828,8 @@ files:
|
|
3817
3828
|
- spec/factories/transplants/registration_status_descriptions.rb
|
3818
3829
|
- spec/factories/transplants/registration_statuses.rb
|
3819
3830
|
- spec/factories/transplants/registrations.rb
|
3831
|
+
- spec/factories/transplants/rejection_episodes.rb
|
3832
|
+
- spec/factories/transplants/rejection_treatments.rb
|
3820
3833
|
- spec/factories/ukrdc/modality_codes.rb
|
3821
3834
|
- spec/factories/virology/patients.rb
|
3822
3835
|
- spec/factories/virology/vaccinations.rb
|