source: ruby/branches/0.5/lib/open_ehr/rm/demographic.rb@ 362

Last change on this file since 362 was 362, checked in by KOBAYASHI, Shinji, 14 years ago

refs #45 PartyIdentity, Contact, Address

File size: 5.4 KB
RevLine 
[86]1# This module is based on the UML,
2# http://www.openehr.org/uml/release-1.0.1/Browsable/_9_5_76d0249_1118674798473_6021_0Report.html
3# Ticket refs #45
[361]4include OpenEHR::RM::Common::Archetyped
5
[6]6module OpenEHR
7 module RM
[361]8 module Demographic
9 class Address < Locatable
[87]10 attr_reader :details
11
[362]12 def initialize(args = { })
13 super(args)
14 self.details = args[:details]
15 end
[87]16
[362]17 def details=(details)
18 if details.nil?
19 raise ArgumentError, 'details are mandatory'
20 end
21 @details = details
[87]22 end
23
24 def type
[362]25 return @name
[87]26 end
27 end
28
[361]29 class Capability < Locatable
[87]30 attr_reader :credentials, :time_validity
31
32 end
33
[361]34 class Party < Locatable
35 attr_reader :uid, :identities, :contacts, :relationships,
36 :reverse_relationships
37 attr_accessor :details
38 alias :type :name
39
40 def initialize(args = { })
41 super(args)
42 self.uid = args[:uid]
43 self.identities = args[:identities]
44 self.contacts = args[:contacts]
45 self.relationships = args[:relationships]
46 self.reverse_relationships =
47 args[:reverse_relationships]
48 self.details = args[:details]
[8]49 end
[361]50
[9]51 def uid=(uid)
[361]52 raise ArgumentError, 'uid is mandatory' if uid.nil?
[9]53 @uid = uid
54 end
[361]55
[9]56 def identities=(identities)
[361]57 if identities.nil? || identities.empty?
58 raise ArgumentError, 'identities are mandatory'
59 end
[9]60 @identities = identities
[361]61 end
62
[9]63 def contacts=(contacts)
[361]64 if !contacts.nil? && contacts.empty?
65 raise ArgumentError, 'contacts should not be empty'
66 end
[9]67 @contacts = contacts
68 end
[361]69
[8]70 def parent=(parent)
71 @parent = nil
72 end
[361]73
74 def relationships=(relationships)
75 unless relationships.nil?
76 if relationships.empty?
77 raise ArgumentError, 'relationships should not be empty?'
78 else
79 relationships.each do |rel|
80 if rel.source.id.value != @uid.value
81 raise ArgumentError, 'invalid source of relationships'
82 end
83 end
84 end
85 end
86 @relationships = relationships
[8]87 end
[361]88
89 def reverse_relationships=(reverse_relationships)
90 if !reverse_relationships.nil? && reverse_relationships.empty?
91 raise ArgumentError, 'reverse_relationships should not be empty'
[9]92 end
[361]93 @reverse_relationships = reverse_relationships
[9]94 end
[7]95 end
[87]96
[361]97 class PartyIdentity < Locatable
[87]98 attr_reader :details
99
[362]100 def initialize(args = { })
101 super(args)
102 self.details = args[:details]
103 end
104
105 def details=(details)
106 if details.nil?
107 raise ArgumentError, 'details are mandatory'
108 end
109 @details = details
110 end
111
112 def purpose
113 return @name
114 end
[87]115 end
116
[361]117 class PartyRelationship < Locatable
[87]118
119 end
120
[361]121 class VersionedParty < Locatable
[87]122
123 end
124
125 class Role < Party
126
127 end
128
[86]129 class Actor < Party
[51]130 LEAGAL_IDENTITY = 'leagal identity'
131 attr_reader :languages, :rules
[361]132
[51]133 def initialize(uid, archetype_node_id, name, archetype_details,
134 feeder_audit, links, identities, contacts,
135 relationships, reverse_relationships, details,
136 languages, rules)
137 super(uid, archetype_node_id, name, archetype_details,
138 feeder_audit, links, relationships, reverse_relationships,
139 details)
140 has_legal_identity?
141 set_languages(languages)
142 set_rules(rules)
143 end
[361]144
[51]145 def has_legal_identity?
146 @identities.each {|identity|
147 if (identity.purpose.value == LEAGAL_IDENTITY)
148 return true
149 end
150 }
151 false
152 end
[361]153
[51]154 def languages=(languages)
155 set_languages(languages)
156 end
[361]157
[51]158 def values=(values)
159 set_values(values)
160 end
161 private
162 def set_languages(languages)
163 if languages.nil?
164 raise ArgumentError, "languages should not be nil."
165 elsif languages.empty?
166 raise ArgumentError, "languages shouldnot be empty."
167 end
168 @languages = languages
169 end
[361]170
[51]171 def set_values(values)
172 if values.nil?
173 raise ArgumentError, "values should not be nil."
174 elsif values.empty?
175 raise ArgumentError, "values should not be nil."
176 end
177 @values = values
[361]178 end
[10]179 end
[361]180
181 class Contact < Locatable
[51]182 attr_accessor :time_validity
183 attr_reader :addresses
[362]184
185 def initialize(args = { })
186 super(args)
187 self.addresses = args[:addresses]
188 self.time_validity = args[:time_validity]
[51]189 end
[361]190
[51]191 def purpose
[362]192 return @name
[51]193 end
[361]194
[51]195 def addresses=(addresses)
[362]196 if addresses.nil? || addresses.empty?
197 raise ArgumentError, 'address is mandatory'
198 end
[51]199 @addresses = addresses
200 end
201 end
[86]202
203 class Agent < Actor
204
205 end
206
207 class Organisation < Actor
208
209 end
210
211 class Person < Actor
212
213 end
214
215 class Group < Actor
216
217 end
[6]218 end # of Demographic
219 end # of RM
220end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.