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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -1
  3. data/app/assets/stylesheets/renalware/lib/_select2-foundation5-overrides.scss +2 -2
  4. data/app/controllers/renalware/directory/people_controller.rb +1 -1
  5. data/app/controllers/renalware/letters/contacts_controller.rb +1 -1
  6. data/app/controllers/renalware/letters/letters_controller.rb +1 -1
  7. data/app/controllers/renalware/patients/patients_controller.rb +3 -5
  8. data/app/controllers/renalware/patients/primary_care_physicians_controller.rb +1 -1
  9. data/app/controllers/renalware/renal/aki_alerts_controller.rb +44 -0
  10. data/app/controllers/renalware/renal/profiles_controller.rb +1 -1
  11. data/app/controllers/renalware/reporting/audits_controller.rb +9 -3
  12. data/app/documents/renalware/patient_document.rb +0 -13
  13. data/app/jobs/hl7_message_example.yml +1 -1
  14. data/app/jobs/renalware/reporting/refresh_audit_data_job.rb +7 -3
  15. data/app/models/renalware/clinical/create_allergy.rb +4 -2
  16. data/app/models/renalware/clinics/create_clinic_visit.rb +6 -2
  17. data/app/models/renalware/hd/session.rb +12 -0
  18. data/app/models/renalware/hospitals/unit.rb +4 -0
  19. data/app/models/renalware/hospitals/ward.rb +22 -0
  20. data/app/models/renalware/modalities/change_patient_modality.rb +4 -2
  21. data/app/models/renalware/patient.rb +1 -0
  22. data/app/models/renalware/patients/language.rb +1 -0
  23. data/app/models/renalware/pd/create_regime.rb +4 -2
  24. data/app/models/renalware/pd/revise_regime.rb +5 -3
  25. data/app/models/renalware/renal/aki_alert.rb +15 -0
  26. data/app/models/renalware/renal/aki_alert_action.rb +10 -0
  27. data/app/models/renalware/reporting/audit.rb +2 -3
  28. data/app/models/renalware/reporting/generate_audit_json.rb +21 -5
  29. data/app/models/renalware/system/country.rb +21 -0
  30. data/app/models/renalware/transplants/create_donor_stage.rb +4 -2
  31. data/app/policies/renalware/base_policy.rb +4 -0
  32. data/app/policies/renalware/renal/aki_alert_policy.rb +9 -0
  33. data/app/presenters/renalware/hd/patient_presenter.rb +5 -0
  34. data/app/presenters/renalware/reporting/audit_presenter.rb +1 -0
  35. data/app/presenters/renalware/transplants/patient_presenter.rb +2 -1
  36. data/app/presenters/renalware/ukrdc/patient_presenter.rb +27 -0
  37. data/app/values/renalware/address.rb +2 -13
  38. data/app/views/renalware/addresses/_form.html.slim +4 -2
  39. data/app/views/renalware/api/ukrdc/patients/_address.xml.builder +2 -2
  40. data/app/views/renalware/api/ukrdc/patients/_diagnoses.xml.builder +5 -2
  41. data/app/views/renalware/api/ukrdc/patients/_encounters.xml.builder +8 -1
  42. data/app/views/renalware/api/ukrdc/patients/_medications.xml.builder +30 -0
  43. data/app/views/renalware/api/ukrdc/patients/_patient.xml.builder +36 -4
  44. data/app/views/renalware/api/ukrdc/patients/_sending_facility.xml.builder +1 -0
  45. data/app/views/renalware/api/ukrdc/patients/diagnoses/_cause_of_death.xml.builder +10 -0
  46. data/app/views/renalware/api/ukrdc/patients/encounters/_hd_session.xml.builder +40 -0
  47. data/app/views/renalware/api/ukrdc/patients/show.xml.builder +1 -0
  48. data/app/views/renalware/directory/people/_address_form.html.slim +1 -1
  49. data/app/views/renalware/hd/sessions/_form.html.slim +43 -33
  50. data/app/views/renalware/letters/contacts/_person_form.html.slim +1 -1
  51. data/app/views/renalware/navigation/_renal.html.slim +1 -0
  52. data/app/views/renalware/patients/patients/_form.html.slim +5 -2
  53. data/app/views/renalware/patients/patients/show.html.slim +0 -5
  54. data/app/views/renalware/patients/patients/show/_patient_demographics.html.slim +3 -3
  55. data/app/views/renalware/patients/side_menu/_actions.html.slim +3 -0
  56. data/app/views/renalware/renal/aki_alerts/_filters.html.slim +0 -0
  57. data/app/views/renalware/renal/aki_alerts/edit.html.slim +17 -0
  58. data/app/views/renalware/renal/aki_alerts/index.html.slim +28 -0
  59. data/app/views/renalware/reporting/audits/edit.html.slim +1 -1
  60. data/app/views/renalware/reporting/audits/index.html.slim +11 -7
  61. data/app/views/renalware/reporting/audits/show.html.slim +2 -17
  62. data/app/views/renalware/shared/documents/_blood_pressure_input.html.slim +6 -7
  63. data/config/initializers/inflections.rb +3 -2
  64. data/config/locales/renalware/navigation/renal.en.yml +1 -0
  65. data/config/locales/renalware/renal/aki_alerts.en.yml +5 -0
  66. data/config/locales/renalware/renal/{profile.yml → profile.en.yml} +0 -0
  67. data/config/locales/renalware/reporting/audit.en.yml +1 -1
  68. data/config/routes.rb +1 -0
  69. data/db/migrate/20150312113937_create_drug_types_drugs.rb +2 -2
  70. data/db/migrate/20170925161033_add_code_to_patient_langauges.rb +6 -0
  71. data/db/migrate/20170925182738_add_rr_code_to_medication_routes.rb +5 -0
  72. data/db/migrate/20170926081426_create_countries.rb +14 -0
  73. data/db/migrate/20170926132845_add_country_of_birth_to_patients.rb +6 -0
  74. data/db/migrate/20171002175804_add_rr_columns_to_transplant_registration_status_descriptions.rb +12 -0
  75. data/db/migrate/20171003093347_create_hospital_wards.rb +17 -0
  76. data/db/migrate/20171003111228_create_aki_alert_actions.rb +10 -0
  77. data/db/migrate/20171003122425_create_renal_aki_alerts.rb +22 -0
  78. data/db/migrate/20171005081224_create_reporting_bone_audit.rb +5 -0
  79. data/db/migrate/20171005091202_reporting_audit_changes.rb +7 -0
  80. data/db/migrate/20171005130109_create_medication_current_prescriptions.rb +5 -0
  81. data/db/migrate/20171005144505_create_reporting_anaemia_audit.rb +5 -0
  82. data/db/migrate/20171009104106_add_legacy_patient_id_to_patients.rb +6 -0
  83. data/db/seeds/default/events/{event_types_required.csv → event_types.csv} +0 -0
  84. data/db/seeds/default/events/{event_types_required.rb → event_types.rb} +2 -2
  85. data/db/seeds/default/events/seeds.rb +1 -2
  86. data/db/seeds/default/medications/medication_routes.rb +23 -13
  87. data/db/seeds/default/patients/patients_languages.csv +192 -102
  88. data/db/seeds/default/patients/patients_languages.rb +1 -1
  89. data/db/seeds/default/patients/patients_religions.csv +2 -0
  90. data/db/seeds/default/reporting/audits.rb +4 -3
  91. data/db/seeds/default/reporting/audits.yml +47 -4
  92. data/db/seeds/default/system/countries.csv +250 -0
  93. data/db/seeds/default/system/countries.rb +12 -0
  94. data/db/seeds/default/system/seeds.rb +1 -0
  95. data/db/seeds/default/transplants/transplant_registration_statuses.rb +30 -19
  96. data/db/views/medication_current_prescriptions_v01.sql +28 -0
  97. data/db/views/reporting_anaemia_audit_v01.sql +41 -0
  98. data/db/views/reporting_bone_audit_v01.sql +32 -0
  99. data/lib/renalware/version.rb +1 -1
  100. data/spec/factories/deaths/cause.rb +1 -1
  101. data/spec/factories/drugs/drug.rb +6 -0
  102. data/spec/factories/drugs/drug_types.rb +5 -0
  103. data/spec/factories/hospitals/wards.rb +9 -0
  104. data/spec/factories/modalities/modality_descriptions.rb +10 -8
  105. data/spec/factories/patients/ethnicities.rb +3 -0
  106. data/spec/factories/patients/languages.rb +12 -1
  107. data/spec/factories/renal/aki_alert_actions.rb +5 -0
  108. data/spec/factories/renal/aki_alerts.rb +9 -0
  109. data/spec/factories/reporting/audits.rb +1 -1
  110. data/spec/factories/system/addresses.rb +1 -1
  111. data/spec/factories/system/countries.rb +15 -0
  112. metadata +42 -13
  113. data/app/values/renalware/country.rb +0 -19
  114. data/config/countries.csv +0 -250
  115. data/db/migrate/20170706120643_create_reporting_data_sources.rb +0 -5
  116. data/db/seeds/default/events/event_types_blt.csv +0 -109
  117. data/db/seeds/default/events/event_types_local.rb +0 -10
  118. data/db/views/reporting_data_sources_v01.sql +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 48da8a752afcae1698bfbac69a302d09fdbdc138
4
- data.tar.gz: 75555d147b8c89f45db9520c53f3f7396f4aa4ae
3
+ metadata.gz: 68224d6d74aa9596a06dcdf9d162cc14db3789d2
4
+ data.tar.gz: 4f9a68e60dbeb49050d5df09941a4b2837f4afda
5
5
  SHA512:
6
- metadata.gz: 4ae47acd62d54ce91497f923e8b47a05da642adff28b677c9ed9227e512038ed2d6c7f08df8c0a20b55b12f0b758cce0b9d827f64190f8bccb6a1936b5940c76
7
- data.tar.gz: 14e910d6d6c74efa0a60417b6ec21053d0a81d52dacb0ce441078feba353fc2137c01f681777871526469317e856b57bc1460cfe631dd58d38b8585320b6854b
6
+ metadata.gz: 153b54410198ca57909984a6d8b084e9d6d87e6572624a9c2d513b584e9d28e836246a99c175a984c28af4c429a15247433fa862eac1751a8b1fce56336ef781
7
+ data.tar.gz: 60c84ffe3ce4f7e70bdc576660e21197410543123de89f0d939046efe0b016391e59ba1398a26b83b2908d578c70e6a3615d75ab4aeabffbfb6469a8422cf7f4
data/README.md CHANGED
@@ -27,7 +27,7 @@ for example `renalware-ukrdc` which enables sending data to the UKRDC.
27
27
 
28
28
  ### Stack
29
29
 
30
- - Ruby 2.4.1
30
+ - Ruby 2.x
31
31
  - Ruby on Rails 5
32
32
  - Postgres 9.6+
33
33
 
@@ -161,6 +161,15 @@ to just create
161
161
  `config.active_record.schema_format = :sql` in `application.rb` is used the engine
162
162
  uses Postgres views and functions which are not properly supported in a `schema.rb`
163
163
 
164
+ ##### Creating scenic views
165
+
166
+ As we are an engine this is the workaround for now.
167
+ ```sh
168
+ bundle exec spec/dummy/bin/rails generate scenic:view my_view_name
169
+ ```
170
+ Then copy the new files from spec/dummy/db/views and spec/dummy/db/migrations
171
+ to ./db/views and ./db/migrations
172
+
164
173
  #### Throttling login attempts
165
174
 
166
175
  [rack-attack](https://github.com/kickstarter/rack-attack) is configured to throttle login attempts.
@@ -182,3 +191,12 @@ To make awesome_print the default formatter in irb, add the following to `~/.irb
182
191
 
183
192
  require "awesome_print"
184
193
  AwesomePrint.irb!
194
+
195
+
196
+ #### Docker - WIP!
197
+
198
+ ```
199
+ docker build -t renalware .
200
+ docker-compose run web rake db:create
201
+ docker-compose run web rake app:db:create
202
+ ```
@@ -1,6 +1,6 @@
1
1
  span.select2 {
2
2
  margin: 0;
3
- // margin: 0 0 0.75rem 0;
3
+ margin: 0 0 0.75rem 0;
4
4
  }
5
5
 
6
6
  .grouped_select {
@@ -19,6 +19,6 @@ span.select2 {
19
19
 
20
20
  .horizontal_medium {
21
21
  span.select2.select2-container.select2-container--default {
22
- min-width: 500px !important;
22
+ // min-width: 500px !important;
23
23
  }
24
24
  }
@@ -94,7 +94,7 @@ module Renalware
94
94
  def address_attributes
95
95
  [
96
96
  :id, :name, :organisation_name, :street_1, :street_2, :street_3, :town, :county,
97
- :postcode, :country, :telephone, :email, :_destroy
97
+ :postcode, :country_id, :telephone, :email, :_destroy
98
98
  ]
99
99
  end
100
100
  end
@@ -69,7 +69,7 @@ module Renalware
69
69
  def person_address_attributes
70
70
  [
71
71
  :id, :name, :organisation_name, :street_1, :street_2, :street_3, :town, :county,
72
- :postcode, :country, :telephone, :email
72
+ :postcode, :country_id, :telephone, :email
73
73
  ]
74
74
  end
75
75
 
@@ -212,7 +212,7 @@ module Renalware
212
212
  def address_attributes
213
213
  [
214
214
  :id, :name, :organisation_name, :street_1, :street_2, :street_3, :town, :county,
215
- :postcode, :country, :telephone, :email, :_destroy
215
+ :postcode, :country_id, :telephone, :email, :_destroy
216
216
  ]
217
217
  end
218
218
  end
@@ -22,7 +22,7 @@ module Renalware
22
22
  end
23
23
 
24
24
  def new
25
- patient = Patient.new
25
+ patient = Patient.new.tap(&:build_current_address)
26
26
  authorize patient
27
27
  render locals: { patient: patient }
28
28
  end
@@ -83,10 +83,9 @@ module Renalware
83
83
  .merge(by: current_user)
84
84
  end
85
85
 
86
- # rubocop:disable Metrics/MethodLength
87
86
  def patient_attributes
88
87
  [
89
- :nhs_number, :family_name, :given_name, :sex,
88
+ :nhs_number, :family_name, :given_name, :sex, :country_of_birth_id,
90
89
  :ethnicity_id, :born_on, :paediatric_patient_indicator, :cc_on_all_letters,
91
90
  :title, :suffix, :marital_status, :telephone1, :telephone2, :email, :religion_id,
92
91
  :language_id, :cc_decision_on,
@@ -97,10 +96,9 @@ module Renalware
97
96
  current_address_attributes: address_params
98
97
  ]
99
98
  end
100
- # rubocop:enable Metrics/MethodLength
101
99
 
102
100
  def address_params
103
- [:id, :name, :organisation_name, :street_1, :street_2, :street_3, :county, :country,
101
+ [:id, :name, :organisation_name, :street_1, :street_2, :street_3, :county, :country_id,
104
102
  :town, :postcode, :telephone, :email]
105
103
  end
106
104
 
@@ -90,7 +90,7 @@ module Renalware
90
90
  practice_ids: [],
91
91
  address_attributes: [
92
92
  :id, :name, :organisation_name, :street_1, :street_2, :street_3, :town, :county,
93
- :postcode, :country, :telephone, :email
93
+ :postcode, :country_id, :telephone, :email
94
94
  ]
95
95
  )
96
96
  end
@@ -0,0 +1,44 @@
1
+ require_dependency("renalware/renal")
2
+
3
+ module Renalware
4
+ module Renal
5
+ class AKIAlertsController < BaseController
6
+ include Renalware::Concerns::Pageable
7
+
8
+ def index
9
+ alerts = AKIAlert.includes(:updated_by, :action, :hospital_ward, :patient)
10
+ .ordered.page(page).per(per_page)
11
+ authorize alerts
12
+ render locals: { alerts: alerts }
13
+ end
14
+
15
+ def edit
16
+ authorize alert
17
+ render_edit(alert)
18
+ end
19
+
20
+ def update
21
+ authorize alert
22
+ if alert.update_attributes(aki_alert_params.merge(by: current_user))
23
+ redirect_to renal_aki_alerts_path
24
+ else
25
+ render_edit(alert)
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def render_edit(alert)
32
+ render :edit, locals: { alert: alert }
33
+ end
34
+
35
+ def alert
36
+ @alert ||= AKIAlert.find(params[:id])
37
+ end
38
+
39
+ def aki_alert_params
40
+ params.require(:renal_aki_alert).permit(:notes, :action_id, :hotlist, :hospital_ward_id)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -49,7 +49,7 @@ module Renalware
49
49
  end
50
50
 
51
51
  def address_params
52
- [:id, :name, :organisation_name, :street_1, :street_2, :street_3, :county, :country,
52
+ [:id, :name, :organisation_name, :street_1, :street_2, :street_3, :county, :country_id,
53
53
  :town, :postcode, :telephone, :email]
54
54
  end
55
55
 
@@ -12,12 +12,12 @@ module Renalware
12
12
 
13
13
  def show
14
14
  authorize audit
15
- columns, values = GenerateAuditJson.call(audit.materialized_view_name)
15
+ columns, values = GenerateAuditJson.call(audit.view_name)
16
16
  render(
17
17
  locals: {
18
18
  audit: audit,
19
19
  columns: columns,
20
- values: values
20
+ values: replace_nils_with_empty_string(values)
21
21
  }
22
22
  )
23
23
  end
@@ -42,6 +42,12 @@ module Renalware
42
42
  @audit ||= Audit.find(params[:id])
43
43
  end
44
44
 
45
+ # Takes an array (rows) of arrays (cells) and replaces any nil elements
46
+ # with an empty string so JS data tables does not baulk with 'nil undefined' error.
47
+ def replace_nils_with_empty_string(values)
48
+ values.map{ |row| row.map{ |cell| cell || "" } }
49
+ end
50
+
45
51
  def render_edit
46
52
  render :edit, locals: {
47
53
  audit: audit,
@@ -54,7 +60,7 @@ module Renalware
54
60
  .permit(
55
61
  :name,
56
62
  :description,
57
- :materialized_view_name,
63
+ :view_name,
58
64
  :display_configuration,
59
65
  :refresh_schedule
60
66
  )
@@ -15,19 +15,6 @@ module Renalware
15
15
  end
16
16
  attribute :diabetes, Diabetes
17
17
 
18
- # TODO: Check if this is used?
19
- class Address < Document::Embedded
20
- attribute :name, String
21
- attribute :organisation_name, String
22
- attribute :street_1, String
23
- attribute :street_2, String
24
- attribute :street_3, String
25
- attribute :town, String
26
- attribute :county, String
27
- attribute :postcode, String
28
- attribute :country, String
29
- end
30
-
31
18
  class Referral < Document::Embedded
32
19
  attribute :referring_physician_name, String
33
20
  attribute :referral_date, Date
@@ -7,7 +7,7 @@ raw_message: |
7
7
  OBR|1|^PCS|09B0099478^LA|FBC^FULL BLOOD COUNT^MB||200911111841|200911111841|||||||200911111841|B^Blood|MID^KINGS MIDWIVES||09B0099478||||200911121646||HM|F||||||||||||||||||
8
8
  OBX|1|TX|WBC^WBC^MB||6.09||||||F|||200911112026||BBKA^Kenneth AMENYAH|
9
9
  OBX|2|TX|RBC^RBC^MB||4.00||||||F|||200911112026||BBKA^Kenneth AMENYAH|
10
- OBX|3|TX|HB^Hb^MB||11.8||||||F|||200911112026||BBKA^Kenneth AMENYAH|
10
+ OBX|3|TX|HGB^Hb^MB||11.8||||||F|||200911112026||BBKA^Kenneth AMENYAH|
11
11
  OBX|4|TX|PCV^PCV^MB||0.344||||||F|||200911112026||BBKA^Kenneth AMENYAH|
12
12
  OBX|5|TX|MCV^MCV^MB||85.9||||||F|||200911112026||BBKA^Kenneth AMENYAH|
13
13
  OBX|6|TX|MCH^MCH^MB||29.5||||||F|||200911112026||BBKA^Kenneth AMENYAH|
@@ -7,14 +7,18 @@ module Renalware
7
7
 
8
8
  # :reek:UtilityFunction
9
9
  def perform(audit)
10
- refresh_materialized_view_associated_with_audit(audit)
11
- update_audit_refreshment_date(audit)
10
+ if audit.materialized?
11
+ refresh_materialized_view_associated_with_audit(audit)
12
+ update_audit_refreshment_date(audit)
13
+ else
14
+ Rails.logger.warn("Cannot refresh an view that is not materialized: #{audit.view_name}")
15
+ end
12
16
  end
13
17
 
14
18
  private
15
19
 
16
20
  def refresh_materialized_view_associated_with_audit(audit)
17
- Scenic.database.refresh_materialized_view(audit.materialized_view_name,
21
+ Scenic.database.refresh_materialized_view(audit.view_name,
18
22
  concurrently: false,
19
23
  cascade: false)
20
24
  end
@@ -1,4 +1,6 @@
1
1
  require_dependency "renalware/clinical"
2
+ require_dependency "renalware/success"
3
+ require_dependency "renalware/failure"
2
4
 
3
5
  module Renalware
4
6
  module Clinical
@@ -14,9 +16,9 @@ module Renalware
14
16
  yield allergy if block_given?
15
17
  if allergy.valid?
16
18
  save_allergy(allergy)
17
- Success.new(allergy)
19
+ ::Renalware::Success.new(allergy)
18
20
  else
19
- Failure.new(allergy)
21
+ ::Renalware::Failure.new(allergy)
20
22
  end
21
23
  end
22
24
 
@@ -1,3 +1,7 @@
1
+ require_dependency "renalware/clinics"
2
+ require_dependency "renalware/success"
3
+ require_dependency "renalware/failure"
4
+
1
5
  module Renalware
2
6
  module Clinics
3
7
  class CreateClinicVisit
@@ -17,9 +21,9 @@ module Renalware
17
21
  visit = patient.clinic_visits.new(params)
18
22
  objects = OpenStruct.new(clinic_visit: visit, appointment: appointment)
19
23
  if visit.save && update_appointment_with(visit.id)
20
- return Success.new(objects)
24
+ return ::Renalware::Success.new(objects)
21
25
  else
22
- return Failure.new(objects)
26
+ return ::Renalware::Failure.new(objects)
23
27
  end
24
28
  end
25
29
  end
@@ -42,8 +42,20 @@ module Renalware
42
42
 
43
43
  delegate :hospital_centre, to: :hospital_unit, allow_nil: true
44
44
 
45
+ def start_datetime
46
+ datetime_at(start_time)
47
+ end
48
+
49
+ def stop_datetime
50
+ datetime_at(end_time)
51
+ end
52
+
45
53
  private
46
54
 
55
+ def datetime_at(time)
56
+ Time.zone.parse("#{performed_on.strftime('%F')} #{time.strftime('%T')}")
57
+ end
58
+
47
59
  def assign_modality
48
60
  self.modality_description = patient.modality_description
49
61
  end
@@ -6,6 +6,10 @@ module Renalware
6
6
  extend Enumerize
7
7
 
8
8
  belongs_to :hospital_centre, class_name: "Hospitals::Centre"
9
+ has_many :wards,
10
+ class_name: "Hospitals::Ward",
11
+ foreign_key: :hospital_unit_id,
12
+ dependent: :destroy
9
13
 
10
14
  validates :hospital_centre, presence: true
11
15
  validates :unit_code, presence: true
@@ -0,0 +1,22 @@
1
+ require_dependency "renalware/hospitals"
2
+
3
+ module Renalware
4
+ module Hospitals
5
+ class Ward < ApplicationRecord
6
+ belongs_to :hospital_unit, class_name: "Hospitals::Unit"
7
+
8
+ validates :hospital_unit, presence: true
9
+ validates :name, presence: true, uniqueness: { scope: :hospital_unit_id }
10
+
11
+ scope :ordered, -> { order(:name) }
12
+
13
+ def self.policy_class
14
+ BasePolicy
15
+ end
16
+
17
+ def to_s
18
+ name
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,4 +1,6 @@
1
1
  require_dependency "renalware/modalities"
2
+ require_dependency "renalware/success"
3
+ require_dependency "renalware/failure"
2
4
 
3
5
  module Renalware
4
6
  module Modalities
@@ -46,9 +48,9 @@ module Renalware
46
48
  if new_modality.valid?
47
49
  make_new_modality_the_current_one(new_modality)
48
50
  broadcast_modality_change_event_to_any_listeners(new_modality)
49
- Success.new(new_modality)
51
+ ::Renalware::Success.new(new_modality)
50
52
  else
51
- Failure.new(new_modality)
53
+ ::Renalware::Failure.new(new_modality)
52
54
  end
53
55
  end
54
56
 
@@ -31,6 +31,7 @@ module Renalware
31
31
  has_one :current_address, as: :addressable, class_name: "Address"
32
32
  has_one :summary, class_name: "Patients::Summary"
33
33
  belongs_to :ethnicity, class_name: "Patients::Ethnicity"
34
+ belongs_to :country_of_birth, class_name: "System::Country"
34
35
  belongs_to :religion, class_name: "Patients::Religion"
35
36
  belongs_to :language, class_name: "Patients::Language"
36
37
  has_many :bookmarks, class_name: "Patients::Bookmark"
@@ -4,6 +4,7 @@ module Renalware
4
4
  module Patients
5
5
  class Language < ApplicationRecord
6
6
  validates :name, presence: true
7
+ validates :code, presence: true
7
8
 
8
9
  def to_s
9
10
  name
@@ -1,4 +1,6 @@
1
1
  require_dependency "renalware/pd"
2
+ require_dependency "renalware/success"
3
+ require_dependency "renalware/failure"
2
4
 
3
5
  module Renalware
4
6
  module PD
@@ -10,9 +12,9 @@ module Renalware
10
12
  def call(by:, params:)
11
13
  regime = patient.pd_regimes.new(params)
12
14
  if regime.valid? && save_regime(regime, by)
13
- return Success.new(regime)
15
+ return ::Renalware::Success.new(regime)
14
16
  else
15
- return Failure.new(regime)
17
+ return ::Renalware::Failure.new(regime)
16
18
  end
17
19
  end
18
20
 
@@ -1,4 +1,6 @@
1
1
  require_dependency "renalware/pd"
2
+ require_dependency "renalware/success"
3
+ require_dependency "renalware/failure"
2
4
 
3
5
  module Renalware
4
6
  module PD
@@ -11,11 +13,11 @@ module Renalware
11
13
  def call(by:, params:)
12
14
  Regime.transaction do
13
15
  regime.assign_attributes(params)
14
- return Success.new(regime) unless regime.anything_changed?
15
- return Failure.new(regime.with_bag_destruction_marks_removed) unless regime.valid?
16
+ return ::Renalware::Success.new(regime) unless regime.anything_changed?
17
+ return ::Renalware::Failure.new(regime.with_bag_destruction_marks_removed) unless regime.valid?
16
18
 
17
19
  new_regime = revise_regime(by: by)
18
- Success.new(new_regime)
20
+ ::Renalware::Success.new(new_regime)
19
21
  end
20
22
  end
21
23