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