Sha256: 39b1707af5fd07657585e9319c4d730e78eb8825575862a7f208e836b3552afa

Contents?: true

Size: 1.22 KB

Versions: 149

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

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_definition_id, 0) != 0 AND
              hd_profiles.schedule_definition_id != hd_preference_sets.schedule_definition_id) 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

149 entries across 149 versions & 1 rubygems

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