Sha256: 0648da55504187e12fd6f59901af4021eb3f463b1992cba5f716b65b99b86b3b

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

require_dependency "renalware/hd"

module Renalware
  module HD
    class PatientsWithUnmetPreferencesQuery

      def initialize(query = {})
        @query = query
      end

      def call
        search.result
      end

      def search
        HD::Patient
          .extend(Scopes)
          .includes(hd_profile: :hospital_unit)
          .includes(hd_preference_set: :hospital_unit)
          .eager_load(:hd_profile)
          .eager_load(:hd_preference_set)
          .having_an_unmet_preference
          .ransack(query)
      end

      private

      attr_reader :query

      module Scopes

        def having_an_unmet_preference
          sql = <<-SQL.squish
            (hd_preference_sets.hospital_unit_id > 0 AND
              hd_profiles.hospital_unit_id != hd_preference_sets.hospital_unit_id) OR
            (coalesce(hd_preference_sets.schedule, '') != '' AND
              hd_profiles.schedule != hd_preference_sets.schedule) OR
            (coalesce(hd_preference_sets.other_schedule, '') != '' AND
              hd_profiles.other_schedule != hd_preference_sets.other_schedule)
          SQL
          where(sql)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
renalware-core-2.0.0.pre.beta9 app/models/renalware/hd/patients_with_unmet_preferences_query.rb
renalware-core-2.0.0.pre.beta8 app/models/renalware/hd/patients_with_unmet_preferences_query.rb
renalware-core-2.0.0.pre.beta7 app/models/renalware/hd/patients_with_unmet_preferences_query.rb
renalware-core-2.0.0.pre.beta6 app/models/renalware/hd/patients_with_unmet_preferences_query.rb
renalware-core-2.0.0.pre.beta5 app/models/renalware/hd/patients_with_unmet_preferences_query.rb