class Openehr::Generators::ModelGenerator
Public Instance Methods
create_empty_directory()
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 9 def create_empty_directory empty_directory File.join('app/models') end
generate_archetype()
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 17 def generate_archetype template 'archetype.rb', File.join('app/models', 'archetype.rb') end
generate_archtype_based_active_model()
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 21 def generate_archtype_based_active_model template 'activemodel.rb', File.join('app/models', "#{model_name}.rb") end
generate_rm()
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 13 def generate_rm template 'rm.rb', File.join('app/models', 'rm.rb') end
Protected Instance Methods
add_atcode_methods(cobj)
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 69 def add_atcode_methods(cobj) atcode = cobj.node_id val = cobj.attributes.select {|attr| attr.rm_attribute_name == 'value'}[0] path = val.path type = case val.children[0].rm_type_name when 'DvQuantity', 'DV_QUANTITY' 'num_value' when 'DvText', 'DV_TEXT' 'text_value' when 'DvCodedText', "DV_CODED_TEXT" 'text_value' when 'DvDate', 'DV_DATE' 'date_value' when 'DvTime', 'DvTime' 'time_value' when 'DvDateTime', 'DvDateTime' 'datetime_value' else 'text_value' end if val.children[0].rm_type_name == 'DV_CODED_TEXT' || val.children[0].rm_type_name == 'DvCodedText' atval = "translate(#{atcode}model.#{type})" else atval = "#{atcode}model.#{type}" end atform(atcode, path, atval, type) end
add_data_component(cobj)
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 39 def add_data_component(cobj) html = '' if cobj.respond_to? :attributes html += cobj.attributes.inject('') do |form, attr| if attr.respond_to? :children form += attr.children.inject('') do |h, child| child_atcode = atcodes child unless child_atcode.nil? h += child_atcode end h end end form end end html end
add_event(cobj)
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 58 def add_event(cobj) add_interval_event(cobj) + add_data_component(cobj) end
add_interval_event(cobj)
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 62 def add_interval_event(cobj) atcode = cobj.node_id path = cobj.path+ "/value" atval = "#{atcode}model.text_value" atform(atcode, path, atval, 'text_value') end
atcodes(cobj)
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 26 def atcodes(cobj) case cobj.rm_type_name when 'ELEMENT' add_atcode_methods cobj when 'EVENT' add_event cobj when 'INTERVAL_EVENT' add_event cobj else add_data_component cobj end end
atform(atcode, path, atval, type)
click to toggle source
# File lib/generators/openehr/model/model_generator.rb, line 98 def atform(atcode, path, atval, type) return <<ATFORM def #{atcode}model @#{atcode} ||= confat('#{atcode}', '#{path}') end def #{atcode} #{atval} end def #{atcode}=(#{atcode}) #{atcode}model.#{type} = #{atcode} #{atcode}model.save end ATFORM end