Sha256: 34fe3416439bef3a25a80c22290d717b9b3e9e32aa5d6c781920a53772431f18

Contents?: true

Size: 1.24 KB

Versions: 149

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/hd"

# Find for example HD Patients who according to their HD Profile dialyse on Monday PM
# Example usage in that instance:
#   PatientsDialysingByDayAndPeriodQuery.new(1, "am").call
module Renalware
  module HD
    class PatientsDialysingByDayAndPeriodQuery
      attr_reader :hospital_unit_id, :day_of_week, :period_code

      def initialize(hospital_unit_id, day_of_week, period_code)
        @hospital_unit_id = hospital_unit_id
        @day_of_week = day_of_week
        @period_code = period_code
      end

      def call
        PatientsDialysingByScheduleQuery.new(
          hospital_unit_id,
          schedule_definition_ids
        ).call
      end

      private

      # Find the first schedule having day_of_week in the pg days[] array (e.g. [2,4,6] if
      # day_of_week is 2 (Tuesday) AND matching the period_code ie having the correct diurnal
      # period code e.g. AM.
      # Note
      def schedule_definition_ids
        HD::ScheduleDefinition
          .eager_load(:diurnal_period)
          .merge(Renalware::HD::DiurnalPeriodCode.for(period_code))
          .merge(Renalware::HD::ScheduleDefinition.for_day_of_week(day_of_week))
          .pluck(:id)
      end
    end
  end
end

Version data entries

149 entries across 149 versions & 1 rubygems

Version Path
renalware-core-2.1.1 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.1.0 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.167 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.166 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.165 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.164 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.163 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.162 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.161 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.160 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.159 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.158 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.157 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.156 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.155 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.153 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.152 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.151 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.149 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb
renalware-core-2.0.148 app/models/renalware/hd/patients_dialysing_by_day_and_period_query.rb