Changeset 297 for ruby/trunk/lib
- Timestamp:
- Sep 25, 2009, 12:15:59 PM (15 years ago)
- Location:
- ruby/trunk/lib
- Files:
-
- 11 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/open_ehr/assumed_library_types.rb
r167 r297 3 3 require 'time' 4 4 5 module OpenE hr5 module OpenEHR 6 6 module AssumedLibraryTypes 7 7 class Any < Object … … 12 12 attr_reader :lower, :upper 13 13 14 def initialize(lower, upper, 15 lower_included = nil, upper_included = nil) 16 check_lower_upper(lower, upper) 17 self.lower_included = lower_included 18 self.upper_included = upper_included 14 def initialize(args = {}) 15 check_lower_upper(args[:lower], args[:upper]) 16 self.lower_included = args[:lower_included] 17 self.upper_included = args[:upper_included] 19 18 end 20 19 … … 47 46 48 47 def upper_included=(upper_included) 49 if ( upper == nil) && (upper_included != nil)48 if (@upper.nil?) && (upper_included != nil) 50 49 raise ArgumentError, "upper is not set" 51 50 end … … 58 57 59 58 def has?(value) 60 if ((@lower < value) && (value < @upper) || 61 (@lower_included == true) && (@lower == value) || 62 (@upper_included == true) && (@upper == value)) 59 if ((@lower.nil?||@lower < value||((@lower_included == true) && (@lower == value)))&& 60 (@upper.nil?||value < @upper||((@upper_included == true) && (@upper == value)))) 63 61 true 64 62 else … … 70 68 71 69 def check_lower_upper(lower, upper) 72 if (lower == nil) && (upper == nil)70 if lower.nil? && upper.nil? 73 71 raise ArgumentError, "Either lower or upper must be assigned" 74 72 end … … 83 81 end # end of Interval 84 82 85 class T IME_DEFINITIONS< Any83 class TimeDefinitions < Any 86 84 DAYS_IN_LEAP_YEAR = 366 87 85 DAYS_IN_WEEK = 7 … … 97 95 98 96 def self.valid_year?(year) 99 year >= 097 return !year.nil? && year >= 0 100 98 end 101 99 102 100 def self.valid_day?(y, m, d) 103 Date.valid_date?(y,m,d) and valid_year? y 101 unless y.nil? || m.nil? || d.nil? 102 return Date.valid_date?(y,m,d) 103 end 104 if (y.nil?) || (m.nil? && !d.nil?) 105 return false 106 end 107 return self.valid_year?(y) && self.valid_month?(m) 104 108 end 105 109 106 110 def self.valid_hour?(h,m = nil, s = nil) 111 if h.nil? 112 return false 113 end 107 114 if !m.nil? and !valid_minute?(m) 108 115 return false … … 113 120 (h >= 0 and h < HOURS_IN_DAY) or (h == HOURS_IN_DAY and m == 0 and s == 0) 114 121 end 122 115 123 def self.valid_minute?(mi) 116 124 mi >= 0 and mi < MINUTES_IN_HOUR 117 125 end 126 118 127 def self.valid_second?(s) 119 128 s >= 0 and s < SECONDS_IN_MINUTE 120 129 end 130 121 131 def self.valid_month?(mo) 122 132 mo >= 1 and mo <= MONTH_IN_YEAR 123 133 end 124 end # end of T IME_DEFINITIONS125 126 module ISO8601 _DATE_MODULE134 end # end of TimeDefinitions 135 136 module ISO8601DateModule 127 137 attr_reader :year, :month, :day 138 128 139 def year=(year) 129 raise ArgumentError, "Year is not valid" unless ISO8601_DATE.valid_year?(year) 140 unless ISO8601Date.valid_year?(year) 141 raise ArgumentError, "Year is not valid" 142 end 130 143 @year = year 131 144 end 145 132 146 def month=(month) 133 raise ArgumentError, "Month is not valid" unless month.nil? or ISO8601 _DATE.valid_month?(month)147 raise ArgumentError, "Month is not valid" unless month.nil? or ISO8601Date.valid_month?(month) 134 148 @month = month 135 149 end 136 150 137 151 def day=(day) 138 raise ArgumentError, "Day is not valid" unless day.nil? or ISO8601_DATE.valid_day?(@year, @month, day) 152 153 raise ArgumentError, "Day is not valid" unless day.nil? or ISO8601Date.valid_day?(@year, @month, day) 139 154 @day = day 140 155 end … … 176 191 end 177 192 178 class ISO8601 _DATE < TIME_DEFINITIONS179 include ISO8601 _DATE_MODULE193 class ISO8601Date < TimeDefinitions 194 include ISO8601DateModule 180 195 def initialize(string) 181 196 /(\d{4})(?:-(\d{2})(?:-(\d{2})?)?)?/ =~ string … … 207 222 end # end of ISO8601_DATE 208 223 209 module ISO8601 _TIME_MODULE224 module ISO8601TimeModule 210 225 attr_reader :hour, :minute, :second, :fractional_second, :timezone 211 226 212 227 def hour=(hour) 213 raise ArgumentError, "hour is not valid" if !ISO8601_TIME.valid_hour?(hour, @minute, @second) 228 unless ISO8601Time.valid_hour?(hour, @minute, @second) 229 raise ArgumentError, "hour is not valid" 230 end 214 231 @hour = hour 215 232 end … … 220 237 221 238 def minute=(minute) 222 raise ArgumentError, "minute is not valid" if !minute.nil? and !ISO8601 _TIME.valid_minute?(minute)239 raise ArgumentError, "minute is not valid" if !minute.nil? and !ISO8601Time.valid_minute?(minute) 223 240 @minute = minute 224 241 end … … 230 247 def second=(second) 231 248 raise ArgumentError, "minute not defined" if @minute.nil? and !second.nil? 232 raise ArgumentError, "second is not valid" if !second.nil? and !ISO8601 _TIME.valid_second?(second)249 raise ArgumentError, "second is not valid" if !second.nil? and !ISO8601Time.valid_second?(second) 233 250 @second = second 234 251 end … … 237 254 raise ArgumentError, "minute not defined" if minute_unknown? and !fractional_second.nil? 238 255 raise ArgumentError, "second not defined" if second_unknown? and !fractional_second.nil? 239 raise ArgumentError, "fractional second should be lower than 1.0" if !fractional_second.nil? and fractional_second >= 1.0 256 if !fractional_second.nil? && 257 (fractional_second < 0.0 || fractional_second >= 1.0) 258 raise ArgumentError, 'fractional second should be between 0.0 - 1.0' 259 end 240 260 @fractional_second = fractional_second 241 261 end 242 262 243 263 def has_fractional_second? 244 if @fractional_second.nil? 245 return false 246 else 247 return true 248 end 264 return !@fractional_second.nil? 249 265 end 250 266 … … 291 307 end 292 308 293 class ISO8601 _TIME < TIME_DEFINITIONS294 include ISO8601 _TIME_MODULE309 class ISO8601Time < TimeDefinitions 310 include ISO8601TimeModule 295 311 def initialize(string) 296 312 /(\d{2}):?(\d{2})?(:?)(\d{2})?((\.|,)(\d+))?(Z|([+-](\d{2}):?(\d{2})))?/ =~ string … … 321 337 end 322 338 end 339 323 340 def self.valid_iso8601_time?(s) 324 if / (\d{2}):?(\d{2})?(:?)(\d{2})?((\.|,)(\d+))?(Z|([+-](\d{2}):?(\d{2})))?/ =~ s341 if /^(\d{2}):?(\d{2})?(:?)(\d{2})?((\.|,)(\d+))?(Z|([+-](\d{2}):?(\d{2})))?$/ =~ s 325 342 # ISO 8601 regular expression by H. Yuki 326 343 # http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2FW3C%E5%BD%A2%E5%BC%8F%E3%81%AE%E6%97%A5%E6%99%82%E3%81%AE%E8%A7%A3%E6%9E%90 … … 352 369 return false 353 370 end 354 else355 return false356 371 end 357 372 end … … 363 378 end # end of ISO8601_TIME 364 379 365 module ISO8601 _DATE_TIME_MODULE366 include ISO8601 _DATE_MODULE, ISO8601_TIME_MODULE380 module ISO8601DateTimeModule 381 include ISO8601DateModule, ISO8601TimeModule 367 382 def as_string 368 383 if (!@year.nil? and !@month.nil? and !@day.nil?) … … 392 407 end 393 408 394 class ISO8601 _DATE_TIME < ISO8601_DATE395 include ISO8601 _DATE_TIME_MODULE409 class ISO8601DateTime < ISO8601Date 410 include ISO8601DateTimeModule 396 411 def initialize(string) 397 /(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|([+-]\d{2}):?(\d{2}))?)?)?)?/ =~ string 398 if $1.empty? 412 unless /(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|([+-]\d{2}):?(\d{2}))?)?)?)?/ =~ string 399 413 raise ArgumentError, 'format invalid' 400 414 else … … 439 453 end 440 454 441 class ISO8601 _TIMEZONE455 class ISO8601Timezone 442 456 attr_accessor :sign, :hour, :minute 443 457 458 def initialize(string) 459 unless /(Z|(([+-])(\d{2}):?(\d{2})))/ =~ string 460 raise ArgumentError, 'invaild format' 461 end 462 if $1 == 'Z' 463 @sign, @hour, @minute = +1, 0, 0 464 else 465 @sign, @hour, @minute = ($3+'1').to_i, $4.to_i , $5.to_i 466 end 467 end 468 444 469 def is_gmt? 445 @sign == "+1"and @hour == 0 and @minute == 0470 @sign == +1 and @hour == 0 and @minute == 0 446 471 end 447 472 448 473 def as_string 449 if @sign == "+1"474 if @sign == +1 450 475 s = "+" 451 elsif @sign == "-1"476 elsif @sign == -1 452 477 s = "-" 453 478 end 454 sprintf(" Z%s%02d%02d", s, @hour, @minute)455 end 456 end # end of ISO8601 _TIMEZONE457 458 module ISO8601 _DURATION_MODULE479 sprintf("%s%02d%02d", s, @hour, @minute) 480 end 481 end # end of ISO8601Timezone 482 483 module ISO8601DurationModule 459 484 attr_reader :years, :months, :weeks, :days 460 485 attr_reader :hours, :minutes, :seconds, :fractional_second … … 546 571 end 547 572 end 548 class ISO8601_DURATION < TIME_DEFINITIONS 549 include ISO8601_DURATION_MODULE 573 574 class ISO8601Duration < TimeDefinitions 575 include ISO8601DurationModule 550 576 def initialize(str) 551 577 /^P((\d+)Y)?((\d+)M)?((\d+)W)?((\d)D)?(T((\d+)H)?((\d+)M)?((\d+)(\.\d+)?S)?)?$/ =~ str … … 559 585 self.fractional_second = $16.to_f 560 586 end 561 end # end of ISO8601 _DURATION587 end # end of ISO8601Duration 562 588 end # end of Assumed_Types 563 589 end # end of OpenEHR -
ruby/trunk/lib/open_ehr/rm.rb
r167 r297 9 9 10 10 # OpenEHR::RM 11 module OpenE hr11 module OpenEHR 12 12 13 13 autoload :Assumed_Library_Types, "assumed_library_types.rb" -
ruby/trunk/lib/open_ehr/rm/common/archetyped.rb
r167 r297 2 2 # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109318114715_211173_0Report.html 3 3 # Ticket refs #65 4 module OpenE hr4 module OpenEHR 5 5 module RM 6 6 module Common … … 17 17 attr_accessor :parent 18 18 19 def initialize( parent = nil)20 @parent = parent19 def initialize(args = { }) 20 self.parent = args[:parent] 21 21 end 22 22 23 23 def item_at_path(path) 24 raise NotImplement Error, "item_at_path must be implemented"24 raise NotImplementedError, "item_at_path must be implemented" 25 25 end 26 26 27 27 def items_at_path(path) 28 raise NotImplement Error, "items_at_path must be implemented"28 raise NotImplementedError, "items_at_path must be implemented" 29 29 end 30 30 31 31 def path_exists?(path) 32 raise NotImplement Error, "path_exists? must be implemented"32 raise NotImplementedError, "path_exists? must be implemented" 33 33 end 34 34 35 35 def path_of_item(item) 36 raise NotImplement Error, "path_of_item must be implemented"36 raise NotImplementedError, "path_of_item must be implemented" 37 37 end 38 38 39 def path_unique (path)40 raise NotImplement Error, "path_uniquemust be implemented"39 def path_unique?(path) 40 raise NotImplementedError, "path_unique? must be implemented" 41 41 end 42 42 end … … 48 48 49 49 def initialize(args = { }) 50 super(args [:parent])50 super(args) 51 51 self.archetype_node_id = args[:archetype_node_id] 52 52 self.name = args[:name] … … 58 58 59 59 def archetype_node_id=(archetype_node_id) 60 raise ArgumentError, 'archetype_node_id should not be nil' if archetype_node_id.nil? 60 if archetype_node_id.nil? or archetype_node_id.empty? 61 raise ArgumentError, 'archetype_node_id should not be nil' 62 end 61 63 @archetype_node_id = archetype_node_id 62 64 end -
ruby/trunk/lib/open_ehr/rm/data_types/basic.rb
r167 r297 2 2 # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109067591791_562382_3151Report.html 3 3 # Ticket refs #52 4 module OpenE hr4 module OpenEHR 5 5 module RM 6 6 module DataTypes … … 10 10 11 11 class DataValue 12 include OpenEhr::RM::Support::Definition::BasicDefinition 12 include OpenEHR::RM::Support::Definition::BasicDefinition 13 attr_accessor :value 14 alias :v :value 15 16 def initialize(args = {}) 17 self.value = args[:value] 18 end 19 20 def ==(other) 21 return self.value == other.value 22 end 13 23 end 14 24 15 25 class DvBoolean < DataValue 16 def initialize( value)17 s elf.value = value26 def initialize(args) 27 super(args) 18 28 end 29 19 30 def value=(value) 20 31 raise ArgumentError, "value must not be nil" if value.nil? … … 25 36 end 26 37 end 38 27 39 def value? 28 40 @value == true … … 31 43 32 44 class DvState < DataValue 33 attr_reader : value45 attr_reader :is_terminal 34 46 35 def initialize( value, is_terminal)36 s elf.value=value37 self.is_terminal =is_terminal47 def initialize(args) 48 super(args) 49 self.is_terminal = args[:is_terminal] 38 50 end 51 39 52 def value=(v) 40 53 raise ArgumentError, "value should not be nil" if v.nil? 41 54 @value = v 42 55 end 56 43 57 def is_terminal? 44 58 @is_terminal 45 59 end 60 46 61 def is_terminal=(s) 47 62 raise ArgumentError, "terminal should not be nil" if s.nil? … … 50 65 end # end of DvState 51 66 52 class DvIdentifier 53 attr_accessor :issuer, :assigner, :id, :type 54 def initialize(assigner, id, issuer, type) 55 if assigner.nil? or assigner.empty?\ 56 or id.nil? or id.empty? or issuer.nil? or issuer.empty?\ 57 or type.nil? or type.empty? 58 raise ArgumentError, "invalid argument" 67 class DvIdentifier < DataValue 68 attr_reader :issuer, :assigner, :id, :type 69 70 def initialize(args = {}) 71 self.issuer = args[:issuer] 72 self.assigner = args[:assigner] 73 self.id = args[:id] 74 self.type = args[:type] 75 end 76 77 def issuer=(issuer) 78 if issuer.nil? or issuer.empty? 79 raise ArgumentError, 'issuer is mandatory' 59 80 end 60 81 @issuer = issuer 82 end 83 84 def assigner=(assigner) 85 if assigner.nil? or assigner.empty? 86 raise ArgumentError, 'assigner is mandatory' 87 end 61 88 @assigner = assigner 89 end 90 91 def id=(id) 92 if id.nil? or id.empty? 93 raise ArgumentError, 'id is manadtory' 94 end 62 95 @id = id 96 end 97 98 def type=(type) 99 if type.nil? or type.empty? 100 raise ArgumentError, 'type is mandatory' 101 end 63 102 @type = type 64 103 end -
ruby/trunk/lib/open_ehr/rm/data_types/encapsulated.rb
r167 r297 5 5 require 'locale/info' 6 6 7 module OpenE hr7 module OpenEHR 8 8 module RM 9 9 module DataTypes 10 10 module Encapsulated 11 class DvEncapsulated < OpenEhr::RM::DataTypes::Basic::DataValue 12 attr_reader :language, :charset, :size 13 def initialize(charset, language, size) 14 self.charset = charset 15 self.language = language 16 self.size = size 11 class DvEncapsulated < OpenEHR::RM::DataTypes::Basic::DataValue 12 attr_reader :language, :charset 13 14 def initialize(args = {}) 15 super(args) 16 self.charset = args[:charset] 17 self.language = args[:language] 17 18 end 18 19 19 def size=(size) 20 if size < 0 21 raise ArgumentError, "negative size" 22 end 23 @size = size 20 def size 21 @value.size 24 22 end 25 23 26 24 def language=(language) 27 if language.nil? ||25 if !language.nil? && 28 26 !Locale::Info.language_code?(language.code_string) 29 27 raise ArgumentError, 'invalid language code' … … 33 31 34 32 def charset=(charset) 35 if charset.nil? ||!charset_valid?(charset.code_string)33 if !charset.nil? && !charset_valid?(charset.code_string) 36 34 raise ArgumentError, 'invalid charset' 37 35 end … … 40 38 41 39 private 42 def size_positive43 raise ArgumentError, "size must be positive" if size < 044 end45 40 46 41 def charset_valid?(charset) 47 42 result = false 48 open(' rm/data_types/charset.lst') do |file|43 open('lib/open_ehr/rm/data_types/charset.lst') do |file| 49 44 while line = file.gets 50 45 if charset == line.chomp … … 63 58 attr_accessor :uri, :data, :compression_algorithm, 64 59 :integrity_check, :integrity_check_algorithm, :alternate_text 65 def initialize(charset, language, size, media_type, uri=nil, 66 data=nil, compression_algorithm=nil, 67 integrity_check=nil, integrity_check_algorithm=nil, 68 alternate_text=nil) 69 super(charset, language, size) 70 self.media_type = media_type 71 @uri = uri 72 @data = data 73 @compression_algorithm = compression_algorithm 74 @integrity_check = integrity_check 75 @integrity_check_algorithm = integrity_check_algorithm 76 @alternate_text = alternate_text 60 61 def initialize(args = {}) 62 super(args) 63 self.media_type = args[:media_type] 64 self.uri = args[:uri] 65 self.data = args[:data] 66 self.compression_algorithm = args[:compression_algorithm] 67 self.integrity_check = args[:integrity_check] 68 self.integrity_check_algorithm = args[:integrity_check_algorithm] 69 self.alternate_text = args[:alternate_text] 77 70 end 71 78 72 def media_type=(media_type) 79 73 if media_type.code_string.nil? … … 85 79 86 80 class DvParsable < DvEncapsulated 87 attr_reader :value, :formalism 88 def initialize(charset, language, size, formalism, value) 89 super(charset, language, size) 90 self.formalism = formalism 91 self.value = value 92 end 81 attr_reader :formalism 93 82 94 def value=(value)95 raise ArgumentError, 'value must not be nil' if value.nil?96 @value = value83 def initialize(args = {}) 84 super(args) 85 self.formalism = args[:formalism] 97 86 end 98 87 99 88 def formalism=(formalism) 100 if formalism.nil? 101 raise ArgumentError, "formalism must not be nil" 102 elsif formalism.empty? 103 raise ArgumentError, "formalism must nto be empty" 89 if formalism.nil? || formalism.empty? 90 raise ArgumentError, 'formalism is mandatory' 104 91 end 105 92 @formalism = formalism -
ruby/trunk/lib/open_ehr/rm/data_types/quantity.rb
r167 r297 3 3 # Ticket refs #50 4 4 require 'assumed_library_types' 5 module OpenE hr5 module OpenEHR 6 6 module RM 7 7 module DataTypes … … 10 10 autoload :Date_Time, "rm/data_types/quantity/date_time.rb" 11 11 12 class DvOrdered < OpenE hr::RM::DataTypes::Basic::DataValue12 class DvOrdered < OpenEHR::RM::DataTypes::Basic::DataValue 13 13 include Comparable 14 14 attr_accessor :normal_range, :other_refference_ranges, :normal_status … … 51 51 end 52 52 53 class DvInterval < OpenE hr::AssumedLibraryTypes::Interval53 class DvInterval < OpenEHR::AssumedLibraryTypes::Interval 54 54 55 55 end -
ruby/trunk/lib/open_ehr/rm/data_types/text.rb
r167 r297 2 2 # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109067605961_209522_3179Report.html 3 3 # Ticket refs #48 4 module OpenE hr4 module OpenEHR 5 5 module RM 6 6 module DataTypes … … 62 62 end # of CodePhrase 63 63 64 class DvText < OpenE hr::RM::DataTypes::Basic::DataValue64 class DvText < OpenEHR::RM::DataTypes::Basic::DataValue 65 65 attr_reader :value, :formatting, :hyperlink, :mappings 66 66 attr_reader :language, :encoding … … 146 146 end 147 147 148 class DvParagraph < OpenE hr::RM::DataTypes::Basic::DataValue148 class DvParagraph < OpenEHR::RM::DataTypes::Basic::DataValue 149 149 attr_reader :items 150 150 def initialize(items) -
ruby/trunk/lib/open_ehr/rm/data_types/uri.rb
r167 r297 4 4 5 5 require 'uri' 6 #require 'uri/generic' 7 module U ri8 class E hr< ::URI::Generic6 7 module URI 8 class EHR < ::URI::Generic 9 9 COMPONENT = [ 10 10 :scheme, :path, :fragment, :query 11 11 ].freeze 12 12 13 def self.build(args) 13 14 tmp = Util::make_components_hash(self, args) 14 15 super(tmp) 15 16 end 17 16 18 def initialize(*arg) 17 19 super(*arg) 18 20 end 21 19 22 def self.use_registry 20 23 true 21 24 end 22 25 end 23 @@schemes['EHR'] = E hr26 @@schemes['EHR'] = EHR 24 27 end 25 28 26 module OpenE hr29 module OpenEHR 27 30 module RM 28 31 module DataTypes 29 32 module Uri 30 class DvUri < OpenE hr::RM::DataTypes::Basic::DataValue31 def initialize( value)32 self.value = value33 class DvUri < OpenEHR::RM::DataTypes::Basic::DataValue 34 def initialize(args = {}) 35 self.value = args[:value] 33 36 end 37 38 def value 39 @value.to_s 40 end 41 34 42 def fragment_id 35 43 @value.fragment 36 44 end 45 37 46 def path 38 47 @value.path 39 48 end 49 40 50 def query 41 51 @value.query 42 52 end 53 43 54 def scheme 44 55 @value.scheme 45 56 end 57 46 58 def value=(value) 47 59 raise ArgumentError, "value is empty" if value.nil? 48 60 parse(value) 49 61 end 50 def value 51 @value.to_s 52 end 62 53 63 private 64 54 65 def parse(value) 55 66 @value = ::URI.parse(value) … … 61 72 super(value) 62 73 end 74 63 75 def value=(value) 64 76 raise ArgumentError, "scheme must be ehr" if !(value =~ /^ehr/i) 65 parse(value)77 @value = parse(value) 66 78 end 67 79 end # of DV_EHR_URI -
ruby/trunk/lib/open_ehr/rm/security.rb
r167 r297 2 2 # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_5_1_76d0249_1155650882301_836618_5314Report.html 3 3 # Ticket refs #41 4 module OpenE hr4 module OpenEHR 5 5 module RM 6 6 module Security -
ruby/trunk/lib/open_ehr/rm/support/definition.rb
r167 r297 1 module OpenE hr1 module OpenEHR 2 2 module RM 3 3 module Support -
ruby/trunk/lib/open_ehr/rm/support/identification.rb
r167 r297 2 2 # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109331021343_528780_2066Report.html 3 3 # Ticket refs #39 4 module OpenE hr4 module OpenEHR 5 5 module RM 6 6 module Support 7 7 module Identification 8 class ObjectI d8 class ObjectID 9 9 attr_reader :value 10 10 11 def initialize( value)12 self.value= value11 def initialize(args = {}) 12 self.value=args[:value] 13 13 end 14 14 … … 17 17 @value = value 18 18 end 19 19 20 def ==(object_id) 20 @value == object_id.value21 self.value == object_id.value 21 22 end 22 23 end # of ObjectID … … 25 26 attr_reader :namespace, :type, :id 26 27 27 def initialize( namespace, type, id)28 self.namespace = namespace29 self.type = type30 self.id = id28 def initialize(args = {}) 29 self.namespace = args[:namespace] 30 self.type = args[:type] 31 self.id = args[:id] 31 32 end 32 33 33 34 def namespace=(namespace) 34 raise ArgumentError if namespace.nil? or namespace.empty? or !(/([a-z]|[A-Z]).*/ =~ namespace) # error original is =~ #([a-z][A-Z])([a-z]|[A-Z]|\s|[0-9]|[_-\:\/\&\+\?])*/ 35 if namespace.nil? or namespace.empty? or 36 !(/^[a-zA-Z][a-zA-Z0-9_\-\:\/\&\+\?]*$/ =~ namespace) 37 raise ArgumentError 38 end 35 39 @namespace = namespace 36 40 end … … 47 51 end 48 52 49 class ArchetypeId < ObjectId 50 attr_reader :domain_concept, :rm_name, :rm_entity, :rm_originator, :specialisation, :version_id 51 52 def initialize(value, domain_concept, rm_name, rm_entity, rm_originator, specialisation, version_id) 53 super(value) 54 self.domain_concept = domain_concept 55 self.rm_name = rm_name 56 self.rm_entity = rm_entity 57 self.rm_originator = rm_originator 58 self.specialisation = specialisation 59 self.version_id = version_id 53 class ArchetypeID < ObjectID 54 attr_reader :rm_originator, :rm_name, :rm_entity, 55 :concept_name, :specialisation, :version_id 56 57 def initialize(args = {}) 58 if args[:value].nil? 59 self.rm_originator = args[:rm_originator] 60 self.rm_name = args[:rm_name] 61 self.rm_entity = args[:rm_entity] 62 self.concept_name = args[:concept_name] 63 self.version_id = args[:version_id] 64 self.specialisation = args[:specialisation] 65 else 66 super(args) 67 end 68 end 69 70 def value=(value) 71 if /([a-zA-Z]\w+)-([a-zA-Z]\w+)-([a-zA-Z]\w+)\.([a-zA-Z]\w+)(-([a-zA-Z]\w+))?\.(v[1-9]\d*)/ =~ value 72 self.rm_originator = $1 73 self.rm_name = $2 74 self.rm_entity = $3 75 self.concept_name = $4 76 self.specialisation = $6 77 self.version_id = $7 78 else 79 raise ArgumentError, 'invalid archetype id form' 80 end 81 end 82 83 def qualified_rm_entity 84 return @rm_originator + '-' + @rm_name + '-' + @rm_entity 85 end 86 87 def domain_concept 88 if @specialisation.nil? 89 return @concept_name 90 else 91 return @concept_name + '-' + @specialisation 92 end 93 end 94 95 def value 96 return self.qualified_rm_entity + '.' + 97 self.domain_concept + '.' + @version_id 98 end 99 100 def concept_name=(concept_name) 101 if concept_name.nil? or concept_name.empty? 102 raise ArgumentError, 'concept_name is mandatory' 103 end 104 @concept_name = concept_name 60 105 end 61 106 62 107 def domain_concept=(domain_concept) 63 raise ArgumentError, "domain concept not valid" if domain_concept.nil? or domain_concept.empty? 64 @domain_concept = domain_concept 108 if domain_concept.nil? or domain_concept.empty? 109 raise ArgumentError, "domain concept not valid" 110 end 111 if /([a-zA-Z]\w+)(-([a-zA-Z]\w))?/ =~ domain_concept 112 self.concept_name = $1 113 self.specialisation = $3 114 else 115 raise ArgumentError, 'invalid domain concept form' 116 end 65 117 end 66 118 … … 71 123 72 124 def rm_entity=(rm_entity) 73 raise ArgumentError, "rm_entity not valid" if rm_entity.nil? or rm_entity.empty? 125 if rm_entity.nil? or rm_entity.empty? 126 raise ArgumentError, "rm_entity is mandatory" 127 end 74 128 @rm_entity = rm_entity 75 129 end 76 130 77 131 def rm_originator=(rm_originator) 78 raise ArgumentError, "rm_originator not valid" if rm_originator.nil? or rm_originator.empty? 132 if rm_originator.nil? or rm_originator.empty? 133 raise ArgumentError, "rm_originator not valid" 134 end 79 135 @rm_originator = rm_originator 80 136 end 81 137 82 138 def specialisation=(specialisation) 83 raise ArgumentError, "rm_specialisation not valid" if specialisation.nil? or specialisation.empty? 139 if !specialisation.nil? and specialisation.empty? 140 raise ArgumentError, "rm_specialisation not valid" 141 end 84 142 @specialisation = specialisation 85 143 end 144 86 145 def version_id=(version_id) 87 146 raise ArgumentError, "version_id not valid" if version_id.nil? or version_id.empty? … … 90 149 end 91 150 92 class TerminologyI d < ObjectId151 class TerminologyID < ObjectID 93 152 attr_reader :name, :version_id 94 153 95 def initialize(value) 96 super(value) 154 def initialize(args = {}) 155 if args[:value].nil? 156 self.name = args[:name] 157 self.version_id = args[:version_id] 158 else 159 super(args) 160 end 97 161 end 98 162 … … 108 172 def value=(value) 109 173 raise ArgumentError, "value not valid" if value.nil? or value.empty? 110 if /(.*)\((.*)\)$/ =~ value 111 @name = $1 112 @version_id = $2 113 else 114 @name = value 115 @version_id = '' 116 end 117 @value = value 174 if /(.*)\((.*)\)/ =~ value 175 self.name = $1 176 self.version_id = $2 177 else 178 self.name = value 179 self.version_id = '' 180 end 118 181 end 119 182 … … 124 187 125 188 def version_id=(version_id) 126 raise ArgumentError, "version_id not valid" if version_id.nil? 127 @version_id = version_id 189 if version_id.nil? 190 @version_id = '' 191 else 192 @version_id = version_id 193 end 128 194 end 129 195 end # of Terminology_ID 130 196 131 class GenericI d < ObjectId197 class GenericID < ObjectID 132 198 attr_reader :scheme 133 199 134 def initialize(value, scheme) 200 def initialize(args) 201 super(args) 202 self.scheme = args[:scheme] 203 end 204 205 def scheme=(scheme) 206 if scheme.nil? or scheme.empty? 207 raise ArgumentError, "scheme not valid" 208 end 209 @scheme = scheme 210 end 211 end # of Generic_ID 212 213 class TemplateID < ObjectID 214 215 end 216 217 class UIDBasedID < ObjectID 218 attr_reader :root, :extension 219 220 def initialize(args = {}) 221 super(args) 222 end 223 224 def value=(value) 135 225 super(value) 136 self.scheme = scheme 137 end 138 139 def scheme=(scheme) 140 raise ArgumentError, "scheme not valid" if scheme.nil? or scheme.empty? 141 @scheme = scheme 142 end 143 end # of Generic_ID 144 145 class TemplateId < ObjectId 146 147 end 148 149 class UidBasedId < ObjectId 150 def initialize(value) 151 super(value) 152 end 153 154 def extension 155 if self.has_extension? 156 @value[/::.*/][2..-1] 157 else 158 '' 226 if /(\S+)::(\S+)/ =~ value 227 @root = UID.new(:value => $1) 228 @extension = $2 229 else 230 @root = UID.new(:value => value) 231 @extension = '' 159 232 end 160 233 end 161 234 162 235 def has_extension? 163 @value.include? '::' 164 end 165 166 def root 167 if self.has_extension? 168 @value[/.*::/][0..-3] 169 else 170 @value 171 end 172 end 173 end 174 175 class ObjectVersionId < UidBasedId 236 return !@extension.empty? 237 end 238 end 239 240 class ObjectVersionID < UIDBasedID 176 241 attr_reader :object_id, :creating_system_id, :version_tree_id 177 242 178 def initialize(value) 179 super(value) 180 end 181 182 def value=(value) 183 super(value) 184 if /^(\w+)::(\w+)::((\d|\.)+)$/ =~ value 185 self.object_id = Uid.new($1) 186 self.creating_system_id = Uid.new($2) 187 self.version_tree_id = VersionTreeId.new($3) 243 def initialize(args= {}) 244 super(args) 245 end 246 247 def value=(value) 248 if /^(\S+)::(\S+)::((\d|\.)+)$/ =~ value 249 self.object_id = UID.new(:value => $1) 250 self.creating_system_id = UID.new(:value => $2) 251 self.version_tree_id = VersionTreeID.new(:value => $3) 188 252 else 189 253 raise ArgumentError, 'invalid format' 190 254 end 255 end 256 257 def value 258 return @object_id.value + '::' + 259 @creating_system_id.value + '::' + 260 @version_tree_id.value 191 261 end 192 262 … … 216 286 217 287 class LocatableRef < ObjectRef 218 attr_reader : namespace, :type, :id, :path219 220 def initialize( namespace, type, id, path)221 super( namespace, type, id)222 self.path = path288 attr_reader :path 289 290 def initialize(args = {}) 291 super(args) 292 self.path = args[:path] 223 293 end 224 294 … … 234 304 235 305 class PartyRef < ObjectRef 236 237 306 def type=(type) 238 parties = ['PERSON', 'ORGANISATION', 'GROUP', 'AGENT', 'ROLE','PARTY', 'ACTOR']307 parties = %w[PERSON ORGANISATION GROUP AGENT ROLE PARTY ACTOR] 239 308 raise ArgumentError, 'type invalid' unless parties.include? type 240 309 @type = type … … 243 312 244 313 class AccessGroupRef < ObjectRef 314 def initialize(args = {}) 315 super(args) 316 @type = 'ACCESS_GROUP' 317 end 318 245 319 def type=(type) 246 raise ArgumentError, 'type invalid' unless type == 'ACCESS_GROUP' 247 @type = type 248 end 249 end 250 251 class HierObjectId < UidBasedId 252 253 end 254 255 class VersionTreeId 256 attr_reader :value, :trunk_version, :branch_number, :branch_version 257 258 def initialize(value) 259 self.value = value 320 end 321 end 322 323 class HierObjectID < UIDBasedID 324 325 end 326 327 class VersionTreeID 328 attr_reader :trunk_version, :branch_number, :branch_version 329 330 def initialize(args = {}) 331 self.value = args[:value] 260 332 end 261 333 262 334 def value=(value) 263 335 raise ArgumentError, 'value invalid' if value.nil? or value.empty? 264 @trunk_version = @branch_number = @branch_version = nil265 336 (trunk_version, branch_number, branch_version) = value.split '.' 266 337 self.trunk_version = trunk_version … … 269 340 end 270 341 271 def trunk_version=(trunk_version) 272 raise ArgumentError, 'trunk_version invalid' if trunk_version.nil? and !trunk_version.to_i >= 1 273 @trunk_version = trunk_version 274 set_value 275 end 276 277 def branch_number=(branch_number) 278 raise ArgumentError, 'branch number invalid' unless branch_number.nil? or branch_number.to_i >= 1 279 @branch_number = branch_number 280 set_value 281 end 282 283 def branch_version=(branch_version) 284 raise ArgumentError, 'branch version invalid' if (!branch_version.nil? and !( branch_version.to_i >= 1)) or (!branch_version.nil? and @branch_number.nil?) 285 @branch_version = branch_version 286 set_value 287 end 288 def is_branch? 289 !@branch_version.nil? and !@branch_number.nil? 290 end 291 292 def is_first? 293 trunk_version == '1' 294 end 295 296 private 297 def set_value 342 def value 298 343 @value = trunk_version 299 344 @value = @value + '.' + @branch_number unless @branch_number.nil? 300 345 @value = @value + '.' + @branch_version unless @branch_version.nil? 301 end 302 end 303 304 class Uid 346 return @value 347 end 348 349 def trunk_version=(trunk_version) 350 if trunk_version.nil? || (trunk_version.to_i < 1) 351 raise ArgumentError, 'trunk_version invalid' 352 end 353 @trunk_version = trunk_version 354 end 355 356 def branch_number=(branch_number) 357 unless branch_number.nil? or branch_number.to_i >= 1 358 raise ArgumentError, 'branch number invalid' 359 end 360 @branch_number = branch_number 361 end 362 363 def branch_version=(branch_version) 364 if (!branch_version.nil? and !(branch_version.to_i >= 1)) or 365 (!branch_version.nil? and @branch_number.nil?) 366 raise ArgumentError, 'branch version invalid' 367 end 368 @branch_version = branch_version 369 end 370 371 def is_branch? 372 !@branch_version.nil? and !@branch_number.nil? 373 end 374 375 def is_first? 376 trunk_version == '1' 377 end 378 end 379 380 class UID 305 381 attr_reader :value 306 382 307 def initialize( value)308 self.value = value383 def initialize(args = {}) 384 self.value = args[:value] 309 385 end 310 386 … … 315 391 end 316 392 317 class U uid < Uid318 319 end 320 321 class InternetI d <Uid393 class UUID < UID 394 395 end 396 397 class InternetID <UID 322 398 323 399 end 324 400 325 class IsoO id <Uid401 class IsoOID <UID 326 402 327 403 end
Note:
See TracChangeset
for help on using the changeset viewer.