Class: ConceptQL::QueryModifiers::PoSQueryModifier

Inherits:
QueryModifier
  • Object
show all
Defined in:
lib/conceptql/query_modifiers/pos_query_modifier.rb

Instance Attribute Summary collapse

Attributes inherited from QueryModifier

#query

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ PoSQueryModifier

Returns a new instance of PoSQueryModifier.



8
9
10
11
12
13
14
# 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

Instance Attribute Details

#columnObject (readonly)

Returns the value of attribute column.



6
7
8
# File 'lib/conceptql/query_modifiers/pos_query_modifier.rb', line 6

def column
  @column
end

#join_idObject (readonly)

Returns the value of attribute join_id.



6
7
8
# File 'lib/conceptql/query_modifiers/pos_query_modifier.rb', line 6

def join_id
  @join_id
end

#source_columnObject (readonly)

Returns the value of attribute source_column.



6
7
8
# File 'lib/conceptql/query_modifiers/pos_query_modifier.rb', line 6

def source_column
  @source_column
end

#tableObject (readonly)

Returns the value of attribute table.



6
7
8
# File 'lib/conceptql/query_modifiers/pos_query_modifier.rb', line 6

def table
  @table
end

Instance Method Details

#modified_queryObject



16
17
18
19
20
21
22
23
24
25
26
27
28
# 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