renalware-core 2.0.0.pre.rc6 → 2.0.0.pre.rc7

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/app/controllers/renalware/events/investigations_controller.rb +10 -0
  4. data/app/controllers/renalware/transplants/donor_dashboards_controller.rb +1 -7
  5. data/app/controllers/renalware/transplants/recipient_dashboards_controller.rb +1 -21
  6. data/app/models/renalware/events/investigation.rb +31 -0
  7. data/app/models/renalware/feeds/hl7_message.rb +29 -34
  8. data/app/models/renalware/feeds/message_parser.rb +2 -1
  9. data/app/models/renalware/pathology/create_observation_requests.rb +25 -0
  10. data/app/models/renalware/pathology/message_listener.rb +7 -5
  11. data/app/models/renalware/pathology/{message_param_parser.rb → observation_requests_attributes_builder.rb} +31 -27
  12. data/app/models/renalware/patients/practice_search_query.rb +1 -1
  13. data/app/policies/renalware/events/investigation_policy.rb +8 -0
  14. data/app/presenters/renalware/pathology/observation_presenter.rb +1 -1
  15. data/app/presenters/renalware/transplants/consent_presenter.rb +1 -1
  16. data/app/presenters/renalware/transplants/donor_dashboard_presenter.rb +35 -0
  17. data/app/presenters/renalware/transplants/mdm_presenter.rb +2 -0
  18. data/app/presenters/renalware/transplants/patient_presenter.rb +2 -0
  19. data/app/presenters/renalware/transplants/recipient_dashboard_presenter.rb +39 -0
  20. data/app/presenters/renalware/transplants/wait_list_registration_presenter.rb +2 -0
  21. data/app/views/renalware/api/ukrdc/patients/_documents.xml.builder +12 -9
  22. data/app/views/renalware/api/ukrdc/patients/_sending_facility.xml.builder +4 -4
  23. data/app/views/renalware/api/ukrdc/patients/lab_orders/_lab_order.xml.builder +1 -1
  24. data/app/views/renalware/api/ukrdc/patients/lab_orders/_result_item.xml.builder +1 -1
  25. data/app/views/renalware/api/ukrdc/patients/show.xml.builder +1 -5
  26. data/app/views/renalware/events/events/_event.html.slim +7 -1
  27. data/app/views/renalware/events/events/_table.html.slim +2 -1
  28. data/app/views/renalware/events/events/cell/_investigation.html.slim +9 -0
  29. data/app/views/renalware/events/events/inputs/_investigation.html.slim +4 -0
  30. data/app/views/renalware/events/events/toggled_cell/_investigation.html.slim +11 -0
  31. data/app/views/renalware/events/investigations/_list.html.slim +12 -0
  32. data/app/views/renalware/events/investigations/edit.html.slim +13 -0
  33. data/app/views/renalware/transplants/donor_dashboards/show.html.slim +27 -20
  34. data/app/views/renalware/transplants/recipient_dashboards/_page_actions.html.slim +4 -0
  35. data/app/views/renalware/transplants/recipient_dashboards/show.html.slim +22 -17
  36. data/config/locales/renalware/events/investigation.en.yml +58 -0
  37. data/config/locales/renalware/transplants/donor_dashboard.en.yml +1 -0
  38. data/config/locales/renalware/transplants/recipient_dashboards.en.yml +1 -0
  39. data/config/routes.rb +5 -0
  40. data/db/migrate/20180119121243_create_trigger_to_preprocess_hl7_msg.rb +5 -3
  41. data/db/migrate/20180125201356_make_obs_set_trigger_change_updated_at.rb +191 -0
  42. data/db/migrate/20180126142314_add_uuid_to_letters.rb +6 -0
  43. data/db/seeds/default/events/event_types.csv +1 -0
  44. data/lib/renalware/configuration.rb +1 -0
  45. data/lib/renalware/version.rb +1 -1
  46. data/lib/test_support/text_editor_helpers.rb +6 -0
  47. data/spec/factories/events/events.rb +24 -1
  48. data/spec/factories/events/events_types.rb +17 -2
  49. data/spec/support/database_functions_spec_helper.rb +6 -0
  50. metadata +18 -4
  51. data/app/models/renalware/pathology/create_observations.rb +0 -22
data/config/routes.rb CHANGED
@@ -308,6 +308,11 @@ Renalware::Engine.routes.draw do
308
308
  controller: "events/swabs",
309
309
  defaults: { slug: :swabs }
310
310
 
311
+ resources :investigations,
312
+ only: [:new, :create, :edit, :update],
313
+ controller: "events/investigations",
314
+ defaults: { slug: :investigations }
315
+
311
316
  # Here we could enable new event by any other slug
312
317
  # eg patient_new_specific_event(slug: "transplant_biopsies")
313
318
  # get "events/:slug/new",
@@ -1,6 +1,8 @@
1
1
  class CreateTriggerToPreprocessHL7Msg < ActiveRecord::Migration[5.1]
2
2
  def up
3
- sql = <<-SQL
3
+ # Note that we need to use a quoted heredoc ('SQL') here in order to preserve our
4
+ # SQL escaping e.g. E'\\S\\' which would otherwise be interpreted by Ruby as E'\S\'
5
+ sql = <<-'SQL'
4
6
  /* Create a function for the trigger to call */
5
7
  CREATE FUNCTION preprocess_hl7_message() RETURNS trigger AS
6
8
  $body$
@@ -17,11 +19,11 @@ class CreateTriggerToPreprocessHL7Msg < ActiveRecord::Migration[5.1]
17
19
  To get around this we need to convert instances of \S\ with another escape sequence eg «
18
20
  and manually map this back to a ^ in the job handler ruby code.
19
21
 
20
- So here, if this delayed_job is destinated to be picked up by a Feed job handler
22
+ So here, if this delayed_job is destined to be picked up by a Feed job handler
21
23
  make sure we convert the Mirth escape sequence \S\ to \\S\\
22
24
  */
23
25
  IF position('Feed' in NEW.handler) > 0 THEN
24
- NEW.handler = replace(NEW.handler, '\S\', '\\S\\');
26
+ NEW.handler = replace(NEW.handler, E'\\S\\', E'\\\\S\\\\');
25
27
  END IF;
26
28
 
27
29
  RETURN NEW;
@@ -0,0 +1,191 @@
1
+ class MakeObsSetTriggerChangeUpdatedAt < ActiveRecord::Migration[5.1]
2
+ def up
3
+ sql = <<-SQL
4
+ CREATE OR REPLACE FUNCTION update_current_observation_set_from_trigger() RETURNS TRIGGER AS $body$
5
+ -- TC 14/12/2017
6
+ -- This function is called by a trigger when a row is inserted or updated in
7
+ -- pathology_observations. Its purpose is to keep current_observation_sets up to date
8
+ -- with the latest observations for any patient.
9
+ -- The current_observation_sets table maintains a jsonb hash into which we insert or replace
10
+ -- the observation, keyed by OBX code.
11
+ -- e.g. .. {"HGB": { "result": 123.1, "observed_at": '2017-12-12-01:01:01'}, ..
12
+ DECLARE
13
+ a_patient_id bigint;
14
+ a_code text;
15
+ current_observed_at timestamp;
16
+ current_result text;
17
+ new_observed_at timestamp;
18
+ BEGIN
19
+ RAISE NOTICE 'TRIGGER called on %',TG_TABLE_NAME ;
20
+
21
+ /*
22
+ If inserting or updating, we _could_ assume the last observation to be inserted is
23
+ the most 'recent' one (with the latest observed_at date).
24
+ However the order of incoming messages is not guaranteed, so we have two options:
25
+ 1. Refresh the entire current_observation_set for the patient
26
+ 2. Check the current observed_at date in the jsonb and only update if we have a more
27
+ recent one
28
+ We have gone for 2.
29
+ */
30
+
31
+ IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
32
+
33
+ -- Note we could re-generate the entire current pathology for the patient using
34
+ -- select refresh_current_observation_set(a_patient_id);
35
+ -- which is safer but uses more resources, so avoiding this for now.
36
+
37
+ -- Find and store patient_id into local variable
38
+ select request.patient_id into a_patient_id
39
+ from pathology_observation_requests request
40
+ where request.id = NEW.request_id;
41
+
42
+ -- Find and store the obx code into local variable
43
+ select description.code into a_code
44
+ from pathology_observation_descriptions description
45
+ where description.id = NEW.description_id;
46
+
47
+ -- Important! Create the observation_set if it doesn't exist yet
48
+ -- ignore the error if the row already exists
49
+ insert into pathology_current_observation_sets (patient_id)
50
+ values (a_patient_id)
51
+ ON CONFLICT DO NOTHING;
52
+
53
+ -- We are going to compare the current and new observed_at dates
54
+ -- so need to cast them to a timestamp
55
+ select cast(New.observed_at as timestamp) into new_observed_at;
56
+
57
+ -- Get the most recent date and value for this observation
58
+ -- and store to variables.
59
+ select
60
+ cast(values -> a_code ->> 'observed_at' as timestamp),
61
+ values -> a_code ->> 'result'
62
+ into current_observed_at, current_result from
63
+ pathology_current_observation_sets
64
+ where patient_id = a_patient_id;
65
+
66
+ -- Output some info to helps us debug. This can be removed later.
67
+ RAISE NOTICE ' Request id % Patient id % Code %', NEW.request_id, a_patient_id, a_code;
68
+ RAISE NOTICE ' Last %: % at %', a_code, current_result, current_observed_at;
69
+ RAISE NOTICE ' New %: % at %', a_code, NEW.result, new_observed_at;
70
+
71
+ IF current_observed_at IS NULL OR new_observed_at >= current_observed_at THEN
72
+ -- The new pathology_observation row contain a more recent result that the old one.
73
+ -- (note there may not be an old one if the patient has neve had this obs before).
74
+
75
+ RAISE NOTICE ' Updating pathology_current_observation_sets..';
76
+
77
+ -- Update the values jsonb column with the new hash for this code, e.g.
78
+ -- .. {"HGB": { "result": 123.1, "observed_at": '2017-12-12-01:01:01'}, ..
79
+ -- Note the `set values` below actually reads in the jsonb, updates it,
80
+ -- and wites the whole thing back.
81
+ update pathology_current_observation_sets
82
+ set updated_at = CURRENT_TIMESTAMP,
83
+ values = jsonb_set(
84
+ values,
85
+ ('{'||a_code||'}')::text[], -- defined in the fn path::text[]
86
+ jsonb_build_object('result', NEW.result, 'observed_at', new_observed_at),
87
+ true)
88
+ where patient_id = a_patient_id;
89
+ END IF;
90
+ END IF;
91
+ RETURN NULL ;
92
+ END $body$ LANGUAGE plpgsql VOLATILE COST 100;
93
+ -- End function
94
+ SQL
95
+ ActiveRecord::Base.connection.execute(sql)
96
+ end
97
+
98
+ def down
99
+ sql = <<-SQL
100
+ CREATE OR REPLACE FUNCTION update_current_observation_set_from_trigger() RETURNS TRIGGER AS $body$
101
+ -- TC 14/12/2017
102
+ -- This function is called by a trigger when a row is inserted or updated in
103
+ -- pathology_observations. Its purpose is to keep current_observation_sets up to date
104
+ -- with the latest observations for any patient.
105
+ -- The current_observation_sets table maintains a jsonb hash into which we insert or replace
106
+ -- the observation, keyed by OBX code.
107
+ -- e.g. .. {"HGB": { "result": 123.1, "observed_at": '2017-12-12-01:01:01'}, ..
108
+ DECLARE
109
+ a_patient_id bigint;
110
+ a_code text;
111
+ current_observed_at timestamp;
112
+ current_result text;
113
+ new_observed_at timestamp;
114
+ BEGIN
115
+ RAISE NOTICE 'TRIGGER called on %',TG_TABLE_NAME ;
116
+
117
+ /*
118
+ If inserting or updating, we _could_ assume the last observation to be inserted is
119
+ the most 'recent' one (with the latest observed_at date).
120
+ However the order of incoming messages is not guaranteed, so we have two options:
121
+ 1. Refresh the entire current_observation_set for the patient
122
+ 2. Check the current observed_at date in the jsonb and only update if we have a more
123
+ recent one
124
+ We have gone for 2.
125
+ */
126
+
127
+ IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
128
+
129
+ -- Note we could re-generate the entire current pathology for the patient using
130
+ -- select refresh_current_observation_set(a_patient_id);
131
+ -- which is safer but uses more resources, so avoiding this for now.
132
+
133
+ -- Find and store patient_id into local variable
134
+ select request.patient_id into a_patient_id
135
+ from pathology_observation_requests request
136
+ where request.id = NEW.request_id;
137
+
138
+ -- Find and store the obx code into local variable
139
+ select description.code into a_code
140
+ from pathology_observation_descriptions description
141
+ where description.id = NEW.description_id;
142
+
143
+ -- Important! Create the observation_set if it doesn exist yet
144
+ -- ignore the error id the row already exists
145
+ insert into pathology_current_observation_sets (patient_id)
146
+ values (a_patient_id)
147
+ ON CONFLICT DO NOTHING;
148
+
149
+ -- We are going to compare the current and new observed_at dates
150
+ -- so need to cast them to a timestamp
151
+ select cast(New.observed_at as timestamp) into new_observed_at;
152
+
153
+ -- Get the most recent date and value for this observation
154
+ -- and store to variables.
155
+ select
156
+ cast(values -> a_code ->> 'observed_at' as timestamp),
157
+ values -> a_code ->> 'result'
158
+ into current_observed_at, current_result from
159
+ pathology_current_observation_sets
160
+ where patient_id = a_patient_id;
161
+
162
+ -- Output some info to helps us debug. This can be removed later.
163
+ RAISE NOTICE ' Request id % Patient id % Code %', NEW.request_id, a_patient_id, a_code;
164
+ RAISE NOTICE ' Last %: % at %', a_code, current_result, current_observed_at;
165
+ RAISE NOTICE ' New %: % at %', a_code, NEW.result, new_observed_at;
166
+
167
+ IF current_observed_at IS NULL OR new_observed_at >= current_observed_at THEN
168
+ -- The new pathology_observation row contain a more recent result that the old one.
169
+ -- (note there may not be an old one if the patient has neve had this obs before).
170
+
171
+ RAISE NOTICE ' Updating pathology_current_observation_sets..';
172
+
173
+ -- Update the values jsonb column with the new hash for this code, e.g.
174
+ -- .. {"HGB": { "result": 123.1, "observed_at": '2017-12-12-01:01:01'}, ..
175
+ -- Note the `set values` below actually reads in the jsonb, updates it,
176
+ -- and wites the whole thing back.
177
+ update pathology_current_observation_sets
178
+ set values = jsonb_set(
179
+ values,
180
+ ('{'||a_code||'}')::text[], -- defined in the fn path::text[]
181
+ jsonb_build_object('result', NEW.result, 'observed_at', new_observed_at),
182
+ true)
183
+ where patient_id = a_patient_id;
184
+ END IF;
185
+ END IF;
186
+ RETURN NULL ;
187
+ END $body$ LANGUAGE plpgsql VOLATILE COST 100;
188
+ SQL
189
+ ActiveRecord::Base.connection.execute(sql)
190
+ end
191
+ end
@@ -0,0 +1,6 @@
1
+ class AddUuidToLetters < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :letter_letters, :uuid, :uuid, default: "uuid_generate_v4()", null: false
4
+ add_index :letter_letters, :uuid, using: :btree
5
+ end
6
+ end
@@ -4,3 +4,4 @@
4
4
  "Swab","Renalware::Events::Swab","swabs"
5
5
  "Plasma Exchange",,
6
6
  "PD Line Change",,"pd_line_changes"
7
+ "Investigation","Renalware::Events::Investigation","investigations"
@@ -47,6 +47,7 @@ module Renalware
47
47
  config_accessor(:fallback_email_address_for_test_messages) do
48
48
  ENV["FALLBACK_EMAIL_ADDRESS_FOR_TEST_MESSAGES"]
49
49
  end
50
+ config_accessor(:ukrdc_sending_facility_name) { "NOT_CONFIGURED" }
50
51
  end
51
52
 
52
53
  def self.config
@@ -1,3 +1,3 @@
1
1
  module Renalware
2
- VERSION = "2.0.0.pre.rc6".freeze
2
+ VERSION = "2.0.0.pre.rc7".freeze
3
3
  end
@@ -3,4 +3,10 @@ module TextEditorHelpers
3
3
  def fill_in_trix_editor(id, value)
4
4
  find(:xpath, "//*[@id='#{id}']", visible: false).set(value)
5
5
  end
6
+
7
+ # A simplified version of the helper, requires JavaScript, and will end up
8
+ # having <div>value</div> in the trix-saved content, but that is normal
9
+ def fill_trix_editor(with:)
10
+ find("trix-editor").click.set(with)
11
+ end
6
12
  end
@@ -2,7 +2,7 @@ FactoryBot.define do
2
2
  factory :event, class: "Renalware::Events::Event" do
3
3
  accountable
4
4
  patient
5
- event_type factory: :events_type
5
+ event_type factory: :access_clinic_event_type
6
6
  date_time { Time.zone.now }
7
7
  description "Needs blood sample taken."
8
8
  notes "Would like son to accompany them on clinic visit."
@@ -20,5 +20,28 @@ FactoryBot.define do
20
20
  }
21
21
  }
22
22
  end
23
+
24
+ factory :investigation, class: "Renalware::Events::Investigation" do
25
+ event_type factory: :investigation_event_type
26
+ document {
27
+ {
28
+ modality: "other",
29
+ type: Renalware::Events::Investigation::Document.type.values.first,
30
+ result: "result"
31
+ }
32
+ }
33
+
34
+ trait :transplant_recipient do
35
+ before :create do |investigation|
36
+ investigation.document.modality = "transplant_recipient"
37
+ end
38
+ end
39
+
40
+ trait :transplant_donor do
41
+ before :create do |investigation|
42
+ investigation.document.modality = "transplant_donor"
43
+ end
44
+ end
45
+ end
23
46
  end
24
47
  end
@@ -1,6 +1,10 @@
1
1
  FactoryBot.define do
2
- factory :events_type, class: "Renalware::Events::Type" do
3
- name "Access--Clinic"
2
+ factory :event_type, class: "Renalware::Events::Type" do
3
+ initialize_with { Renalware::Events::Type.find_or_create_by(name: name) }
4
+
5
+ factory :access_clinic_event_type do
6
+ name "Access--Clinic"
7
+ end
4
8
 
5
9
  factory :swab_event_type do
6
10
  name "Swab"
@@ -8,9 +12,20 @@ FactoryBot.define do
8
12
  slug "swabs"
9
13
  end
10
14
 
15
+ factory :biopsy_event_type do
16
+ name "Renal biopsy"
17
+ event_class_name "Renalware::Events::Biopsy"
18
+ end
19
+
11
20
  factory :pd_line_change_event_type do
12
21
  name "PD Line Change"
13
22
  slug "pd_line_changes"
14
23
  end
24
+
25
+ factory :investigation_event_type do
26
+ name "Investigation"
27
+ slug "investigations"
28
+ event_class_name "Renalware::Events::Investigation"
29
+ end
15
30
  end
16
31
  end
@@ -0,0 +1,6 @@
1
+ module DatabaseFunctionsSpecHelper
2
+ def toggle_all_triggers(option)
3
+ arg = (option == :off) ? "replica" : "DEFAULT"
4
+ ActiveRecord::Base.connection.execute("SET session_replication_role = #{arg};")
5
+ end
6
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renalware-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.rc6
4
+ version: 2.0.0.pre.rc7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airslie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-25 00:00:00.000000000 Z
11
+ date: 2018-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -1037,6 +1037,7 @@ files:
1037
1037
  - app/controllers/renalware/directory/people_controller.rb
1038
1038
  - app/controllers/renalware/drugs/drugs_controller.rb
1039
1039
  - app/controllers/renalware/events/events_controller.rb
1040
+ - app/controllers/renalware/events/investigations_controller.rb
1040
1041
  - app/controllers/renalware/events/swabs_controller.rb
1041
1042
  - app/controllers/renalware/events/types_controller.rb
1042
1043
  - app/controllers/renalware/hd/base_controller.rb
@@ -1322,6 +1323,7 @@ files:
1322
1323
  - app/models/renalware/events/biopsy.rb
1323
1324
  - app/models/renalware/events/event.rb
1324
1325
  - app/models/renalware/events/event_query.rb
1326
+ - app/models/renalware/events/investigation.rb
1325
1327
  - app/models/renalware/events/line_change_event_query.rb
1326
1328
  - app/models/renalware/events/patient_listener.rb
1327
1329
  - app/models/renalware/events/simple.rb
@@ -1492,7 +1494,7 @@ files:
1492
1494
  - app/models/renalware/pathology/all_observation_codes.rb
1493
1495
  - app/models/renalware/pathology/clinic.rb
1494
1496
  - app/models/renalware/pathology/consultant.rb
1495
- - app/models/renalware/pathology/create_observations.rb
1497
+ - app/models/renalware/pathology/create_observation_requests.rb
1496
1498
  - app/models/renalware/pathology/current_key_observation_set.rb.dead
1497
1499
  - app/models/renalware/pathology/current_observation.rb
1498
1500
  - app/models/renalware/pathology/current_observation_set.rb
@@ -1501,7 +1503,6 @@ files:
1501
1503
  - app/models/renalware/pathology/lab.rb
1502
1504
  - app/models/renalware/pathology/measurement_unit.rb
1503
1505
  - app/models/renalware/pathology/message_listener.rb
1504
- - app/models/renalware/pathology/message_param_parser.rb
1505
1506
  - app/models/renalware/pathology/observation.rb
1506
1507
  - app/models/renalware/pathology/observation_date_range.rb
1507
1508
  - app/models/renalware/pathology/observation_description.rb
@@ -1509,6 +1510,7 @@ files:
1509
1510
  - app/models/renalware/pathology/observation_for_patient_observation_description_query.rb
1510
1511
  - app/models/renalware/pathology/observation_for_patient_request_description_query.rb
1511
1512
  - app/models/renalware/pathology/observation_request.rb
1513
+ - app/models/renalware/pathology/observation_requests_attributes_builder.rb
1512
1514
  - app/models/renalware/pathology/observations_for_descriptions_query.rb
1513
1515
  - app/models/renalware/pathology/observations_jsonb_serializer.rb
1514
1516
  - app/models/renalware/pathology/observations_within_date_range_query.rb
@@ -1689,6 +1691,7 @@ files:
1689
1691
  - app/policies/renalware/drugs/drug_policy.rb
1690
1692
  - app/policies/renalware/events/biopsy_policy.rb
1691
1693
  - app/policies/renalware/events/event_policy.rb
1694
+ - app/policies/renalware/events/investigation_policy.rb
1692
1695
  - app/policies/renalware/events/simple_policy.rb
1693
1696
  - app/policies/renalware/events/swab_policy.rb
1694
1697
  - app/policies/renalware/feeds/file_policy.rb
@@ -1822,8 +1825,10 @@ files:
1822
1825
  - app/presenters/renalware/system/users_presenter.rb
1823
1826
  - app/presenters/renalware/time_of_day_presenter.rb
1824
1827
  - app/presenters/renalware/transplants/consent_presenter.rb
1828
+ - app/presenters/renalware/transplants/donor_dashboard_presenter.rb
1825
1829
  - app/presenters/renalware/transplants/mdm_presenter.rb
1826
1830
  - app/presenters/renalware/transplants/patient_presenter.rb
1831
+ - app/presenters/renalware/transplants/recipient_dashboard_presenter.rb
1827
1832
  - app/presenters/renalware/transplants/wait_list_registration_presenter.rb
1828
1833
  - app/presenters/renalware/ukrdc/pathology_observation_presenter.rb
1829
1834
  - app/presenters/renalware/ukrdc/patient_presenter.rb
@@ -2004,10 +2009,12 @@ files:
2004
2009
  - app/views/renalware/events/events/_list.html.slim
2005
2010
  - app/views/renalware/events/events/_table.html.slim
2006
2011
  - app/views/renalware/events/events/cell/_biopsy.html.slim
2012
+ - app/views/renalware/events/events/cell/_investigation.html.slim
2007
2013
  - app/views/renalware/events/events/cell/_simple.html.slim
2008
2014
  - app/views/renalware/events/events/cell/_swab.html.slim
2009
2015
  - app/views/renalware/events/events/index.html.slim
2010
2016
  - app/views/renalware/events/events/inputs/_biopsy.html.slim
2017
+ - app/views/renalware/events/events/inputs/_investigation.html.slim
2011
2018
  - app/views/renalware/events/events/inputs/_simple.html.slim
2012
2019
  - app/views/renalware/events/events/inputs/_swab.html.slim
2013
2020
  - app/views/renalware/events/events/new.html.slim
@@ -2016,8 +2023,11 @@ files:
2016
2023
  - app/views/renalware/events/events/simple/_list.html.slim
2017
2024
  - app/views/renalware/events/events/simple/_table.html.slim
2018
2025
  - app/views/renalware/events/events/toggled_cell/_biopsy.html.slim
2026
+ - app/views/renalware/events/events/toggled_cell/_investigation.html.slim
2019
2027
  - app/views/renalware/events/events/toggled_cell/_simple.html.slim
2020
2028
  - app/views/renalware/events/events/toggled_cell/_swab.html.slim
2029
+ - app/views/renalware/events/investigations/_list.html.slim
2030
+ - app/views/renalware/events/investigations/edit.html.slim
2021
2031
  - app/views/renalware/events/swabs/_list.html.slim
2022
2032
  - app/views/renalware/events/swabs/edit.html.slim
2023
2033
  - app/views/renalware/events/swabs/new.html.slim
@@ -2651,6 +2661,7 @@ files:
2651
2661
  - config/locales/renalware/errors.en.yml
2652
2662
  - config/locales/renalware/events/biopsy.en.yml
2653
2663
  - config/locales/renalware/events/events.yml
2664
+ - config/locales/renalware/events/investigation.en.yml
2654
2665
  - config/locales/renalware/events/swab.en.yml
2655
2666
  - config/locales/renalware/feeds/file.en.yml
2656
2667
  - config/locales/renalware/hd/accesses.en.yml
@@ -3055,6 +3066,8 @@ files:
3055
3066
  - db/migrate/20180112151706_create_low_clearance_profiles.rb
3056
3067
  - db/migrate/20180112151813_create_low_clearance_versions.rb
3057
3068
  - db/migrate/20180119121243_create_trigger_to_preprocess_hl7_msg.rb
3069
+ - db/migrate/20180125201356_make_obs_set_trigger_change_updated_at.rb
3070
+ - db/migrate/20180126142314_add_uuid_to_letters.rb
3058
3071
  - db/seeds.rb
3059
3072
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
3060
3073
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb
@@ -3350,6 +3363,7 @@ files:
3350
3363
  - spec/factories/transplants/registrations.rb
3351
3364
  - spec/support/capybara.rb
3352
3365
  - spec/support/capybara_helper.rb
3366
+ - spec/support/database_functions_spec_helper.rb
3353
3367
  - spec/support/date_helpers.rb
3354
3368
  - spec/support/devise_spec_helper.rb
3355
3369
  - spec/support/drugs_spec_helper.rb