renalware-core 2.0.54 → 2.0.55

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 850fb8d5f1245a54162eaa4fb6e075f272563bac0729d30d4209fbf34c3fd378
4
- data.tar.gz: 90e3476b1530fb2d49447bd9a882e456bcdabe533004be2d060993b361b6c076
3
+ metadata.gz: 894fbb8d8d83ab547c7a25dec9e6d41eca0a9f9181bd55aef8ece1c65bc26523
4
+ data.tar.gz: 468716265e6688e6d1e66fa3c6d606948531853285cacb9a1249914c02d6cb21
5
5
  SHA512:
6
- metadata.gz: 63f4a175065d5c917e9e12b70466482fd0a9b8dad17122024909e6eb6a13b1f82183520346755ca72dfc8e3dbd0c450cd95351e9dfd2d95ff0fcaa8788a44d27
7
- data.tar.gz: cd8734fc777f8dc1fcb54ff4814aa6a9e23a0628e774c5224b427873455d937f6a173a62779ffbbdf4ea2dafd40f4ee795a259a1e3affbb09390f348066b178d
6
+ metadata.gz: 2c62a3d4fba4c48455a0882e1b7a3d4353b08a0c557858af1bc27f73387f63a24471d15b0915bf2246836b87b3d3f5478a37e8dc3b427d312ea56ef9a7e09cbc
7
+ data.tar.gz: 34a24963e66f3d60d6776e63b4233b4ebd36eff7a35ac384f5640442e07e2f32841204503329eb1e8b51e5ca9c1b479b4ec3d7bd94489e88a0b4248c2a942a5e
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/ukrdc"
4
+
5
+ module Renalware
6
+ module UKRDC
7
+ class BatchNumber < ApplicationRecord
8
+ def self.next
9
+ new_batcher_number = new
10
+ new_batcher_number.save!
11
+ new_batcher_number.id.to_s.rjust(6, "0")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -12,7 +12,16 @@ module Renalware
12
12
  # is mount on a remote share for example on an SFTP server.
13
13
  #
14
14
  class CreateEncryptedPatientXMLFiles
15
- attr_reader :patient_ids, :changed_since, :logger, :request_uuid, :paths, :timestamp, :summary
15
+ attr_reader(
16
+ :patient_ids,
17
+ :changed_since,
18
+ :logger,
19
+ :request_uuid,
20
+ :paths,
21
+ :timestamp,
22
+ :summary,
23
+ :batch_number
24
+ )
16
25
 
17
26
  def initialize(changed_since: nil, patient_ids: nil, logger: nil)
18
27
  @changed_since = Time.zone.parse(changed_since) if changed_since.present?
@@ -26,17 +35,22 @@ module Renalware
26
35
 
27
36
  def call
28
37
  logger.tagged(request_uuid) do
38
+ # Skipping transaction for now as worried about the quantity of rows and data invovled.
39
+ # ActiveRecord::Base.transaction do
40
+ @batch_number = BatchNumber.next
29
41
  summary.milliseconds_taken = Benchmark.ms do
30
42
  create_patient_xml_files
31
43
  encrypt_patient_xml_files
32
44
  copy_encrypted_xml_files_into_the_outgoing_folder
33
45
  paths.create_symlink_to_latest_timestamped_folder_so_it_is_easier_to_eyeball
34
46
  end
47
+ # end
35
48
  build_summary
36
49
  print_summary
37
50
  email_summary
38
51
  end
39
52
  rescue StandardError => exception
53
+ # TODO: if fails before copying to outgoing then we should roll back BatchNumber
40
54
  Engine.exception_notifier.notify(exception)
41
55
  raise exception
42
56
  end
@@ -52,6 +66,7 @@ module Renalware
52
66
  dir: paths.timestamped_xml_folder,
53
67
  changes_since: changed_since,
54
68
  request_uuid: request_uuid,
69
+ batch_number: batch_number,
55
70
  logger: logger
56
71
  ).call
57
72
  end
@@ -127,8 +142,7 @@ module Renalware
127
142
  recipient: config.ukrdc_gpg_recipient,
128
143
  keyring: config.ukrdc_gpg_keyring,
129
144
  homedir: config.ukrdc_gpg_homedir,
130
- destination_folder: paths.timestamped_encrypted_folder,
131
- timestamp: timestamp
145
+ destination_folder: paths.timestamped_encrypted_folder
132
146
  )
133
147
  end
134
148
  end
@@ -6,7 +6,15 @@ require "attr_extras"
6
6
  module Renalware
7
7
  module UKRDC
8
8
  class CreatePatientXMLFile
9
- pattr_initialize [:patient!, :dir!, :request_uuid!, :renderer, :changes_since, :logger]
9
+ pattr_initialize [
10
+ :patient!,
11
+ :dir!,
12
+ :request_uuid!,
13
+ :renderer,
14
+ :changes_since,
15
+ :logger,
16
+ :batch_number
17
+ ]
10
18
 
11
19
  # rubocop:disable Metrics/AbcSize
12
20
  def call
@@ -90,10 +98,17 @@ module Renalware
90
98
  end
91
99
 
92
100
  def xml_filepath
93
- raise(ArgumentError, "Patient has no ukrdc_external_id") if patient.ukrdc_external_id.blank?
101
+ File.join(dir, xml_filename)
102
+ end
103
+
104
+ def xml_filename
105
+ patient_identifier = patient.nhs_number || patient.local_patient_id
106
+ if patient_identifier.blank?
107
+ raise(ArgumentError, "Patient has no NHS number or local patient id")
108
+ end
94
109
 
95
- filename = "#{patient.ukrdc_external_id}.xml"
96
- File.join(dir, filename)
110
+ site_code = Renalware.config.ukrdc_site_code # e.g. RJZ
111
+ "#{site_code}_#{batch_number}_#{patient_identifier.upcase}.xml"
97
112
  end
98
113
 
99
114
  class Payload
@@ -0,0 +1,8 @@
1
+ class CreateUKRDCBatchNumbers < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :ukrdc_batch_numbers do |t|
4
+ # no other columns, we just use the id as the batch number when sending data to the UKRDC.
5
+ t.timestamps null: false
6
+ end
7
+ end
8
+ end
@@ -29,8 +29,8 @@ class GpgOptions
29
29
  :recipient,
30
30
  :keyring,
31
31
  :homedir,
32
- :destination_folder,
33
- :timestamp]
32
+ :destination_folder
33
+ ]
34
34
  end
35
35
 
36
36
  class GpgEncryptFile
@@ -72,12 +72,12 @@ class GpgCommand
72
72
  "--keyring #{options.keyring}"
73
73
  end
74
74
 
75
- def filename_with_extension
75
+ def filename_without_extension
76
76
  File.basename(file, ".xml")
77
77
  end
78
78
 
79
79
  def output_filename
80
- "#{options.timestamp}_#{filename_with_extension}.gpg"
80
+ "#{filename_without_extension}.gpg"
81
81
  end
82
82
 
83
83
  def encrypted_filename
@@ -64,6 +64,7 @@ module Renalware
64
64
  config_accessor(:ukrdc_working_path) do
65
65
  ENV.fetch("UKRDC_WORKING_PATH", File.join("/var", "ukrdc"))
66
66
  end
67
+ config_accessor(:ukrdc_site_code) { ENV.fetch("UKRDC_PREFIX", "RJZ") }
67
68
 
68
69
  # We override this in some tests as a means of getting wicked_Pdf to generate an HTML version
69
70
  # of the PDF so we can examine its content
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Renalware
4
- VERSION = "2.0.54"
4
+ VERSION = "2.0.55"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renalware-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.54
4
+ version: 2.0.55
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airslie
@@ -1759,6 +1759,7 @@ files:
1759
1759
  - app/models/renalware/transplants/registrations/wait_list_query.rb
1760
1760
  - app/models/renalware/transplants/version.rb
1761
1761
  - app/models/renalware/ukrdc.rb
1762
+ - app/models/renalware/ukrdc/batch_number.rb
1762
1763
  - app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb
1763
1764
  - app/models/renalware/ukrdc/create_patient_xml_file.rb
1764
1765
  - app/models/renalware/ukrdc/export_summary.rb
@@ -3337,6 +3338,7 @@ files:
3337
3338
  - db/migrate/20181008145159_create_reporting_daily_ukrdc_view.rb
3338
3339
  - db/migrate/20181013115138_update_reporting_daily_pathology_view_to_v2.rb
3339
3340
  - db/migrate/20181025170410_add_ukrdc_helper_column_to_patients.rb
3341
+ - db/migrate/20181026145459_create_ukrdc_batch_numbers.rb
3340
3342
  - db/seeds.rb
3341
3343
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
3342
3344
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb