source: ruby/trunk/lib/open_ehr/rm/common/archetyped.rb@ 370

Last change on this file since 370 was 370, checked in by KOBAYASHI, Shinji, 14 years ago

merge operation

File size: 5.8 KB
RevLine 
[102]1# This module is based on the UML,
2# http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109318114715_211173_0Report.html
3# Ticket refs #65
[297]4module OpenEHR
[4]5 module RM
6 module Common
7 module Archetyped
[167]8 module LocaterConstants
[4]9 CURRENT_TRANSACTION_ID = "current"
10 FRAGMENT_SEPARATOR = "#"
11 CONTENT_PATH_SEPARATOR = "|"
12 ORGANIZER_PATH_SEPARATOR = "/"
13 MULTIPART_ID_DELIMITER = "::"
14 end
[102]15
[4]16 class Pathable
[102]17 attr_accessor :parent
[128]18
[297]19 def initialize(args = { })
20 self.parent = args[:parent]
[4]21 end
[128]22
[4]23 def item_at_path(path)
[297]24 raise NotImplementedError, "item_at_path must be implemented"
[4]25 end
[128]26
[4]27 def items_at_path(path)
[297]28 raise NotImplementedError, "items_at_path must be implemented"
[4]29 end
[128]30
[4]31 def path_exists?(path)
[297]32 raise NotImplementedError, "path_exists? must be implemented"
[4]33 end
[128]34
[4]35 def path_of_item(item)
[297]36 raise NotImplementedError, "path_of_item must be implemented"
[4]37 end
[128]38
[297]39 def path_unique?(path)
40 raise NotImplementedError, "path_unique? must be implemented"
[4]41 end
[7]42 end
[102]43
[4]44 class Locatable < Pathable
[167]45 include LocaterConstants
[110]46 attr_reader :archetype_node_id, :name, :links
47 attr_accessor :uid, :archetype_details, :feeder_audit
[128]48
[162]49 def initialize(args = { })
[297]50 super(args)
[162]51 self.archetype_node_id = args[:archetype_node_id]
52 self.name = args[:name]
53 self.links = args[:links]
54 self.uid = args[:uid]
55 self.archetype_details = args[:archetype_details]
56 self.feeder_audit = args[:feeder_audit]
[110]57 end
58
59 def archetype_node_id=(archetype_node_id)
[297]60 if archetype_node_id.nil? or archetype_node_id.empty?
61 raise ArgumentError, 'archetype_node_id should not be nil'
62 end
[4]63 @archetype_node_id = archetype_node_id
[110]64 end
65
66 def name=(name)
[370]67 if name.nil? or name.value.empty?
68 raise ArgumentError, 'name should not be empty'
69 end
[110]70 @name = name
71 end
[370]72
[110]73 def links=(links)
[370]74 if !links.nil? and links.empty?
75 raise ArgumentError, "links shoud not be empty"
76 end
[4]77 @links = links
78 end
[162]79
[370]80 def concept
81 if self.is_archetype_root?
82 return DvText.new(:value =>
83 @archetype_details.archetype_id.concept_name)
84 else
85 raise ArgumentError, 'this is not root'
[7]86 end
[4]87 end
[162]88
[4]89 def is_archetype_root?
[7]90 !archetype_details.nil?
[4]91 end
92 end
[103]93
[102]94 class Archetyped
95 attr_reader :archetype_id, :rm_version
96 attr_accessor :template_id
[370]97
98 def initialize(args = { })
99 self.archetype_id = args[:archetype_id]
100 self.rm_version = args[:rm_version]
101 self.template_id = args[:template_id]
[102]102 end
[370]103
[102]104 def archetype_id=(archetype_id)
105 raise ArgumentError, "invalid archetype_id" if archetype_id.nil?
106 @archetype_id = archetype_id
107 end
[370]108
[102]109 def rm_version=(rm_version)
[370]110 if rm_version.nil? or rm_version.empty?
111 raise ArgumentError, "invalid rm_version"
112 end
[102]113 @rm_version = rm_version
114 end
115 end
[104]116
[103]117 class Link
118 attr_reader :meaning, :target, :type
[370]119 def initialize(args = { })
120 self.meaning = args[:meaning]
121 self.target = args[:target]
122 self.type = args[:type]
[103]123 end
124 def meaning=(meaning)
125 raise ArgumentError, "meaning should not be nil" if meaning.nil?
126 @meaning = meaning
127 end
128 def target=(target)
129 raise ArgumentError, "target should not be nil" if target.nil?
130 @target = target
131 end
132 def type=(type)
133 raise ArgumentError, "type should not be nil" if type.nil?
134 @type = type
135 end
[110]136 end # of Link
[131]137
[167]138 class FeederAudit
[154]139 attr_reader :originating_system_audit
140 attr_accessor :originating_system_item_ids, :feeder_system_audit,
141 :feeder_system_item_ids, :original_content
142
143 def initialize(args = { })
144 self.originating_system_audit = args[:originating_system_audit]
145 self.originating_system_item_ids = args[:originating_system_item_ids]
146 self.feeder_system_audit = args[:feeder_system_audit]
147 self.feeder_system_item_ids = args[:feeder_system_item_ids]
148 self.original_content = args[:original_content]
149 end
150
151 def originating_system_audit=(originating_system_audit)
152 if originating_system_audit.nil?
153 raise ArgumentError, 'originating_system_audit must be not nil'
154 end
155 @originating_system_audit = originating_system_audit
156 end
[167]157 end # of FeederAudit
[131]158
[167]159 class FeederAuditDetails
[153]160 attr_reader :system_id
[154]161 attr_accessor :provider, :location, :time, :subject, :version_id
[131]162
[370]163 def initialize(args = { })
[153]164 self.system_id = args[:system_id]
[154]165 self.provider = args[:provider]
166 self.location = args[:location]
167 self.time = args[:time]
168 self.subject = args[:subject]
169 self.version_id = args[:version_id]
[153]170 end
171
172 def system_id=(system_id)
[370]173 if system_id.nil? or system_id.empty?
174 raise ArgumentError, 'system_id invalid'
175 end
[153]176 @system_id = system_id
177 end
[167]178 end # of FeederAudit_Details
[110]179 end # of Archetyped
180 end # of Common
181 end # of RM
182end # OpenEHR
Note: See TracBrowser for help on using the repository browser.