renalware-core 2.0.158 → 2.0.163
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/renalware/components/configuration.js +20 -0
- data/app/assets/javascripts/renalware/components/{dialogs.js.erb → dialogs.js} +2 -5
- data/app/assets/javascripts/renalware/components/{feed_only_inputs.js.erb → feed_only_inputs.js} +4 -4
- data/app/assets/javascripts/renalware/{core.js.erb → core.js} +0 -5
- data/app/assets/javascripts/renalware/rollup_compiled.css +42050 -42050
- data/app/assets/javascripts/renalware/rollup_compiled.js +768 -201
- data/app/assets/stylesheets/renalware/modules/_clinical.scss +41 -0
- data/app/components/renalware/admissions/active_consult_alert_component.html.slim +1 -1
- data/app/components/renalware/article_component.rb +1 -1
- data/app/components/renalware/letters/letters_in_progress_component.rb +1 -5
- data/app/components/renalware/letters/unread_electronic_ccs_component.rb +1 -4
- data/app/components/renalware/medications/tabbed_prescriptions_list_component.html.slim +2 -2
- data/app/components/renalware/pathology/sparkline_component.html.slim +1 -1
- data/app/components/renalware/patients/bookmarks_component.rb +1 -5
- data/app/components/renalware/patients/messages_component.rb +1 -7
- data/app/components/renalware/pd/adequacy_results_component.rb +1 -1
- data/app/components/renalware/pd/pet_results_component.html.slim +5 -7
- data/app/components/renalware/surveys/eq5d_component.rb +1 -5
- data/app/components/renalware/surveys/pos_s_component.rb +1 -5
- data/app/components/renalware/system/admin_menu_component.rb +1 -4
- data/app/components/renalware/system/users_awaiting_approval_component.rb +1 -5
- data/app/controllers/renalware/api/token_authenticated_api_controller.rb +1 -1
- data/app/controllers/renalware/api/v1/medications/prescriptions_controller.rb +1 -1
- data/app/controllers/renalware/api/v1/patients/patients_controller.rb +1 -1
- data/app/controllers/renalware/events/events_controller.rb +0 -1
- data/app/controllers/renalware/pd/pet_results_controller.rb +1 -1
- data/{lib → app/documents}/document/attribute_initializer.rb +0 -0
- data/{lib → app/documents}/document/attribute_initializer/active_model.rb +0 -0
- data/{lib → app/documents}/document/attribute_initializer/base.rb +0 -0
- data/{lib → app/documents}/document/attribute_initializer/enum.rb +0 -0
- data/{lib → app/documents}/document/base.rb +0 -0
- data/{lib → app/documents}/document/embedded.rb +0 -0
- data/{lib → app/documents}/document/enum.rb +0 -0
- data/app/javascript/renalware/controllers/modal_controller.js +1 -1
- data/app/jobs/renalware/hd/generate_monthly_statistics.rb +1 -1
- data/app/jobs/renalware/hd/generate_monthly_statistics_for_patient_job.rb +1 -1
- data/app/jobs/renalware/letters/calculate_page_count_job.rb +0 -1
- data/app/jobs/renalware/letters/mailshots/create_mailshot_letters_job.rb +0 -1
- data/app/jobs/renalware/letters/printing/batch_print_job.rb +0 -1
- data/app/jobs/renalware/letters/save_rtf_letter_to_file_job.rb +1 -1
- data/app/mailers/renalware/letters/{delivery/errors.rb → delivery.rb} +2 -1
- data/app/mailers/renalware/letters/delivery/practice_mailer.rb +2 -2
- data/app/models/concerns/renalware/deviseable.rb +3 -3
- data/app/models/renalware/admissions/admission_query.rb +0 -1
- data/{lib → app/models}/renalware/automatic_age_calculator.rb +0 -0
- data/app/models/renalware/clinical/create_allergy.rb +4 -4
- data/app/models/renalware/clinics/create_clinic_visit.rb +4 -4
- data/app/models/renalware/clinics/current_observations.rb +3 -4
- data/app/models/renalware/events/alertable_events_query.rb +27 -0
- data/app/models/renalware/events/create_event.rb +0 -1
- data/app/models/renalware/events/event.rb +4 -0
- data/app/models/renalware/events/event_type_alert_trigger.rb +15 -0
- data/app/models/renalware/events/type.rb +7 -0
- data/app/models/renalware/feeds/files/exceptions.rb +1 -0
- data/app/models/renalware/feeds/files/practice_memberships/import_csv.rb +0 -1
- data/app/models/renalware/feeds/files/primary_care_physicians/import_csv.rb +0 -1
- data/app/models/renalware/feeds/message_processor.rb +0 -1
- data/app/models/renalware/hd/prescription_administration.rb +6 -4
- data/app/models/renalware/hd/profiles_in_date_range_query.rb +1 -6
- data/app/models/renalware/hd/scheduling/diary_range.rb +1 -2
- data/app/models/renalware/hd/scheduling/find_or_create_diary_by_week_query.rb +1 -1
- data/app/models/renalware/hd/session_forms/batch.rb +0 -1
- data/app/models/renalware/hd/session_forms/batch_compile_pdfs.rb +0 -1
- data/app/models/renalware/hd/session_forms/batch_item.rb +0 -1
- data/app/models/renalware/hd/sessions/close_stale_open_sessions.rb +0 -1
- data/app/models/renalware/letters/approve_letter.rb +0 -1
- data/app/models/renalware/letters/complete_letter.rb +0 -1
- data/app/models/renalware/letters/delivery/delivery_policy.rb +0 -1
- data/app/models/renalware/letters/delivery/email_letter_to_practice.rb +0 -1
- data/app/models/renalware/letters/delivery/practice_email.rb +0 -1
- data/app/models/renalware/letters/html_renderer.rb +1 -1
- data/app/models/renalware/letters/letter_factory.rb +1 -1
- data/app/models/renalware/letters/part/recent_pathology_results.rb +0 -1
- data/app/models/renalware/letters/pathology_layout.rb +1 -1
- data/app/models/renalware/letters/pdf_letter_cache.rb +1 -1
- data/app/models/renalware/letters/pdf_renderer.rb +1 -1
- data/app/models/renalware/letters/printing/batch_compile_pdfs.rb +0 -1
- data/app/models/renalware/letters/printing/complete_batch.rb +0 -1
- data/app/models/renalware/letters/printing/pdf_combining.rb +0 -2
- data/app/models/renalware/letters/resolve_default_electronic_ccs.rb +0 -2
- data/app/models/renalware/letters/rtf_renderer.rb +3 -2
- data/app/models/renalware/modalities/change_patient_modality.rb +4 -4
- data/app/models/renalware/pathology.rb +1 -0
- data/app/models/renalware/pathology/adjust_observation.rb +0 -1
- data/app/models/renalware/pathology/message_listener.rb +1 -1
- data/app/models/renalware/pathology/observation.rb +1 -1
- data/app/models/renalware/pathology/observation_descriptions_by_code_query.rb +1 -1
- data/app/models/renalware/pathology/observations_grouped_by_date_query.rb +0 -1
- data/app/models/renalware/pathology/observations_grouped_by_date_table.rb +0 -1
- data/app/models/renalware/pathology/ordered_patient_query.rb +1 -1
- data/app/models/renalware/pathology/requests/request_params_factory.rb +0 -1
- data/app/models/renalware/patients/calculate_age.rb +0 -1
- data/app/models/renalware/patients/clear_patient_ukrdc_data.rb +0 -1
- data/app/models/renalware/patients/ingestion/update_master_patient_index.rb +0 -1
- data/app/models/renalware/patients/last_successful_practice_sync_date_query.rb +0 -2
- data/app/models/renalware/patients/primary_care_physician.rb +1 -0
- data/app/models/renalware/patients/sync_ods_job.rb +1 -1
- data/app/models/renalware/patients/sync_practices_via_api.rb +1 -1
- data/app/models/renalware/pd.rb +5 -0
- data/app/models/renalware/pd/{apd/exceptions.rb → apd.rb.dead} +0 -0
- data/app/models/renalware/pd/apd/available_overnight_volume.rb +0 -1
- data/app/models/renalware/pd/apd/regime_calculations.rb +1 -1
- data/app/models/renalware/pd/create_regime.rb +4 -4
- data/app/models/renalware/pd/regimes_in_date_range_query.rb +0 -2
- data/app/models/renalware/pd/revise_regime.rb +5 -5
- data/{lib → app/models}/renalware/remembered_preferences.rb +0 -0
- data/app/models/renalware/research/study_participants_query.rb +0 -1
- data/app/models/renalware/transplants/create_donor_stage.rb +4 -4
- data/app/models/renalware/transplants/registrations/wait_list_query.rb +1 -1
- data/app/models/renalware/ukrdc.rb +1 -0
- data/app/models/renalware/ukrdc/create_encrypted_patient_xml_files.rb +2 -2
- data/app/models/renalware/ukrdc/create_patient_xml_file.rb +1 -2
- data/app/models/renalware/ukrdc/export_summary.rb +0 -1
- data/app/models/renalware/ukrdc/housekeeping/remove_old_export_archive_folders.rb +0 -1
- data/app/models/renalware/ukrdc/incoming/file_list.rb +0 -2
- data/app/models/renalware/ukrdc/incoming/import_survey.rb +0 -1
- data/app/models/renalware/ukrdc/incoming/import_surveys.rb +0 -1
- data/app/models/renalware/ukrdc/incoming/xml_document.rb +0 -1
- data/app/models/renalware/ukrdc/pathology_observation_requests_query.rb +1 -2
- data/app/models/renalware/ukrdc/treatment_timeline/generate_timeline.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/generate_treatments.rb +1 -1
- data/app/models/renalware/ukrdc/treatment_timeline/generator_factory.rb +1 -1
- data/app/models/renalware/ukrdc/treatment_timeline/hd/generator.rb +1 -1
- data/app/models/renalware/ukrdc/treatment_timeline/pd/generator.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/pd/regime_decorator.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/transfer_out/generator.rb +0 -1
- data/app/models/renalware/ukrdc/treatment_timeline/transplant/generator.rb +0 -1
- data/app/models/renalware/ukrdc/xml_renderer.rb +2 -2
- data/app/models/renalware/virology/vaccination.rb +10 -2
- data/app/models/renalware/virology/vaccination_type.rb +16 -0
- data/app/presenters/renalware/accesses/dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/clinical/header_presenter.rb +0 -1
- data/app/presenters/renalware/letters/letter_presenter.rb +1 -1
- data/app/presenters/renalware/letters/part_class_filter.rb +0 -1
- data/app/presenters/renalware/letters/practice_email_meta_data.rb +0 -1
- data/app/presenters/renalware/low_clearance/dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/medications/prescription_presenter.rb +7 -0
- data/app/presenters/renalware/pathology/observations_diff.rb +0 -1
- data/app/presenters/renalware/renal/clinical_summary_presenter.rb +0 -1
- data/app/presenters/renalware/summary_part.rb +0 -2
- data/app/presenters/renalware/transplants/donor_dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/transplants/recipient_dashboard_presenter.rb +0 -1
- data/app/presenters/renalware/ukrdc/transplant_operation_presenter.rb +0 -1
- data/app/presenters/renalware/user_session_presenter.rb +1 -3
- data/app/values/renalware/bmi.rb +0 -2
- data/app/views/renalware/admin/cache/show.html.slim +0 -36
- data/app/views/renalware/admin/playgrounds/show.html.slim +2 -2
- data/app/views/renalware/events/events/_alerts.html.slim +3 -0
- data/app/views/renalware/events/events/alert/_simple.html.slim +5 -0
- data/app/views/renalware/events/events/toggled_cell/_swab.html.slim +1 -1
- data/app/views/renalware/hd/dashboards/_page_actions.html.slim +4 -1
- data/app/views/renalware/hd/mdm_patients/_patient.html.slim +1 -1
- data/app/views/renalware/hd/prescription_administrations/_form.html.slim +2 -2
- data/app/views/renalware/hd/transmission_logs/index.html.slim +2 -1
- data/app/views/renalware/layouts/_patient.html.slim +1 -0
- data/app/views/renalware/letters/batches/_create.html.slim +2 -2
- data/app/views/renalware/letters/contacts/_new_person.html.slim +1 -1
- data/app/views/renalware/letters/contacts/_person_from_directory.html.slim +1 -1
- data/app/views/renalware/letters/formatted_letters/_letter.html.slim +13 -14
- data/app/views/renalware/letters/mailshots/mailshots/_form.html.slim +25 -21
- data/app/views/renalware/letters/parts/_allergies.html.slim +1 -1
- data/app/views/renalware/letters/parts/_problems.html.slim +1 -1
- data/app/views/renalware/letters/parts/_recent_pathology_results.html.slim +1 -1
- data/app/views/renalware/medications/home_delivery/events/_edit.html.slim +4 -4
- data/app/views/renalware/medications/prescriptions/_current.html.slim +1 -1
- data/app/views/renalware/medications/prescriptions/_current_hd.html.slim +1 -1
- data/app/views/renalware/medications/prescriptions/_form.html.slim +3 -3
- data/app/views/renalware/medications/prescriptions/_prescription.html.slim +3 -1
- data/app/views/renalware/medications/prescriptions/_recently_stopped.html.slim +1 -1
- data/app/views/renalware/system/downloads/index.html.slim +1 -1
- data/app/views/renalware/system/messages/_form.html.slim +1 -1
- data/app/views/renalware/system/view_metadata/_columns_table.html.slim +2 -2
- data/app/views/renalware/system/view_metadata/edit.html.slim +6 -6
- data/app/views/renalware/virology/vaccinations/_alert.html.slim +5 -0
- data/app/views/renalware/virology/vaccinations/_inputs.html.slim +2 -1
- data/app/views/renalware/virology/vaccinations/_toggled_cell.html.slim +1 -1
- data/config/initializers/core_extensions.rb +1 -1
- data/config/initializers/inflections.rb +2 -0
- data/config/locales/renalware/virology/virology.en.yml +2 -0
- data/db/migrate/20201105153422_update_medication_current_prescriptions_view.rb +7 -0
- data/db/migrate/20201112152752_update_pd_mdm_patients_view1.rb +7 -0
- data/db/migrate/20210105163944_create_virology_vaccination_types.rb +13 -0
- data/db/migrate/20210115181817_create_event_type_alert_triggers.rb +15 -0
- data/db/seeds/default/seeds.rb +1 -0
- data/db/seeds/default/virology/seeds.rb +3 -0
- data/db/seeds/default/virology/vaccination_types.rb +25 -0
- data/db/views/medication_current_prescriptions_v01.sql +2 -1
- data/db/views/medication_current_prescriptions_v02.sql +30 -0
- data/db/views/pd_mdm_patients_v03.sql +50 -0
- data/db/views/reporting_anaemia_audit_v01.sql +0 -2
- data/lib/core_extensions/active_support/{duration.rb → duration_additions.rb} +0 -0
- data/lib/failure.rb +6 -0
- data/lib/gpg_encrypt_folder.rb +0 -2
- data/lib/month_period.rb +16 -0
- data/lib/renalware/configuration.rb +5 -6
- data/lib/renalware/version_number.rb +1 -1
- data/lib/service_result.rb +17 -0
- data/lib/sql/indexed_case_stmt.rb +1 -3
- data/lib/success.rb +9 -0
- data/lib/tasks/ukrdc.rake +1 -1
- data/lib/week_period.rb +57 -0
- data/spec/factories/events/events.rb +1 -2
- data/spec/factories/letters/letters.rb +4 -11
- data/spec/factories/medications/prescription_version.rb +1 -2
- data/spec/factories/patients/ethnicities.rb +1 -2
- data/spec/factories/pd/bag_types.rb +2 -2
- data/spec/factories/snippets/users.rb +1 -2
- data/spec/factories/transplants/recipient_followups.rb +1 -2
- data/spec/factories/virology/vaccination_types.rb +8 -0
- data/spec/factories/virology/vaccinations.rb +1 -1
- data/{lib/test_support → spec/support}/ajax_helpers.rb +0 -0
- data/{lib/test_support → spec/support}/text_editor_helpers.rb +0 -0
- metadata +49 -40
- data/app/assets/javascripts/renalware/components/reporting.js.erb +0 -0
- data/app/assets/javascripts/renalware/components/session_timeout_redirect.js.erb +0 -37
- data/app/components/renalware/system/article_component.html.slim +0 -3
- data/app/components/renalware/system/article_component.rb +0 -9
- data/app/mailers/renalware/previews/report_preview.rb +0 -14
- data/app/mailers/renalware/previews/ukrdc_summary_preview.rb +0 -20
- data/app/mailers/renalware/previews/user_mailer_preview.rb +0 -16
- data/lib/renalware/failure.rb +0 -6
- data/lib/renalware/month_period.rb +0 -18
- data/lib/renalware/service_result.rb +0 -19
- data/lib/renalware/success.rb +0 -9
- data/lib/renalware/week_period.rb +0 -59
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_dependency "renalware/clinics"
|
4
|
-
|
5
|
-
|
4
|
+
require "success"
|
5
|
+
require "failure"
|
6
6
|
|
7
7
|
module Renalware
|
8
8
|
module Clinics
|
@@ -22,9 +22,9 @@ module Renalware
|
|
22
22
|
visit = patient.clinic_visits.new(params)
|
23
23
|
objects = OpenStruct.new(clinic_visit: visit, appointment: appointment)
|
24
24
|
if visit.save && update_appointment_with(visit.id)
|
25
|
-
return ::
|
25
|
+
return ::Success.new(objects)
|
26
26
|
else
|
27
|
-
return ::
|
27
|
+
return ::Failure.new(objects)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_dependency "renalware/letters"
|
4
|
-
require "attr_extras"
|
5
4
|
|
6
5
|
module Renalware
|
7
6
|
module Clinics
|
8
|
-
# TODO:
|
7
|
+
# TODO: Unused?
|
9
8
|
class CurrentObservations
|
10
9
|
NULL_DATE = nil
|
11
10
|
pattr_initialize :patient
|
@@ -17,7 +16,7 @@ module Renalware
|
|
17
16
|
@weight ||= begin
|
18
17
|
result = ClinicVisit
|
19
18
|
.most_recent_for_patient(patient)
|
20
|
-
.where(
|
19
|
+
.where.not(weight: nil)
|
21
20
|
.pluck(:date, :weight).first || []
|
22
21
|
|
23
22
|
Observation.new(result.first, result.last)
|
@@ -29,7 +28,7 @@ module Renalware
|
|
29
28
|
@height ||= begin
|
30
29
|
result = ClinicVisit
|
31
30
|
.most_recent_for_patient(patient)
|
32
|
-
.where(
|
31
|
+
.where.not(height: nil)
|
33
32
|
.pluck(:date, :height).first || []
|
34
33
|
|
35
34
|
Observation.new(result.first, result.last)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "renalware/events"
|
4
|
+
|
5
|
+
module Renalware
|
6
|
+
module Events
|
7
|
+
# Query object that returns, for a patient, the most recent matching event (if any) for each
|
8
|
+
# event_type_alert_trigger row in the databse. The results are used to display
|
9
|
+
# alerts in the UI.
|
10
|
+
# For example given a vaccination Event::Type and an EventTypeAlertTrigger
|
11
|
+
# which is configured to find any vaccination event with the word "covid" in
|
12
|
+
# anywhere in the document, this query will return the most matching event.
|
13
|
+
# It is possible to have mltiple triggers rows for the same event type, so for eample one
|
14
|
+
# could display triggers for the most recent covid vaccination, and the most recent HBV
|
15
|
+
# vaccination.
|
16
|
+
class AlertableEventsQuery
|
17
|
+
def self.call(patient:)
|
18
|
+
Event
|
19
|
+
.for_patient(patient)
|
20
|
+
.joins(event_type: :alert_triggers)
|
21
|
+
.select("DISTINCT ON (events.patient_id, event_type_alert_triggers.id) events.*")
|
22
|
+
.where("(events.document::text ilike '%' || when_event_document_contains || '%') or (events.description ilike '%' || when_event_description_contains || '%')")
|
23
|
+
.order("events.patient_id, event_type_alert_triggers.id, events.created_at desc")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "renalware/events"
|
4
|
+
|
5
|
+
module Renalware
|
6
|
+
module Events
|
7
|
+
# Used to defines conditions where, for a particular event type, if the there is e.g. a case-
|
8
|
+
# insensitive text match against the contents of the event document (eg 'COVID')
|
9
|
+
# then an alert will be displayed in the UI (for the most recent match is there are > 1).
|
10
|
+
class EventTypeAlertTrigger < ApplicationRecord
|
11
|
+
belongs_to :event_type, class_name: "Events::Type"
|
12
|
+
validates :event_type, presence: true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -6,6 +6,13 @@ module Renalware
|
|
6
6
|
module Events
|
7
7
|
class Type < ApplicationRecord
|
8
8
|
self.table_name = "event_types"
|
9
|
+
has_many(
|
10
|
+
:alert_triggers,
|
11
|
+
class_name: "EventTypeAlertTrigger",
|
12
|
+
foreign_key: :event_type_id,
|
13
|
+
dependent: :destroy
|
14
|
+
)
|
15
|
+
|
9
16
|
DEFAULT_EVENT_CLASS_NAME = "Renalware::Events::Simple"
|
10
17
|
|
11
18
|
acts_as_paranoid
|
@@ -9,10 +9,12 @@ module Renalware
|
|
9
9
|
acts_as_paranoid
|
10
10
|
|
11
11
|
# Set to true by the parent hd_session if we are not signing off at this stage
|
12
|
-
attr_accessor
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
attr_accessor(
|
13
|
+
:skip_witness_validation,
|
14
|
+
:skip_administrator_validation,
|
15
|
+
:administered_by_password,
|
16
|
+
:witnessed_by_password
|
17
|
+
)
|
16
18
|
|
17
19
|
belongs_to :hd_session, class_name: "HD::Session", touch: true
|
18
20
|
belongs_to :prescription, class_name: "Medications::Prescription"
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "attr_extras"
|
4
|
-
|
5
3
|
module Renalware
|
6
4
|
module HD
|
7
5
|
class ProfilesInDateRangeQuery
|
@@ -13,9 +11,6 @@ module Renalware
|
|
13
11
|
# so for the start date of the profile we always use created_at and ignore prescribed_on,
|
14
12
|
# even if it is present.
|
15
13
|
def call
|
16
|
-
# p " from #{from}"
|
17
|
-
# p " to #{to}"
|
18
|
-
|
19
14
|
# If to is nil it is because modality we are targetting is a current one.
|
20
15
|
# We need a date for the from..to range to work so use a far future one.
|
21
16
|
@to ||= Date.parse("3000-01-01")
|
@@ -24,7 +19,7 @@ module Renalware
|
|
24
19
|
# we will have duplicate Treatments with odd state/end date ordering
|
25
20
|
used_profiles_ids = UKRDC::Treatment
|
26
21
|
.where(patient: patient)
|
27
|
-
.where(
|
22
|
+
.where.not(hd_profile_id: nil)
|
28
23
|
.pluck(:hd_profile_id)
|
29
24
|
HD::Profile
|
30
25
|
.with_deactivated
|
@@ -5,7 +5,7 @@ module Renalware
|
|
5
5
|
# Note we cannot use a partial layout with render_to_string as it will always expect
|
6
6
|
# the location to be in views/layouts and its not possible in Rails 5.1 to specify
|
7
7
|
# another or absolute path
|
8
|
-
class
|
8
|
+
class HtmlRenderer
|
9
9
|
def call(letter)
|
10
10
|
context = LettersController.new
|
11
11
|
context.render_to_string_with_wicked_pdf(
|
@@ -54,7 +54,7 @@ module Renalware
|
|
54
54
|
Letter::Draft.new(params.merge!(type: Letter::Draft.name, patient: patient))
|
55
55
|
end
|
56
56
|
|
57
|
-
#
|
57
|
+
# NOTE: both practice and gp need to be present before we can send to the pcp - we'll use the
|
58
58
|
# practice address but the GP's name as the salutation.
|
59
59
|
def include_primary_care_physician_as_default_main_recipient
|
60
60
|
return if letter.main_recipient.present?
|
@@ -11,7 +11,7 @@ module Renalware
|
|
11
11
|
def each_group
|
12
12
|
Pathology::ObservationDescription
|
13
13
|
.select(:id, :code, :letter_group, :letter_order)
|
14
|
-
.where(
|
14
|
+
.where.not(letter_group: nil)
|
15
15
|
.order("letter_group asc, letter_order asc")
|
16
16
|
.group_by(&:letter_group)
|
17
17
|
.each do |group_number, descriptions|
|
@@ -40,7 +40,7 @@ module Renalware
|
|
40
40
|
delegate :clear, to: :store
|
41
41
|
|
42
42
|
def fetch(letter, **options)
|
43
|
-
store.fetch(cache_key_for(letter, **options)) { yield }
|
43
|
+
store.fetch(cache_key_for(letter, **options), expires_in: 4.weeks) { yield }
|
44
44
|
end
|
45
45
|
|
46
46
|
# Note the letter must be a LetterPresenter which has a #to_html method
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
#
|
4
4
|
# Render a Letter to PDF. Try and get it from the cachefirst
|
5
|
-
# Lean on Letters::
|
5
|
+
# Lean on Letters::HtmlRenderer which already renders the letter to html via
|
6
6
|
# LetterPresenter#content.
|
7
7
|
#
|
8
8
|
module Renalware
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_dependency "renalware/letters"
|
4
|
-
require "attr_extras"
|
5
4
|
|
6
5
|
module Renalware
|
7
6
|
module Letters
|
@@ -36,10 +35,12 @@ module Renalware
|
|
36
35
|
temp_html_file.unlink # allows garbage collection and temp file removal
|
37
36
|
end
|
38
37
|
|
38
|
+
# Use windows line endings (CRLF) rather than linux (LF).
|
39
|
+
# This solves a problem at Barts exporting RTFs to send to GPs
|
39
40
|
def rtf_content_converted_from(html_temp_file)
|
40
41
|
rtf_template = File.join(Engine.root, "lib", "pandoc", "templates", "default.rtf")
|
41
42
|
options = { template: rtf_template }
|
42
|
-
PandocRuby.html([html_temp_file.path], options, :standalone).to_rtf
|
43
|
+
PandocRuby.html([html_temp_file.path], options, :standalone).to_rtf("--eol=crlf")
|
43
44
|
end
|
44
45
|
|
45
46
|
def html_with_images_stripped
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_dependency "renalware/modalities"
|
4
|
-
|
5
|
-
|
4
|
+
require "success"
|
5
|
+
require "failure"
|
6
6
|
|
7
7
|
module Renalware
|
8
8
|
module Modalities
|
@@ -50,9 +50,9 @@ module Renalware
|
|
50
50
|
if new_modality.valid?
|
51
51
|
make_new_modality_the_current_one(new_modality)
|
52
52
|
broadcast_modality_change_event_to_any_listeners(new_modality)
|
53
|
-
::
|
53
|
+
::Success.new(new_modality)
|
54
54
|
else
|
55
|
-
::
|
55
|
+
::Failure.new(new_modality)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|