[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
|
---|
[153] | 4 | include OpenEHR::RM::Support::Identification
|
---|
| 5 | include OpenEHR::RM::Data_Types::Basic
|
---|
[4] | 6 | module OpenEHR
|
---|
| 7 | module RM
|
---|
| 8 | module Common
|
---|
| 9 | module Generic
|
---|
[104] | 10 | class Audit_Details
|
---|
[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?
|
---|
| 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
|
---|
[104] | 45 | end
|
---|
[156] | 46 |
|
---|
[4] | 47 | class Revision_History
|
---|
[157] | 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
|
---|
[4] | 68 | end # of Revision_History
|
---|
[104] | 69 |
|
---|
| 70 | class Revision_History_Item
|
---|
[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
|
---|
[104] | 89 | end # of Revision_History_Item
|
---|
| 90 |
|
---|
| 91 | class Party_Proxy
|
---|
[153] | 92 | attr_accessor :external_ref
|
---|
| 93 |
|
---|
| 94 | def initialize(args = { })
|
---|
| 95 | self.external_ref = args[:external_ref]
|
---|
[104] | 96 | end
|
---|
| 97 | end
|
---|
| 98 |
|
---|
| 99 | class Party_Self < Party_Proxy
|
---|
| 100 |
|
---|
| 101 | end
|
---|
| 102 |
|
---|
| 103 | class Party_Identified < Party_Proxy
|
---|
[153] | 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
|
---|
[104] | 114 |
|
---|
[153] | 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
|
---|
[104] | 132 | end
|
---|
| 133 |
|
---|
[155] | 134 | class Party_Related < Party_Identified
|
---|
| 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
|
---|
[156] | 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
|
---|
[157] | 175 |
|
---|
| 176 | class Attestation < Audit_Details
|
---|
| 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
|
---|
[4] | 192 | end # of Generic
|
---|
| 193 | end # of Common
|
---|
| 194 | end # of RM
|
---|
| 195 | end # of OpenEHR
|
---|