renalware-core 2.0.131 → 2.0.132

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/renalware/admissions/consults_controller.rb +2 -1
  3. data/app/controllers/renalware/api/ukrdc/patients_controller.rb +4 -1
  4. data/app/helpers/renalware/definition_list_helper.rb +1 -1
  5. data/app/models/renalware/admissions/consult.rb +1 -3
  6. data/app/models/renalware/admissions/consult_query.rb +1 -0
  7. data/app/models/renalware/admissions/specialty.rb +17 -0
  8. data/app/models/renalware/transplants/mdm_patients_query.rb +1 -1
  9. data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +2 -7
  10. data/app/models/renalware/ukrdc/create_patient_xml_file.rb +1 -10
  11. data/app/models/renalware/ukrdc/housekeeping/remove_stale_files.rb +79 -0
  12. data/app/models/renalware/ukrdc/treatment_timeline/generate_treatments.rb +3 -3
  13. data/app/models/renalware/ukrdc/xml_renderer.rb +3 -13
  14. data/app/models/renalware/ukrdc/xsd_schema.rb +23 -0
  15. data/app/views/renalware/admissions/consults/_form.html.slim +4 -0
  16. data/app/views/renalware/admissions/consults/_table.html.slim +6 -0
  17. data/app/views/renalware/admissions/requests/_request.html.slim +3 -2
  18. data/app/views/renalware/admissions/requests/_table.html.slim +2 -1
  19. data/config/locales/renalware/admissions/consults.en.yml +2 -1
  20. data/db/migrate/20150514113239_devise_create_users.rb +6 -11
  21. data/db/migrate/20190325134823_create_patients_master_index.rb +0 -1
  22. data/db/migrate/20190718091430_add_code_to_modality_descriptions.rb +1 -1
  23. data/db/migrate/20200110153522_add_ealert_to_admission_consults.rb +7 -0
  24. data/db/migrate/20200110160241_create_admission_specialties.rb +19 -0
  25. data/db/seeds/default/patients/surveys/pos_s_questions.csv +3 -3
  26. data/lib/renalware/configuration.rb +4 -1
  27. data/lib/renalware/version.rb +1 -1
  28. data/lib/tasks/spec.rake +5 -5
  29. data/lib/tasks/ukrdc.rake +17 -0
  30. data/spec/factories/admissions/specialties.rb +10 -0
  31. metadata +31 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35b6c3d73ccaf2718acd3d48e5982b3453521ca161126690a51af0de3bb08733
4
- data.tar.gz: e0fcdc5ade9caf2e87745953b7d6c060fabb96720ac90e8978618b36a48d31b5
3
+ metadata.gz: f670bf5df7603c7132365ac119ae9f6bdbb43dde12a24a04d3d015b5a694626c
4
+ data.tar.gz: 0a8dde1dd0be593ee8483e01f8128e31f544a1c6eed362fe8fd263e78fd78684
5
5
  SHA512:
6
- metadata.gz: 645842282347e02444bdd310dc575b72137c3613139a7dee8543b21a085cd6437ec6b521aa66881f097ee17567a58048d118815926b81ca095b560cfe38b4a2c
7
- data.tar.gz: 57b3894daa3d58de88660f763d8e4b4a61fb8cad3361210c6567d074d1b8c6ee71a75effaba63cb9ee0905aa9fce3b39d3d564e1de65bcc4ec8029d1833acf72
6
+ metadata.gz: dc8e11f2b13664bddaabdef7d8bede3f1e2a14bc63862b703a628ad3f8fd6019bcb6d285fd40a81bdd530417ce5c46cbfc8ba8f6a61d5901b7e8523ca783b6a6
7
+ data.tar.gz: 5d77baac6abc4e238faa59e4147948315beed80cf363fac2b8c6cb88436b44ff8898a668ef71a3c81a5ccc3e8ca520f596a1919a242275c4540128431f7fa46d
@@ -100,7 +100,8 @@ module Renalware
100
100
  .permit(
101
101
  :consult_site_id, :hospital_ward_id, :patient_id, :q, :other_site_or_ward,
102
102
  :decided_on, :transferred_on, :started_on, :ended_on, :decided_on,
103
- :aki_risk, :transfer_priority, :priority, :seen_by_id, :consult_type,
103
+ :aki_risk, :transfer_priority, :priority, :seen_by_id,
104
+ :e_alert, :consult_type, :specialty_id,
104
105
  :requires_aki_nurse, :description, :contact_number, :rrt
105
106
  )
106
107
  end
@@ -26,7 +26,10 @@ module Renalware
26
26
  end
27
27
 
28
28
  def attempt_to_generate_patient_ukrdc_xml
29
- Renalware::UKRDC::XmlRenderer.new(locals: { patient: patient_presenter }).call
29
+ Renalware::UKRDC::XmlRenderer.new(
30
+ schema: Renalware::UKRDC::XsdSchema.new,
31
+ locals: { patient: patient_presenter }
32
+ ).call
30
33
  end
31
34
 
32
35
  def patient_presenter
@@ -14,7 +14,7 @@ module Renalware
14
14
 
15
15
  def definition(attribute, label = nil)
16
16
  text = label || @model_klass.human_attribute_name(attribute)
17
- value = public_send(attribute)
17
+ value = __getobj__.public_send(attribute)
18
18
  value = yield(value) if value.present? && block_given?
19
19
  capture do
20
20
  concat content_tag(:dt, text)
@@ -12,9 +12,6 @@ module Renalware
12
12
  validates :patient_id, presence: true
13
13
  validates :started_on, presence: true
14
14
  validates :description, presence: true
15
- # Currently #consult_type is a string and we are not sure what should be in there
16
- # Migrated consults may not have a type so only enforce it creation of new ones.
17
- validates :consult_type, presence: true, on: :create
18
15
  validates :priority,
19
16
  numericality: {
20
17
  only_integer: true,
@@ -29,6 +26,7 @@ module Renalware
29
26
  belongs_to :patient, touch: true
30
27
  belongs_to :consult_site, class_name: "Admissions::ConsultSite"
31
28
  belongs_to :hospital_ward, class_name: "Hospitals::Ward"
29
+ belongs_to :specialty, class_name: "Admissions::Specialty"
32
30
  belongs_to :seen_by, class_name: "User"
33
31
 
34
32
  enumerize :transfer_priority, in: %i(unknown necessary desirable potential unnecessary)
@@ -33,6 +33,7 @@ module Renalware
33
33
  .includes(
34
34
  :consult_site,
35
35
  :created_by,
36
+ :specialty,
36
37
  patient: { current_modality: :description },
37
38
  hospital_ward: :hospital_unit
38
39
  )
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/admissions"
4
+
5
+ module Renalware
6
+ module Admissions
7
+ class Specialty < ApplicationRecord
8
+ validates :name, presence: true, uniqueness: true
9
+
10
+ scope :ordered, -> { order(position: :asc) }
11
+
12
+ def to_s
13
+ name
14
+ end
15
+ end
16
+ end
17
+ end
@@ -9,7 +9,7 @@ module Renalware
9
9
  class MDMPatientsQuery
10
10
  include ModalityScopes
11
11
  include PatientPathologyScopes
12
- DEFAULT_SEARCH_PREDICATE = "hgb_date DESC"
12
+ DEFAULT_SEARCH_PREDICATE = "cre_date DESC"
13
13
  attr_reader :q, :relation, :named_filter
14
14
 
15
15
  def initialize(relation: Transplants::Patient.all, named_filter: nil, q: nil)
@@ -66,17 +66,12 @@ module Renalware
66
66
  end
67
67
  end
68
68
 
69
- def schema
70
- xsd_path = File.join(Renalware::Engine.root, "vendor/xsd/ukrdc/Schema/UKRDC.xsd")
71
- xsddoc = Nokogiri::XML(File.read(xsd_path), xsd_path)
72
- Nokogiri::XML::Schema.from_document(xsddoc)
73
- end
74
-
75
69
  # rubocop:disable Metrics/MethodLength
76
70
  def create_patient_xml_files
77
71
  count = 0
78
72
  patients = ukrdc_patients_who_have_changed_since_last_send
79
73
  summary.num_changed_patients = patients.count
74
+ schema = UKRDC::XsdSchema.new
80
75
  patients.find_each do |patient|
81
76
  count += 1
82
77
  Rails.logger.info count
@@ -92,7 +87,7 @@ module Renalware
92
87
  ).call
93
88
 
94
89
  # Every n patients, force the garbage collector to kick in
95
- GC.start if (count % 10).zero?
90
+ # GC.start if (count % 10).zero?
96
91
  end
97
92
  end
98
93
  # rubocop:enable Metrics/MethodLength
@@ -10,7 +10,7 @@ module Renalware
10
10
  :patient!,
11
11
  :dir!,
12
12
  :request_uuid!,
13
- :schema,
13
+ :schema!,
14
14
  :changes_since,
15
15
  :logger,
16
16
  :batch_number,
@@ -102,15 +102,6 @@ module Renalware
102
102
  nil
103
103
  end
104
104
 
105
- def schema
106
- @schema ||= begin
107
- Rails.logger.info "Creating Nokogiri::XML::Schema"
108
- xsd_path = File.join(Renalware::Engine.root, "vendor/xsd/ukrdc/Schema/UKRDC.xsd")
109
- xsddoc = Nokogiri::XML(File.read(xsd_path), xsd_path)
110
- Nokogiri::XML::Schema.from_document(xsddoc)
111
- end
112
- end
113
-
114
105
  def default_renderer
115
106
  Renalware::UKRDC::XmlRenderer.new(
116
107
  schema: schema,
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/ukrdc"
4
+
5
+ module Renalware
6
+ module UKRDC
7
+ module Housekeeping
8
+ class RemoveStaleFiles
9
+ def self.call
10
+ new.call
11
+ end
12
+
13
+ def call
14
+ return unless Renalware.config.ukrdc_remove_stale_outgoing_files
15
+
16
+ remove_stale_outgoing_files
17
+ end
18
+
19
+ private
20
+
21
+ class OutgoingXmlFile
22
+ pattr_initialize :filename
23
+
24
+ # Returns the integer batch number from the file name
25
+ # e.g. 13 from /var/ukrdc/outgoing/RJZ_000040_1234606005.gpg
26
+ def batch_number
27
+ matches = filename.match(/\w*_(\d{6})_/)
28
+ return unless matches
29
+
30
+ matches[1].to_i
31
+ end
32
+ end
33
+
34
+ def remove_stale_outgoing_files
35
+ log "Remove stale outgoing files"
36
+ log "Keeping files in batches #{batch_numbers_to_keep.join(', ')}"
37
+
38
+ Dir.glob(glob_pattern).each do |filename|
39
+ FileUtils.rm filename if remove_file?(filename)
40
+ end
41
+ end
42
+
43
+ # Pattern to use to find batch-numbered files in the outgoing directory
44
+ def glob_pattern
45
+ outgoing_path.join("*.gpg")
46
+ end
47
+
48
+ def outgoing_path
49
+ Pathname(Renalware.config.ukrdc_working_path).join("outgoing")
50
+ end
51
+
52
+ def number_of_batches_to_keep
53
+ Renalware.config.ukrdc_number_of_archived_folders_to_keep.to_i
54
+ end
55
+
56
+ # Returns the ids of a few of the most recent BatchNumbers rows (ie the batch number) that
57
+ # we should not delete - these being the most recent ones
58
+ def batch_numbers_to_keep
59
+ @batch_numbers_to_keep ||= begin
60
+ BatchNumber
61
+ .limit(number_of_batches_to_keep)
62
+ .order(created_at: :desc)
63
+ .pluck(:id)
64
+ end
65
+ end
66
+
67
+ def remove_file?(filename)
68
+ !batch_numbers_to_keep.include?(
69
+ OutgoingXmlFile.new(filename).batch_number
70
+ )
71
+ end
72
+
73
+ def log(msg)
74
+ Rails.logger.info(" " + msg)
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -28,7 +28,7 @@ module Renalware
28
28
  .where("send_to_renalreg = true or send_to_rpv = true")
29
29
  end
30
30
 
31
- # rubocop:disable Rails/Output, Metrics/AbcSize
31
+ # rubocop:disable Rails/Output
32
32
  def generate_treatments
33
33
  PrepareTables.call
34
34
  Rails.logger.info "#{patient_scope.count} patients"
@@ -36,10 +36,10 @@ module Renalware
36
36
  print "\n#{patient.id}: "
37
37
  GenerateTimeline.new(patient).call
38
38
  # Start gargbage collection periodically to prevent server ram issues.
39
- GC.start if (index % 50).zero?
39
+ # GC.start if (index % 50).zero?
40
40
  end
41
41
  end
42
- # rubocop:enable Rails/Output, Metrics/AbcSize
42
+ # rubocop:enable Rails/Output
43
43
 
44
44
  def log(msg)
45
45
  Rails.logger.info(msg)
@@ -7,7 +7,7 @@ module Renalware
7
7
  module UKRDC
8
8
  class XmlRenderer
9
9
  DEFAULT_TEMPLATE = "/renalware/api/ukrdc/patients/show"
10
- attr_reader :template, :errors, :locals
10
+ attr_reader :template, :errors, :locals, :schema
11
11
 
12
12
  class Success < Renalware::Success
13
13
  alias xml object
@@ -19,7 +19,7 @@ module Renalware
19
19
 
20
20
  # Schema is an instance of Nokogiri::XML::Schema passed in for optimisation reasons.
21
21
  # If it is not passed in we create it.
22
- def initialize(schema: nil, template: nil, locals: {})
22
+ def initialize(schema:, template: nil, locals: {})
23
23
  @template = template || DEFAULT_TEMPLATE
24
24
  @schema = schema
25
25
  @locals = locals
@@ -47,7 +47,7 @@ module Renalware
47
47
 
48
48
  # Returns an array of SchemaValidation errors
49
49
  def validation_errors
50
- @validation_errors ||= schema.validate(Nokogiri::XML(xml))
50
+ @validation_errors ||= schema.validate(xml)
51
51
  end
52
52
 
53
53
  private
@@ -58,16 +58,6 @@ module Renalware
58
58
  instruct[:encoding] = "UTF-8"
59
59
  end
60
60
  end
61
-
62
- # It is more performant if schema is passed in in the ctor - but if it isn't we create it.
63
- def schema
64
- @schema ||= begin
65
- Rails.logger.warn "Creating JIT Nokogiri::XML::Schema!"
66
- xsd_path = File.join(Renalware::Engine.root, "vendor/xsd/ukrdc/Schema/UKRDC.xsd")
67
- xsddoc = Nokogiri::XML(File.read(xsd_path), xsd_path)
68
- Nokogiri::XML::Schema.from_document(xsddoc)
69
- end
70
- end
71
61
  end
72
62
  end
73
63
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/ukrdc"
4
+
5
+ module Renalware
6
+ module UKRDC
7
+ class XsdSchema
8
+ def validate(xml)
9
+ schema.validate(Nokogiri::XML(xml))
10
+ end
11
+
12
+ private
13
+
14
+ def schema
15
+ @schema ||= begin
16
+ xsd_path = File.join(Renalware::Engine.root, "vendor/xsd/ukrdc/Schema/UKRDC.xsd")
17
+ xsddoc = Nokogiri::XML(File.read(xsd_path), xsd_path)
18
+ Nokogiri::XML::Schema.from_document(xsddoc)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -29,6 +29,10 @@
29
29
 
30
30
  = f.input :other_site_or_ward, wrapper: :horizontal_medium
31
31
  = f.input :started_on, as: :date_picker, wrapper: :horizontal_datepicker
32
+ = f.input :e_alert
33
+ = f.association(:specialty,
34
+ wrapper: :horizontal_medium,
35
+ collection: Renalware::Admissions::Specialty.ordered)
32
36
  = f.input :consult_type, wrapper: :horizontal_medium
33
37
  = f.input :decided_on, as: :date_picker, wrapper: :horizontal_datepicker
34
38
  = f.input :transfer_priority, include_blank: false, wrapper: :horizontal_small
@@ -123,6 +123,12 @@
123
123
  dd= consult.patient_current_modality
124
124
  dt Description
125
125
  dd= simple_format consult.description
126
+ dt E-Alert
127
+ dd= yes_no consult.e_alert
128
+ dt Specialty
129
+ dd= consult.specialty
130
+ dt Specialty notes
131
+ dd= consult.consult_type
126
132
 
127
133
  / When printing we just show the notes on the second row
128
134
  tr.print-only.child-row
@@ -8,14 +8,15 @@ ruby:
8
8
  td(class="sortable-position-for-model-id-#{request.id}")= request.position
9
9
  td.priority
10
10
  span= request.priority.text
11
- td= request.reason.description
11
+ td.col-width-medium-with-ellipsis= request.reason.description
12
12
  td= default_patient_link(patient)
13
13
  td= patient.nhs_number
14
14
  td= patient.hospital_identifiers
15
- td= request.hospital_unit&.name
15
+ td.col-width-medium-with-ellipsis= request.hospital_unit&.name
16
16
  td.col-width-medium-with-ellipsis(title=request.notes)
17
17
  = request.notes
18
18
  td(title=editing_history)= l(request.created_at)
19
+ td.col-width-medium-with-ellipsis=request.created_by
19
20
  td
20
21
  = link_to admissions_request_path(request),
21
22
  remote: true,
@@ -1,6 +1,6 @@
1
1
  table.admissions_requests
2
2
  thead
3
- th Rank
3
+ th.col-width-tiny Rank
4
4
  th Priority
5
5
  th Reason
6
6
  th Patient
@@ -9,6 +9,7 @@ table.admissions_requests
9
9
  th Location
10
10
  th Notes
11
11
  th.col-width-date-time Created
12
+ th Created by
12
13
  th.col-width-small
13
14
  th
14
15
  = content_tag(:tbody,
@@ -8,7 +8,8 @@ en:
8
8
  referred_on: Referal date
9
9
  hospital_unit: Unit
10
10
  hospital_ward: Ward
11
- consult_type: Type
11
+ e_alert: E-Alert
12
+ consult_type: Specialty notes
12
13
  contact_number: Bleep/Ext
13
14
  other_site_or_ward: Other site or ward
14
15
  rrt: RRT?
@@ -37,8 +37,9 @@ class DeviseCreateUsers < ActiveRecord::Migration[4.2]
37
37
  t.string :signature
38
38
 
39
39
  ## Non-devise - account expiry
40
- t.datetime :last_activity_at, :datetime
41
- t.datetime :expired_at, :datetime
40
+ t.datetime :last_activity_at
41
+ t.datetime :expired_at
42
+ t.datetime :datetime # will be removed later
42
43
 
43
44
  ## Non-devise - job title
44
45
  t.string :professional_position
@@ -51,15 +52,9 @@ class DeviseCreateUsers < ActiveRecord::Migration[4.2]
51
52
 
52
53
  add_index :users, :email, unique: true
53
54
  add_index :users, :reset_password_token, unique: true
54
- # add_index :users, :confirmation_token, unique: true
55
- # add_index :users, :unlock_token, unique: true
56
-
57
55
  add_index :users, :username, unique: true
58
-
59
- add_index :users, :last_activity_at
60
- add_index :users, :expired_at
61
-
62
- add_index :users, :approved
63
-
56
+ add_index :users, :last_activity_at
57
+ add_index :users, :expired_at
58
+ add_index :users, :approved
64
59
  end
65
60
  end
@@ -2,7 +2,6 @@ class CreatePatientsMasterIndex < ActiveRecord::Migration[5.2]
2
2
  def change
3
3
  create_table :patient_master_index do |t|
4
4
  t.references :patient, null: true, foreign_key: true
5
- t.timestamps null: false
6
5
  t.string :nhs_number, index: true
7
6
  t.string :hospital_number, index: true
8
7
  t.string :title
@@ -2,7 +2,7 @@ class AddCodeToModalityDescriptions < ActiveRecord::Migration[5.2]
2
2
  def change
3
3
  within_renalware_schema do
4
4
  add_column :modality_descriptions, :code, :string
5
- add_index :modality_descriptions, :code, unique: true
5
+ add_index :modality_descriptions, :code, unique: true
6
6
  end
7
7
  end
8
8
  end
@@ -0,0 +1,7 @@
1
+ class AddEalertToAdmissionConsults < ActiveRecord::Migration[5.2]
2
+ def change
3
+ within_renalware_schema do
4
+ add_column :admission_consults, :e_alert, :boolean, null: false, default: false
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ class CreateAdmissionSpecialties < ActiveRecord::Migration[5.2]
2
+ def change
3
+ within_renalware_schema do
4
+ create_table :admission_specialties do |t|
5
+ t.string :name, null: false, index: { unique: true }
6
+ t.integer :position, null: false, default: 0
7
+ t.timestamps null: false
8
+ end
9
+
10
+ add_reference(
11
+ :admission_consults,
12
+ :specialty,
13
+ foreign_key: { to_table: :admission_specialties },
14
+ index: true,
15
+ null: true
16
+ )
17
+ end
18
+ end
19
+ end
@@ -16,8 +16,8 @@
16
16
  "YSQ15",15,"Feeling depressed","^[0-4]$"
17
17
  "YSQ16",16,"Changes in skin","^[0-4]$"
18
18
  "YSQ17",17,"Diarrhoea","^[0-4]$"
19
- "YSQ18",18,"<Question text> as entered by user","^[0-4]$"
20
- "YSQ19",19,"<Question text> as entered by user","^[0-4]$"
21
- "YSQ20",20,"<Question text> as entered by user","^[0-4]$"
19
+ "YSQ18",18,"Symptom as entered by user","^[0-4]$"
20
+ "YSQ19",19,"Symptom as entered by user","^[0-4]$"
21
+ "YSQ20",20,"Symptom as entered by user","^[0-4]$"
22
22
  "YSQ21",21,"Symptom that has affected the patient most",
23
23
  "YSQ22",22,"Symptom that has improved the most",
@@ -68,7 +68,10 @@ module Renalware
68
68
  end
69
69
  config_accessor(:ukrdc_site_code) { ENV.fetch("UKRDC_PREFIX", "RJZ") }
70
70
  config_accessor(:ukrdc_number_of_archived_folders_to_keep) do
71
- ENV.fetch("UKRDC_NUMBER_OF_ARCHIVED_FOLDERS_TO_KEEP", "3")
71
+ ENV.fetch("UKRDC_NUMBER_OF_ARCHIVED_FOLDERS_TO_KEEP", "7")
72
+ end
73
+ config_accessor(:ukrdc_remove_stale_outgoing_files) do
74
+ ENV.fetch("UKRDC_REMOVE_STALE_OUTGOING_FILES", "true") == "true"
72
75
  end
73
76
 
74
77
  # To use a date other that the default changes_since date when
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Renalware
4
- VERSION = "2.0.131"
4
+ VERSION = "2.0.132"
5
5
  end
data/lib/tasks/spec.rake CHANGED
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rspec/core/rake_task"
4
-
5
3
  #
6
4
  # These tasks run the turnip (migrated from cucumber) features.
7
5
  #
8
6
  namespace :spec do
9
7
  namespace :acceptance do
10
- pattern = "spec/acceptance/features/**/*.feature"
8
+ ENV["RACK_ENV"] = ENV["RAILS_ENV"] = "test"
9
+ require "rspec/core/rake_task"
10
+ pattern = "./spec/acceptance/renalware/features/**/*.feature"
11
11
 
12
12
  # domain features are those that do not exercise the UI
13
13
  # Usage:
@@ -20,8 +20,8 @@ namespace :spec do
20
20
  # Usage:
21
21
  # bundle exec rake spec:acceptance:web
22
22
  RSpec::Core::RakeTask.new(:web) do |t|
23
- t.pattern = "spec/acceptance/features/**/*.feature"
24
- t.rspec_opts = "--tag web" # targets features with the @web tag only
23
+ t.pattern = "./spec/acceptance/renalware/features/**/*.feature"
24
+ t.rspec_opts = "--tag web --require spec_helper" # targets features with the @web tag only
25
25
  ENV["TURNIP_WEB"] = "1" # triggers inclusion of web_steps
26
26
  end
27
27
 
data/lib/tasks/ukrdc.rake CHANGED
@@ -32,12 +32,28 @@ namespace :ukrdc do
32
32
  logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
33
33
  logger.level = Logger::INFO
34
34
  Rails.logger = logger
35
+
36
+ PROFILE = nil
37
+ if PROFILE
38
+ require "ruby-prof"
39
+ RubyProf.start
40
+ end
35
41
  # Renalware::UKRDC::TreatmentTimeline::GenerateTreatments.call
36
42
  Renalware::UKRDC::CreateEncryptedPatientXMLFiles.new(
37
43
  changed_since: ENV["changed_since"],
38
44
  patient_ids: ENV.fetch("patient_ids", "").split(",").map(&:to_i),
39
45
  force_send: ENV["force_send"] == "true"
40
46
  ).call
47
+
48
+ if PROFILE
49
+ result = RubyProf.stop
50
+ pretty = RubyProf::FlatPrinter.new(result)
51
+ pretty.print(STDOUT)
52
+ # printer.print(STDOUT, {})
53
+ # printer = RubyProf::GraphPrinter.new(result)
54
+ # printer = RubyProf::GraphHtmlPrinter.new(result)
55
+ # printer.print(STDOUT, min_percent: 5)
56
+ end
41
57
  end
42
58
 
43
59
  desc "Regenerates the ukrdc_treatments table ready for exporting to UKRDC in another task"
@@ -54,6 +70,7 @@ namespace :ukrdc do
54
70
  Rails.logger = logger
55
71
  logger.info "UKRDC housekeeping"
56
72
  Renalware::UKRDC::Housekeeping::RemoveOldExportArchiveFolders.call
73
+ Renalware::UKRDC::Housekeeping::RemoveStaleFiles.call
57
74
  end
58
75
 
59
76
  task import: :environment do
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :admissions_specialty, class: "Renalware::Admissions::Specialty" do
5
+ initialize_with do
6
+ Renalware::Admissions::Specialty.find_or_create_by!(name: name)
7
+ end
8
+ name { "Other" }
9
+ end
10
+ 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.131
4
+ version: 2.0.132
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airslie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-07 00:00:00.000000000 Z
11
+ date: 2020-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview-component
@@ -574,16 +574,16 @@ dependencies:
574
574
  name: paper_trail
575
575
  requirement: !ruby/object:Gem::Requirement
576
576
  requirements:
577
- - - "~>"
577
+ - - ">="
578
578
  - !ruby/object:Gem::Version
579
- version: 9.0.1
579
+ version: '0'
580
580
  type: :runtime
581
581
  prerelease: false
582
582
  version_requirements: !ruby/object:Gem::Requirement
583
583
  requirements:
584
- - - "~>"
584
+ - - ">="
585
585
  - !ruby/object:Gem::Version
586
- version: 9.0.1
586
+ version: '0'
587
587
  - !ruby/object:Gem::Dependency
588
588
  name: paranoia
589
589
  requirement: !ruby/object:Gem::Requirement
@@ -618,14 +618,14 @@ dependencies:
618
618
  requirements:
619
619
  - - "~>"
620
620
  - !ruby/object:Gem::Version
621
- version: 1.1.3
621
+ version: '1.1'
622
622
  type: :runtime
623
623
  prerelease: false
624
624
  version_requirements: !ruby/object:Gem::Requirement
625
625
  requirements:
626
626
  - - "~>"
627
627
  - !ruby/object:Gem::Version
628
- version: 1.1.3
628
+ version: '1.1'
629
629
  - !ruby/object:Gem::Dependency
630
630
  name: prawn
631
631
  requirement: !ruby/object:Gem::Requirement
@@ -668,6 +668,20 @@ dependencies:
668
668
  - - "~>"
669
669
  - !ruby/object:Gem::Version
670
670
  version: 2.1.0
671
+ - !ruby/object:Gem::Dependency
672
+ name: rack
673
+ requirement: !ruby/object:Gem::Requirement
674
+ requirements:
675
+ - - "~>"
676
+ - !ruby/object:Gem::Version
677
+ version: 2.0.8
678
+ type: :runtime
679
+ prerelease: false
680
+ version_requirements: !ruby/object:Gem::Requirement
681
+ requirements:
682
+ - - "~>"
683
+ - !ruby/object:Gem::Version
684
+ version: 2.0.8
671
685
  - !ruby/object:Gem::Dependency
672
686
  name: rack-attack
673
687
  requirement: !ruby/object:Gem::Requirement
@@ -686,14 +700,14 @@ dependencies:
686
700
  name: rails
687
701
  requirement: !ruby/object:Gem::Requirement
688
702
  requirements:
689
- - - "~>"
703
+ - - ">="
690
704
  - !ruby/object:Gem::Version
691
705
  version: '5.2'
692
706
  type: :runtime
693
707
  prerelease: false
694
708
  version_requirements: !ruby/object:Gem::Requirement
695
709
  requirements:
696
- - - "~>"
710
+ - - ">="
697
711
  - !ruby/object:Gem::Version
698
712
  version: '5.2'
699
713
  - !ruby/object:Gem::Dependency
@@ -1474,6 +1488,7 @@ files:
1474
1488
  - app/models/renalware/admissions/consult_site.rb
1475
1489
  - app/models/renalware/admissions/request.rb
1476
1490
  - app/models/renalware/admissions/request_reason.rb
1491
+ - app/models/renalware/admissions/specialty.rb
1477
1492
  - app/models/renalware/api.rb
1478
1493
  - app/models/renalware/clinical.rb
1479
1494
  - app/models/renalware/clinical/allergy.rb
@@ -1946,6 +1961,7 @@ files:
1946
1961
  - app/models/renalware/ukrdc/export_summary.rb
1947
1962
  - app/models/renalware/ukrdc/filename.rb
1948
1963
  - app/models/renalware/ukrdc/housekeeping/remove_old_export_archive_folders.rb
1964
+ - app/models/renalware/ukrdc/housekeeping/remove_stale_files.rb
1949
1965
  - app/models/renalware/ukrdc/incoming/file_list.rb
1950
1966
  - app/models/renalware/ukrdc/incoming/import_survey.rb
1951
1967
  - app/models/renalware/ukrdc/incoming/import_surveys.rb
@@ -2003,6 +2019,7 @@ files:
2003
2019
  - app/models/renalware/ukrdc/treatment_timeline/transfer_out/generator.rb
2004
2020
  - app/models/renalware/ukrdc/treatment_timeline/transplant/generator.rb
2005
2021
  - app/models/renalware/ukrdc/xml_renderer.rb
2022
+ - app/models/renalware/ukrdc/xsd_schema.rb
2006
2023
  - app/models/renalware/user.rb
2007
2024
  - app/models/renalware/version.rb
2008
2025
  - app/models/renalware/virology.rb
@@ -3766,6 +3783,8 @@ files:
3766
3783
  - db/migrate/20191219145651_add_hidden_to_users.rb
3767
3784
  - db/migrate/20200106073329_add_next_of_kin_to_patients.rb
3768
3785
  - db/migrate/20200106210851_create_case_insensitive_index_on_patients.rb
3786
+ - db/migrate/20200110153522_add_ealert_to_admission_consults.rb
3787
+ - db/migrate/20200110160241_create_admission_specialties.rb
3769
3788
  - db/seeds.rb
3770
3789
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
3771
3790
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb
@@ -3975,6 +3994,7 @@ files:
3975
3994
  - spec/factories/admissions/consults.rb
3976
3995
  - spec/factories/admissions/request_reasons.rb
3977
3996
  - spec/factories/admissions/requests.rb
3997
+ - spec/factories/admissions/specialties.rb
3978
3998
  - spec/factories/clinical/allergies.rb
3979
3999
  - spec/factories/clinical/body_compositions.rb
3980
4000
  - spec/factories/clinical/dry_weights.rb
@@ -4181,7 +4201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
4181
4201
  - !ruby/object:Gem::Version
4182
4202
  version: '0'
4183
4203
  requirements: []
4184
- rubygems_version: 3.0.3
4204
+ rubygems_version: 3.1.2
4185
4205
  signing_key:
4186
4206
  specification_version: 4
4187
4207
  summary: Renalware core functionality as a mountable engine.