source: ruby/trunk/lib/models/rm/demographic.rb@ 86

Last change on this file since 86 was 86, checked in by KOBAYASHI, Shinji, 16 years ago

refs #45

File size: 4.7 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 Party < OpenEHR::RM::Common::Archetyped::Locatable
8 attr_reader :details, :reverse_relationships, :uid
9 attr_reader :idetities, :contacts, :relationships
10 def initialize(uid, archetype_node_id, name, archetype_details,
11 feeder_audit, links, identities, contacts,
12 relationships, reverse_relationships, details)
13 super(uid, archetype_node_id, name, archetype_details,
14 feeder_audit, links, nil)
15 uid_valid(uid)
16 @uid = uid
17 identities_vaild(identities)
18 @identities = identities
19 contacts_valid(contacts)
20 @contacts = contacts
21 relationships_valid(relationships)
22 end
23 def type
24 return name
25 end
26 def uid=(uid)
27 uid_valid(uid)
28 @uid = uid
29 end
30 def identities=(identities)
31 identities_vaild(identities)
32 @identities = identities
33 def contacts=(contacts)
34 contacts_valid(contacts)
35 @contacts = contacts
36 end
37 def parent=(parent)
38 @parent = nil
39 end
40 private
41 def uid_valid(uid)
42 raise ArgumentError, "uid is not valid" if uid.nil?
43 end
44 def identities_vaild(identities)
45 if identities.nil?
46 raise ArgumentError, "identities must not be nil"
47 elsif identities.empty?
48 raise ArgumentError, "identities must not be empty"
49 end
50 end
51 def contacts_valid(contacts)
52 if contacs.nil?
53 raise ArgumentError, "contacts must not be nil"
54 elsif contacts.empty?
55 raise ArgumentError, "contacts must not be empty"
56 end
57 end
58 end
59 class Actor < Party
60 LEAGAL_IDENTITY = 'leagal identity'
61 attr_reader :languages, :rules
62 def initialize(uid, archetype_node_id, name, archetype_details,
63 feeder_audit, links, identities, contacts,
64 relationships, reverse_relationships, details,
65 languages, rules)
66 super(uid, archetype_node_id, name, archetype_details,
67 feeder_audit, links, relationships, reverse_relationships,
68 details)
69 has_legal_identity?
70 set_languages(languages)
71 set_rules(rules)
72 end
73 def has_legal_identity?
74 @identities.each {|identity|
75 if (identity.purpose.value == LEAGAL_IDENTITY)
76 return true
77 end
78 }
79 false
80 end
81 def languages=(languages)
82 set_languages(languages)
83 end
84 def values=(values)
85 set_values(values)
86 end
87 private
88 def set_languages(languages)
89 if languages.nil?
90 raise ArgumentError, "languages should not be nil."
91 elsif languages.empty?
92 raise ArgumentError, "languages shouldnot be empty."
93 end
94 @languages = languages
95 end
96 def set_values(values)
97 if values.nil?
98 raise ArgumentError, "values should not be nil."
99 elsif values.empty?
100 raise ArgumentError, "values should not be nil."
101 end
102 @values = values
103 end
104 class Contact < OpenEHR::RM::Common::Archetyped::Locatable
105 attr_accessor :time_validity
106 attr_reader :addresses
107 def initialize(uid, archetype_node_id, name, archetype_details,
108 feeder_audit, links, parent, time_validity, addresses)
109 super(uid, archetype_node_id, name, archetype_details,
110 feeder_audit, links, parent)
111 address_exists?(addresses)
112 @addresses = addresses
113 @time_validity = time_validity
114 end
115 def purpose
116 @name
117 end
118 def purpose=(purpose)
119 @name = purpose
120 end
121 def addresses=(addresses)
122 address_exists?(addresses)
123 @addresses = addresses
124 end
125 private
126 def address_exists?(addresses)
127 if addresses.nil?
128 raise ArgumentError, "address must not be nil"
129 elsif addresses.empty?
130 raise ArgumentError, "address must not be empty"
131 end
132 end
133 end
134
135 class Agent < Actor
136
137 end
138
139 class Organisation < Actor
140
141 end
142
143 class Person < Actor
144
145 end
146
147 class Group < Actor
148
149 end
150 end # of Demographic
151 end # of RM
152end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.