source: ruby/branches/0.5/lib/open_ehr/rm/common/archetyped.rb@ 301

Last change on this file since 301 was 301, checked in by KOBAYASHI, Shinji, 15 years ago

locatable class completed

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