[113] | 1 | # This module is based on the UML,
|
---|
| 2 | # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109326589721_134411_997Report.html
|
---|
| 3 | # Ticket refs #64
|
---|
| 4 |
|
---|
| 5 | module OpenEHR
|
---|
| 6 | module RM
|
---|
| 7 | module Common
|
---|
| 8 | module Change_Control
|
---|
| 9 | class Contribution
|
---|
[115] | 10 | attr_reader :uid, :versions, :audit
|
---|
[158] | 11 |
|
---|
[115] | 12 | def initialize(uid, versions, audit)
|
---|
| 13 | self.uid = uid
|
---|
| 14 | self.versions = versions
|
---|
| 15 | self.audit = audit
|
---|
| 16 | end
|
---|
[158] | 17 |
|
---|
[115] | 18 | def uid=(uid)
|
---|
| 19 | if uid.nil?
|
---|
| 20 | raise ArgumentError, "uid should not be nil."
|
---|
| 21 | end
|
---|
| 22 | @uid = uid
|
---|
| 23 | end
|
---|
[158] | 24 |
|
---|
[115] | 25 | def versions=(versions)
|
---|
[117] | 26 | unless versions.nil?
|
---|
| 27 | if versions.empty?
|
---|
[115] | 28 | raise ArgumentError, 'versions shoud not be nil or empty.'
|
---|
| 29 | end
|
---|
| 30 | end
|
---|
| 31 | @versions = versions
|
---|
| 32 | end
|
---|
[158] | 33 |
|
---|
[115] | 34 | def audit=(audit)
|
---|
| 35 | if audit.nil?
|
---|
| 36 | raise ArgumentError, 'audit should not be nil.'
|
---|
| 37 | end
|
---|
| 38 | if audit.description.nil?
|
---|
| 39 | raise ArgumentError, 'audit.description should not be nil.'
|
---|
| 40 | end
|
---|
| 41 | @audit = audit
|
---|
| 42 | end
|
---|
[113] | 43 | end
|
---|
[119] | 44 |
|
---|
[113] | 45 | class Versioned_Object
|
---|
| 46 | end
|
---|
[117] | 47 |
|
---|
[113] | 48 | class Version
|
---|
[158] | 49 | attr_reader :uid, :preceding_version_uid, :lifecycle_state,
|
---|
| 50 | :commit_audit, :contribution
|
---|
| 51 | attr_accessor :data, :signature
|
---|
| 52 |
|
---|
| 53 | def initialize(args = { })
|
---|
| 54 | self.uid = args[:uid]
|
---|
| 55 | self.preceding_version_uid = args[:preceding_version_uid]
|
---|
| 56 | self.data = args[:data]
|
---|
| 57 | self.lifcycle_state = args[:lifecycle_state]
|
---|
| 58 | self.commit_audit = args[:commit_audit]
|
---|
| 59 | self.contribution = args[:contribution]
|
---|
| 60 | self.signature = args[:signature]
|
---|
[117] | 61 | end
|
---|
[119] | 62 |
|
---|
[117] | 63 | def uid=(uid)
|
---|
| 64 | raise ArgumentError, "uid should not be nil" if uid.nil?
|
---|
[158] | 65 | @uid = uid
|
---|
[117] | 66 | end
|
---|
[119] | 67 |
|
---|
[158] | 68 | def preceding_version_uid=(preceding_version_uid)
|
---|
| 69 | if (!preceding_version_uid.nil?) == @uid.version_tree_id.is_first?
|
---|
| 70 | raise ArgumentError, 'preceding version is invalid'
|
---|
| 71 | end
|
---|
| 72 | @preceding_version_uid = preceding_version_uid
|
---|
[117] | 73 | end
|
---|
[119] | 74 |
|
---|
[158] | 75 | def lifcycle_state=(lifecycle_state)
|
---|
| 76 | if lifecycle_state.nil? ||
|
---|
| 77 | !%w[532 553 523].include?(
|
---|
| 78 | lifecycle_state.defining_code.code_string)
|
---|
| 79 | raise ArgumentError, 'invalid lifecycle_state'
|
---|
| 80 | end
|
---|
| 81 | @lifecycle_state = lifecycle_state
|
---|
| 82 | end
|
---|
| 83 |
|
---|
[117] | 84 | def commit_audit=(commit_audit)
|
---|
[158] | 85 | if commit_audit.nil?
|
---|
| 86 | raise ArgumentError,'commit_audit is mandatory'
|
---|
| 87 | end
|
---|
[117] | 88 | @commit_audit = commit_audit
|
---|
| 89 | end
|
---|
[119] | 90 |
|
---|
[158] | 91 | def contribution=(contribution)
|
---|
| 92 | raise ArgumentError, "contribution should not be nil" if contribution.nil? or contribution.type.empty?
|
---|
| 93 | @contribution = contribution
|
---|
| 94 | end
|
---|
| 95 |
|
---|
| 96 | def owner_id
|
---|
| 97 | return Hier_Object_ID.new(@uid.object_id.value)
|
---|
| 98 | end
|
---|
| 99 |
|
---|
[119] | 100 | def is_branch?
|
---|
[158] | 101 | return @uid.is_branch?
|
---|
[119] | 102 | end
|
---|
[158] | 103 |
|
---|
| 104 | def canonical_form
|
---|
| 105 | raise NotImplementedError, 'canonical form not implemented'
|
---|
| 106 | end
|
---|
[113] | 107 | end
|
---|
[117] | 108 |
|
---|
[113] | 109 | class Imported_Version < Version
|
---|
| 110 | end
|
---|
[117] | 111 |
|
---|
[113] | 112 | class Original_Version < Version
|
---|
[158] | 113 | attr_reader :attestations
|
---|
| 114 |
|
---|
| 115 | def initialize(args = { })
|
---|
| 116 | super(args)
|
---|
| 117 | self.attestations = args[:attestations]
|
---|
| 118 | self.other_input_version_uids = args[:other_input_version_uids]
|
---|
| 119 | end
|
---|
| 120 |
|
---|
| 121 | def attestations=(attestations)
|
---|
| 122 | if attestations.nil? || attestations.empty?
|
---|
| 123 | raise ArgumentError, 'attestations is mandatory'
|
---|
| 124 | end
|
---|
| 125 | @attestations = attestations
|
---|
| 126 | end
|
---|
| 127 |
|
---|
| 128 | def other_input_version_uids=(other_input_version_uids)
|
---|
| 129 | if !other_input_version_uids.nil? && other_input_version_uids.empty?
|
---|
| 130 | raise ArgumentError, 'invaild other_input_version_uids'
|
---|
| 131 | end
|
---|
| 132 | @other_input_version_uids = other_input_version_uids
|
---|
| 133 | end
|
---|
| 134 |
|
---|
| 135 | def is_merged?
|
---|
| 136 |
|
---|
| 137 | end
|
---|
[113] | 138 | end
|
---|
| 139 | end # of Change_Control
|
---|
| 140 | end # of Common
|
---|
| 141 | end # of RM
|
---|
| 142 | end # of OpenEHR
|
---|