Changeset 411
- Timestamp:
- Apr 23, 2010, 12:00:31 AM (14 years ago)
- Location:
- ruby/trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/open_ehr/am/archetype/ontology.rb
r403 r411 4 4 module Ontology 5 5 class ArchetypeOntology 6 attr_accessor :constraint_ codes, :specialisation_depth7 attr_accessor :term_attribute_names, :term_ codes8 attr_reader :terminologies_available 6 attr_accessor :constraint_definitions, :specialisation_depth 7 attr_accessor :term_attribute_names, :term_bindings 8 attr_reader :terminologies_available, :term_definitions 9 9 10 10 def initialize(args = { }) 11 self.terminologies_available = args[:terminologies_available]12 11 self.specialisation_depth = args[:specialisation_depth] 13 self.term_ codes = args[:term_codes]14 self.constraint_ codes = args[:constraint_codes]15 self.term_ attribute_names = args[:term_attribute_names]12 self.term_definitions = args[:term_definitions] 13 self.constraint_definitions = args[:constraint_definitions] 14 self.term_bindings = args[:term_bindings] 16 15 end 17 16 18 def terminologies_available=(terminologies_available) 19 if terminologies_available.nil? 20 raise ArgumentError, 'terminologies_available is mandatory' 17 # def terminologies_available=(terminologies_available) 18 # if terminologies_available.nil? 19 # raise ArgumentError, 'terminologies_available is mandatory' 20 # end 21 # @terminologies_available = terminologies_available 22 # end 23 24 def term_definitions=(term_definitions) 25 if term_definitions.nil? 26 raise ArgumentError, 'term_definitions is mandatory' 21 27 end 22 @terminologies_available = terminologies_available 28 @term_definitions = term_definitions 29 end 30 31 def term_codes 32 return @term_definitions.values.collect {|value| 33 value.collect {|term| term.code}}.flatten.uniq 34 end 35 36 def constraint_codes 37 if @constraint_definitions.nil? 38 return nil 39 else 40 return @constraint_definitions.values.collect {|value| 41 value.collect {|term| term.code}}.flatten.uniq 42 end 23 43 end 24 44 -
ruby/trunk/lib/open_ehr/serializer.rb
r410 r411 102 102 103 103 def ontology 104 ao = @archetype.ontology 105 ontology = 'ontology'+NL 106 ontology << INDENT + 'term_definitions = <' + NL 107 ao.term_codes.each do |term, items| 108 ontology << INDENT*2 + "[\"#{term}\"] = <" + NL 109 ontology << INDENT*3 + 'items = <' + NL 110 items.each do |code, attribute| 111 ontology << INDENT*4 + "[\"#{code}\] = <" + NL 112 terms.each do |name, description| 113 ontology << INDENT*5 + "#{name} = <\"#{description}\">" +NL 114 end 115 ontology << INDENT*4 + '>'+NL 116 end 117 ontogoly << INDENT*3 + '>' + NL 118 ontology << INDENT*2 + '>' + NL 119 end 120 ontology << INDENT + '>' + NL 104 121 end 105 122 -
ruby/trunk/spec/lib/open_ehr/am/archetype/ontology/archetype_ontology_spec.rb
r403 r411 1 1 require File.dirname(__FILE__) + '/../../../../../spec_helper' 2 2 include OpenEHR::AM::Archetype::Ontology 3 include OpenEHR::RM::DataTypes::Text 3 4 4 5 describe ArchetypeOntology do 5 6 before(:each) do 6 terminologies_available = stub(Set, :size =>1) 7 term_codes = stub(Array, :size => 2) 8 constraint_codes = stub(Array, :size => 3) 9 term_attribute_names = stub(Array, :size => 4) 7 items = {'TEXT' => 'text', 'DESC' => 'description'} 8 term1 = ArchetypeTerm.new(:code => 'at0000', :items => items) 9 items = {'TEXT' => 'concept'} 10 term2 = ArchetypeTerm.new(:code => 'at0001', :items => items) 11 term_definitions = {'ja' => [term1, term2]} 12 items = {'text' => 'test', 'description' => 'test item'} 13 term3 = ArchetypeTerm.new(:code => 'ac0000', :items => items) 14 constraint_definitions = {'ja' => [term3]} 15 code_phrase = stub(CodePhrase, :code_string => '163020007') 16 bind = {'at0000' => code_phrase} 17 term_bindings = {'SNOMED-CT(2003)' => [bind]} 10 18 @archetype_ontology = 11 ArchetypeOntology.new(:terminologies_available => terminologies_available, 12 :specialisation_depth => 0, 13 :term_codes => term_codes, 14 :constraint_codes => constraint_codes, 15 :term_attribute_names => term_attribute_names) 19 ArchetypeOntology.new(:term_definitions => term_definitions, 20 :constraint_definitions => constraint_definitions, 21 :term_bindings => term_bindings, 22 :specialisation_depth => 0) 16 23 end 17 24 … … 20 27 end 21 28 22 it 'terminologies_available should be assigned properly' do23 @archetype_ontology.terminologies_available.size.should be_equal 124 end25 26 it 'should raise ArgumentError if terminologies_available is nil' do27 lambda {28 @archetype_ontology.terminologies_available = nil29 }.should raise_error ArgumentError30 end31 32 it 'term_codes should be assigned properly' do33 @archetype_ontology.term_codes.size.should be_equal 234 end35 36 29 it 'specialisation depth should be assigned properly' do 37 30 @archetype_ontology.specialisation_depth.should be_equal 0 38 31 end 39 32 40 it ' constraint_codes should be assigned properly' do41 @archetype_ontology. constraint_codes.size.should be_equal 333 it 'term_definitions should be assigned properly' do 34 @archetype_ontology.term_definitions['ja'][0].code.should == 'at0000' 42 35 end 43 36 44 it 'term_attribute_names should be assigned properly' do 45 @archetype_ontology.term_attribute_names.size.should be_equal 4 37 it 'term_codes should returnd all at codes' do 38 @archetype_ontology.term_codes.should == ['at0000','at0001'] 39 end 40 41 it 'constraint_definitions should be assigned properly' do 42 @archetype_ontology.constraint_definitions['ja'][0].items['text']. 43 should == 'test' 44 end 45 46 it 'constrant_codes should return all ac codes' do 47 @archetype_ontology.constraint_codes.should == ['ac0000'] 48 end 49 50 it 'term_bindings should be assigned properly' do 51 @archetype_ontology.term_bindings['SNOMED-CT(2003)'][0]['at0000']. 52 code_string.should == '163020007' 46 53 end 47 54 end -
ruby/trunk/spec/lib/open_ehr/am/archetype/ontology/archetype_term_spec.rb
r403 r411 4 4 describe ArchetypeTerm do 5 5 before(:each) do 6 items = Hash['TEXT', 'text']6 items = {'TEXT' => 'text', 'DESC' => 'description'} 7 7 @archetype_term = ArchetypeTerm.new(:code => 'at0001', 8 8 :items => items) … … 34 34 35 35 it 'keys should be a set of keys of item' do 36 @archetype_term.keys.should == Set .new('TEXT')36 @archetype_term.keys.should == Set['TEXT', 'DESC'] 37 37 end 38 38 -
ruby/trunk/spec/lib/open_ehr/serializer/adl_serializer_spec.rb
r409 r411 15 15 @sample_description = adl[9..22].join 16 16 @sample_definition = adl[24..25].join 17 @sample_ontology = adl[27..37].join 17 18 adl_file.close 18 19 end … … 37 38 @adl_serializer.definition.should == @sample_definition 38 39 end 40 41 it 'ontology should return ADL formatted ontology' do 42 @adl_serializer.ontology.should == @sample_definition 43 end 39 44 end
Note:
See TracChangeset
for help on using the changeset viewer.