class ConceptQL::QueryModifiers::PoSQueryModifier

Attributes

join_id[RW]

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/conceptql/query_modifiers/pos_query_modifier.rb, line 8
def initialize(*args)
  super
  @column = :place_of_service_concept_id
  @join_id = :visit_occurrence_id
  @table = :visit_occurrence
  @source_column = :visit_source_concept_id
end

Public Instance Methods

modified_query() click to toggle source
# File lib/conceptql/query_modifiers/pos_query_modifier.rb, line 16
def modified_query
  return query unless op.query_cols.include?(join_id)
  left_alias = "tab1".to_sym
  right_alias = "tab2".to_sym

  extra_table = query.db.from(table).select(Sequel.as(source_column, column), join_id)
  ds = query.from_self(alias: left_alias)
  ds.left_join(extra_table.as(right_alias),
              Sequel.qualify(left_alias, join_id) => Sequel.qualify(right_alias, join_id))
            .select_all(left_alias)
            .select_append(Sequel.qualify(right_alias, column).as(column))
            .from_self
end