Sha256: 2519e2c8f2ea89733d6c9914a1d258f221848a90cfc5ea09e382fa0efff84060

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

module QME
  module Query
    class JsonQueryExecutor
      def initialize(db)
        @db = db
      end

      def measure_def(measure_id)
        measures = @db.collection('measures')
        measures.find({'id'=> "#{measure_id}"}).to_a[0]
      end

      def measure_result(measure_id, parameter_values)
        jdb = JSONDocumentBuilder.new(measure_def(measure_id),
                                      parameter_values)

        collection = @db.collection('records')
        result = {}
        
        collection.find(jdb.numerator_query) do |cursor|
          result[:numerator] = cursor.count
        end
        
        collection.find(jdb.denominator_query) do |cursor|
          result[:denominator] = cursor.count
        end
        collection.find(jdb.initial_population_query) do |cursor|
          result[:population] = cursor.count
        end
        
        exclusions_query = jdb.exclusions_query
        if exclusions_query.empty?
          result[:exceptions] = 0
        else
          collection.find(exclusions_query) do |cursor|
            result[:exceptions] = cursor.count
          end
        end
        
        result
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
quality-measure-engine-0.1.2 lib/qme/query/json_query_executor.rb
quality-measure-engine-0.1.1 lib/qme/query/json_query_executor.rb