renalware-core 2.0.55 → 2.0.56

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/renalware/admissions/requests_controller.rb +5 -1
  3. data/app/controllers/renalware/hd/sessions_controller.rb +5 -1
  4. data/app/controllers/renalware/problems/problems_controller.rb +2 -2
  5. data/app/models/concerns/renalware/feeds/job.rb +1 -1
  6. data/app/models/renalware/admissions/consult_query.rb +1 -0
  7. data/app/models/renalware/admissions/request.rb +1 -0
  8. data/app/models/renalware/hd/session.rb +9 -6
  9. data/app/models/renalware/ukrdc/batch_number.rb +9 -3
  10. data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +14 -9
  11. data/app/models/renalware/ukrdc/create_patient_xml_file.rb +2 -11
  12. data/app/models/renalware/ukrdc/filename.rb +35 -0
  13. data/app/models/renalware/ukrdc/paths.rb +4 -3
  14. data/app/presenters/renalware/accesses/dashboard_presenter.rb +3 -3
  15. data/app/presenters/renalware/hd/dashboard_presenter.rb +1 -1
  16. data/app/presenters/renalware/hd/profile_presenter.rb +4 -1
  17. data/app/presenters/renalware/hd/session_presenter.rb +21 -1
  18. data/app/presenters/renalware/letters/letter_presenter.rb +1 -1
  19. data/app/views/renalware/admissions/requests/_request.html.slim +1 -2
  20. data/app/views/renalware/api/ukrdc/patients/_encounters.xml.builder +9 -9
  21. data/app/views/renalware/api/ukrdc/patients/_procedures.xml.builder +37 -0
  22. data/app/views/renalware/api/ukrdc/patients/procedures/_dialysis_session.xml.builder +43 -0
  23. data/app/views/renalware/api/ukrdc/patients/show.xml.builder +1 -0
  24. data/lib/gpg_encrypt_folder.rb +4 -4
  25. data/lib/renalware/version.rb +1 -1
  26. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 894fbb8d8d83ab547c7a25dec9e6d41eca0a9f9181bd55aef8ece1c65bc26523
4
- data.tar.gz: 468716265e6688e6d1e66fa3c6d606948531853285cacb9a1249914c02d6cb21
3
+ metadata.gz: b43e0abe941399d01e0ad556cd252275bee56352a1f93c36539047e23d494596
4
+ data.tar.gz: c01f1fb595e6349a0fe2cec92b9e1ece2051e46c3198bf4535206413a891dd4b
5
5
  SHA512:
6
- metadata.gz: 2c62a3d4fba4c48455a0882e1b7a3d4353b08a0c557858af1bc27f73387f63a24471d15b0915bf2246836b87b3d3f5478a37e8dc3b427d312ea56ef9a7e09cbc
7
- data.tar.gz: 34a24963e66f3d60d6776e63b4233b4ebd36eff7a35ac384f5640442e07e2f32841204503329eb1e8b51e5ca9c1b479b4ec3d7bd94489e88a0b4248c2a942a5e
6
+ metadata.gz: b1a75fd73bab54706788485f5c2d5a05f325f23d055aff0832f4a8e482ccc691ad6d654c1f94c279e4a0dbd9504cf10d244d1b7153f3660caf6f512ea1f5ab12
7
+ data.tar.gz: 272ff58c7269f6c12fce46cf38bea2826d77ff188241218380cd0f62f9d0a71e6aeed60ff238a467ee5266eb5e80692cb69444358ec9c5a9f1c7da97e9bbcbc4
@@ -8,7 +8,11 @@ module Renalware
8
8
  include Renalware::Concerns::Pageable
9
9
 
10
10
  def index
11
- requests = Request.ordered.all.page(page).per(per_page)
11
+ requests = Request
12
+ .ordered
13
+ .includes(:patient, :reason, :created_by, :updated_by, :hospital_unit)
14
+ .all
15
+ .page(page).per(per_page)
12
16
  authorize requests
13
17
  render locals: { requests: requests }
14
18
  end
@@ -13,7 +13,11 @@ module Renalware
13
13
 
14
14
  def index
15
15
  query = sessions_query
16
- sessions = query.call.includes(:hospital_unit, :patient).page(page).per(per_page || 15)
16
+ sessions = query
17
+ .call
18
+ .includes(:hospital_unit, :patient, :signed_on_by, :signed_off_by)
19
+ .page(page)
20
+ .per(per_page || 15)
17
21
  authorize sessions
18
22
  presenter = CollectionPresenter.new(sessions, SessionPresenter, view_context)
19
23
  @q = query.search
@@ -8,13 +8,13 @@ module Renalware
8
8
  authorize problems
9
9
  render locals: {
10
10
  patient: patient,
11
- current_problems: problems.current.with_created_by.ordered,
11
+ current_problems: problems.current.with_updated_by.ordered,
12
12
  archived_problems: problems.archived.with_created_by.ordered
13
13
  }
14
14
  end
15
15
 
16
16
  def show
17
- problem = patient.problems.with_archived.find(params[:id])
17
+ problem = patient.problems.with_archived.includes(versions: :item).find(params[:id])
18
18
  notes = problem.notes.with_updated_by.ordered
19
19
  authorize problem
20
20
  render locals: {
@@ -19,7 +19,7 @@ module Renalware
19
19
  end
20
20
 
21
21
  def find_file_in(files, pattern)
22
- file = files.select{ |f| f.basename.to_s.match(pattern) }.first
22
+ file = files.detect{ |f| f.basename.to_s.match(pattern) }
23
23
  if file.nil?
24
24
  msg = "Zip file does not contain a file with name matching #{pattern}!"
25
25
  log(msg)
@@ -33,6 +33,7 @@ module Renalware
33
33
  .includes(
34
34
  :consult_site,
35
35
  :hospital_ward,
36
+ :created_by,
36
37
  patient: { current_modality: :description }
37
38
  )
38
39
  .order(created_at: :desc)
@@ -11,6 +11,7 @@ module Renalware
11
11
  acts_as_paranoid
12
12
 
13
13
  belongs_to :patient, touch: true
14
+ belongs_to :hospital_unit, class_name: "Hospitals::Unit"
14
15
  belongs_to :reason, class_name: "RequestReason"
15
16
 
16
17
  validates :patient_id, presence: true, uniqueness: true
@@ -54,21 +54,24 @@ module Renalware
54
54
  datetime_at(end_time)
55
55
  end
56
56
 
57
+ def compute_duration
58
+ return unless start_time_changed? || end_time_changed?
59
+
60
+ self.duration = DurationCalculator.in_minutes(start_time, end_time)
61
+ end
62
+
57
63
  private
58
64
 
59
65
  def datetime_at(time)
66
+ return if performed_on.blank?
67
+ return performed_on.to_time if start_time.blank?
68
+
60
69
  Time.zone.parse("#{performed_on.strftime('%F')} #{time.strftime('%T')}")
61
70
  end
62
71
 
63
72
  def assign_modality
64
73
  self.modality_description = patient.modality_description
65
74
  end
66
-
67
- def compute_duration
68
- return unless start_time_changed? || end_time_changed?
69
-
70
- self.duration = DurationCalculator.in_minutes(start_time, end_time)
71
- end
72
75
  end
73
76
  end
74
77
  end
@@ -6,9 +6,15 @@ module Renalware
6
6
  module UKRDC
7
7
  class BatchNumber < ApplicationRecord
8
8
  def self.next
9
- new_batcher_number = new
10
- new_batcher_number.save!
11
- new_batcher_number.id.to_s.rjust(6, "0")
9
+ create!
10
+ end
11
+
12
+ def number
13
+ id.to_s.rjust(6, "0")
14
+ end
15
+
16
+ def to_s
17
+ number
12
18
  end
13
19
  end
14
20
  end
@@ -29,22 +29,27 @@ module Renalware
29
29
  @logger = logger || Rails.logger
30
30
  @request_uuid = SecureRandom.uuid # helps group logs together
31
31
  @timestamp = Time.zone.now.strftime("%Y%m%d%H%M%S%L")
32
- @paths = Paths.new(timestamp: @timestamp, working_path: config.ukrdc_working_path)
32
+
33
33
  @summary = ExportSummary.new
34
34
  end
35
35
 
36
36
  def call
37
37
  logger.tagged(request_uuid) do
38
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
41
- summary.milliseconds_taken = Benchmark.ms do
42
- create_patient_xml_files
43
- encrypt_patient_xml_files
44
- copy_encrypted_xml_files_into_the_outgoing_folder
45
- paths.create_symlink_to_latest_timestamped_folder_so_it_is_easier_to_eyeball
39
+ ActiveRecord::Base.transaction do
40
+ @batch_number = BatchNumber.next.number
41
+ @paths = Paths.new(
42
+ timestamp: timestamp,
43
+ batch_number: batch_number,
44
+ working_path: config.ukrdc_working_path
45
+ )
46
+ summary.milliseconds_taken = Benchmark.ms do
47
+ create_patient_xml_files
48
+ encrypt_patient_xml_files
49
+ copy_encrypted_xml_files_into_the_outgoing_folder
50
+ end
46
51
  end
47
- # end
52
+ paths.create_symlink_to_latest_timestamped_folder_so_it_is_easier_to_eyeball
48
53
  build_summary
49
54
  print_summary
50
55
  email_summary
@@ -20,7 +20,7 @@ module Renalware
20
20
  def call
21
21
  update_patient_to_indicated_we_checked_them_for_any_relevant_changes
22
22
  UKRDC::TransmissionLog.with_logging(patient, request_uuid) do |log|
23
- logger.info " Patient #{patient.to_param}"
23
+ logger.info " Patient #{patient.ukrdc_external_id}"
24
24
  xml_payload = build_payload(log)
25
25
  if xml_payload_same_as_last_sent_payload?(xml_payload)
26
26
  logger.info " skipping as no change in XML file"
@@ -98,19 +98,10 @@ module Renalware
98
98
  end
99
99
 
100
100
  def xml_filepath
101
+ xml_filename = Filename.new(patient: patient, batch_number: batch_number).to_s
101
102
  File.join(dir, xml_filename)
102
103
  end
103
104
 
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
109
-
110
- site_code = Renalware.config.ukrdc_site_code # e.g. RJZ
111
- "#{site_code}_#{batch_number}_#{patient_identifier.upcase}.xml"
112
- end
113
-
114
105
  class Payload
115
106
  pattr_initialize :payload
116
107
  delegate :to_s, to: :payload
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency "renalware/ukrdc"
4
+
5
+ module Renalware
6
+ module UKRDC
7
+ # Formats a UKRDC patient XML filename
8
+ class Filename
9
+ pattr_initialize [:patient!, :batch_number!]
10
+
11
+ def to_s
12
+ "#{site_code}_#{batch_number}_#{sanitized_patient_identifier}.xml"
13
+ end
14
+
15
+ private
16
+
17
+ def sanitized_patient_identifier
18
+ patient_identifier.strip.upcase
19
+ end
20
+
21
+ def site_code
22
+ Renalware.config.ukrdc_site_code # e.g. RJZ
23
+ end
24
+
25
+ # For an patient identifer to put in the filename (to make it easierto look up the patient)
26
+ # choose the NHS Number is there is one, falling back to local_patient_id(2,3,4) then
27
+ # ukrdc_external_id - the latter at least is guaranteed to be present.
28
+ def patient_identifier
29
+ return patient.nhs_number if patient.nhs_number.present?
30
+
31
+ patient.hospital_identifier&.id || patient.ukrdc_external_id
32
+ end
33
+ end
34
+ end
35
+ end
@@ -5,12 +5,13 @@ require_dependency "renalware/ukrdc"
5
5
  module Renalware
6
6
  module UKRDC
7
7
  class Paths
8
- attr_reader :timestamp, :working_path
8
+ attr_reader :timestamp, :batch_number, :working_path
9
9
 
10
- def initialize(timestamp: nil, working_path:)
10
+ def initialize(timestamp: nil, batch_number:, working_path:)
11
11
  raise(ArgumentError, "Invalid working_path") if working_path.blank?
12
12
 
13
13
  @timestamp = timestamp
14
+ @batch_number = batch_number
14
15
  @timestamp ||= Time.zone.now.strftime("%Y%m%d%H%M%S%L")
15
16
  @working_path = Pathname(working_path)
16
17
  create_folders
@@ -30,7 +31,7 @@ module Renalware
30
31
  end
31
32
 
32
33
  def timestamped_folder
33
- @timestamped_folder ||= archive_folder.join(timestamp)
34
+ @timestamped_folder ||= archive_folder.join("#{batch_number}_#{timestamp}")
34
35
  end
35
36
 
36
37
  def timestamped_xml_folder
@@ -10,7 +10,7 @@ module Renalware
10
10
 
11
11
  def profiles
12
12
  @profiles ||= CollectionPresenter.new(
13
- patient.profiles.past_and_future.ordered,
13
+ patient.profiles.past_and_future.ordered.includes(:type),
14
14
  ProfilePresenter
15
15
  )
16
16
  end
@@ -24,14 +24,14 @@ module Renalware
24
24
 
25
25
  def procedures
26
26
  @procedures ||= CollectionPresenter.new(
27
- patient.procedures.ordered,
27
+ patient.procedures.ordered.includes(:type),
28
28
  ProcedurePresenter
29
29
  )
30
30
  end
31
31
 
32
32
  def assessments
33
33
  @assessments ||= CollectionPresenter.new(
34
- patient.assessments.ordered,
34
+ patient.assessments.ordered.includes(:type),
35
35
  AssessmentPresenter
36
36
  )
37
37
  end
@@ -47,7 +47,7 @@ module Renalware
47
47
 
48
48
  def sessions
49
49
  @sessions ||= begin
50
- hd_sessions = Session.includes(:hospital_unit, :patient)
50
+ hd_sessions = Session.includes(:hospital_unit, :patient, :signed_on_by, :signed_off_by)
51
51
  .for_patient(patient)
52
52
  .limit(10).ordered
53
53
  CollectionPresenter.new(hd_sessions, SessionPresenter, view_context)
@@ -69,7 +69,10 @@ module Renalware
69
69
  end
70
70
 
71
71
  def schedule_definitions
72
- ScheduleDefinition.ordered.map{ |definition| [definition.to_s, definition.id] }
72
+ ScheduleDefinition
73
+ .includes(:diurnal_period)
74
+ .ordered
75
+ .map{ |definition| [definition.to_s, definition.id] }
73
76
  end
74
77
 
75
78
  def last_update
@@ -8,6 +8,7 @@ module Renalware
8
8
  :observations_before,
9
9
  :observations_after,
10
10
  :dialysis,
11
+ :complications,
11
12
  to: :document, allow_nil: true
12
13
  delegate :access_type,
13
14
  :access_type_abbreviation,
@@ -27,6 +28,11 @@ module Renalware
27
28
  :renal_registry_code,
28
29
  to: :hospital_unit,
29
30
  prefix: true, allow_nil: true
31
+ delegate :username, :to_s, to: :updated_by, prefix: true, allow_nil: true
32
+ delegate :sodium_content, to: :dialysate, allow_nil: true
33
+ delegate :had_intradialytic_hypotension,
34
+ to: :complications,
35
+ allow_nil: true
30
36
  delegate :class, to: :__getobj__
31
37
 
32
38
  def initialize(session, view_context = nil)
@@ -35,6 +41,10 @@ module Renalware
35
41
  super(session)
36
42
  end
37
43
 
44
+ def had_intradialytic_hypotension?
45
+ had_intradialytic_hypotension&.yes? ? "Y" : "N"
46
+ end
47
+
38
48
  def state
39
49
  self.class.to_s.demodulize.downcase
40
50
  end
@@ -45,6 +55,10 @@ module Renalware
45
55
  view_context.link_to(text, url)
46
56
  end
47
57
 
58
+ def performed_on_date
59
+ __getobj__.performed_on
60
+ end
61
+
48
62
  def start_time
49
63
  ::I18n.l(super, format: :time)
50
64
  end
@@ -53,10 +67,16 @@ module Renalware
53
67
  ::I18n.l(super, format: :time)
54
68
  end
55
69
 
70
+ # Returns duration as e.g. "02:01"
56
71
  def duration
57
72
  super && ::Renalware::Duration.from_minutes(super)
58
73
  end
59
74
 
75
+ # Returns duration as e.g. 121 (minutes)
76
+ def duration_in_minutes
77
+ __getobj__.duration
78
+ end
79
+
60
80
  def before_measurement_for(measurement)
61
81
  observations_before.try(measurement.to_sym)
62
82
  end
@@ -87,7 +107,7 @@ module Renalware
87
107
  end
88
108
 
89
109
  def truncated_notes
90
- return unless notes
110
+ return if notes.blank?
91
111
 
92
112
  notes.truncate(100, omission: "&hellip;").html_safe
93
113
  end
@@ -85,7 +85,7 @@ module Renalware
85
85
  end
86
86
 
87
87
  def title
88
- "TBC"
88
+ pdf_stateless_filename
89
89
  end
90
90
 
91
91
  def pdf_filename
@@ -1,6 +1,5 @@
1
1
  ruby:
2
2
  patient = request.patient
3
- unit = Renalware::Hospitals::Unit.find_by(id: request.hospital_unit_id)
4
3
  editing_history = "Created #{l(request.created_at)} by #{request.created_by}\n"\
5
4
  "Updated #{l(request.updated_at)} by #{request.updated_by}"
6
5
  = content_tag_for(:tr,
@@ -13,7 +12,7 @@ ruby:
13
12
  td= default_patient_link(patient)
14
13
  td= patient.nhs_number
15
14
  td= patient.hospital_identifiers
16
- td= unit&.name
15
+ td= request.hospital_unit&.name
17
16
  td.col-width-medium-with-ellipsis(title=request.notes)
18
17
  = request.notes
19
18
  td(title=editing_history)= l(request.created_at)
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- xml = builder
3
+ # xml = builder
4
4
 
5
- xml.Encounters do
6
- patient.finished_hd_sessions.each do |session|
7
- render "renalware/api/ukrdc/patients/encounters/hd_session",
8
- builder: xml,
9
- patient: patient,
10
- session: Renalware::HD::SessionPresenter.new(session)
11
- end
12
- end
5
+ # xml.Encounters do
6
+ # patient.finished_hd_sessions.each do |session|
7
+ # render "renalware/api/ukrdc/patients/encounters/hd_session",
8
+ # builder: xml,
9
+ # patient: patient,
10
+ # session: Renalware::HD::SessionPresenter.new(session)
11
+ # end
12
+ # end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ xml = builder
4
+
5
+ xml.Procedures do
6
+ patient.finished_hd_sessions.each do |session|
7
+ render "renalware/api/ukrdc/patients/procedures/dialysis_session",
8
+ builder: xml,
9
+ patient: patient,
10
+ session: Renalware::HD::SessionPresenter.new(session)
11
+ end
12
+ # patient.prescriptions.each do |prescription|
13
+ # xml.Medication do
14
+ # xml.FromTime prescription.prescribed_on.to_datetime
15
+ # if prescription.terminated_or_marked_for_termination?
16
+ # xml.ToTime prescription.terminated_on&.to_datetime
17
+ # end
18
+ # xml.Route do
19
+ # xml.CodingStandard "RR22"
20
+ # xml.Code prescription.medication_route&.rr_code
21
+ # xml.Description prescription.medication_route&.name
22
+ # end
23
+ # xml.DrugProduct do
24
+ # xml.Generic prescription.drug
25
+ # # xml.Id do
26
+ # # xml.CodingStandard "DM+D"
27
+ # # xml.Code "dm + d code for the drug - coming soon"
28
+ # # xml.Description prescription.drug
29
+ # # end
30
+ # end
31
+ # xml.Frequency prescription.frequency
32
+ # xml.Comments prescription.notes
33
+ # # xml.DoseUoM
34
+ # # xml.Indication
35
+ # end
36
+ # end
37
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ xml = builder
4
+
5
+ xml.DialysisSession(
6
+ start: session.performed_on_date,
7
+ stop: session.performed_on_date
8
+ ) do
9
+
10
+ xml.ProcedureType do
11
+ xml.CodingStandard "SNOMED"
12
+ xml.Code "19647005"
13
+ xml.Description "Plasma Exchange"
14
+ end
15
+
16
+ xml.Clinician do
17
+ xml.Description session.updated_by
18
+ end
19
+
20
+ xml.ProcedureTime session.start_datetime.to_datetime
21
+
22
+ xml.EnteredBy do
23
+ xml.CodingStandard "LOCAL"
24
+ xml.Code session.updated_by_username
25
+ xml.Description session.updated_by
26
+ end
27
+
28
+ xml.EnteredAt do
29
+ xml.Code session.hospital_unit_renal_registry_code
30
+ end
31
+
32
+ xml.ExternalId session.uuid
33
+ xml.Attributes do
34
+ xml.QHD19 session.had_intradialytic_hypotension?
35
+ xml.QHD20 session.access_type
36
+ xml.QHD21 session.access_side
37
+ xml.QHD22 "N" # Access in two sites simultaneously
38
+ xml.QHD30 session.blood_flow
39
+ xml.QHD31 session.duration_in_minutes # Time Dialysed in Minutes
40
+ xml.QHD32 session.sodium_content # Sodium in Dialysate
41
+ xml.QHD33 # Needling Method
42
+ end
43
+ end
@@ -21,6 +21,7 @@ xml.ukrdc(:PatientRecord, namespace_and_schema) do
21
21
  render "allergies", builder: xml, patient: patient
22
22
  render "diagnoses", builder: xml, patient: patient
23
23
  render "medications", builder: xml, patient: patient
24
+ render "procedures", builder: xml, patient: patient
24
25
  render "documents", builder: xml, patient: patient
25
26
  render "encounters", builder: xml, patient: patient
26
27
  render "program_memberships", builder: xml, patient: patient
@@ -40,13 +40,13 @@ class GpgEncryptFile
40
40
  err = Open3.popen3(gpg_command) do |_stdin, _stdout, stderr|
41
41
  stderr.read
42
42
  end
43
- raise "Error encrypting UKRDC files: #{err}" unless err.empty?
43
+ raise "Error encrypting UKRDC files: #{err}, #{gpg_command}" unless err.empty?
44
44
  end
45
45
 
46
46
  private
47
47
 
48
48
  def gpg_command
49
- GpgCommand.new(file: file, options: options).to_s
49
+ @gpg_command ||= GpgCommand.new(file: file, options: options).to_s
50
50
  end
51
51
  end
52
52
 
@@ -56,8 +56,8 @@ class GpgCommand
56
56
  def to_s
57
57
  "gpg --armor --no-default-keyring --trust-model always "\
58
58
  "#{keyring} #{homedir} #{recipient} "\
59
- "-o #{encrypted_filename} "\
60
- "--encrypt #{file}"
59
+ "-o \"#{encrypted_filename}\" "\
60
+ "--encrypt \"#{file}\""
61
61
  end
62
62
 
63
63
  def recipient
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Renalware
4
- VERSION = "2.0.55"
4
+ VERSION = "2.0.56"
5
5
  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.55
4
+ version: 2.0.56
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airslie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-26 00:00:00.000000000 Z
11
+ date: 2018-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_type
@@ -1763,6 +1763,7 @@ files:
1763
1763
  - app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb
1764
1764
  - app/models/renalware/ukrdc/create_patient_xml_file.rb
1765
1765
  - app/models/renalware/ukrdc/export_summary.rb
1766
+ - app/models/renalware/ukrdc/filename.rb
1766
1767
  - app/models/renalware/ukrdc/paths.rb
1767
1768
  - app/models/renalware/ukrdc/patients_query.rb
1768
1769
  - app/models/renalware/ukrdc/transmission_log.rb
@@ -2043,6 +2044,7 @@ files:
2043
2044
  - app/views/renalware/api/ukrdc/patients/_name.xml.builder
2044
2045
  - app/views/renalware/api/ukrdc/patients/_observations.xml.builder
2045
2046
  - app/views/renalware/api/ukrdc/patients/_patient.xml.builder
2047
+ - app/views/renalware/api/ukrdc/patients/_procedures.xml.builder
2046
2048
  - app/views/renalware/api/ukrdc/patients/_program_memberships.xml.builder
2047
2049
  - app/views/renalware/api/ukrdc/patients/_sending_facility.xml.builder
2048
2050
  - app/views/renalware/api/ukrdc/patients/_social_histories.xml.builder
@@ -2054,6 +2056,7 @@ files:
2054
2056
  - app/views/renalware/api/ukrdc/patients/observations/_blood_pressure.xml.builder
2055
2057
  - app/views/renalware/api/ukrdc/patients/observations/_standing_blood_pressure.xml.builder
2056
2058
  - app/views/renalware/api/ukrdc/patients/observations/_weight.xml.builder
2059
+ - app/views/renalware/api/ukrdc/patients/procedures/_dialysis_session.xml.builder
2057
2060
  - app/views/renalware/api/ukrdc/patients/show.xml.builder
2058
2061
  - app/views/renalware/api/v1/medications/prescriptions/index.json.jbuilder
2059
2062
  - app/views/renalware/api/v1/patients/patients/index.json.jbuilder