class HealthDataStandards::CQM::PatientCache

Public Class Methods

smoking_gun_rational(hqmf_id, sub_ids=nil, filter ={}) click to toggle source
# File lib/health-data-standards/models/cqm/patient_cache.rb, line 16
def self.smoking_gun_rational(hqmf_id, sub_ids=nil, filter ={})

  match = {"value.IPP" => {"$gt" => 0},
           "value.measure_id" => hqmf_id
  }.merge filter

  if sub_ids
    match["value.sub_id"] = {"$in" => sub_ids}
  end

  group = {"$group" => {"_id" => "$value.medical_record_id", "rational" => {"$push"=> "$value.rationale"}}}
  aggregate = self.mongo_client.command(:aggregate => 'patient_cache', :pipeline => [{"$match" =>match},group])
  aggregate_document = aggregate.documents[0]
  merged = {}
  aggregate_document["result"].each do |agg|
    mrn = agg["_id"]
    rational = {}
    merged[mrn] = rational
    agg["rational"].each do |r|
      rational.merge! r
    end
  end

  merged
end

Public Instance Methods

record() click to toggle source
# File lib/health-data-standards/models/cqm/patient_cache.rb, line 12
def record
  Record.where(:medical_record_number => value['medical_record_id'], :test_id => value["test_id"]).first
end