Ignore:
Timestamp:
Sep 25, 2009, 12:15:59 PM (15 years ago)
Author:
KOBAYASHI, Shinji
Message:

hand merge

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/open_ehr/rm/support/identification.rb

    r167 r297  
    22# http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109331021343_528780_2066Report.html
    33# Ticket refs #39
    4 module OpenEhr
     4module OpenEHR
    55  module RM
    66    module Support
    77      module Identification
    8         class ObjectId
     8        class ObjectID
    99          attr_reader :value
    1010
    11           def initialize(value)
    12             self.value=value
     11          def initialize(args = {})
     12            self.value=args[:value]
    1313          end
    1414
     
    1717            @value = value           
    1818          end
     19
    1920          def ==(object_id)
    20             @value == object_id.value
     21            self.value == object_id.value
    2122          end
    2223        end # of ObjectID
     
    2526          attr_reader :namespace, :type, :id
    2627
    27           def initialize(namespace, type, id)
    28             self.namespace = namespace
    29             self.type = type
    30             self.id = id
     28          def initialize(args = {})
     29            self.namespace = args[:namespace]
     30            self.type = args[:type]
     31            self.id = args[:id]
    3132          end
    3233
    3334          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
    3539            @namespace = namespace
    3640          end
     
    4751        end
    4852
    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
    60105          end
    61106
    62107          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
    65117          end
    66118
     
    71123
    72124          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
    74128            @rm_entity = rm_entity
    75129          end
    76130
    77131          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
    79135            @rm_originator = rm_originator
    80136          end
    81137
    82138          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
    84142            @specialisation = specialisation
    85143          end
     144
    86145          def version_id=(version_id)
    87146            raise ArgumentError, "version_id not valid" if version_id.nil? or version_id.empty?
     
    90149        end
    91150
    92         class TerminologyId < ObjectId
     151        class TerminologyID < ObjectID
    93152          attr_reader :name, :version_id
    94153
    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
    97161          end
    98162
     
    108172          def value=(value)
    109173            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
    118181          end
    119182
     
    124187
    125188          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
    128194          end
    129195        end # of Terminology_ID
    130196
    131         class GenericId < ObjectId
     197        class GenericID < ObjectID
    132198          attr_reader :scheme
    133199
    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)
    135225            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 = ''
    159232            end
    160233          end
    161234
    162235          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
    176241          attr_reader :object_id, :creating_system_id, :version_tree_id
    177242
    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)
    188252            else
    189253              raise ArgumentError, 'invalid format'
    190254            end
     255          end
     256
     257          def value
     258            return @object_id.value + '::' +
     259              @creating_system_id.value + '::' +
     260              @version_tree_id.value
    191261          end
    192262
     
    216286
    217287        class LocatableRef < ObjectRef
    218           attr_reader :namespace, :type, :id, :path
    219 
    220           def initialize(namespace, type, id, path)
    221             super(namespace, type, id)
    222             self.path = path
     288          attr_reader :path
     289
     290          def initialize(args = {})
     291            super(args)
     292            self.path = args[:path]
    223293          end
    224294
     
    234304
    235305        class PartyRef < ObjectRef
    236 
    237306          def type=(type)
    238             parties = ['PERSON', 'ORGANISATION', 'GROUP', 'AGENT', 'ROLE','PARTY', 'ACTOR']
     307            parties = %w[PERSON ORGANISATION GROUP AGENT ROLE PARTY ACTOR]
    239308            raise ArgumentError, 'type invalid' unless parties.include? type
    240309            @type = type
     
    243312
    244313        class AccessGroupRef < ObjectRef
     314          def initialize(args = {})
     315            super(args)
     316            @type = 'ACCESS_GROUP'
     317          end
     318
    245319          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]
    260332          end
    261333
    262334          def value=(value)
    263335            raise ArgumentError, 'value invalid' if value.nil? or value.empty?
    264             @trunk_version = @branch_number = @branch_version = nil
    265336            (trunk_version, branch_number, branch_version) = value.split '.'
    266337            self.trunk_version = trunk_version
     
    269340          end
    270341
    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
    298343            @value = trunk_version
    299344            @value = @value + '.' + @branch_number unless @branch_number.nil?
    300345            @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
    305381          attr_reader :value
    306382
    307           def initialize(value)
    308             self.value = value
     383          def initialize(args = {})
     384            self.value = args[:value]
    309385          end
    310386
     
    315391        end
    316392
    317         class Uuid < Uid
    318 
    319         end
    320 
    321         class InternetId <Uid
     393        class UUID < UID
     394
     395        end
     396
     397        class InternetID <UID
    322398         
    323399        end
    324400
    325         class IsoOid <Uid
     401        class IsoOID <UID
    326402
    327403        end       
Note: See TracChangeset for help on using the changeset viewer.