class ConceptQL::Operators::CoReported

Public Instance Methods

query(db) click to toggle source
# File lib/conceptql/operators/co_reported.rb, line 16
def query(db)
  events_with_common_visits(db).inject { |q, query| q.union(query, all: true) }
end

Private Instance Methods

events_with_common_visits(db) click to toggle source
# File lib/conceptql/operators/co_reported.rb, line 30
def events_with_common_visits(db)
  upstream_queries(db).map { |q| q.where(visit_occurrence_id: visit_occurrence_ids_in_common(db)).from_self }
end
upstream_queries(db) click to toggle source
# File lib/conceptql/operators/co_reported.rb, line 34
def upstream_queries(db)
  @upstream_queries ||= upstreams.map do |expression|
    expression.evaluate(db).from_self
  end
end
visit_occurrence_ids_in_common(db) click to toggle source
# File lib/conceptql/operators/co_reported.rb, line 22
def visit_occurrence_ids_in_common(db)
  @visit_occurrence_ids_in_common ||= upstream_queries(db).map { |q| q.select(:visit_occurrence_id) }.inject do |q, query|
    q.from_self(alias: :tab1)
      .join(query.as(:tab2), tab1__visit_occurrence_id: :tab2__visit_occurrence_id)
      .select(:tab1__visit_occurrence_id___visit_occurrence_id)
  end
end