renalware-core 2.0.0.pre.beta8 → 2.0.0.pre.beta9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +19 -1
- data/app/assets/stylesheets/renalware/lib/_select2-foundation5-overrides.scss +2 -2
- data/app/controllers/renalware/directory/people_controller.rb +1 -1
- data/app/controllers/renalware/letters/contacts_controller.rb +1 -1
- data/app/controllers/renalware/letters/letters_controller.rb +1 -1
- data/app/controllers/renalware/patients/patients_controller.rb +3 -5
- data/app/controllers/renalware/patients/primary_care_physicians_controller.rb +1 -1
- data/app/controllers/renalware/renal/aki_alerts_controller.rb +44 -0
- data/app/controllers/renalware/renal/profiles_controller.rb +1 -1
- data/app/controllers/renalware/reporting/audits_controller.rb +9 -3
- data/app/documents/renalware/patient_document.rb +0 -13
- data/app/jobs/hl7_message_example.yml +1 -1
- data/app/jobs/renalware/reporting/refresh_audit_data_job.rb +7 -3
- data/app/models/renalware/clinical/create_allergy.rb +4 -2
- data/app/models/renalware/clinics/create_clinic_visit.rb +6 -2
- data/app/models/renalware/hd/session.rb +12 -0
- data/app/models/renalware/hospitals/unit.rb +4 -0
- data/app/models/renalware/hospitals/ward.rb +22 -0
- data/app/models/renalware/modalities/change_patient_modality.rb +4 -2
- data/app/models/renalware/patient.rb +1 -0
- data/app/models/renalware/patients/language.rb +1 -0
- data/app/models/renalware/pd/create_regime.rb +4 -2
- data/app/models/renalware/pd/revise_regime.rb +5 -3
- data/app/models/renalware/renal/aki_alert.rb +15 -0
- data/app/models/renalware/renal/aki_alert_action.rb +10 -0
- data/app/models/renalware/reporting/audit.rb +2 -3
- data/app/models/renalware/reporting/generate_audit_json.rb +21 -5
- data/app/models/renalware/system/country.rb +21 -0
- data/app/models/renalware/transplants/create_donor_stage.rb +4 -2
- data/app/policies/renalware/base_policy.rb +4 -0
- data/app/policies/renalware/renal/aki_alert_policy.rb +9 -0
- data/app/presenters/renalware/hd/patient_presenter.rb +5 -0
- data/app/presenters/renalware/reporting/audit_presenter.rb +1 -0
- data/app/presenters/renalware/transplants/patient_presenter.rb +2 -1
- data/app/presenters/renalware/ukrdc/patient_presenter.rb +27 -0
- data/app/values/renalware/address.rb +2 -13
- data/app/views/renalware/addresses/_form.html.slim +4 -2
- data/app/views/renalware/api/ukrdc/patients/_address.xml.builder +2 -2
- data/app/views/renalware/api/ukrdc/patients/_diagnoses.xml.builder +5 -2
- data/app/views/renalware/api/ukrdc/patients/_encounters.xml.builder +8 -1
- data/app/views/renalware/api/ukrdc/patients/_medications.xml.builder +30 -0
- data/app/views/renalware/api/ukrdc/patients/_patient.xml.builder +36 -4
- data/app/views/renalware/api/ukrdc/patients/_sending_facility.xml.builder +1 -0
- data/app/views/renalware/api/ukrdc/patients/diagnoses/_cause_of_death.xml.builder +10 -0
- data/app/views/renalware/api/ukrdc/patients/encounters/_hd_session.xml.builder +40 -0
- data/app/views/renalware/api/ukrdc/patients/show.xml.builder +1 -0
- data/app/views/renalware/directory/people/_address_form.html.slim +1 -1
- data/app/views/renalware/hd/sessions/_form.html.slim +43 -33
- data/app/views/renalware/letters/contacts/_person_form.html.slim +1 -1
- data/app/views/renalware/navigation/_renal.html.slim +1 -0
- data/app/views/renalware/patients/patients/_form.html.slim +5 -2
- data/app/views/renalware/patients/patients/show.html.slim +0 -5
- data/app/views/renalware/patients/patients/show/_patient_demographics.html.slim +3 -3
- data/app/views/renalware/patients/side_menu/_actions.html.slim +3 -0
- data/app/views/renalware/renal/aki_alerts/_filters.html.slim +0 -0
- data/app/views/renalware/renal/aki_alerts/edit.html.slim +17 -0
- data/app/views/renalware/renal/aki_alerts/index.html.slim +28 -0
- data/app/views/renalware/reporting/audits/edit.html.slim +1 -1
- data/app/views/renalware/reporting/audits/index.html.slim +11 -7
- data/app/views/renalware/reporting/audits/show.html.slim +2 -17
- data/app/views/renalware/shared/documents/_blood_pressure_input.html.slim +6 -7
- data/config/initializers/inflections.rb +3 -2
- data/config/locales/renalware/navigation/renal.en.yml +1 -0
- data/config/locales/renalware/renal/aki_alerts.en.yml +5 -0
- data/config/locales/renalware/renal/{profile.yml → profile.en.yml} +0 -0
- data/config/locales/renalware/reporting/audit.en.yml +1 -1
- data/config/routes.rb +1 -0
- data/db/migrate/20150312113937_create_drug_types_drugs.rb +2 -2
- data/db/migrate/20170925161033_add_code_to_patient_langauges.rb +6 -0
- data/db/migrate/20170925182738_add_rr_code_to_medication_routes.rb +5 -0
- data/db/migrate/20170926081426_create_countries.rb +14 -0
- data/db/migrate/20170926132845_add_country_of_birth_to_patients.rb +6 -0
- data/db/migrate/20171002175804_add_rr_columns_to_transplant_registration_status_descriptions.rb +12 -0
- data/db/migrate/20171003093347_create_hospital_wards.rb +17 -0
- data/db/migrate/20171003111228_create_aki_alert_actions.rb +10 -0
- data/db/migrate/20171003122425_create_renal_aki_alerts.rb +22 -0
- data/db/migrate/20171005081224_create_reporting_bone_audit.rb +5 -0
- data/db/migrate/20171005091202_reporting_audit_changes.rb +7 -0
- data/db/migrate/20171005130109_create_medication_current_prescriptions.rb +5 -0
- data/db/migrate/20171005144505_create_reporting_anaemia_audit.rb +5 -0
- data/db/migrate/20171009104106_add_legacy_patient_id_to_patients.rb +6 -0
- data/db/seeds/default/events/{event_types_required.csv → event_types.csv} +0 -0
- data/db/seeds/default/events/{event_types_required.rb → event_types.rb} +2 -2
- data/db/seeds/default/events/seeds.rb +1 -2
- data/db/seeds/default/medications/medication_routes.rb +23 -13
- data/db/seeds/default/patients/patients_languages.csv +192 -102
- data/db/seeds/default/patients/patients_languages.rb +1 -1
- data/db/seeds/default/patients/patients_religions.csv +2 -0
- data/db/seeds/default/reporting/audits.rb +4 -3
- data/db/seeds/default/reporting/audits.yml +47 -4
- data/db/seeds/default/system/countries.csv +250 -0
- data/db/seeds/default/system/countries.rb +12 -0
- data/db/seeds/default/system/seeds.rb +1 -0
- data/db/seeds/default/transplants/transplant_registration_statuses.rb +30 -19
- data/db/views/medication_current_prescriptions_v01.sql +28 -0
- data/db/views/reporting_anaemia_audit_v01.sql +41 -0
- data/db/views/reporting_bone_audit_v01.sql +32 -0
- data/lib/renalware/version.rb +1 -1
- data/spec/factories/deaths/cause.rb +1 -1
- data/spec/factories/drugs/drug.rb +6 -0
- data/spec/factories/drugs/drug_types.rb +5 -0
- data/spec/factories/hospitals/wards.rb +9 -0
- data/spec/factories/modalities/modality_descriptions.rb +10 -8
- data/spec/factories/patients/ethnicities.rb +3 -0
- data/spec/factories/patients/languages.rb +12 -1
- data/spec/factories/renal/aki_alert_actions.rb +5 -0
- data/spec/factories/renal/aki_alerts.rb +9 -0
- data/spec/factories/reporting/audits.rb +1 -1
- data/spec/factories/system/addresses.rb +1 -1
- data/spec/factories/system/countries.rb +15 -0
- metadata +42 -13
- data/app/values/renalware/country.rb +0 -19
- data/config/countries.csv +0 -250
- data/db/migrate/20170706120643_create_reporting_data_sources.rb +0 -5
- data/db/seeds/default/events/event_types_blt.csv +0 -109
- data/db/seeds/default/events/event_types_local.rb +0 -10
- data/db/views/reporting_data_sources_v01.sql +0 -17
@@ -0,0 +1,15 @@
|
|
1
|
+
require_dependency "renalware/renal"
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
module Renal
|
5
|
+
class AKIAlert < ApplicationRecord
|
6
|
+
include Accountable
|
7
|
+
scope :ordered, ->{ order(created_at: :desc) }
|
8
|
+
belongs_to :patient, class_name: "Renal::Patient"
|
9
|
+
belongs_to :action, class_name: "Renal::AKIAlertAction"
|
10
|
+
belongs_to :hospital_ward, class_name: "Hospitals::Ward"
|
11
|
+
validates :patient, presence: true
|
12
|
+
alias_attribute :decided_by, :updated_by
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -4,12 +4,11 @@ module Renalware
|
|
4
4
|
module Reporting
|
5
5
|
class Audit < ApplicationRecord
|
6
6
|
validates :name, presence: true
|
7
|
-
validates :
|
8
|
-
validates :refresh_schedule, presence: true
|
7
|
+
validates :view_name, presence: true
|
9
8
|
|
10
9
|
def self.available_audit_materialized_views
|
11
10
|
result = connection.execute("SELECT oid::regclass::text FROM pg_class
|
12
|
-
WHERE relkind
|
11
|
+
WHERE relkind in ('m', 'v') and relname like 'reporting_%';")
|
13
12
|
result.values.flatten
|
14
13
|
end
|
15
14
|
end
|
@@ -3,17 +3,33 @@ require_dependency "renalware/reporting"
|
|
3
3
|
module Renalware
|
4
4
|
module Reporting
|
5
5
|
class GenerateAuditJson
|
6
|
-
def self.call(
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
# Build a
|
6
|
+
def self.call(view_name)
|
7
|
+
conn = ActiveRecord::Base.connection
|
8
|
+
result = conn.execute("select * from #{conn.quote_column_name(view_name)};")
|
9
|
+
|
10
|
+
# Build a JS DataTables-compatible columnDefs hash
|
11
11
|
columns = result.fields.each_with_index.inject([]) do |array, data|
|
12
12
|
column_name, index = data
|
13
13
|
array << { title: column_name, target: index }
|
14
14
|
end
|
15
15
|
[columns.to_json, result.values]
|
16
16
|
end
|
17
|
+
|
18
|
+
# A WIP to translate audit column names into human friendly ones.
|
19
|
+
# May need to establish guidelines for instance apply text case in the view itself so
|
20
|
+
# eg pct_HGB = % HGB without having to know to upcase certain bits of the name but
|
21
|
+
# capitalise others etc.
|
22
|
+
# def self.humanize_column_name(column)
|
23
|
+
# column
|
24
|
+
# .gsub("pct_", "% ")
|
25
|
+
# .gsub("count_", "No.")
|
26
|
+
# .gsub("avg_", "Avg ")
|
27
|
+
# .gsub("max", "Max ")
|
28
|
+
# .gsub("gt_eq_", "≥ ")
|
29
|
+
# .gsub("lt_eq_", "≤ ")
|
30
|
+
# .gsub("gt_", "> ")
|
31
|
+
# .gsub("lt_", "< ")
|
32
|
+
# end
|
17
33
|
end
|
18
34
|
end
|
19
35
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_dependency "renalware/system"
|
2
|
+
|
3
|
+
module Renalware
|
4
|
+
module System
|
5
|
+
class Country < ApplicationRecord
|
6
|
+
validates :name, presence: true, uniqueness: true
|
7
|
+
validates :alpha2, presence: true, uniqueness: true
|
8
|
+
validates :alpha3, presence: true, uniqueness: true
|
9
|
+
|
10
|
+
default_scope ->{ order(position: :asc) }
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
name
|
14
|
+
end
|
15
|
+
|
16
|
+
def uk?
|
17
|
+
(alpha3 || "").casecmp("GBR").zero?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require_dependency "renalware/transplants"
|
2
|
+
require_dependency "renalware/success"
|
3
|
+
require_dependency "renalware/failure"
|
2
4
|
|
3
5
|
# Service object responsible for creating a new DonorStage and terminated the previous one
|
4
6
|
# if found.
|
@@ -15,9 +17,9 @@ module Renalware
|
|
15
17
|
terminate_current_stage if current_stage.present?
|
16
18
|
stage = build_new_stage
|
17
19
|
if stage.save
|
18
|
-
Success.new(stage)
|
20
|
+
::Renalware::Success.new(stage)
|
19
21
|
else
|
20
|
-
Failure.new(stage)
|
22
|
+
::Renalware::Failure.new(stage)
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
@@ -16,6 +16,11 @@ module Renalware
|
|
16
16
|
super(HD.cast_patient(patient.__getobj__))
|
17
17
|
end
|
18
18
|
|
19
|
+
def finished_hd_sessions
|
20
|
+
# TODO: standardise on a way to get closed sessions - a scope on patient maybe?
|
21
|
+
hd_sessions.eager_load(:hospital_unit).where(type: "Renalware::HD::Session::Closed")
|
22
|
+
end
|
23
|
+
|
19
24
|
private
|
20
25
|
|
21
26
|
def hd_profile
|
@@ -3,7 +3,8 @@ module Renalware
|
|
3
3
|
class PatientPresenter < SimpleDelegator
|
4
4
|
|
5
5
|
def initialize(patient)
|
6
|
-
|
6
|
+
patient = patient.__getobj__ if patient.respond_to?(:__getobj__)
|
7
|
+
super(Transplants.cast_patient(patient))
|
7
8
|
end
|
8
9
|
|
9
10
|
def current_registration_status
|
@@ -6,6 +6,14 @@ module Renalware
|
|
6
6
|
delegate :allergies, to: :clinical_patient
|
7
7
|
delegate :clinic_visits, to: :clinics_patient
|
8
8
|
delegate :observation_requests, to: :pathology_patient
|
9
|
+
delegate :profile, to: :renal_patient, allow_nil: true
|
10
|
+
delegate :first_seen_on, to: :profile, allow_nil: true
|
11
|
+
alias_attribute :home_telephone, :telephone1
|
12
|
+
alias_attribute :mobile_telephone, :telephone2
|
13
|
+
|
14
|
+
def dead?
|
15
|
+
current_modality_death?
|
16
|
+
end
|
9
17
|
|
10
18
|
def smoking_history
|
11
19
|
@smoking_history ||= document.history&.smoking&.upcase
|
@@ -18,10 +26,21 @@ module Renalware
|
|
18
26
|
)
|
19
27
|
end
|
20
28
|
|
29
|
+
def current_registration_status_rr_code
|
30
|
+
@current_registration_status_rr_code ||= begin
|
31
|
+
status = transplant_patient.current_registration_status
|
32
|
+
status&.description&.rr_code
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
21
36
|
def hospital_unit_code
|
22
37
|
letter_head.site_code
|
23
38
|
end
|
24
39
|
|
40
|
+
def contact_details?
|
41
|
+
email || home_telephone || mobile_telephone
|
42
|
+
end
|
43
|
+
|
25
44
|
private
|
26
45
|
|
27
46
|
def clinical_patient
|
@@ -39,6 +58,14 @@ module Renalware
|
|
39
58
|
def pathology_patient
|
40
59
|
@pathology_patient ||= Renalware::Pathology.cast_patient(__getobj__)
|
41
60
|
end
|
61
|
+
|
62
|
+
def renal_patient
|
63
|
+
@renal_patient ||= Renalware::Renal.cast_patient(__getobj__)
|
64
|
+
end
|
65
|
+
|
66
|
+
def transplant_patient
|
67
|
+
@transplant_patient ||= Transplants::PatientPresenter.new(__getobj__)
|
68
|
+
end
|
42
69
|
end
|
43
70
|
end
|
44
71
|
end
|
@@ -1,14 +1,8 @@
|
|
1
1
|
module Renalware
|
2
2
|
class Address < ApplicationRecord
|
3
|
-
|
4
|
-
"united kingdom",
|
5
|
-
"england",
|
6
|
-
"scotland",
|
7
|
-
"wales",
|
8
|
-
"northern ireland"
|
9
|
-
].freeze
|
10
|
-
|
3
|
+
belongs_to :country, class_name: "System::Country"
|
11
4
|
validates :email, email: true, allow_blank: true
|
5
|
+
delegate :uk?, to: :country, allow_nil: true
|
12
6
|
validates_with AddressValidator
|
13
7
|
|
14
8
|
belongs_to :addressable, polymorphic: true
|
@@ -20,11 +14,6 @@ module Renalware
|
|
20
14
|
}
|
21
15
|
end
|
22
16
|
|
23
|
-
def uk?
|
24
|
-
return if country.blank?
|
25
|
-
UK_COUNTRIES.include?(country.downcase)
|
26
|
-
end
|
27
|
-
|
28
17
|
def copy_from(source)
|
29
18
|
self.name = source.name
|
30
19
|
self.organisation_name = source.organisation_name
|
@@ -7,8 +7,10 @@
|
|
7
7
|
= a.input :town, wrapper: :horizontal_medium
|
8
8
|
= a.input :county, wrapper: :horizontal_small
|
9
9
|
= a.input :postcode, wrapper: :horizontal_small
|
10
|
-
= a.input :
|
11
|
-
collection: Renalware::Country.
|
10
|
+
= a.input :country_id,
|
11
|
+
collection: Renalware::System::Country.pluck(:name, :id),
|
12
12
|
wrapper: :horizontal_small
|
13
13
|
= a.input :telephone, wrapper: :horizontal_medium
|
14
14
|
= a.input :email, wrapper: :horizontal_medium
|
15
|
+
|
16
|
+
|
@@ -10,7 +10,7 @@ xml.Address(use: "H") do
|
|
10
10
|
xml.Postcode address.postcode
|
11
11
|
xml.Country do
|
12
12
|
xml.CodingStandard "ISO3166-1"
|
13
|
-
xml.Code
|
14
|
-
xml.Description address
|
13
|
+
xml.Code address&.country&.alpha3
|
14
|
+
xml.Description address&.country&.to_s
|
15
15
|
end
|
16
16
|
end
|
@@ -1,7 +1,10 @@
|
|
1
1
|
# https://github.com/renalreg/ukrdc/blob/6d95e364dd8de857839fe6cdbd4e7fc3fb4c1d42/Schema/Diagnoses/Diagnosis.xsd
|
2
2
|
# This is snomed-based, so might not be possible?
|
3
3
|
xml = builder
|
4
|
-
|
5
4
|
xml.Diagnoses do
|
6
|
-
|
5
|
+
if patient.dead?
|
6
|
+
[patient.first_cause, patient.second_cause].compact.each do |cause|
|
7
|
+
render "renalware/api/ukrdc/patients/diagnoses/cause_of_death", builder: xml, cause: cause
|
8
|
+
end
|
9
|
+
end
|
7
10
|
end
|
@@ -1,5 +1,12 @@
|
|
1
1
|
xml = builder
|
2
|
+
hd_patient = Renalware::HD::PatientPresenter.new(patient)
|
2
3
|
|
3
4
|
xml.Encounters do
|
4
|
-
|
5
|
+
hd_patient.finished_hd_sessions.each do |session|
|
6
|
+
render "renalware/api/ukrdc/patients/encounters/hd_session",
|
7
|
+
builder: xml,
|
8
|
+
patient: patient,
|
9
|
+
hd_patient: hd_patient,
|
10
|
+
session: Renalware::HD::SessionPresenter.new(session)
|
11
|
+
end
|
5
12
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
xml = builder
|
2
|
+
|
3
|
+
xml.Medications do
|
4
|
+
patient.prescriptions.each do |prescription|
|
5
|
+
xml.Medication do
|
6
|
+
xml.PrescriptionNumber
|
7
|
+
xml.FromTime prescription.prescribed_on.to_datetime
|
8
|
+
if prescription.terminated_or_marked_for_termination?
|
9
|
+
xml.ToTime prescription.terminated_on&.to_datetime
|
10
|
+
end
|
11
|
+
xml.OrderedBy
|
12
|
+
xml.Route do
|
13
|
+
xml.CodingStandard "RR22"
|
14
|
+
xml.Code prescription.medication_route&.rr_code
|
15
|
+
xml.Description prescription.medication_route&.name
|
16
|
+
end
|
17
|
+
xml.DrugProduct do
|
18
|
+
xml.Id do
|
19
|
+
xml.CodingStandard "DM+D"
|
20
|
+
xml.Code "dm + d code for the drug - coming soon"
|
21
|
+
xml.Description prescription.drug
|
22
|
+
end
|
23
|
+
end
|
24
|
+
xml.Frequency prescription.frequency
|
25
|
+
xml.Comments prescription.notes
|
26
|
+
# xml.DoseUoM
|
27
|
+
# xml.Indication
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
# Things we are not going to include in RW2.0
|
3
3
|
# - PersonToContact
|
4
4
|
# - Occupation
|
5
|
-
# - CountryOfBirth
|
6
5
|
#
|
7
6
|
xml = builder
|
8
7
|
path = "renalware/api/ukrdc/patients" # or "."
|
@@ -30,7 +29,7 @@ xml.Patient do
|
|
30
29
|
|
31
30
|
xml.BirthTime patient.born_on.to_datetime
|
32
31
|
|
33
|
-
if patient.
|
32
|
+
if patient.dead? && patient.died_on.present?
|
34
33
|
xml.DeathTime(patient.died_on.to_datetime)
|
35
34
|
end
|
36
35
|
|
@@ -57,9 +56,41 @@ xml.Patient do
|
|
57
56
|
end
|
58
57
|
end
|
59
58
|
|
60
|
-
|
59
|
+
if patient.language.present?
|
60
|
+
xml.PrimaryLanguage do
|
61
|
+
xml.CodingStandard "NHS_DATA_DICTIONARY_LANGUAGE_CODE" # ISO 639-1 plus braille an sign
|
62
|
+
xml.Code patient.language&.code
|
63
|
+
xml.Description patient.language
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
if patient.contact_details?
|
68
|
+
xml.ContactDetails do
|
69
|
+
if patient.email.present?
|
70
|
+
xml.ContactDetail(use: "NET") do
|
71
|
+
xml.Value patient.email
|
72
|
+
end
|
73
|
+
end
|
74
|
+
if patient.home_telephone.present?
|
75
|
+
xml.ContactDetail(use: "PRN") do
|
76
|
+
xml.Value patient.home_telephone
|
77
|
+
end
|
78
|
+
end
|
79
|
+
if patient.mobile_telephone.present?
|
80
|
+
xml.ContactDetail(use: "PRS") do
|
81
|
+
xml.Value patient.mobile_telephone
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
61
86
|
|
62
|
-
|
87
|
+
xml.comment! "Inclusion of CountryOfBirth causes XSD error so temporarily excluded"
|
88
|
+
# Inclusion strangley causes an XSD error
|
89
|
+
# if patient.country_of_birth.present?
|
90
|
+
# xml.CountryOfBirth patient.country_of_birth.alpha3
|
91
|
+
# end
|
92
|
+
|
93
|
+
if patient.dead?
|
63
94
|
xml.Death true
|
64
95
|
end
|
65
96
|
|
@@ -67,4 +98,5 @@ xml.Patient do
|
|
67
98
|
xml.UpdatedOn patient.updated_at&.to_datetime
|
68
99
|
xml.ActionCode "A" # A = added/updated. If we are posting this XML isn't only going to be 'A'?
|
69
100
|
xml.ExternalId patient.ukrdc_external_id
|
101
|
+
|
70
102
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
xml = builder
|
2
|
+
|
3
|
+
xml.Treatment do
|
4
|
+
xml.EncounterNumber "?can supply uuid if required?"
|
5
|
+
xml.comment! "What EncounterType for HD Session?"
|
6
|
+
xml.EncounterType "R"
|
7
|
+
xml.FromTime session.start_datetime&.to_datetime
|
8
|
+
xml.ToTime session.stop_datetime&.to_datetime
|
9
|
+
xml.HealthCareFacility
|
10
|
+
xml.EnteredAt do
|
11
|
+
xml.Code session.hospital_unit.renal_registry_code
|
12
|
+
end
|
13
|
+
|
14
|
+
xml.Attributes do
|
15
|
+
xml.HDP01 "Times per week - to confirm"
|
16
|
+
xml.HDP02 session.duration
|
17
|
+
xml.HDP03 session.document.dialysis.flow_rate
|
18
|
+
xml.comment! "HDP04 Sodium in Dialysate - to follow."
|
19
|
+
xml.HDP04 ""
|
20
|
+
xml.QBL05 session.access_type
|
21
|
+
xml.QBL06 ""
|
22
|
+
xml.comment! "QBL06 HD Shared Care - not implemented yet"
|
23
|
+
xml.QBL07 ""
|
24
|
+
xml.comment! "QBL07 HD Shared Care - not implemented yet"
|
25
|
+
xml.comment! "ERF61 - defaulting to 5 if not present, as element is required"
|
26
|
+
xml.ERF61 patient.current_registration_status_rr_code || "5" # 5= not assessed
|
27
|
+
xml.PAT35 patient.first_seen_on
|
28
|
+
end
|
29
|
+
xml.comment! "TODO: AdmitReason fails xsd validation with "\
|
30
|
+
"Element 'AdmitReason': This element is not expected. Expected is one of "\
|
31
|
+
"( VisitDescription, Attributes, UpdatedOn, ActionCode, ExternalId )."
|
32
|
+
# xml.AdmitReason do
|
33
|
+
# xml.comment! "I think AdmitReason 1 is Haemodialysis"
|
34
|
+
# xml.CodingStandard "CF_RR7_TREATMENT"
|
35
|
+
# xml.Code "1"
|
36
|
+
# end
|
37
|
+
# xml.UpdatedOn
|
38
|
+
# xml.ActionCode
|
39
|
+
# xml.ExternalId
|
40
|
+
end
|