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

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

common/generic completed

File size: 5.9 KB
RevLine 
[83]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
[216]4include OpenEHR::RM::Support::Identification
5include OpenEHR::RM::DataTypes::Basic
6module OpenEHR
[4]7 module RM
8 module Common
9 module Generic
[167]10 class AuditDetails
[156]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?
[312]36 raise ArgumentError, 'time_committed is mandatory'
[156]37 end
38 @time_committed = time_committed
39 end
[312]40
[156]41 def change_type=(change_type)
42 raise ArgumentError, 'change_type is mandatory' if change_type.nil?
43 @change_type = change_type
44 end
[104]45 end
[156]46
[167]47 class RevisionHistory
[157]48 attr_reader :items
49
[330]50 def initialize(args = { })
51 self.items = args[:items]
[157]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
[167]68 end # of RevisionHistory
[104]69
[167]70 class RevisionHistoryItem
[157]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
[167]89 end # of RevisionHistory_Item
[104]90
[167]91 class PartyProxy
[153]92 attr_accessor :external_ref
93
94 def initialize(args = { })
95 self.external_ref = args[:external_ref]
[104]96 end
97 end
98
[167]99 class PartySelf < PartyProxy
[104]100
101 end
102
[167]103 class PartyIdentified < PartyProxy
[153]104 attr_reader :name, :identifier
[312]105
[153]106 def initialize(args = { })
107 if args[:external_ref].nil? && args[:name].nil? &&
108 args[:identifier].nil?
109 raise ArgumentError, 'cannot identified'
110 end
111 self.name = args[:name]
112 self.identifier = args[:identifier]
[322]113 super(args)
[153]114 end
[104]115
[153]116 def name=(name)
117 if name.nil? && @external_ref.nil? && @identifier.nil?
118 raise ArgumentError, 'cannot identified'
119 end
120 raise ArgumentError, 'invaild name' unless name.nil? || !name.empty?
121 @name = name
122 end
123
124 def identifier=(identifier)
125 if @name.nil? && @external_ref.nil? && identifier.nil?
126 raise ArgumentError, 'cannot identified'
127 end
[322]128 if !identifier.nil? && identifier.empty?
[153]129 raise ArgumentError, 'invaild identifier'
130 end
131 @identifier = identifier
132 end
[322]133
134 def external_ref=(external_ref)
135 if @name.nil? && @identifier.nil? && external_ref.nil?
136 raise ArgumentError, 'invalid external_ref'
137 end
138 @external_ref = external_ref
139 end
[104]140 end
141
[167]142 class PartyRelated < PartyIdentified
[155]143 attr_reader :relationship
144 def initialize(args = { })
145 super(args)
146 self.relationship = args[:relationship]
147 end
148
149 def relationship=(relationship)
150 if relationship.nil?
151 raise ArgumentError, 'relationship must not be nil'
152 end
153 @relationship = relationship
154 end
155 end
[156]156
157 class Participation
158 attr_reader :performer, :function, :mode
159 attr_accessor :time
160
161 def initialize(args ={ })
162 self.performer = args[:performer]
163 self.function = args[:function]
164 self.mode = args[:mode]
165 self.time = args[:time]
166 end
167
168 def performer=(performer)
169 raise ArgumentError, 'performer is mandatory' if performer.nil?
170 @performer = performer
171 end
172
173 def function=(function)
174 raise ArgumentError, 'function is mandatory' if function.nil?
175 @function = function
176 end
177
178 def mode=(mode)
179 raise ArgumentError, 'mode is mandatory' if mode.nil?
180 @mode = mode
181 end
182 end
[157]183
[167]184 class Attestation < AuditDetails
[157]185 attr_reader :reason
186 attr_accessor :proof, :items
187
188 def initialize(args = { })
189 super(args)
190 self.reason = args[:reason]
191 self.proof = args[:proof]
192 self.items = args[:items]
193 end
194
195 def reason=(reason)
196 raise ArgumentError, 'reason is mandatory' if reason.nil?
197 @reason = reason
198 end
199 end
[4]200 end # of Generic
201 end # of Common
202 end # of RM
203end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.