Changeset 144 for ruby/trunk
- Timestamp:
- Jun 23, 2009, 11:12:16 AM (15 years ago)
- Location:
- ruby/trunk/lib/models
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/models/rm/data_types/quantity.rb
r142 r144 56 56 57 57 class DV_Quantified < DV_Ordered 58 59 def initialize(normal_range=nil, normal_status = nil, 58 attr_reader :magnitude, :accuracy, :magnitude_status 59 60 def initialize(magnitude, magnitude_status=nil, 61 normal_range=nil, normal_status = nil, 60 62 other_reference_ranges=nil) 61 63 super(normal_range, normal_status, other_reference_ranges) 62 end 63 64 def magnitude 65 64 self.magnitude = magnitude 65 self.magnitude_status = magnitude_status 66 66 end 67 67 … … 70 70 end 71 71 72 def valid_magnitude_status(s) 73 72 def magnitude=(magnitude) 73 raise ArgumentError, 'magnitude should not be nil' if magnitude.nil? 74 @magnitude = magnitude 75 end 76 77 def magnitude_status=(magnitude_status) 78 if magnitude_status.nil? 79 @magnitude_status = '=' 80 elsif DV_Quantified.valid_magnitude_status?(magnitude_status) 81 @magnitude_status = magnitude_status 82 else 83 raise ArgumentError, 'magnitude_status invalid' 84 end 85 end 86 87 def accuracy=(accuracy) 88 raise NotImplementedError, 'subclasses need to implemented' 89 end 90 91 def accuracy_unknown? 92 return accuracy.nil? 93 end 94 95 def self.valid_magnitude_status?(s) 96 if s == '=' || s == '>' || s == '<' || s == '<=' || 97 s == '>=' || s == '~' 98 return true 99 else 100 return false 101 end 74 102 end 75 103 end … … 153 181 154 182 class Reference_Range 155 attr_reader :meaning 156 157 def initialize(meaning )183 attr_reader :meaning, :range 184 185 def initialize(meaning, range) 158 186 self.meaning = meaning 187 self.range = range 159 188 end 160 189 … … 164 193 end 165 194 @meaning = meaning 195 end 196 197 def range=(range) 198 if range.nil? 199 raise ArgumentError, 'range should not be nil' 200 end 201 @range = range 202 end 203 204 def is_in_range?(val) 205 return @range.has?(val) 166 206 end 167 207 end -
ruby/trunk/lib/models/tests/rm/test_data_types.rb
r143 r144 165 165 @dv_ordered = OpenEHR::RM::Data_Types::Quantity::DV_Ordered.new } 166 166 assert_nothing_raised(Exception){ 167 @dv_interval = OpenEHR::RM::Data_Types::Quantity::DV_Interval.new(1,10)}168 meaning = OpenEHR::RM::Data_Types::Text::DV_Text.new('normal')169 assert_nothing_raised(Exception){170 @reference_range = OpenEHR::RM::Data_Types::Quantity::Reference_Range.new(meaning)}171 assert_nothing_raised(Exception){172 167 terminology = OpenEHR::RM::Support::Identification::Terminology_ID.new('urine', '') 173 168 code_phrase = OpenEHR::RM::Data_Types::Text::Code_Phrase.new('protein',terminology) 174 169 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)} 176 assert_nothing_raised(Exception){ 177 @dv_quantified = OpenEHR::RM::Data_Types::Quantity::DV_Quantified.new } 178 assert_nothing_raised(Exception){ 179 @dv_amount = OpenEHR::RM::Data_Types::Quantity::DV_Amount.new} 180 assert_nothing_raised(Exception){ 181 @dv_quantity = OpenEHR::RM::Data_Types::Quantity::DV_Quantity.new} 170 @dv_ordinal1 = OpenEHR::RM::Data_Types::Quantity::DV_Ordinal.new(1, urinary_protein) 171 code_phrase = OpenEHR::RM::Data_Types::Text::Code_Phrase.new('protein',terminology) 172 urinary_protein = OpenEHR::RM::Data_Types::Text::DV_Coded_Text.new('+++', code_phrase) 173 @dv_ordinal2 = OpenEHR::RM::Data_Types::Quantity::DV_Ordinal.new(3, urinary_protein)} 174 assert_nothing_raised(Exception){ 175 @dv_interval = OpenEHR::RM::Data_Types::Quantity::DV_Interval.new(@dv_ordinal1, @dv_ordinal2)} 176 meaning = OpenEHR::RM::Data_Types::Text::DV_Text.new('normal') 177 assert_nothing_raised(Exception){ 178 @reference_range = OpenEHR::RM::Data_Types::Quantity::Reference_Range.new(meaning, @dv_interval)} 179 assert_nothing_raised(Exception){ 180 @dv_quantified = OpenEHR::RM::Data_Types::Quantity::DV_Quantified.new(1,'=')} 181 assert_nothing_raised(Exception){ 182 @dv_amount = OpenEHR::RM::Data_Types::Quantity::DV_Amount.new(1)} 183 assert_nothing_raised(Exception){ 184 @dv_quantity = OpenEHR::RM::Data_Types::Quantity::DV_Quantity.new(1)} 182 185 end 183 186 … … 187 190 assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Interval, @dv_interval 188 191 assert_instance_of OpenEHR::RM::Data_Types::Quantity::Reference_Range, @reference_range 189 190 assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Ordinal, @dv_ordinal 192 assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Ordinal, @dv_ordinal1 193 assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Ordinal, @dv_ordinal2 191 194 assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Quantified, @dv_quantified 192 195 assert_instance_of OpenEHR::RM::Data_Types::Quantity::DV_Amount, @dv_amount … … 213 216 214 217 def test_dv_interval 215 assert 218 assert @dv_interval.lower < @dv_interval.upper 216 219 end 217 220 218 221 def test_reference_range 219 assert_equal 'normal', @reference_range.meaning.value 220 end 221 222 def test_dv_quantified 223 224 end 225 226 def test_dv_amount 227 228 end 229 230 def test_dv_ordinal 231 assert_equal 1, @dv_ordinal.value 232 assert_equal '+', @dv_ordinal.symbol.value 233 assert_raise(ArgumentError){@dv_ordinal.symbol = nil} 234 assert_raise(ArgumentError){@dv_ordinal.value = nil} 222 assert_equal 'normal', @reference_range.meaning.value 223 assert_equal 1, @reference_range.range.lower.value 235 224 terminology = OpenEHR::RM::Support::Identification::Terminology_ID.new('urine', '') 236 225 code_phrase = OpenEHR::RM::Data_Types::Text::Code_Phrase.new('protein',terminology) 237 226 urinary_protein = OpenEHR::RM::Data_Types::Text::DV_Coded_Text.new('++', code_phrase) 238 assert_nothing_raised(Exception){ 239 @dv_ordinal2 = OpenEHR::RM::Data_Types::Quantity::DV_Ordinal.new(2, urinary_protein)} 240 assert @dv_ordinal.is_strictly_comparable_to?(@dv_ordinal2) 241 assert @dv_ordinal < @dv_ordinal2 242 assert @dv_ordinal2 > @dv_ordinal 243 @dv_ordinal.value = 3 244 assert 3, @dv_ordinal.value 245 assert @dv_ordinal > @dv_ordinal2 246 assert_raise(ArgumentError){@dv_ordinal.limits = @reference_range} 227 dv_ordinal = OpenEHR::RM::Data_Types::Quantity::DV_Ordinal.new(2, urinary_protein) 228 assert @reference_range.is_in_range?(dv_ordinal) 229 dv_ordinal.value = 6 230 assert !@reference_range.is_in_range?(dv_ordinal) 231 end 232 233 def test_dv_quantified 234 assert_equal 1, @dv_quantified.magnitude 235 assert_equal '=', @dv_quantified.magnitude_status 236 assert !OpenEHR::RM::Data_Types::Quantity::DV_Quantified.valid_magnitude_status?('*') 237 assert OpenEHR::RM::Data_Types::Quantity::DV_Quantified.valid_magnitude_status?('>') 238 assert OpenEHR::RM::Data_Types::Quantity::DV_Quantified.valid_magnitude_status?('<') 239 assert OpenEHR::RM::Data_Types::Quantity::DV_Quantified.valid_magnitude_status?('>=') 240 assert OpenEHR::RM::Data_Types::Quantity::DV_Quantified.valid_magnitude_status?('<=') 241 assert OpenEHR::RM::Data_Types::Quantity::DV_Quantified.valid_magnitude_status?('~') 242 assert_nothing_raised(Exception){@dv_quantified.magnitude = 0} 243 assert_equal 0, @dv_quantified.magnitude 244 assert_nothing_raised(Exception){@dv_quantified.magnitude_status = nil} 245 assert_equal '=', @dv_quantified.magnitude_status 246 end 247 248 def test_dv_amount 249 250 end 251 252 def test_dv_ordinal 253 assert_equal 1, @dv_ordinal1.value 254 assert_equal '+', @dv_ordinal1.symbol.value 255 assert_raise(ArgumentError){@dv_ordinal1.symbol = nil} 256 assert_raise(ArgumentError){@dv_ordinal1.value = nil} 257 assert @dv_ordinal1.is_strictly_comparable_to?(@dv_ordinal2) 258 assert @dv_ordinal1 < @dv_ordinal2 259 assert @dv_ordinal2 > @dv_ordinal1 260 @dv_ordinal1.value = 4 261 assert 4, @dv_ordinal1.value 262 assert @dv_ordinal1 > @dv_ordinal2 263 assert_raise(ArgumentError){@dv_ordinal1.limits = @reference_range} 247 264 meaning = OpenEHR::RM::Data_Types::Text::DV_Text.new('limits') 248 limit_reference_range = OpenEHR::RM::Data_Types::Quantity::Reference_Range.new(meaning )249 assert_nothing_raised(Exception){@dv_ordinal .limits = limit_reference_range}250 assert_equal 'limits', @dv_ordinal .limits.meaning.value265 limit_reference_range = OpenEHR::RM::Data_Types::Quantity::Reference_Range.new(meaning, @dv_interval) 266 assert_nothing_raised(Exception){@dv_ordinal1.limits = limit_reference_range} 267 assert_equal 'limits', @dv_ordinal1.limits.meaning.value 251 268 end 252 269
Note:
See TracChangeset
for help on using the changeset viewer.