source: ruby/branches/0.5/lib/open_ehr/rm/common/generic.rb@ 216

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

move from Test:Unit to RSpec

File size: 5.7 KB
Line 
1# This module is a implementation of the bellow UML
2# http://www.openehr.org/uml/release-1.0.1/Browsable/_9_5_1_76d0249_1140169202660_257304_813Report.html
3# Related to the ticket #62
4include OpenEHR::RM::Support::Identification
5include OpenEHR::RM::DataTypes::Basic
6module OpenEHR
7 module RM
8 module Common
9 module Generic
10 class AuditDetails
11 attr_reader :system_id, :committer, :time_committed, :change_type
12 attr_accessor :description
13
14 def initialize(args = { })
15 self.system_id = args[:system_id]
16 self.committer = args[:committer]
17 self.time_committed = args[:time_committed]
18 self.change_type = args[:change_type]
19 self.description = args[:description]
20 end
21
22 def system_id=(system_id)
23 if system_id.nil? or system_id.empty?
24 raise ArgumentError, 'system_id is mandatory'
25 end
26 @system_id = system_id
27 end
28
29 def committer=(committer)
30 raise ArgumentError, 'committer is mandatory' if committer.nil?
31 @committer = committer
32 end
33
34 def time_committed=(time_committed)
35 if time_committed.nil?
36 raise ArgumentError, 'time_commited is mandatory'
37 end
38 @time_committed = time_committed
39 end
40
41 def change_type=(change_type)
42 raise ArgumentError, 'change_type is mandatory' if change_type.nil?
43 @change_type = change_type
44 end
45 end
46
47 class RevisionHistory
48 attr_reader :items
49
50 def initialize(items)
51 self.items = items
52 end
53
54 def items=(items)
55 if items.nil? or items.empty?
56 raise ArgumentError, 'item(s) is/are mandatory'
57 end
58 @items = items
59 end
60
61 def most_recent_version
62 return @items.last.version_id.value
63 end
64
65 def most_recent_version_time_committed
66 return @items.last.audits.first.time_committed.value
67 end
68 end # of RevisionHistory
69
70 class RevisionHistoryItem
71 attr_reader :version_id, :audits
72
73 def initialize(args = { })
74 self.version_id = args[:version_id]
75 self.audits = args[:audits]
76 end
77
78 def audits=(audits)
79 if audits.nil? or audits.empty?
80 raise ArgumentError, 'audits is mandatory'
81 end
82 @audits = audits
83 end
84
85 def version_id=(version_id)
86 raise ArgumentError, 'version_id is mandatory' if version_id.nil?
87 @version_id = version_id
88 end
89 end # of RevisionHistory_Item
90
91 class PartyProxy
92 attr_accessor :external_ref
93
94 def initialize(args = { })
95 self.external_ref = args[:external_ref]
96 end
97 end
98
99 class PartySelf < PartyProxy
100
101 end
102
103 class PartyIdentified < PartyProxy
104 attr_reader :name, :identifier
105 def initialize(args = { })
106 if args[:external_ref].nil? && args[:name].nil? &&
107 args[:identifier].nil?
108 raise ArgumentError, 'cannot identified'
109 end
110 super(:external_ref => args[:external_ref])
111 self.name = args[:name]
112 self.identifier = args[:identifier]
113 end
114
115 def name=(name)
116 if name.nil? && @external_ref.nil? && @identifier.nil?
117 raise ArgumentError, 'cannot identified'
118 end
119 raise ArgumentError, 'invaild name' unless name.nil? || !name.empty?
120 @name = name
121 end
122
123 def identifier=(identifier)
124 if @name.nil? && @external_ref.nil? && identifier.nil?
125 raise ArgumentError, 'cannot identified'
126 end
127 unless identifier.nil? || !identifier.empty?
128 raise ArgumentError, 'invaild identifier'
129 end
130 @identifier = identifier
131 end
132 end
133
134 class PartyRelated < PartyIdentified
135 attr_reader :relationship
136 def initialize(args = { })
137 super(args)
138 self.relationship = args[:relationship]
139 end
140
141 def relationship=(relationship)
142 if relationship.nil?
143 raise ArgumentError, 'relationship must not be nil'
144 end
145 @relationship = relationship
146 end
147 end
148
149 class Participation
150 attr_reader :performer, :function, :mode
151 attr_accessor :time
152
153 def initialize(args ={ })
154 self.performer = args[:performer]
155 self.function = args[:function]
156 self.mode = args[:mode]
157 self.time = args[:time]
158 end
159
160 def performer=(performer)
161 raise ArgumentError, 'performer is mandatory' if performer.nil?
162 @performer = performer
163 end
164
165 def function=(function)
166 raise ArgumentError, 'function is mandatory' if function.nil?
167 @function = function
168 end
169
170 def mode=(mode)
171 raise ArgumentError, 'mode is mandatory' if mode.nil?
172 @mode = mode
173 end
174 end
175
176 class Attestation < AuditDetails
177 attr_reader :reason
178 attr_accessor :proof, :items
179
180 def initialize(args = { })
181 super(args)
182 self.reason = args[:reason]
183 self.proof = args[:proof]
184 self.items = args[:items]
185 end
186
187 def reason=(reason)
188 raise ArgumentError, 'reason is mandatory' if reason.nil?
189 @reason = reason
190 end
191 end
192 end # of Generic
193 end # of Common
194 end # of RM
195end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.