renalware-core 2.0.92 → 2.0.93

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: cde0ec0fda062cf7ec8391bc0bdb05889d327f0331c52404a46b3dbb8ce2b286
4
- data.tar.gz: 0551ecbd967d96b92018c1228e3cbd7a76a92d5fefc431e975f07f20af69fa1f
3
+ metadata.gz: cbabc9a6b80932e592c46522daa87f74509329202942f79e40347c6279c6e25f
4
+ data.tar.gz: 22c9a48a4150de3041c5345cde18bb7cf13b5a48ba222a703570e900e64cbc54
5
5
  SHA512:
6
- metadata.gz: 1899bffd5b1855d0afb822fa41686b078e6bad7114570588cbf13d325cc0a705cb784a7c097f5cef8c01c7bb9113f83a2b45acc416f0d6c6b72cc56bec692606
7
- data.tar.gz: dc1291b52bd1e382a4450aa544bae8ea9f3c2c3f8de596ed1d3ad331c2b2d7302e11517404e57797d63fac6c441a58654ae1c57b8e6882016fd8d1c7df994e58
6
+ metadata.gz: ff6e99c1300a67b6ddae37837f7fdea9e5febeb47aacda2e33c6d0fed773db3d843e831761d2e0c7c03dc62bbd11bb9dbbebf6e3e2d0b4f5b9c541c0410e91e1
7
+ data.tar.gz: 51986e68a6db2f82b72a216a518f9266df7e7d4b513977071b8d7474c17df0b777efd386fe10d30b022b38b0d9784215e847f5a2a3f3fd2468ad627cc876ca43
@@ -3,7 +3,6 @@
3
3
  require_dependency "renalware/ukrdc"
4
4
  require "attr_extras"
5
5
 
6
- # rubocop:disable Rails/Output
7
6
  module Renalware
8
7
  module UKRDC
9
8
  module TreatmentTimeline
@@ -14,7 +13,7 @@ module Renalware
14
13
  pattr_initialize :patient
15
14
 
16
15
  def call
17
- # RemapModelTableNamesToTheirPreparedEquivalents.new.call do
16
+ # RemapModelTableNamesToTheirPreparedEquivalents.new.call do
18
17
  Rails.logger.info " Generating Treatment rows for modalities #{modality_names}"
19
18
  modalities.each do |modality|
20
19
  generator = GeneratorFactory.call(modality)
@@ -27,7 +26,10 @@ module Renalware
27
26
 
28
27
  def modalities
29
28
  @modalities ||= begin
30
- patient.modalities.includes(:description).order(started_on: :asc, updated_at: :asc)
29
+ patient
30
+ .modalities
31
+ .includes(:description, :created_by)
32
+ .order(started_on: :asc, updated_at: :asc)
31
33
  end
32
34
  end
33
35
 
@@ -38,4 +40,3 @@ module Renalware
38
40
  end
39
41
  end
40
42
  end
41
- # rubocop:enable Rails/Output
@@ -10,17 +10,9 @@ module Renalware
10
10
  class GeneratorFactory
11
11
  DEFAULT_TYPE = "Generic"
12
12
 
13
- # Returns the class of object to suitable for generating the treatment timeline for the
14
- # requested modality. If the modality description type is nil then we use a generic
15
- # generator. If no generator class is defined matching the description.type, we also
16
- # return nil.
17
- # Example:
18
- # given the modality_description.type of Renalware::Bla::BlaModalityDescription
19
- # we will look to see if the constant GenerateBlaBlaTimeline exists and return an instance
20
- # if so - otherwise we return an instance of the default generator GenerateGenericTimeline.
13
+ # Each modality_description has a :code fiekd
21
14
  def self.call(modality)
22
- type = modality.description.type.presence || DEFAULT_TYPE
23
- type = type.gsub("::", "").gsub(/^Renalware/, "").gsub(/ModalityDescription$/, "")
15
+ type = modality.description.code&.to_s&.camelize
24
16
  (klass_for(type) || klass_for(DEFAULT_TYPE)).new(modality)
25
17
  end
26
18
 
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/ukrdc"
4
+ require "attr_extras"
5
+
6
+ module Renalware
7
+ module UKRDC
8
+ module TreatmentTimeline
9
+ module TransferOut
10
+ class Generator
11
+ RR7_DISCHARGE_CODE_TRANSFER_OUT = 38
12
+ pattr_initialize :modality
13
+ delegate :patient, to: :modality
14
+
15
+ def call
16
+ update_discharge_reason_on_most_recent_treatment
17
+ end
18
+
19
+ private
20
+
21
+ def most_recent_treatment
22
+ @most_recent_treatment ||= begin
23
+ Treatment.where(patient_id: patient.id).order(started_on: :desc).first
24
+ end
25
+ end
26
+
27
+ def update_discharge_reason_on_most_recent_treatment
28
+ return if most_recent_treatment.blank?
29
+
30
+ most_recent_treatment.update!(
31
+ discharge_reason_code: RR7_DISCHARGE_CODE_TRANSFER_OUT,
32
+ discharge_reason_comment: "transfer_out"
33
+ )
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/ukrdc"
4
+ require "attr_extras"
5
+
6
+ # QBL TXT Description
7
+ # "20" "20" "Transplant ; Cadaver donor"
8
+ # "21" "21" "Transplant ; Live related - sibling"
9
+ # "74" "74" "Transplant ; Live related - father"
10
+ # "75" "75" "Transplant ; Live related - mother"
11
+ # "77" "77" "Transplant ; Live related - child"
12
+ # "23" "23" "Transplant ; Live related - other"
13
+ # "24" "24" "Transplant ; Live genetically unrelated"
14
+ # "25" "25" "Transplant ; Cadaver donor + transp other organ"
15
+ # "26" "26" "Transplant ; Live donor + transplant other organ"
16
+ # "27" "27" "Transplant ; Live donor non-UK transplant"
17
+ # "28" "28" "Transplant ; non-heart-beating donor"
18
+ # "29" "29" "Transplant ; type unknown"
19
+ module Renalware
20
+ module UKRDC
21
+ module TreatmentTimeline
22
+ module Transplant
23
+ class Generator
24
+ pattr_initialize :modality
25
+ delegate :patient, to: :modality
26
+
27
+ # We need to create a treatment record to match the UKRDC code expectations
28
+ # based on donor relationship.
29
+ # Otherwise Default to 29 Transplant ; type unknown
30
+ def call
31
+
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -55,7 +55,7 @@ module Renalware
55
55
  current_modality.description.is_a?(Renalware::HD::ModalityDescription)
56
56
  end
57
57
 
58
- # Note we of course only send letters for RPV patients and exlcude them for all others.
58
+ # Note we of course only send letters for RPV patients and exclude them for all others.
59
59
  def letters
60
60
  return ::Renalware::Letters::Letter.none if send_to_rpv == false
61
61
 
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ xml = builder
4
+
5
+ if treatment&.discharge_reason_code.present?
6
+ xml.DischargeReason do
7
+ xml.CodingStandard "CF_RR7_DISCHARGE"
8
+ xml.Code treatment.discharge_reason_code
9
+ end
10
+ end
@@ -12,4 +12,10 @@ xml.Treatment do
12
12
  xml.CodingStandard "CF_RR7_TREATMENT"
13
13
  xml.Code treatment.modality_code.txt_code
14
14
  end
15
+
16
+ render(
17
+ "renalware/api/ukrdc/patients/treatments/discharge_reason",
18
+ treatment: treatment,
19
+ builder: builder
20
+ )
15
21
  end
@@ -20,6 +20,12 @@ xml.Treatment do
20
20
  xml.Code treatment.modality_code.txt_code
21
21
  end
22
22
 
23
+ render(
24
+ "renalware/api/ukrdc/patients/treatments/discharge_reason",
25
+ treatment: treatment,
26
+ builder: builder
27
+ )
28
+
23
29
  # HD
24
30
  rr8 = treatment.hospital_unit&.unit_type_rr8
25
31
  if rr8.present?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  xml = builder
2
4
 
3
5
  xml.Treatment do
@@ -15,4 +17,10 @@ xml.Treatment do
15
17
  xml.CodingStandard "CF_RR7_TREATMENT"
16
18
  xml.Code treatment.modality_code.txt_code
17
19
  end
20
+
21
+ render(
22
+ "renalware/api/ukrdc/patients/treatments/discharge_reason",
23
+ treatment: treatment,
24
+ builder: builder
25
+ )
18
26
  end
@@ -0,0 +1,8 @@
1
+ class AddCodeToModalityDescriptions < ActiveRecord::Migration[5.2]
2
+ def change
3
+ within_renalware_schema do
4
+ add_column :modality_descriptions, :code, :string
5
+ add_index :modality_descriptions, :code, unique: true
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ class AddDischargeReasonCodeToUKRDCTreatments < ActiveRecord::Migration[5.2]
2
+ def change
3
+ within_renalware_schema do
4
+ add_column :ukrdc_treatments, :discharge_reason_code, :integer
5
+ add_column :ukrdc_treatments, :discharge_reason_comment, :string
6
+ end
7
+ end
8
+ end
@@ -2,11 +2,11 @@
2
2
 
3
3
  module Renalware
4
4
  log "Adding Modality Descriptions" do
5
- Deaths::ModalityDescription.find_or_create_by!(name: "Death")
6
- Transplants::DonorModalityDescription.find_or_create_by!(name: "Live Donor")
7
- Transplants::RecipientModalityDescription.find_or_create_by!(name: "Transplant")
8
- PD::ModalityDescription.find_or_create_by!(name: "PD")
9
- HD::ModalityDescription.find_or_create_by!(name: "HD")
10
- LowClearance::ModalityDescription.find_or_create_by!(name: "Low Clearance")
5
+ Deaths::ModalityDescription.find_or_create_by!(name: "Death", code: "death")
6
+ Transplants::DonorModalityDescription.find_or_create_by!(name: "Live Donor", code: "live_donor")
7
+ Transplants::RecipientModalityDescription.find_or_create_by!(name: "Transplant", code: "transplant")
8
+ PD::ModalityDescription.find_or_create_by!(name: "PD", code: "pd")
9
+ HD::ModalityDescription.find_or_create_by!(name: "HD", code: "hd")
10
+ LowClearance::ModalityDescription.find_or_create_by!(name: "Low Clearance", code: "low_clearance")
11
11
  end
12
12
  end
@@ -53,8 +53,12 @@ end
53
53
  class GpgCommand
54
54
  pattr_initialize [:file!, :options!]
55
55
 
56
+ # Note we skip using a random seed file (normally created at var/ukrdc/gpgkey/random_seed)
57
+ # because we had problems at KCH where the file would become corrupt, breaking the export, and
58
+ # fixable only by deleting the random_seed file and letting gpg re-create one.
59
+ # Using the --no-random-seed-file option the file is not used so we avoid that problem.
56
60
  def to_s
57
- "gpg --armor --no-default-keyring --trust-model always "\
61
+ "gpg --armor --no-default-keyring --trust-model always --no-random-seed-file "\
58
62
  "#{keyring} #{homedir} #{recipient} "\
59
63
  "-o \"#{encrypted_filename}\" "\
60
64
  "--encrypt \"#{file}\""
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Renalware
4
- VERSION = "2.0.92"
4
+ VERSION = "2.0.93"
5
5
  end
@@ -3,5 +3,6 @@
3
3
  FactoryBot.define do
4
4
  factory :hd_modality_description, class: "Renalware::HD::ModalityDescription" do
5
5
  initialize_with { Renalware::HD::ModalityDescription.find_or_create_by(name: "HD") }
6
+ code { "hd" }
6
7
  end
7
8
  end
@@ -6,34 +6,45 @@ FactoryBot.define do
6
6
 
7
7
  initialize_with { Renalware::Modalities::Description.find_or_create_by(name: name) }
8
8
 
9
+ trait :transfer_out do
10
+ name { "Transfer Out" }
11
+ code { "transfer_out" }
12
+ end
13
+
9
14
  trait :pd do
10
15
  name { "PD" }
11
16
  type { "Renalware::PD::ModalityDescription" }
17
+ code { "pd" }
12
18
  end
13
19
 
14
20
  trait :hd do
15
21
  name { "HD" }
16
22
  type { "Renalware::HD::ModalityDescription" }
23
+ code { "hd" }
17
24
  end
18
25
 
19
26
  trait :transplant do
20
27
  name { "Transplant" }
21
28
  type { "Renalware::Transplants::RecipientModalityDescription" }
29
+ code { "transplant" }
22
30
  end
23
31
 
24
32
  trait :low_clearance do
25
33
  name { "Low Clearance" }
26
34
  type { "Renalware::LowClearance::ModalityDescription" }
35
+ code { "low_clearance" }
27
36
  end
28
37
 
29
38
  trait :death do
30
39
  name { "Death" }
31
40
  type { "Renalware::Deaths::ModalityDescription" }
41
+ code { "death" }
32
42
  end
33
43
 
34
44
  trait :live_donor do
35
45
  name { "Live Donor" }
36
46
  type { "Renalware::Transplants::DonorModalityDescription" }
47
+ code { "live_donor" }
37
48
  end
38
49
  end
39
50
  end
@@ -6,5 +6,6 @@ FactoryBot.define do
6
6
  Renalware::PD::ModalityDescription.find_or_create_by!(name: name)
7
7
  end
8
8
  name { "PD" }
9
+ code { "pd" }
9
10
  end
10
11
  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.92
4
+ version: 2.0.93
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airslie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-11 00:00:00.000000000 Z
11
+ date: 2019-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_type
@@ -1858,6 +1858,8 @@ files:
1858
1858
  - app/models/renalware/ukrdc/treatment_timeline/pd/regime_decorator.rb
1859
1859
  - app/models/renalware/ukrdc/treatment_timeline/prepare_tables.rb
1860
1860
  - app/models/renalware/ukrdc/treatment_timeline/remap_model_table_names_to_their_prepared_equivalents.rb
1861
+ - app/models/renalware/ukrdc/treatment_timeline/transfer_out/generator.rb
1862
+ - app/models/renalware/ukrdc/treatment_timeline/transplant/generator.rb.wip
1861
1863
  - app/models/renalware/ukrdc/xml_renderer.rb
1862
1864
  - app/models/renalware/user.rb
1863
1865
  - app/models/renalware/version.rb
@@ -2165,6 +2167,7 @@ files:
2165
2167
  - app/views/renalware/api/ukrdc/patients/procedures/_dialysis_session.xml.builder
2166
2168
  - app/views/renalware/api/ukrdc/patients/procedures/_transplant_operation.xml.builder
2167
2169
  - app/views/renalware/api/ukrdc/patients/show.xml.builder
2170
+ - app/views/renalware/api/ukrdc/patients/treatments/_discharge_reason.xml.builder
2168
2171
  - app/views/renalware/api/ukrdc/patients/treatments/_generic.xml.builder
2169
2172
  - app/views/renalware/api/ukrdc/patients/treatments/_hd.xml.builder
2170
2173
  - app/views/renalware/api/ukrdc/patients/treatments/_pd.xml.builder
@@ -3530,6 +3533,8 @@ files:
3530
3533
  - db/migrate/20190705083727_alter_ukrdc_treatments.rb
3531
3534
  - db/migrate/20190705105921_create_hd_profile_for_modalites.rb
3532
3535
  - db/migrate/20190709101610_create_pd_regime_for_modalities.rb
3536
+ - db/migrate/20190718091430_add_code_to_modality_descriptions.rb
3537
+ - db/migrate/20190718095851_add_discharge_reason_code_to_ukrdc_treatments.rb
3533
3538
  - db/seeds.rb
3534
3539
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.csv
3535
3540
  - db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb