~dongpo-deng/sahana-eden/test

« back to all changes in this revision

Viewing changes to models/nim.py

  • Committer: Deng Dongpo
  • Date: 2010-08-01 09:29:44 UTC
  • Revision ID: dongpo@dhcp-21193.iis.sinica.edu.tw-20100801092944-8t9obt4xtl7otesb
initial

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
 
 
3
"""
 
4
    NIM Nursing Information Manager
 
5
 
 
6
    @author: nursix
 
7
"""
 
8
 
 
9
module = "nim"
 
10
if deployment_settings.has_module(module):
 
11
 
 
12
    # Settings
 
13
    resource = 'setting'
 
14
    table = module + '_' + resource
 
15
    db.define_table(table,
 
16
                    Field('audit_read', 'boolean'),
 
17
                    Field('audit_write', 'boolean'),
 
18
                    migrate=migrate)
 
19
 
 
20
    # *****************************************************************************
 
21
    #
 
22
    def shn_nim_represent_user(id):
 
23
 
 
24
        table = auth.settings.table_user
 
25
 
 
26
        if id:
 
27
            user = db(table.id==id).select(table.first_name, table.last_name)
 
28
            if user:
 
29
                user = user[0]
 
30
                name = user.first_name
 
31
                if user.last_name:
 
32
                    name = "%s %s" % (name, user.last_name)
 
33
                return name
 
34
 
 
35
        return None
 
36
 
 
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',
 
42
                            label = T('Nurse')
 
43
                            )
 
44
                    )
 
45
 
 
46
    if auth.user is not None:
 
47
        user_id.user_id.default = auth.user.id
 
48
 
 
49
    # *****************************************************************************
 
50
    # Anamnesis: General
 
51
    #
 
52
    nim_care_strategy_opts = {
 
53
        1: T("Counselling"),
 
54
        2: T("Assisted Self-care"),
 
55
        3: T("Family Care"),
 
56
        4: T("Assisted Family Care"),
 
57
        5: T("Professional Care"),
 
58
        6: T("Medical Attention"),
 
59
        7: T("On-site Hospitalization"),
 
60
        8: T("Evacuation"),
 
61
        99: T("Self-care")
 
62
    }
 
63
 
 
64
    resource = 'anamnesis'
 
65
    table = module + '_' + resource
 
66
    db.define_table(table, timestamp, uuidstamp, deletion_status,
 
67
                        person_id,                          # Person ID
 
68
                        user_id,
 
69
                        shelter_id,
 
70
                        Field('opt_nim_care_strategy',
 
71
                            'integer',
 
72
                            requires = IS_IN_SET(nim_care_strategy_opts, zero=None),
 
73
                            default = 99,
 
74
                            label = T('Care Strategy'),
 
75
                            represent = lambda opt: nim_care_strategy_opts.get(opt, UNKNOWN_OPT)),
 
76
                        Field('lang_spoken'),
 
77
                        Field('lang_understood'),
 
78
                        Field('lang_comment'),
 
79
                        migrate=migrate)
 
80
 
 
81
    # Component
 
82
    s3xrc.model.add_component(module, resource,
 
83
                              multiple=False,
 
84
                              joinby=dict(pr_person='person_id'),
 
85
                              deletable=True,
 
86
                              editable=True)
 
87
 
 
88
    s3xrc.model.configure(db[table],
 
89
                          list_fields = ['id', 'opt_nim_care_strategy'])
 
90
 
 
91
    # *****************************************************************************
 
92
    # Anamnesis: Disabilities
 
93
    #
 
94
    resource = 'disabilities'
 
95
    table = module + '_' + resource
 
96
    db.define_table(table, timestamp, uuidstamp, deletion_status,
 
97
                        person_id,                          # Person ID
 
98
                        Field('disabilities'),
 
99
                        migrate=migrate)
 
100
 
 
101
    # Component
 
102
    s3xrc.model.add_component(module, resource,
 
103
                              multiple=False,
 
104
                              joinby=dict(pr_person='person_id'),
 
105
                              deletable=True,
 
106
                              editable=True)
 
107
 
 
108
    s3xrc.model.configure(db[table],
 
109
                          list_fields = ['id', 'disabilities'])
 
110
 
 
111
    # *****************************************************************************
 
112
    # Anamnesis: Diseases
 
113
    #
 
114
    resource = 'diseases'
 
115
    table = module + '_' + resource
 
116
    db.define_table(table, timestamp, uuidstamp, deletion_status,
 
117
                        person_id,                          # Person ID
 
118
                        Field('diseases'),
 
119
                        migrate=migrate)
 
120
 
 
121
    # Component
 
122
    s3xrc.model.add_component(module, resource,
 
123
                              multiple=False,
 
124
                              joinby=dict(pr_person='person_id'),
 
125
                              deletable=True,
 
126
                              editable=True)
 
127
 
 
128
    s3xrc.model.configure(db[table],
 
129
                          list_fields = ['id', 'diseases'])
 
130
 
 
131
    # *****************************************************************************
 
132
    # Anamnesis: Injuries
 
133
    #
 
134
    resource = 'injuries'
 
135
    table = module + '_' + resource
 
136
    db.define_table(table, timestamp, uuidstamp, deletion_status,
 
137
                        person_id,                          # Person ID
 
138
                        Field('injuries'),
 
139
                        migrate=migrate)
 
140
 
 
141
    # Component
 
142
    s3xrc.model.add_component(module, resource,
 
143
                              multiple=False,
 
144
                              joinby=dict(pr_person='person_id'),
 
145
                              deletable=True,
 
146
                              editable=True)
 
147
 
 
148
    s3xrc.model.configure(db[table],
 
149
                          list_fields = ['id', 'injuries'])
 
150
 
 
151
    # *****************************************************************************
 
152
    # Anamnesis: Treatments
 
153
    #
 
154
    resource = 'treatments'
 
155
    table = module + '_' + resource
 
156
    db.define_table(table, timestamp, uuidstamp, deletion_status,
 
157
                        person_id,                          # Person ID
 
158
                        Field('treatments'),
 
159
                        migrate=migrate)
 
160
 
 
161
    # Component
 
162
    s3xrc.model.add_component(module, resource,
 
163
                              multiple=False,
 
164
                              joinby=dict(pr_person='person_id'),
 
165
                              deletable=True,
 
166
                              editable=True)
 
167
 
 
168
    s3xrc.model.configure(db[table],
 
169
                          list_fields = ['id', 'treatments'])
 
170
 
 
171
    # *****************************************************************************
 
172
    # Status, physical
 
173
    #
 
174
    resource = 'care_status_physical'
 
175
    table = module + '_' + resource
 
176
    db.define_table(table, timestamp, uuidstamp, deletion_status,
 
177
                        person_id,                          # Person ID
 
178
                        user_id,                            # Nurse
 
179
                        Field('time', 'datetime'),          # Timestamp
 
180
                        Field('status', 'text'),
 
181
                        migrate=migrate)
 
182
 
 
183
    db[table].person_id.label = T("Person")
 
184
 
 
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)
 
187
 
 
188
    # Component
 
189
    s3xrc.model.add_component(module, resource,
 
190
                              multiple=True,
 
191
                              joinby=dict(pr_person='person_id'),
 
192
                              deletable=True,
 
193
                              editable=True)
 
194
 
 
195
    s3xrc.model.configure(db[table],
 
196
                          list_fields = ['id', 'user_id', 'time'])
 
197
 
 
198
    # *****************************************************************************
 
199
    # Care Status: Mental
 
200
    #
 
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'),
 
206
                        migrate=migrate)
 
207
 
 
208
    # Component
 
209
    s3xrc.model.add_component(module, resource,
 
210
                              multiple=True,
 
211
                              joinby=dict(pr_person='person_id'),
 
212
                              deletable=True,
 
213
                              editable=True)
 
214
 
 
215
    s3xrc.model.configure(db[table], list_fields = ['id'])
 
216
 
 
217
    # *****************************************************************************
 
218
    # Care Status: Social
 
219
    #
 
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'),
 
225
                        migrate=migrate)
 
226
 
 
227
    # Component
 
228
    s3xrc.model.add_component(module, resource,
 
229
                              multiple=True,
 
230
                              joinby=dict(pr_person='person_id'),
 
231
                              deletable=True,
 
232
                              editable=True)
 
233
 
 
234
    s3xrc.model.configure(db[table], list_fields = ['id'])
 
235
 
 
236
    # *****************************************************************************
 
237
    # Care Report: Planning
 
238
    #
 
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'),
 
244
                        migrate=migrate)
 
245
 
 
246
    # Component
 
247
    s3xrc.model.add_component(module, resource,
 
248
                              multiple=True,
 
249
                              joinby=dict(pr_person='person_id'),
 
250
                              deletable=True,
 
251
                              editable=True)
 
252
 
 
253
    s3xrc.model.configure(db[table], list_fields = ['id'])
 
254
 
 
255
    # *****************************************************************************
 
256
    # Care Report: Measures
 
257
    #
 
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'),
 
265
                        migrate=migrate)
 
266
 
 
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)
 
269
 
 
270
    # Component
 
271
    s3xrc.model.add_component(module, resource,
 
272
                              multiple=True,
 
273
                              joinby=dict(pr_person='person_id'),
 
274
                              deletable=True,
 
275
                              editable=True)
 
276
 
 
277
    s3xrc.model.configure(db[table], list_fields = ['id', 'time', 'measures'])
 
278
 
 
279
    # *****************************************************************************
 
280
    # Care Report: Planning
 
281
    #
 
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'),
 
287
                        migrate=migrate)
 
288
 
 
289
    # Component
 
290
    s3xrc.model.add_component(module, resource,
 
291
                              multiple=True,
 
292
                              joinby=dict(pr_person='person_id'),
 
293
                              deletable=True,
 
294
                              editable=True)
 
295
 
 
296
    s3xrc.model.configure(db[table], list_fields = ['id'])
 
297
 
 
298
    # *****************************************************************************
 
299
    # Functions
 
300
 
 
301
 
 
302
    # *****************************************************************************