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
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
[6]4module OpenEHR
5 module RM
6 module Demogrphic
[86]7 class Party < OpenEHR::RM::Common::Archetyped::Locatable
[7]8 attr_reader :details, :reverse_relationships, :uid
9 attr_reader :idetities, :contacts, :relationships
[8]10 def initialize(uid, archetype_node_id, name, archetype_details,
[9]11 feeder_audit, links, identities, contacts,
12 relationships, reverse_relationships, details)
[8]13 super(uid, archetype_node_id, name, archetype_details,
14 feeder_audit, links, nil)
15 uid_valid(uid)
16 @uid = uid
[9]17 identities_vaild(identities)
18 @identities = identities
19 contacts_valid(contacts)
20 @contacts = contacts
21 relationships_valid(relationships)
[8]22 end
[7]23 def type
[51]24 return name
[7]25 end
[9]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
[8]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
[9]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
[7]58 end
[86]59 class Actor < Party
[51]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
[10]103 end
[86]104 class Contact < OpenEHR::RM::Common::Archetyped::Locatable
[51]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
[86]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
[6]150 end # of Demographic
151 end # of RM
152end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.