Changeset 408


Ignore:
Timestamp:
Mar 15, 2010, 11:32:41 PM (13 years ago)
Author:
KOBAYASHI, Shinji
Message:

serializer implementation

Location:
ruby/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/open_ehr/serializer.rb

    r407 r408  
    2323          hd << " (adl_version = #{@archetype.adl_version})"
    2424        end
    25         hd << NL+INDENT + "#{@archetype.archetype_id.value}"+NL+NL
     25        hd << NL+INDENT + "#{@archetype.archetype_id.value}"+NL*2
    2626        hd << 'concept'+NL+ INDENT+"[#{@archetype.concept}]"+NL
    2727        hd << NL+'language'+NL+INDENT+'original_language = <['+
     
    3232
    3333      def description
    34 
     34        desc = ''
     35        if @archetype.description
     36          ad = @archetype.description
     37          desc << 'description' + NL
     38          desc << INDENT + 'original_author = <' + NL
     39          ad.original_author.each do |k,v|
     40            desc << INDENT+INDENT+'["'+k+'"] = <"'+v+'">'+NL
     41          end
     42          desc << INDENT+'>'+NL
     43          desc << INDENT+'lifecycle_state = <"'+ad.lifecycle_state+'">'+NL
     44          desc << INDENT+'details = <'+NL
     45          ad.details.each do |lang,item|
     46            desc << INDENT*2+'["'+lang+'"] = <'+NL
     47            desc << INDENT*3+'language = <['+
     48              item.language.terminology_id.value+'::'+
     49              item.language.code_string+']>'+NL
     50            desc << INDENT*3+'purpose = <"'+item.purpose+'">'+NL
     51            if item.keywords then
     52              desc << INDENT*3+'keywords = <'
     53              item.keywords.each do |word|
     54                desc << '"'+word+'",'
     55              end
     56              desc.chop! << '>'+NL
     57            end
     58            desc << INDENT*3+'use = <"'+item.use+'">'+NL if item.use
     59            desc << INDENT*3+'misuse = <"'+item.misuse+'">'+NL if item.misuse
     60            desc << INDENT*3+'copyright = <"'+item.copyright+'">'+NL if item.copyright
     61            if item.original_resource_uri
     62              desc << INDENT*3 + 'original_resource_uri = <'
     63              item.original_resource_uri.each do |k,v|
     64                desc << INDENT*4+'["'+k+'"] = <"'+v+'">'+NL
     65              end
     66              desc << INDENT*3+'>'+NL
     67            end
     68            if item.other_details
     69              desc << INDENT*3 + 'other_details = <'
     70              item.original_resource_uri.each do |k,v|
     71                desc << INDENT*4+'["'+k+'"] = <"'+v+'">'+NL
     72              end
     73              desc << INDENT*3+'>'+NL
     74            end
     75            desc << INDENT*2+'>'+NL
     76          end
     77          desc << INDENT+'>'+NL
     78        end
     79        return desc
    3580      end
    3681
     
    59104        xml.concept @archetype.concept
    60105        xml.original_language do
    61           xml.code_string @archetype.original_language.code_string
    62106          xml.terminology_id do
    63107            xml.value @archetype.original_language.terminology_id.value
    64108          end
     109          xml.code_string @archetype.original_language.code_string
    65110        end
    66111        return header
     
    68113
    69114      def description
    70        
     115        desc = ''
     116        xml = Builder::XmlMarkup.new(:indent => 2, :target => desc)
     117        ad = @archetype.description
     118        if ad
     119          xml.description do
     120            ad.original_author.each do |key,value|
     121              xml.original_author(value,"id"=>key)
     122            end
     123            if ad.other_contributors
     124              ad.other_contributors.each do |co|
     125                xml.other_contributors co
     126              end
     127            end
     128            xml.lifecycle_state ad.lifecycle_state
     129            xml.details do
     130              ad.details.each do |lang, item|
     131                xml.language do
     132                  xml.terminology_id do
     133                    xml.value item.language.terminology_id.value
     134                  end
     135                  xml.code_string lang
     136                end
     137                xml.purpose item.purpose
     138                xml.use item.use if item.use
     139                xml.misuse item.misuse if item.misuse
     140                xml.copyright item.copyright if item.copyright
     141                if ad.other_details
     142                  ad.other_details.each do |key,value|
     143                    xml.other_details(value, "id"=>key)
     144                  end
     145                end
     146              end
     147            end
     148          end
     149        end
     150        return desc
    71151      end
    72152
  • ruby/trunk/spec/lib/open_ehr/serializer/adl_serializer_spec.rb

    r407 r408  
    1313    adl = adl_file.readlines
    1414    @sample_header = adl[0..7].join
    15     @sample_description = adl[8..24].join
     15    @sample_description = adl[9..22].join
    1616    adl_file.close
    1717  end
     
    2828    @adl_serializer.header.should == @sample_header
    2929  end
     30
     31  it 'description should return archetype description' do
     32    @adl_serializer.description.should == @sample_description
     33  end
    3034end
  • ruby/trunk/spec/lib/open_ehr/serializer/openEHR-EHR-SECTION.test.v1.adl

    r407 r408  
    66
    77language
    8     original_language = <[openEHR::ja]>
     8    original_language = <[ISO_639-1::ja]>
    99
    1010description
    1111    original_author = <
     12        ["name"] = <"Shinji KOBAYASHI">
     13        ["organisation"] = <"openEHR.jp">
    1214        ["email"] = <"skoba@moss.gr.jp">
    13         ["organisation"] = <"openEHR.jp">
    14         ["name"] = <"Shinji KOBAYASHI">
    1515    >
    1616    lifecycle_state = <"draft">
    1717    details = <
    1818        ["ja"] = <
    19             language = <[openEHR::ja]>
     19            language = <[ISO_639-1::ja]>
    2020            purpose = <"Serializer test">
    2121            misuse = <"evaluate message">
  • ruby/trunk/spec/lib/open_ehr/serializer/sample_archetype_spec.rb

    r407 r408  
    2424    archetype_id = ArchetypeID.new(:value =>
    2525                                   'openEHR-EHR-SECTION.test.v1')
    26     terminology_id = TerminologyID.new(:value => 'openEHR')
     26    terminology_id = TerminologyID.new(:value => 'ISO_639-1')
    2727    original_language = CodePhrase.new(:code_string => 'ja',
    2828                                       :terminology_id => terminology_id)
     
    4040                                  :misuse => 'evaluate message')
    4141    details = {'ja' => resource_description_item}
    42     decription = ResourceDescription.new(:original_author => original_author,
    43                                          :lifecycle_state => 'draft',
    44                                          :details => details)
     42    description = ResourceDescription.new(:original_author => original_author,
     43                                          :lifecycle_state => 'draft',
     44                                          :details => details)
    4545    @archetype = Archetype.new(:archetype_id => archetype_id,
    4646                               :concept => 'at0000',
  • ruby/trunk/spec/lib/open_ehr/serializer/xml_serializer_spec.rb

    r407 r408  
    2222<concept>at0000</concept>
    2323<original_language>
     24  <terminology_id>
     25    <value>ISO_639-1</value>
     26  </terminology_id>
    2427  <code_string>ja</code_string>
    25   <terminology_id>
    26     <value>openEHR</value>
    27   </terminology_id>
    2828</original_language>
    2929END
    3030  end
     31
     32  it 'should return XML formatted description' do
     33    @xml_serializer.description.should == <<END
     34<description>
     35  <original_author id="name">Shinji KOBAYASHI</original_author>
     36  <original_author id="organisation">openEHR.jp</original_author>
     37  <original_author id="email">skoba@moss.gr.jp</original_author>
     38  <lifecycle_state>draft</lifecycle_state>
     39  <details>
     40    <language>
     41      <terminology_id>
     42        <value>ISO_639-1</value>
     43      </terminology_id>
     44      <code_string>ja</code_string>
     45    </language>
     46    <purpose>Serializer test</purpose>
     47    <misuse>evaluate message</misuse>
     48  </details>
     49</description>
     50END
     51  end
    3152end
Note: See TracChangeset for help on using the changeset viewer.