Class: OpenEHR::RM::Common::ChangeControl::VersionedObject
- Inherits:
-
Object
- Object
- OpenEHR::RM::Common::ChangeControl::VersionedObject
show all
- Defined in:
- lib/openehr/rm/common/change_control.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of VersionedObject.
165
166
167
168
169
170
|
# File 'lib/openehr/rm/common/change_control.rb', line 165
def initialize(args = { })
self.uid = args[:uid]
self.owner_id = args[:owner_id]
self.time_created = args[:time_created]
self.all_versions = args[:all_versions]
end
|
Instance Attribute Details
#all_versions ⇒ Object
Returns the value of attribute all_versions.
163
164
165
|
# File 'lib/openehr/rm/common/change_control.rb', line 163
def all_versions
@all_versions
end
|
#owner_id ⇒ Object
Returns the value of attribute owner_id.
163
164
165
|
# File 'lib/openehr/rm/common/change_control.rb', line 163
def owner_id
@owner_id
end
|
#time_created ⇒ Object
Returns the value of attribute time_created.
163
164
165
|
# File 'lib/openehr/rm/common/change_control.rb', line 163
def time_created
@time_created
end
|
#uid ⇒ Object
Returns the value of attribute uid.
163
164
165
|
# File 'lib/openehr/rm/common/change_control.rb', line 163
def uid
@uid
end
|
Instance Method Details
#all_version_ids ⇒ Object
196
197
198
199
200
|
# File 'lib/openehr/rm/common/change_control.rb', line 196
def all_version_ids
ids = []
@all_versions.each{|id| ids << id.uid}
return ids
end
|
#commit_attestation(args = { }) ⇒ Object
318
319
320
321
322
323
324
325
326
327
328
|
# File 'lib/openehr/rm/common/change_control.rb', line 318
def commit_attestation(args = { })
if args[:attestation].nil?
raise ArgumentError, 'attestation is mandatory'
end
if self.has_version_id?(args[:uid]) && self.is_original_version?(args[:uid])
self.version_with_id(args[:uid]).attestations << args[:attestation]
self.version_with_id(args[:uid]).signature = args[:signature]
else
raise ArgumentError, 'uid invalid'
end
end
|
#commit_imported_version(args = { }) ⇒ Object
312
313
314
315
316
|
# File 'lib/openehr/rm/common/change_control.rb', line 312
def commit_imported_version(args = { })
@all_versions << ImportedVersion.new(:item => args[:item],
:contribution => args[:contribution],
:commit_audit => args[:commit_audit])
end
|
#commit_original_merged_version(args = { }) ⇒ Object
300
301
302
303
304
305
306
307
308
309
310
|
# File 'lib/openehr/rm/common/change_control.rb', line 300
def commit_original_merged_version(args = { })
@all_versions << OriginalVersion.new(:uid => args[:uid],
:contribution => args[:contribution],
:preceding_version_uid => args[:preceding_version_uid],
:commit_audit => args[:commit_audit],
:lifecycle_state => args[:lifecycle_state],
:data => args[:data],
:attestations => args[:attestations],
:other_input_version_uids => args[:other_input_version_uids],
:signature => args[:signature])
end
|
#commit_original_version(args = { }) ⇒ Object
285
286
287
288
289
290
291
292
293
294
295
296
297
298
|
# File 'lib/openehr/rm/common/change_control.rb', line 285
def commit_original_version(args={ })
if has_version_id?(args[:preceding_version_uid]) or self.version_count == 0
@all_versions << OriginalVersion.new(:uid => args[:uid],
:preceding_version_uid => args[:preceding_version_uid],
:contribution => args[:contribution],
:commit_audit => args[:commit_audit],
:lifecycle_state => args[:lifecycle_state],
:data => args[:data],
:attestations => args[:attestations],
:signature => args[:signature])
else
raise ArgumentError, 'invalid preceding uid'
end
end
|
#has_version_at_time?(a_time) ⇒ Boolean
218
219
220
221
222
223
224
225
226
|
# File 'lib/openehr/rm/common/change_control.rb', line 218
def has_version_at_time?(a_time)
raise ArgumentError, 'argument mandatory' if a_time.nil?
@all_versions.each do |ver|
if ver.commit_audit.time_committed == a_time
return true
end
end
return false
end
|
#has_version_id?(a_ver_id) ⇒ Boolean
206
207
208
209
|
# File 'lib/openehr/rm/common/change_control.rb', line 206
def has_version_id?(a_ver_id)
raise ArgumentError, 'argument is mandatory' if a_ver_id.nil?
return self.all_version_ids.include?(a_ver_id)
end
|
#is_original_version?(a_ver_id) ⇒ Boolean
211
212
213
214
215
216
|
# File 'lib/openehr/rm/common/change_control.rb', line 211
def is_original_version?(a_ver_id)
if a_ver_id.nil? || !self.has_version_id?(a_ver_id)
raise ArgumentError, 'invalid a_ver_id'
end
return @all_versions[self.all_version_ids.index(a_ver_id)].instance_of? OriginalVersion
end
|
#latest_trunk_version ⇒ Object
253
254
255
256
257
258
259
260
261
262
263
264
|
# File 'lib/openehr/rm/common/change_control.rb', line 253
def latest_trunk_version
trunk_versions = [ ]
@all_versions.each do |ver|
if ver.uid.version_tree_id.trunk_version == '1'
trunk_versions << ver
end
end
sorted_trunk_version = trunk_versions.sort do |a,b|
a.commit_audit.time_committed <=> b.commit_audit.time_committed
end
return sorted_trunk_version.last
end
|
#latest_version ⇒ Object
246
247
248
249
250
251
|
# File 'lib/openehr/rm/common/change_control.rb', line 246
def latest_version
time_sorted_version = @all_versions.sort do |a,b|
a.commit_audit.time_committed <=> b.commit_audit.time_committed
end
return time_sorted_version.last
end
|
#revision_history ⇒ Object
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
# File 'lib/openehr/rm/common/change_control.rb', line 270
def revision_history
revision_history_items = [ ]
@all_versions.each do |ver|
audits = [ ]
if ver.instance_of? OriginalVersion
audits << ver.attestations
end
audits << ver.commit_audit
revision_history_items << OpenEHR::RM::Common::Generic::RevisionHistoryItem.new(
:audits => audits,
:version_id => ver.uid)
end
return OpenEHR::RM::Common::Generic::RevisionHistory.new(:items => revision_history_items)
end
|
#trunk_lifecycle_state ⇒ Object
266
267
268
|
# File 'lib/openehr/rm/common/change_control.rb', line 266
def trunk_lifecycle_state
return self.latest_trunk_version.lifecycle_state
end
|
#version_at_time(a_time) ⇒ Object
235
236
237
238
239
240
241
242
243
244
|
# File 'lib/openehr/rm/common/change_control.rb', line 235
def version_at_time(a_time)
if a_time.nil? || !self.has_version_at_time?(a_time)
raise ArgumentError, 'argument invalid'
end
@all_versions.each do |ver|
if ver.commit_audit.time_committed == a_time
return ver
end
end
end
|
#version_count ⇒ Object
202
203
204
|
# File 'lib/openehr/rm/common/change_control.rb', line 202
def version_count
return all_versions.size
end
|
#version_with_id(a_ver_id) ⇒ Object
228
229
230
231
232
233
|
# File 'lib/openehr/rm/common/change_control.rb', line 228
def version_with_id(a_ver_id)
if a_ver_id.nil? || !self.has_version_id?(a_ver_id)
raise ArgumentError, 'argument invalid'
end
return @all_versions[self.all_version_ids.index(a_ver_id)]
end
|