Changeset 142 for ruby/trunk


Ignore:
Timestamp:
Jun 22, 2009, 3:52:37 PM (15 years ago)
Author:
KOBAYASHI, Shinji
Message:

ref #50

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

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/models/Rakefile

    r135 r142  
    11require 'rubygems'
    2 Gem::manage_gems
     2#Gem::manage_gems
    33require 'rake'
    44require 'rake/testtask'
  • ruby/trunk/lib/models/rm/data_types/quantity.rb

    r141 r142  
    4646          end
    4747
    48           def is_strictry_comparable_to?(other)
     48          def is_strictly_comparable_to?(other)
    4949            raise NotImplementedError, 'this method should be implemented'
    5050          end
     
    5454
    5555        end
    56        
     56
    5757        class DV_Quantified < DV_Ordered
    5858
     
    7676
    7777        class DV_Ordinal < DV_Ordered
    78           attr_reader :value, :symbol
    79           def initialize(value, symbol, normal_range=nil, normal_status = nil,
    80                          other_reference_ranges=nil)
     78          attr_reader :value, :symbol, :limits
     79
     80          def initialize(value, symbol, limits=nil, normal_range=nil,
     81                         normal_status = nil, other_reference_ranges=nil)
     82            self.value = value
     83            self.symbol = symbol
     84            self.limits = limits
     85            super(normal_range, normal_status, other_reference_ranges)
    8186          end
    8287
    83           def is_strictly_comparable_to?
     88          def value=(value)
     89            raise ArgumentError, 'value should not be nil' if value.nil?
     90            @value = value
     91          end
    8492
     93          def symbol=(symbol)
     94            raise ArgumentError,'symbol should not be nil' if symbol.nil?
     95            @symbol = symbol
     96          end
     97
     98          def is_strictly_comparable_to?(others)
     99            unless others.instance_of? OpenEHR::RM::Data_Types::Quantity::DV_Ordinal
     100              return false
     101            end
     102            unless others.symbol.defining_code.terminology_id.value ==
     103                @symbol.defining_code.terminology_id.value
     104              return false
     105            end
     106            return true
    85107          end
    86108
    87109          def <=>(other)
    88               @value <=> other.value
     110            @value <=> other.value
    89111          end
    90112
    91           def limits
    92 
     113          def limits=(limits)
     114            unless limits.nil? or limits.meaning.value == 'limits'
     115              raise ArgumentError, 'invalid limits'
     116            else
     117              @limits = limits
     118            end
    93119          end
    94120        end
  • ruby/trunk/lib/models/rm/data_types/quantity/date_time.rb

    r140 r142  
    4343            end
    4444          end
    45 
    46           class DV_Interval
    47             def initialize
    48             end
    49           end
    5045        end # of Date_Time
    5146      end # of Quantity
  • ruby/trunk/lib/models/tests/rm/test_data_types.rb

    r141 r142  
    165165      @dv_ordered = OpenEHR::RM::Data_Types::Quantity::DV_Ordered.new }
    166166    assert_nothing_raised(Exception){
    167       @dv_interval = OpenEHR::RM::Data_Types::Quantity::Date_Time::DV_Interval.new}
     167      @dv_interval = OpenEHR::RM::Data_Types::Quantity::DV_Interval.new(1,10)}
    168168    meaning = OpenEHR::RM::Data_Types::Text::DV_Text.new('normal')
    169169    assert_nothing_raised(Exception){
    170170      @reference_range = OpenEHR::RM::Data_Types::Quantity::Reference_Range.new(meaning)}
    171171    assert_nothing_raised(Exception){
    172       @dv_ordinal = OpenEHR::RM::Data_Types::Quantity::DV_Ordinal.new(1,'+')}
     172      terminology = OpenEHR::RM::Support::Identification::Terminology_ID.new('urine', '')
     173      code_phrase = OpenEHR::RM::Data_Types::Text::Code_Phrase.new('protein',terminology)
     174      urinary_protein = OpenEHR::RM::Data_Types::Text::DV_Coded_Text.new('+', code_phrase)
     175      @dv_ordinal = OpenEHR::RM::Data_Types::Quantity::DV_Ordinal.new(1, urinary_protein)}
    173176    assert_nothing_raised(Exception){
    174177      @dv_quantified = OpenEHR::RM::Data_Types::Quantity::DV_Quantified.new }
     
    182185     assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Ordered, @dv_ordered
    183186     assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Quantified, @dv_quantified
    184      assert_instance_of OpenEHR::RM::Data_Types::Quantity::Date_Time::DV_Interval, @dv_interval
     187     assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Interval, @dv_interval
    185188     assert_instance_of OpenEHR::RM::Data_Types::Quantity::Reference_Range, @reference_range
    186189     
     
    206209    other = OpenEHR::RM::Data_Types::Quantity::DV_Ordered.new
    207210    assert_raise(NotImplementedError){
    208       @dv_ordered.is_strictry_comparable_to?(other)}
     211      @dv_ordered.is_strictly_comparable_to?(other)}
    209212  end
    210213
    211214  def test_reference_range
    212215    assert_equal 'normal', @reference_range.meaning.value
     216   
    213217  end
    214218
     
    226230
    227231  def test_dv_ordinal
    228    
     232    assert_equal 1, @dv_ordinal.value
     233    assert_equal '+', @dv_ordinal.symbol.value
     234    assert_raise(ArgumentError){@dv_ordinal.symbol = nil}
     235    assert_raise(ArgumentError){@dv_ordinal.value = nil}
     236    terminology = OpenEHR::RM::Support::Identification::Terminology_ID.new('urine', '')
     237    code_phrase = OpenEHR::RM::Data_Types::Text::Code_Phrase.new('protein',terminology)
     238    urinary_protein = OpenEHR::RM::Data_Types::Text::DV_Coded_Text.new('++', code_phrase)
     239    assert_nothing_raised(Exception){
     240      @dv_ordinal2 = OpenEHR::RM::Data_Types::Quantity::DV_Ordinal.new(2, urinary_protein)}
     241    assert @dv_ordinal.is_strictly_comparable_to?(@dv_ordinal2)
     242    assert @dv_ordinal < @dv_ordinal2
     243    assert @dv_ordinal2 > @dv_ordinal
     244    @dv_ordinal.value = 3
     245    assert 3, @dv_ordinal.value
     246    assert @dv_ordinal > @dv_ordinal2
     247    assert_raise(ArgumentError){@dv_ordinal.limits = @reference_range}
     248    meaning = OpenEHR::RM::Data_Types::Text::DV_Text.new('limits')
     249    limit_reference_range = OpenEHR::RM::Data_Types::Quantity::Reference_Range.new(meaning)
     250    assert_nothing_raised(Exception){@dv_ordinal.limits = limit_reference_range}
     251    assert_equal 'limits', @dv_ordinal.limits.meaning.value
    229252  end
    230253
Note: See TracChangeset for help on using the changeset viewer.