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

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

refs #45 Party

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