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

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

worked on demographic

File size: 4.5 KB
Line 
1module OpenEHR
2 module RM
3 module Demogrphic
4 # this class is based on the UML,
5 # http://www.openehr.org/svn/specification/TAGS/Release-1.0.1/publishing/architecture/computable/UML/uml_start_view.html
6 class PARTY < OpenEHR::RM::Common::Archetyped::Locatable
7 attr_reader :details, :reverse_relationships, :uid
8 attr_reader :idetities, :contacts, :relationships
9 def initialize(uid, archetype_node_id, name, archetype_details,
10 feeder_audit, links, identities, contacts,
11 relationships, reverse_relationships, details)
12 super(uid, archetype_node_id, name, archetype_details,
13 feeder_audit, links, nil)
14 uid_valid(uid)
15 @uid = uid
16 identities_vaild(identities)
17 @identities = identities
18 contacts_valid(contacts)
19 @contacts = contacts
20 relationships_valid(relationships)
21 end
22 def type
23 return name
24 end
25 def uid=(uid)
26 uid_valid(uid)
27 @uid = uid
28 end
29 def identities=(identities)
30 identities_vaild(identities)
31 @identities = identities
32 def contacts=(contacts)
33 contacts_valid(contacts)
34 @contacts = contacts
35 end
36 def parent=(parent)
37 @parent = nil
38 end
39 private
40 def uid_valid(uid)
41 raise ArgumentError, "uid is not valid" if uid.nil?
42 end
43 def identities_vaild(identities)
44 if identities.nil?
45 raise ArgumentError, "identities must not be nil"
46 elsif identities.empty?
47 raise ArgumentError, "identities must not be empty"
48 end
49 end
50 def contacts_valid(contacts)
51 if contacs.nil?
52 raise ArgumentError, "contacts must not be nil"
53 elsif contacts.empty?
54 raise ArgumentError, "contacts must not be empty"
55 end
56 end
57 end
58 class ACTOR < PARTY
59 LEAGAL_IDENTITY = 'leagal identity'
60 attr_reader :languages, :rules
61 def initialize(uid, archetype_node_id, name, archetype_details,
62 feeder_audit, links, identities, contacts,
63 relationships, reverse_relationships, details,
64 languages, rules)
65 super(uid, archetype_node_id, name, archetype_details,
66 feeder_audit, links, relationships, reverse_relationships,
67 details)
68 has_legal_identity?
69 set_languages(languages)
70 set_rules(rules)
71 end
72 def has_legal_identity?
73 @identities.each {|identity|
74 if (identity.purpose.value == LEAGAL_IDENTITY)
75 return true
76 end
77 }
78 false
79 end
80 def languages=(languages)
81 set_languages(languages)
82 end
83 def values=(values)
84 set_values(values)
85 end
86 private
87 def set_languages(languages)
88 if languages.nil?
89 raise ArgumentError, "languages should not be nil."
90 elsif languages.empty?
91 raise ArgumentError, "languages shouldnot be empty."
92 end
93 @languages = languages
94 end
95 def set_values(values)
96 if values.nil?
97 raise ArgumentError, "values should not be nil."
98 elsif values.empty?
99 raise ArgumentError, "values should not be nil."
100 end
101 @values = values
102 end
103 class CONTACT < OpenEHR::RM::Common::Archetyped::Locatable
104 attr_accessor :time_validity
105 attr_reader :addresses
106 def initialize(uid, archetype_node_id, name, archetype_details,
107 feeder_audit, links, parent, time_validity, addresses)
108 super(uid, archetype_node_id, name, archetype_details,
109 feeder_audit, links, parent)
110 address_exists?(addresses)
111 @addresses = addresses
112 @time_validity = time_validity
113 end
114 def purpose
115 @name
116 end
117 def purpose=(purpose)
118 @name = purpose
119 end
120 def addresses=(addresses)
121 address_exists?(addresses)
122 @addresses = addresses
123 end
124 private
125 def address_exists?(addresses)
126 if addresses.nil?
127 raise ArgumentError, "address must not be nil"
128 elsif addresses.empty?
129 raise ArgumentError, "address must not be empty"
130 end
131 end
132 end
133 end # of Demographic
134 end # of RM
135end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.