Class: OpenEHR::RM::DataStructures::ItemStructure::ItemTable

Inherits:
ItemStructure show all
Defined in:
lib/openehr/rm/data_structures/item_structure.rb

Constant Summary

Constants included from Common::Archetyped::LocaterConstants

Common::Archetyped::LocaterConstants::CONTENT_PATH_SEPARATOR, Common::Archetyped::LocaterConstants::CURRENT_TRANSACTION_ID, Common::Archetyped::LocaterConstants::FRAGMENT_SEPARATOR, Common::Archetyped::LocaterConstants::MULTIPART_ID_DELIMITER, Common::Archetyped::LocaterConstants::ORGANIZER_PATH_SEPARATOR

Instance Attribute Summary collapse

Attributes inherited from Common::Archetyped::Locatable

#archetype_details, #archetype_node_id, #feeder_audit, #links, #name, #uid

Attributes inherited from Common::Archetyped::Pathable

#parent

Instance Method Summary collapse

Methods inherited from Common::Archetyped::Locatable

#concept, #is_archetype_root?

Methods inherited from Common::Archetyped::Pathable

#item_at_path, #items_at_path, normalize_path, path_attribute, path_attributes, #path_children, #path_exists?, #path_of_item, #path_unique?, select_by_predicate

Constructor Details

#initialize(args = {}) ⇒ ItemTable

Returns a new instance of ItemTable.



80
81
82
83
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 80

def initialize(args = {})
  super(args)
  self.rows = args[:rows]
end

Instance Attribute Details

#rowsObject

Returns the value of attribute rows.



77
78
79
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 77

def rows
  @rows
end

Instance Method Details

#as_hierarchyObject



183
184
185
186
187
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 183

def as_hierarchy
  return Cluster.new(:name => @name,
                     :archetype_node_id => @archetype_node_id,
                     :items => @rows)
end

#column_countObject



93
94
95
96
97
98
99
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 93

def column_count
  if @rows.nil?
    return 0
  else
    return @rows[0].items.count
  end
end

#column_namesObject



109
110
111
112
113
114
115
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 109

def column_names
  if @rows.nil?
    return []
  else
    return @rows[0].items.collect{|i| i.name}
  end
end

#element_at_cell_ij(i, j) ⇒ Object



165
166
167
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 165

def element_at_cell_ij(i,j)
  return @rows[i-1].items[j-1]
end

#element_at_named_cell(row_key, column_key) ⇒ Object



169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 169

def element_at_named_cell(row_key, column_key)
  column_index = 0
  @rows[0].items.each do |c|
    break if c.name.value == column_key
    column_index += 1
  end
  row_index = 0
  @rows.each do |row|
    break if row.name.value == row_key
    row_index += 1
  end
  return element_at_cell_ij(row_index + 1, column_index + 1)
end

#has_column_with_name?(key) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


130
131
132
133
134
135
136
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 130

def has_column_with_name?(key)
  raise ArgumentError, 'invalid argument' if key.nil? or key.empty?
  self.column_names.each do |name|
    return true if name.value == key
  end
  return false
end

#has_row_with_key?(keys) ⇒ Boolean

Returns:

  • (Boolean)


145
146
147
148
149
150
151
152
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 145

def has_row_with_key?(keys)
  keys.each do |key|
    @rows.each do |row|
      return true if row.items[0].name.value == key
    end
  end
  return false
end

#has_row_with_name?(key) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


122
123
124
125
126
127
128
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 122

def has_row_with_name?(key)
  raise ArgumentError, 'invalid argument' if key.nil? or key.empty?
  @rows.each do |row|
    return true if row.items[0].name.value == key
  end
  return false
end

#ith_row(i) ⇒ Object

Raises:

  • (ArgumentError)


117
118
119
120
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 117

def ith_row(i)
  raise ArgumentError, 'invalid index' if i<=0 or i>@rows.size
  return @rows[i - 1]
end

#named_row(key) ⇒ Object

Raises:

  • (ArgumentError)


138
139
140
141
142
143
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 138

def named_row(key)
  raise ArgumentError, 'invalid argument' unless has_row_with_name?(key)
  @rows.each do |row|
    return row if row.items[0].name.value == key
  end
end

#row_countObject



85
86
87
88
89
90
91
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 85

def row_count
  if @rows.nil?
    return 0
  else
    return @rows.size
  end
end

#row_namesObject



101
102
103
104
105
106
107
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 101

def row_names
  if @rows.nil?
    return []
  else
    return @rows.collect{|r| r.name}
  end
end

#row_with_key(keys) ⇒ Object



154
155
156
157
158
159
160
161
162
163
# File 'lib/openehr/rm/data_structures/item_structure.rb', line 154

def row_with_key(keys)
  unless has_row_with_key?(keys)
    raise ArgumentError, 'no row for key'
  end
  keys.each do |key|
    @rows.each do |row|
      return row if row.items[0].name.value == key
    end
  end
end