source: ruby/branches/TRY-open_ehr_gem/lib/rm/demographic.rb@ 306

Last change on this file since 306 was 306, checked in by Tatsukawa, Akimichi, 15 years ago

refactored open_ehr to build gem package

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