Changeset 157


Ignore:
Timestamp:
Jul 5, 2009, 11:01:59 PM (15 years ago)
Author:
KOBAYASHI, Shinji
Message:

fixed #62
refs #49,#39

Location:
ruby/trunk/lib/models
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/models/rm/common/generic.rb

    r156 r157  
    4646
    4747        class Revision_History
    48          
     48          attr_reader :items
     49
     50          def initialize(items)
     51            self.items = items
     52          end
     53
     54          def items=(items)
     55            if items.nil? or items.empty?
     56              raise ArgumentError, 'item(s) is/are mandatory'
     57            end
     58            @items  = items
     59          end
     60
     61          def most_recent_version
     62            return @items.last.version_id.value
     63          end
     64
     65          def most_recent_version_time_committed
     66            return @items.last.audits.first.time_committed.value
     67          end
    4968        end # of Revision_History
    5069
    5170        class Revision_History_Item
    52          
     71          attr_reader :version_id, :audits
     72
     73          def initialize(args = { })
     74            self.version_id = args[:version_id]
     75            self.audits = args[:audits]
     76          end
     77
     78          def audits=(audits)
     79            if audits.nil? or audits.empty?
     80              raise ArgumentError, 'audits is mandatory'
     81            end
     82            @audits = audits
     83          end
     84
     85          def version_id=(version_id)
     86            raise ArgumentError, 'version_id is mandatory' if version_id.nil?
     87            @version_id = version_id
     88          end
    5389        end # of Revision_History_Item
    5490
     
    137173          end
    138174        end
     175
     176        class Attestation < Audit_Details
     177          attr_reader :reason
     178          attr_accessor :proof, :items
     179
     180          def initialize(args = { })
     181            super(args)
     182            self.reason = args[:reason]
     183            self.proof = args[:proof]
     184            self.items = args[:items]
     185          end
     186
     187          def reason=(reason)
     188            raise ArgumentError, 'reason is mandatory' if reason.nil?
     189            @reason = reason
     190          end
     191        end
    139192      end # of Generic
    140193    end # of Common
  • ruby/trunk/lib/models/rm/data_types/quantity/date_time.rb

    r151 r157  
    1111        module Date_Time
    1212          class DV_Temporal < OpenEHR::RM::Data_Types::Quantity::DV_Absolute_Quantity
     13            include Comparable
    1314            attr_reader :value
    1415
     
    2930              end
    3031              @value = value
     32            end
     33
     34            def <=>(other)
     35              self.magnitude <=> other.magnitude
    3136            end
    3237          end
     
    151156
    152157            def magnitude
    153               return DateTime.new(@year,@month,@day,@hour,@minute,@second) -
    154                 DateTime.new(0000,1,1,0,0,0) + @fractional_second
     158              seconds = DateTime.new(@year,@month,@day,@hour,@minute,@second) -
     159                DateTime.new(0000,1,1,0,0,0)
     160              if @fractional_second.nil?
     161                return seconds
     162              else
     163                return seconds + @fractional_second
     164              end
    155165            end
    156166
  • ruby/trunk/lib/models/rm/support/identification.rb

    r107 r157  
    174174        end
    175175
     176        class Object_Version_ID < UID_Based_ID
     177          attr_reader :object_id, :creating_system_id, :version_tree_id
     178
     179          def initialize(value)
     180            super(value)
     181          end
     182
     183          def value=(value)
     184            super(value)
     185            if /^(\w+)::(\w+)::((\d|\.)+)$/ =~ value
     186              self.object_id = UID.new($1)
     187              self.creating_system_id = UID.new($2)
     188              self.version_tree_id = Version_Tree_ID.new($3)
     189            else
     190              raise ArgumentError, 'invalid format'
     191            end
     192          end
     193
     194          def object_id=(object_id)
     195            raise ArgumentError, 'object_id is mandatory' if object_id.nil?
     196            @object_id = object_id
     197          end
     198
     199          def creating_system_id=(creating_system_id)
     200            if creating_system_id.nil?
     201              raise ArgumentError, 'creating_system_id is mandatory'
     202            end
     203            @creating_system_id = creating_system_id
     204          end
     205
     206          def version_tree_id=(version_tree_id)
     207            if version_tree_id.nil?
     208              raise ArgumentError, 'version_tree_id is mandatory'
     209            end
     210            @version_tree_id = version_tree_id
     211          end
     212        end
     213
    176214        class Locatable_Ref < Object_Ref
    177215          attr_reader :namespace, :type, :id, :path
     
    284322        class ISO_OID <UID
    285323
    286         end
     324        end       
    287325      end # of Identification
    288326    end # of Support
  • ruby/trunk/lib/models/tests/rm/test_common.rb

    r156 r157  
    1010include OpenEHR::RM::Data_Types::Basic
    1111include OpenEHR::RM::Data_Types::Quantity
     12include OpenEHR::RM::Data_Types::URI
    1213
    1314class RM_Common_Resource_Test < Test::Unit::TestCase
     
    4546    provider = Party_Identified.new(:name => 'NERV')
    4647    location = Party_Identified.new(:name => 'GEOFRONT')
    47     object_id = Object_ID.new('0.0.4')
     48    object_version_id = Object_Version_ID.new('ABC::DEF::1.3.4')
    4849    party_ref = Party_Ref.new('local', 'ORGANISATION', object_id)
    4950    assert_nothing_raised(Exception){
     
    180181                                         :change_type => dv_coded_text,
    181182                                         :description => dv_text)}
    182 #    change_type = OpenEHR::RM::Data_Types::Text::DV_Text.new('audit_type')
    183 #    time_committed = OpenEHR::RM::Data_Types::Quantity::Date_Time::DV_Date_Time.new(2008)
    184 #    assert_nothing_raised(Exception){@audit_details = OpenEHR::RM::Common::Generic::Audit_Details.new('rails',@party_proxy, change_type, time_committed)}
     183    dv_text = DV_Text.new('authorisation')
     184    dv_ehr_uri = DV_EHR_URI.new('ehr://test/')
     185    assert_nothing_raised(Exception){
     186      @attestation = Attestation.new(:system_id => 'NERV',
     187                                     :committer => @party_proxy,
     188                                     :time_committed => dv_date_time,
     189                                     :change_type => dv_coded_text,
     190                                     :reason => dv_text,
     191                                     :description => dv_text,
     192                                     :proof => 'hashedstring',
     193                                     :items => Set[dv_ehr_uri])}
     194    object_version_id = Object_Version_ID.new('SHOGOUKI::NERV::1.1.1')
     195    audit_details2 = Audit_Details.new(:system_id => 'MAGI',
     196                                       :committer => @party_proxy,
     197                                       :time_committed => dv_date_time2,
     198                                       :change_type => dv_coded_text)
     199    assert_nothing_raised(Exception){
     200      @revision_history_item = Revision_History_Item.new(:audits => [@audit_details, audit_details2],
     201                                                         :version_id => object_version_id)}
     202    dv_date_time3 = DV_Date_Time.new('2009-07-14T12:00:00')
     203    dv_date_time4 = DV_Date_Time.new('2009-07-15T00:00:00')
     204    audit_details3 = Audit_Details.new(:system_id => 'MAGI',
     205                                     :committer => @party_proxy,
     206                                     :time_committed => dv_date_time3,
     207                                     :change_type => dv_coded_text)
     208    audit_details4 = Audit_Details.new(:system_id => 'MAGI',
     209                                     :committer => @party_proxy,
     210                                     :time_committed => dv_date_time4,
     211                                     :change_type => dv_coded_text)
     212    object_version_id = Object_Version_ID.new('NIGOUKI::NERV::2.2.2')
     213    revision_history_item2 = Revision_History_Item.new(:audits => [audit_details3, audit_details4],
     214                                                      :version_id => object_version_id)
     215    assert_nothing_raised(Exception){
     216      @revision_history = Revision_History.new([@revision_history_item, revision_history_item2])}
    185217  end
    186218
     
    191223    assert_instance_of Participation, @participation
    192224    assert_instance_of Audit_Details, @audit_details
     225    assert_instance_of Attestation, @attestation
     226    assert_instance_of Revision_History_Item, @revision_history_item
     227    assert_instance_of Revision_History, @revision_history
    193228  end
    194229
     
    230265    assert_equal 'test environment', @audit_details.description.value
    231266  end
     267
     268  def test_attestation
     269    assert_equal 'NERV', @attestation.system_id
     270    assert_equal 'unknown', @attestation.committer.external_ref.namespace
     271    assert_equal '249', @attestation.change_type.defining_code.code_string
     272    assert_equal 7, @attestation.time_committed.month
     273    assert_equal 'authorisation', @attestation.reason.value
     274    assert_equal 'authorisation', @attestation.description.value
     275    assert_equal 'hashedstring', @attestation.proof
     276    assert_equal 'ehr://test/', @attestation.items.to_a[0].value
     277  end
     278
     279  def test_revision_history_item
     280    assert_equal 'SHOGOUKI::NERV::1.1.1', @revision_history_item.version_id.value
     281    assert_equal 'MAGI', @revision_history_item.audits[0].system_id
     282  end
     283
     284  def test_revision_history
     285    assert_equal 'NIGOUKI::NERV::2.2.2', @revision_history.most_recent_version
     286    assert_equal '2009-07-14T12:00:00', @revision_history.most_recent_version_time_committed
     287  end
    232288end
    233289
  • ruby/trunk/lib/models/tests/rm/test_support.rb

    r119 r157  
    2424    assert_nothing_raised(Exception){@access_group_ref = OpenEHR::RM::Support::Identification::Access_Group_Ref.new('unknown', 'ACCESS_GROUP', @object_id)}
    2525    assert_nothing_raised(Exception){@version_tree_id = OpenEHR::RM::Support::Identification::Version_Tree_ID.new('1.2.3')}
     26    assert_nothing_raised(Exception){@object_version_id = OpenEHR::RM::Support::Identification::Object_Version_ID.new('ABC::DEF::1.2.3')}
    2627  end
    2728 
     
    3940    assert_instance_of OpenEHR::RM::Support::Identification::Access_Group_Ref, @access_group_ref
    4041    assert_instance_of OpenEHR::RM::Support::Identification::Version_Tree_ID, @version_tree_id
     42    assert_instance_of OpenEHR::RM::Support::Identification::Object_Version_ID, @object_version_id
    4143  end
    4244
     
    218220  end
    219221
     222  def test_object_version_id
     223    assert_equal 'ABC::DEF::1.2.3', @object_version_id.value
     224    assert_equal 'ABC', @object_version_id.object_id.value
     225    assert_equal 'DEF', @object_version_id.creating_system_id.value
     226    assert_equal '1', @object_version_id.version_tree_id.trunk_version
     227  end
     228
    220229  def test_locatable_ref
    221230# test constructor
Note: See TracChangeset for help on using the changeset viewer.