[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] | 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?
|
---|
[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 |
|
---|
| 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
|
---|
[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 | super(:external_ref => args[:external_ref])
|
---|
| 112 | self.name = args[:name]
|
---|
| 113 | self.identifier = args[:identifier]
|
---|
| 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
|
---|
| 128 | unless identifier.nil? || !identifier.empty?
|
---|
| 129 | raise ArgumentError, 'invaild identifier'
|
---|
| 130 | end
|
---|
| 131 | @identifier = identifier
|
---|
| 132 | end
|
---|
[104] | 133 | end
|
---|
| 134 |
|
---|
[167] | 135 | class PartyRelated < PartyIdentified
|
---|
[155] | 136 | attr_reader :relationship
|
---|
| 137 | def initialize(args = { })
|
---|
| 138 | super(args)
|
---|
| 139 | self.relationship = args[:relationship]
|
---|
| 140 | end
|
---|
| 141 |
|
---|
| 142 | def relationship=(relationship)
|
---|
| 143 | if relationship.nil?
|
---|
| 144 | raise ArgumentError, 'relationship must not be nil'
|
---|
| 145 | end
|
---|
| 146 | @relationship = relationship
|
---|
| 147 | end
|
---|
| 148 | end
|
---|
[156] | 149 |
|
---|
| 150 | class Participation
|
---|
| 151 | attr_reader :performer, :function, :mode
|
---|
| 152 | attr_accessor :time
|
---|
| 153 |
|
---|
| 154 | def initialize(args ={ })
|
---|
| 155 | self.performer = args[:performer]
|
---|
| 156 | self.function = args[:function]
|
---|
| 157 | self.mode = args[:mode]
|
---|
| 158 | self.time = args[:time]
|
---|
| 159 | end
|
---|
| 160 |
|
---|
| 161 | def performer=(performer)
|
---|
| 162 | raise ArgumentError, 'performer is mandatory' if performer.nil?
|
---|
| 163 | @performer = performer
|
---|
| 164 | end
|
---|
| 165 |
|
---|
| 166 | def function=(function)
|
---|
| 167 | raise ArgumentError, 'function is mandatory' if function.nil?
|
---|
| 168 | @function = function
|
---|
| 169 | end
|
---|
| 170 |
|
---|
| 171 | def mode=(mode)
|
---|
| 172 | raise ArgumentError, 'mode is mandatory' if mode.nil?
|
---|
| 173 | @mode = mode
|
---|
| 174 | end
|
---|
| 175 | end
|
---|
[157] | 176 |
|
---|
[167] | 177 | class Attestation < AuditDetails
|
---|
[157] | 178 | attr_reader :reason
|
---|
| 179 | attr_accessor :proof, :items
|
---|
| 180 |
|
---|
| 181 | def initialize(args = { })
|
---|
| 182 | super(args)
|
---|
| 183 | self.reason = args[:reason]
|
---|
| 184 | self.proof = args[:proof]
|
---|
| 185 | self.items = args[:items]
|
---|
| 186 | end
|
---|
| 187 |
|
---|
| 188 | def reason=(reason)
|
---|
| 189 | raise ArgumentError, 'reason is mandatory' if reason.nil?
|
---|
| 190 | @reason = reason
|
---|
| 191 | end
|
---|
| 192 | end
|
---|
[4] | 193 | end # of Generic
|
---|
| 194 | end # of Common
|
---|
| 195 | end # of RM
|
---|
| 196 | end # of OpenEHR
|
---|