1
# -*- coding: utf-8 -*-
4
NIM Nursing Information Manager
10
if deployment_settings.has_module(module):
14
table = module + '_' + resource
15
db.define_table(table,
16
Field('audit_read', 'boolean'),
17
Field('audit_write', 'boolean'),
20
# *****************************************************************************
22
def shn_nim_represent_user(id):
24
table = auth.settings.table_user
27
user = db(table.id==id).select(table.first_name, table.last_name)
30
name = user.first_name
32
name = "%s %s" % (name, user.last_name)
37
user_id = db.Table(None, 'user_id',
38
Field('user_id', auth.settings.table_user,
39
requires = IS_NULL_OR(IS_ONE_OF(db, auth.settings.table_user.id, shn_nim_represent_user)),
40
represent = lambda id: (id and [shn_nim_represent_user(id)] or ["None"])[0],
41
ondelete = 'RESTRICT',
46
if auth.user is not None:
47
user_id.user_id.default = auth.user.id
49
# *****************************************************************************
52
nim_care_strategy_opts = {
54
2: T("Assisted Self-care"),
56
4: T("Assisted Family Care"),
57
5: T("Professional Care"),
58
6: T("Medical Attention"),
59
7: T("On-site Hospitalization"),
64
resource = 'anamnesis'
65
table = module + '_' + resource
66
db.define_table(table, timestamp, uuidstamp, deletion_status,
67
person_id, # Person ID
70
Field('opt_nim_care_strategy',
72
requires = IS_IN_SET(nim_care_strategy_opts, zero=None),
74
label = T('Care Strategy'),
75
represent = lambda opt: nim_care_strategy_opts.get(opt, UNKNOWN_OPT)),
77
Field('lang_understood'),
78
Field('lang_comment'),
82
s3xrc.model.add_component(module, resource,
84
joinby=dict(pr_person='person_id'),
88
s3xrc.model.configure(db[table],
89
list_fields = ['id', 'opt_nim_care_strategy'])
91
# *****************************************************************************
92
# Anamnesis: Disabilities
94
resource = 'disabilities'
95
table = module + '_' + resource
96
db.define_table(table, timestamp, uuidstamp, deletion_status,
97
person_id, # Person ID
98
Field('disabilities'),
102
s3xrc.model.add_component(module, resource,
104
joinby=dict(pr_person='person_id'),
108
s3xrc.model.configure(db[table],
109
list_fields = ['id', 'disabilities'])
111
# *****************************************************************************
112
# Anamnesis: Diseases
114
resource = 'diseases'
115
table = module + '_' + resource
116
db.define_table(table, timestamp, uuidstamp, deletion_status,
117
person_id, # Person ID
122
s3xrc.model.add_component(module, resource,
124
joinby=dict(pr_person='person_id'),
128
s3xrc.model.configure(db[table],
129
list_fields = ['id', 'diseases'])
131
# *****************************************************************************
132
# Anamnesis: Injuries
134
resource = 'injuries'
135
table = module + '_' + resource
136
db.define_table(table, timestamp, uuidstamp, deletion_status,
137
person_id, # Person ID
142
s3xrc.model.add_component(module, resource,
144
joinby=dict(pr_person='person_id'),
148
s3xrc.model.configure(db[table],
149
list_fields = ['id', 'injuries'])
151
# *****************************************************************************
152
# Anamnesis: Treatments
154
resource = 'treatments'
155
table = module + '_' + resource
156
db.define_table(table, timestamp, uuidstamp, deletion_status,
157
person_id, # Person ID
162
s3xrc.model.add_component(module, resource,
164
joinby=dict(pr_person='person_id'),
168
s3xrc.model.configure(db[table],
169
list_fields = ['id', 'treatments'])
171
# *****************************************************************************
174
resource = 'care_status_physical'
175
table = module + '_' + resource
176
db.define_table(table, timestamp, uuidstamp, deletion_status,
177
person_id, # Person ID
179
Field('time', 'datetime'), # Timestamp
180
Field('status', 'text'),
183
db[table].person_id.label = T("Person")
185
db[table].time.requires = IS_UTC_DATETIME(utc_offset=shn_user_utc_offset(), allow_future=False)
186
db[table].time.represent = lambda value: shn_as_local_time(value)
189
s3xrc.model.add_component(module, resource,
191
joinby=dict(pr_person='person_id'),
195
s3xrc.model.configure(db[table],
196
list_fields = ['id', 'user_id', 'time'])
198
# *****************************************************************************
199
# Care Status: Mental
201
resource = 'care_status_mental'
202
table = module + '_' + resource
203
db.define_table(table, timestamp, uuidstamp, deletion_status,
204
person_id, # Person ID
205
Field('status', 'text'),
209
s3xrc.model.add_component(module, resource,
211
joinby=dict(pr_person='person_id'),
215
s3xrc.model.configure(db[table], list_fields = ['id'])
217
# *****************************************************************************
218
# Care Status: Social
220
resource = 'care_status_social'
221
table = module + '_' + resource
222
db.define_table(table, timestamp, uuidstamp, deletion_status,
223
person_id, # Person ID
224
Field('status', 'text'),
228
s3xrc.model.add_component(module, resource,
230
joinby=dict(pr_person='person_id'),
234
s3xrc.model.configure(db[table], list_fields = ['id'])
236
# *****************************************************************************
237
# Care Report: Planning
239
resource = 'care_report_problems'
240
table = module + '_' + resource
241
db.define_table(table, timestamp, uuidstamp, deletion_status,
242
person_id, # Person ID
243
Field('problems', 'text'),
247
s3xrc.model.add_component(module, resource,
249
joinby=dict(pr_person='person_id'),
253
s3xrc.model.configure(db[table], list_fields = ['id'])
255
# *****************************************************************************
256
# Care Report: Measures
258
resource = 'care_report_measures'
259
table = module + '_' + resource
260
db.define_table(table, timestamp, uuidstamp, deletion_status,
261
person_id, # Person ID
262
Field('time', 'datetime'),
263
Field('measures', length=256),
264
Field('report', 'text'),
267
db[table].time.requires = IS_UTC_DATETIME(utc_offset=shn_user_utc_offset(), allow_future=False)
268
db[table].time.represent = lambda value: shn_as_local_time(value)
271
s3xrc.model.add_component(module, resource,
273
joinby=dict(pr_person='person_id'),
277
s3xrc.model.configure(db[table], list_fields = ['id', 'time', 'measures'])
279
# *****************************************************************************
280
# Care Report: Planning
282
resource = 'care_report_planning'
283
table = module + '_' + resource
284
db.define_table(table, timestamp, uuidstamp, deletion_status,
285
person_id, # Person ID
286
Field('planning', 'text'),
290
s3xrc.model.add_component(module, resource,
292
joinby=dict(pr_person='person_id'),
296
s3xrc.model.configure(db[table], list_fields = ['id'])
298
# *****************************************************************************
302
# *****************************************************************************