[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
|
---|
[370] | 4 | include OpenEHR::RM::Support::Identification
|
---|
| 5 | include OpenEHR::RM::DataTypes::Basic
|
---|
| 6 | module 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?
|
---|
[370] | 36 | raise ArgumentError, 'time_committed is mandatory'
|
---|
[156] | 37 | end
|
---|
| 38 | @time_committed = time_committed
|
---|
| 39 | end
|
---|
[370] | 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 |
|
---|
[370] | 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
|
---|
[370] | 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]
|
---|
[370] | 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
|
---|
[370] | 128 | if !identifier.nil? && identifier.empty?
|
---|
[153] | 129 | raise ArgumentError, 'invaild identifier'
|
---|
| 130 | end
|
---|
| 131 | @identifier = identifier
|
---|
| 132 | end
|
---|
[370] | 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
|
---|
[370] | 186 | attr_accessor :proof, :attested_view, :is_pending, :items
|
---|
[157] | 187 |
|
---|
| 188 | def initialize(args = { })
|
---|
| 189 | super(args)
|
---|
| 190 | self.reason = args[:reason]
|
---|
| 191 | self.proof = args[:proof]
|
---|
| 192 | self.items = args[:items]
|
---|
[370] | 193 | self.attested_view = args[:attested_view]
|
---|
| 194 | self.is_pending = args[:is_pending]
|
---|
[157] | 195 | end
|
---|
| 196 |
|
---|
| 197 | def reason=(reason)
|
---|
| 198 | raise ArgumentError, 'reason is mandatory' if reason.nil?
|
---|
| 199 | @reason = reason
|
---|
| 200 | end
|
---|
[370] | 201 |
|
---|
| 202 | def items=(items)
|
---|
| 203 | if !items.nil? && items.empty?
|
---|
| 204 | raise ArgumentError, 'items should not be empty'
|
---|
| 205 | end
|
---|
| 206 | @items = items
|
---|
| 207 | end
|
---|
| 208 |
|
---|
| 209 | def is_pending?
|
---|
| 210 | return is_pending
|
---|
| 211 | end
|
---|
[157] | 212 | end
|
---|
[4] | 213 | end # of Generic
|
---|
| 214 | end # of Common
|
---|
| 215 | end # of RM
|
---|
| 216 | end # of OpenEHR
|
---|