lib/qme/quality_measure.rb in quality-measure-engine-2.5.2 vs lib/qme/quality_measure.rb in quality-measure-engine-2.5.3

- old
+ new

@@ -4,50 +4,58 @@ extend DatabaseAccess determine_connection_information # Return a list of the measures in the database # @return [Hash] an hash of measure definitions - def self.all + def self.all(bundle_id = nil) result = {} - measures = get_db()['measures'] - measures.find().each do |measure| + measures = query_measures({}, bundle_id) + measures.find_all.each do |measure| id = measure['id'] sub_id = measure['sub_id'] measure_id = "#{id}#{sub_id}.json" result[measure_id] ||= measure end result end - def self.get_measures(measure_ids) - get_db()['measures'].find('id' => {"$in" => measure_ids}) + def self.get_measures(measure_ids, bundle_id = nil) + query_measures({'id' => {"$in" => measure_ids}}, bundle_id) end - def self.get(measure_id, sub_id) - get_db()['measures'].find('id' => measure_id, 'sub_id' => sub_id) + def self.get(measure_id, sub_id, bundle_id = nil) + query_measures({'id' => measure_id, 'sub_id' => sub_id}, bundle_id) end - def self.sub_measures(measure_id) - get_db()['measures'].find('id' => measure_id) + def self.sub_measures(measure_id, bundle_id = nil) + query_measures({'id' => measure_id}, bundle_id) end # Creates a new QualityMeasure # @param [String] measure_id value of the measure's id field # @param [String] sub_id value of the measure's sub_id field, may be nil for measures with only a single numerator and denominator - def initialize(measure_id, sub_id = nil) + def initialize(measure_id, sub_id = nil, bundle_id = nil) @measure_id = measure_id @sub_id = sub_id + @bundle_id = bundle_id determine_connection_information end # Retrieve a measure definition from the database # @return [Hash] a JSON hash of the encoded measure def definition - measures = get_db()['measures'] if @sub_id - measures.find({'id' => @measure_id, 'sub_id' => @sub_id}).first() + QME::QualityMeasure.query_measures({'id' => @measure_id, 'sub_id' => @sub_id}, @bundle_id).first() else - measures.find({'id' => @measure_id}).first() + QME::QualityMeasure.query_measures({'id' => @measure_id}, @bundle_id).first() end + end + + # Build measure collection query. Allows scoping of query to a single bundle + # @param [String] criteria Moped query hash + # @param [String] bundle_id the MongoDB id of the bundle to scope the query against. Leaving this as nil will scope to all bundles + def self.query_measures(criteria, bundle_id=nil) + criteria = bundle_id ? criteria.merge!({'bundle_id' => bundle_id}): criteria + get_db()['measures'].find(criteria) end end end \ No newline at end of file