meta-edc 0.3.38__py3-none-any.whl → 0.3.39__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- meta_analytics/__init__.py +0 -2
- meta_analytics/dataframes/__init__.py +1 -0
- meta_analytics/dataframes/get_last_imp_visits_df.py +101 -0
- meta_auth/auth_objects.py +1 -0
- meta_consent/consents.py +6 -0
- meta_consent/locale/lg/LC_MESSAGES/django.po +69 -0
- meta_consent/locale/sw/LC_MESSAGES/django.po +12 -12
- meta_dashboard/locale/lg/LC_MESSAGES/django.po +30 -0
- meta_dashboard/locale/sw/LC_MESSAGES/django.po +11 -2
- meta_dashboard/navbars.py +2 -0
- meta_dashboard/tests/urls.py +0 -1
- meta_dashboard/view_utils/subject_screening_button.py +2 -2
- meta_edc/__init__.py +3 -10
- meta_edc/{celery/debug.py → celery.py} +2 -2
- meta_edc/navbars.py +2 -0
- meta_edc/settings/debug.py +4 -0
- meta_edc/settings/defaults.py +29 -16
- meta_edc/templates/meta_edc/bootstrap3/home.html +1 -1
- meta_edc/urls.py +1 -0
- {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/METADATA +6 -6
- {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/RECORD +70 -59
- {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/WHEEL +1 -1
- meta_pharmacy/admin/__init__.py +0 -1
- meta_pharmacy/admin/actions.py +38 -0
- meta_pharmacy/admin_site.py +5 -1
- meta_pharmacy/apps.py +2 -0
- meta_pharmacy/forms/__init__.py +2 -0
- meta_pharmacy/forms/rx_form.py +16 -0
- meta_pharmacy/{forms.py → forms/substitutions_form.py} +1 -14
- meta_pharmacy/label_configs.py +30 -0
- meta_pharmacy/labels/__init__.py +3 -1
- meta_pharmacy/labels/draw_label_for_subject_with_barcode.py +58 -0
- meta_pharmacy/labels/draw_label_for_subject_with_code128.py +14 -0
- meta_pharmacy/labels/draw_label_with_test_data.py +26 -0
- meta_pharmacy/labels/label_data.py +14 -0
- meta_pharmacy/labels/print_sheets.py +22 -11
- meta_pharmacy/list_data.py +8 -0
- meta_pharmacy/management/commands/__init__.py +0 -0
- meta_pharmacy/management/commands/update_initial_pharmacy_data.py +10 -0
- meta_pharmacy/migrations/0002_initial.py +7 -5
- meta_pharmacy/migrations/0008_remove_lotnumber_medication_and_more.py +390 -0
- meta_pharmacy/migrations/0009_remove_historicalrx_slug.py +17 -0
- meta_pharmacy/models/__init__.py +1 -2
- meta_pharmacy/models/label_data.py +38 -0
- meta_pharmacy/models/{label.py → rx_label.py} +8 -19
- meta_pharmacy/utils/__init__.py +1 -0
- meta_pharmacy/utils/update_initial_pharmacy_data.py +146 -0
- meta_prn/admin/pregnancy_notification_admin.py +6 -2
- meta_reports/admin/__init__.py +1 -0
- meta_reports/admin/dbviews/glucose_summary_admin.py +1 -1
- meta_reports/admin/last_imp_refill_admin.py +181 -0
- meta_reports/migrations/0052_lastimpvisit.py +57 -0
- meta_reports/migrations/0053_rename_lastimpvisit_lastimprefill_and_more.py +31 -0
- meta_reports/models/__init__.py +1 -0
- meta_reports/models/last_imp_refill.py +34 -0
- meta_subject/admin/study_medication_admin.py +10 -0
- meta_subject/forms/study_medication_form.py +35 -0
- meta_subject/locale/lg/LC_MESSAGES/django.po +470 -0
- meta_subject/locale/sw/LC_MESSAGES/django.po +191 -89
- meta_subject/metadata_rules/predicates.py +34 -7
- meta_subject/migrations/0214_historicalstudymedication_stock_codes_and_more.py +44 -0
- meta_subject/migrations/0215_alter_historicalstudymedication_stock_codes_and_more.py +46 -0
- meta_subject/tests/tests/test_mnsi.py +180 -113
- meta_visit_schedule/visit_schedules/phase_three/crfs.py +18 -6
- tests/test_settings.py +4 -1
- meta_edc/celery/__init__.py +0 -2
- meta_edc/celery/live.py +0 -17
- meta_edc/celery/uat.py +0 -17
- meta_pharmacy/admin/lot_number_admin.py +0 -43
- meta_pharmacy/labels/get_label_data.py +0 -30
- meta_pharmacy/models/lot_number.py +0 -25
- meta_reports/models/unmanaged/README +0 -14
- meta_reports/models/unmanaged/patient_history_missing_baseline_cd4.py +0 -26
- meta_reports/models/unmanaged/patient_history_missing_baseline_cd4.sql +0 -10
- meta_reports/models/unmanaged/unattended_three_in_row.py +0 -24
- meta_reports/models/unmanaged/unattended_three_in_row.sql +0 -19
- meta_reports/models/unmanaged/unattended_three_in_row2.py +0 -24
- meta_reports/models/unmanaged/unattended_three_in_row2.sql +0 -39
- meta_reports/models/unmanaged/unattended_two_in_row.py +0 -22
- meta_reports/models/unmanaged/unattended_two_in_row.sql +0 -19
- {meta_reports/models/unmanaged → meta_edc/migrations}/__init__.py +0 -0
- {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/AUTHORS +0 -0
- {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/LICENSE +0 -0
- {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/top_level.txt +0 -0
- /meta_pharmacy/{admin/label_admin.py → management/__init__.py} +0 -0
@@ -8,7 +8,7 @@ msgid ""
|
|
8
8
|
msgstr ""
|
9
9
|
"Project-Id-Version: PACKAGE VERSION\n"
|
10
10
|
"Report-Msgid-Bugs-To: \n"
|
11
|
-
"POT-Creation-Date:
|
11
|
+
"POT-Creation-Date: 2024-11-19 23:35+0300\n"
|
12
12
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13
13
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14
14
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -18,352 +18,454 @@ msgstr ""
|
|
18
18
|
"Content-Transfer-Encoding: 8bit\n"
|
19
19
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
20
20
|
|
21
|
-
#:
|
21
|
+
#: meta_subject/admin/health_economics/health_economics_update_admin.py:18
|
22
|
+
msgid ""
|
23
|
+
"We want to learn about the household and we use these\n"
|
24
|
+
" questions to get an understanding of wealth and opportunities\n"
|
25
|
+
" in the community. A person or persons (people/ members) who share\n"
|
26
|
+
" the same kitchen (pot), live together, and run the household\n"
|
27
|
+
" expenditure from the same income is known as a 'household'. "
|
28
|
+
"Household\n"
|
29
|
+
" members should be identified on the basis that they shared a place "
|
30
|
+
"of\n"
|
31
|
+
" living together most of time for the past one year. When it is\n"
|
32
|
+
" difficult to demarcate 'most of the time', living together for the\n"
|
33
|
+
" past six months or more should be used to find out whether or not\n"
|
34
|
+
" the person is a household member. For polygamous households, the\n"
|
35
|
+
" household head should think about all the households and respond\n"
|
36
|
+
" with respect to all households."
|
37
|
+
msgstr ""
|
38
|
+
|
39
|
+
#: meta_subject/admin/health_economics/health_economics_update_admin.py:58
|
40
|
+
msgid ""
|
41
|
+
"Before asking about household income, we would first liketo know about the "
|
42
|
+
"number of rooms in the home and number of beds. "
|
43
|
+
msgstr ""
|
44
|
+
|
45
|
+
#: meta_subject/admin/health_economics/health_economics_update_admin.py:72
|
46
|
+
msgid ""
|
47
|
+
"Now, I will ask about income for the household from paid workor other "
|
48
|
+
"sources. Please think of the total income for the household, including "
|
49
|
+
"income from all household members as defined above. I know it may be "
|
50
|
+
"difficult to estimate, but please do try to give amounts as accurately as "
|
51
|
+
"possible. Please note that all information will be kept strictly "
|
52
|
+
"confidential. This information is important to assess overall health and "
|
53
|
+
"well-being of people in your household, compared to other similar households."
|
54
|
+
msgstr ""
|
55
|
+
|
56
|
+
#: meta_subject/choices.py:39 meta_subject/choices.py:48
|
22
57
|
msgid "Working"
|
23
58
|
msgstr ""
|
24
59
|
|
25
|
-
#: choices.py:
|
60
|
+
#: meta_subject/choices.py:40 meta_subject/choices.py:49
|
26
61
|
msgid "Studying"
|
27
62
|
msgstr ""
|
28
63
|
|
29
|
-
#: choices.py:
|
64
|
+
#: meta_subject/choices.py:41 meta_subject/choices.py:50
|
30
65
|
msgid "Caring for children"
|
31
66
|
msgstr ""
|
32
67
|
|
33
|
-
#: choices.py:
|
68
|
+
#: meta_subject/choices.py:42
|
34
69
|
msgid "Other, please specify"
|
35
70
|
msgstr ""
|
36
71
|
|
37
|
-
#: choices.py:
|
38
|
-
#: choices.py:
|
72
|
+
#: meta_subject/choices.py:47 meta_subject/choices.py:59
|
73
|
+
#: meta_subject/choices.py:66 meta_subject/choices.py:81
|
74
|
+
#: meta_subject/choices.py:88 meta_subject/choices.py:118
|
75
|
+
#: meta_subject/choices.py:140 meta_subject/choices.py:167
|
76
|
+
#: meta_subject/choices.py:175 meta_subject/choices.py:220
|
39
77
|
msgid "Not applicable"
|
40
78
|
msgstr ""
|
41
79
|
|
42
|
-
#: choices.py:
|
80
|
+
#: meta_subject/choices.py:51
|
43
81
|
msgid "House maintenance"
|
44
82
|
msgstr ""
|
45
83
|
|
46
|
-
#: choices.py:
|
84
|
+
#: meta_subject/choices.py:52
|
47
85
|
msgid "Nothing"
|
48
86
|
msgstr ""
|
49
87
|
|
50
|
-
#: choices.py:
|
88
|
+
#: meta_subject/choices.py:53 meta_subject/choices.py:210
|
51
89
|
msgid "Other, specify"
|
52
90
|
msgstr ""
|
53
91
|
|
54
|
-
#: choices.py:
|
92
|
+
#: meta_subject/choices.py:57
|
55
93
|
msgid "Study participant"
|
56
94
|
msgstr ""
|
57
95
|
|
58
|
-
#: choices.py:
|
96
|
+
#: meta_subject/choices.py:58 meta_subject/choices.py:133
|
97
|
+
#: meta_subject/choices.py:219
|
59
98
|
msgid "Other"
|
60
99
|
msgstr ""
|
61
100
|
|
62
|
-
#: choices.py:
|
101
|
+
#: meta_subject/choices.py:63
|
63
102
|
msgid "At home"
|
64
103
|
msgstr ""
|
65
104
|
|
66
|
-
#: choices.py:
|
105
|
+
#: meta_subject/choices.py:64
|
67
106
|
msgid "Hospital / Clinic"
|
68
107
|
msgstr ""
|
69
108
|
|
70
|
-
#: choices.py:
|
109
|
+
#: meta_subject/choices.py:65
|
71
110
|
msgid "Other location, specify"
|
72
111
|
msgstr ""
|
73
112
|
|
74
|
-
#: choices.py:
|
113
|
+
#: meta_subject/choices.py:70
|
75
114
|
msgid "Excellent"
|
76
115
|
msgstr ""
|
77
116
|
|
78
|
-
#: choices.py:
|
117
|
+
#: meta_subject/choices.py:71
|
79
118
|
msgid "Very good"
|
80
119
|
msgstr ""
|
81
120
|
|
82
|
-
#: choices.py:
|
121
|
+
#: meta_subject/choices.py:72
|
83
122
|
msgid "Good"
|
84
123
|
msgstr ""
|
85
124
|
|
86
|
-
#: choices.py:
|
125
|
+
#: meta_subject/choices.py:73
|
87
126
|
msgid "Fair"
|
88
127
|
msgstr ""
|
89
128
|
|
90
|
-
#: choices.py:
|
129
|
+
#: meta_subject/choices.py:74
|
91
130
|
msgid "Poor"
|
92
131
|
msgstr ""
|
93
132
|
|
94
|
-
#: choices.py:
|
133
|
+
#: meta_subject/choices.py:80
|
95
134
|
msgid "Other, specify below ..."
|
96
135
|
msgstr ""
|
97
136
|
|
98
|
-
#: choices.py:
|
137
|
+
#: meta_subject/choices.py:86
|
138
|
+
msgid "No. A repeat FBG will be scheduled"
|
139
|
+
msgstr ""
|
140
|
+
|
141
|
+
#: meta_subject/choices.py:92 meta_subject/choices.py:146
|
99
142
|
msgid "All of the time"
|
100
143
|
msgstr ""
|
101
144
|
|
102
|
-
#: choices.py:
|
145
|
+
#: meta_subject/choices.py:93 meta_subject/choices.py:147
|
103
146
|
msgid "Most of the time"
|
104
147
|
msgstr ""
|
105
148
|
|
106
|
-
#: choices.py:
|
149
|
+
#: meta_subject/choices.py:94
|
107
150
|
msgid "A good bit of the time"
|
108
151
|
msgstr ""
|
109
152
|
|
110
|
-
#: choices.py:
|
153
|
+
#: meta_subject/choices.py:95 meta_subject/choices.py:148
|
111
154
|
msgid "Some of the time"
|
112
155
|
msgstr ""
|
113
156
|
|
114
|
-
#: choices.py:
|
157
|
+
#: meta_subject/choices.py:96 meta_subject/choices.py:149
|
115
158
|
msgid "A little of the time"
|
116
159
|
msgstr ""
|
117
160
|
|
118
|
-
#: choices.py:
|
161
|
+
#: meta_subject/choices.py:97 meta_subject/choices.py:150
|
119
162
|
msgid "None of the time"
|
120
163
|
msgstr ""
|
121
164
|
|
122
|
-
#: choices.py:
|
165
|
+
#: meta_subject/choices.py:102
|
123
166
|
msgid "Live birth at term"
|
124
167
|
msgstr ""
|
125
168
|
|
126
|
-
#: choices.py:
|
169
|
+
#: meta_subject/choices.py:103
|
127
170
|
msgid "Live birth preterm"
|
128
171
|
msgstr ""
|
129
172
|
|
130
|
-
#: choices.py:
|
173
|
+
#: meta_subject/choices.py:104
|
131
174
|
msgid "Stillbirth"
|
132
175
|
msgstr ""
|
133
176
|
|
134
|
-
#: choices.py:
|
177
|
+
#: meta_subject/choices.py:105
|
135
178
|
msgid "Miscarriage"
|
136
179
|
msgstr ""
|
137
180
|
|
138
|
-
#: choices.py:
|
181
|
+
#: meta_subject/choices.py:109
|
139
182
|
msgid "Study appointment"
|
140
183
|
msgstr ""
|
141
184
|
|
142
|
-
#: choices.py:
|
185
|
+
#: meta_subject/choices.py:110
|
143
186
|
msgid "Other routine appointment"
|
144
187
|
msgstr ""
|
145
188
|
|
146
|
-
#: choices.py:
|
189
|
+
#: meta_subject/choices.py:111
|
147
190
|
msgid "Unschedule visit"
|
148
191
|
msgstr ""
|
149
192
|
|
150
|
-
#: choices.py:
|
193
|
+
#: meta_subject/choices.py:112
|
151
194
|
msgid "Other reason, specify below ..."
|
152
195
|
msgstr ""
|
153
196
|
|
154
|
-
#: choices.py:
|
197
|
+
#: meta_subject/choices.py:116 meta_subject/choices.py:117
|
155
198
|
#, python-format
|
156
199
|
msgid "Grade %(num)s"
|
157
200
|
msgstr ""
|
158
201
|
|
159
|
-
#: choices.py:
|
202
|
+
#: meta_subject/choices.py:122
|
160
203
|
msgid "YES, limited a lot"
|
161
204
|
msgstr ""
|
162
205
|
|
163
|
-
#: choices.py:
|
206
|
+
#: meta_subject/choices.py:123
|
164
207
|
msgid "YES, limited a little"
|
165
208
|
msgstr ""
|
166
209
|
|
167
|
-
#: choices.py:
|
210
|
+
#: meta_subject/choices.py:124
|
168
211
|
msgid "NO, not at all limited"
|
169
212
|
msgstr ""
|
170
213
|
|
171
|
-
#: choices.py:
|
214
|
+
#: meta_subject/choices.py:128
|
172
215
|
msgid "Hospital notes"
|
173
216
|
msgstr ""
|
174
217
|
|
175
|
-
#: choices.py:
|
218
|
+
#: meta_subject/choices.py:129
|
176
219
|
msgid "Outpatient cards"
|
177
220
|
msgstr ""
|
178
221
|
|
179
|
-
#: choices.py:
|
222
|
+
#: meta_subject/choices.py:130
|
180
223
|
msgid "Patient"
|
181
224
|
msgstr ""
|
182
225
|
|
183
|
-
#: choices.py:
|
226
|
+
#: meta_subject/choices.py:131
|
184
227
|
msgid "Collateral History from relative/guardian"
|
185
228
|
msgstr ""
|
186
229
|
|
187
|
-
#: choices.py:
|
230
|
+
#: meta_subject/choices.py:132
|
188
231
|
msgid "Not applicable (if missed)"
|
189
232
|
msgstr ""
|
190
233
|
|
191
|
-
#: choices.py:
|
234
|
+
#: meta_subject/choices.py:139
|
192
235
|
msgid "Hospital / Clinic records"
|
193
236
|
msgstr ""
|
194
237
|
|
195
|
-
#: choices.py:
|
238
|
+
#: meta_subject/choices.py:154
|
196
239
|
msgid "No retinopathy"
|
197
240
|
msgstr ""
|
198
241
|
|
199
|
-
#: choices.py:
|
242
|
+
#: meta_subject/choices.py:155
|
200
243
|
msgid "Background retinopathy"
|
201
244
|
msgstr ""
|
202
245
|
|
203
|
-
#: choices.py:
|
246
|
+
#: meta_subject/choices.py:156
|
204
247
|
msgid "Pre-proliferative retinopathy"
|
205
248
|
msgstr ""
|
206
249
|
|
207
|
-
#: choices.py:
|
250
|
+
#: meta_subject/choices.py:157
|
208
251
|
msgid "Proliferative retinopathy"
|
209
252
|
msgstr ""
|
210
253
|
|
211
|
-
#: choices.py:
|
254
|
+
#: meta_subject/choices.py:158
|
212
255
|
msgid "Maculopathy"
|
213
256
|
msgstr ""
|
214
257
|
|
215
|
-
#: choices.py:
|
258
|
+
#: meta_subject/choices.py:159 meta_subject/choices.py:181
|
259
|
+
#: meta_subject/choices.py:188 meta_subject/choices.py:242
|
216
260
|
msgid "Exam not performed"
|
217
261
|
msgstr ""
|
218
262
|
|
219
|
-
#: choices.py:
|
263
|
+
#: meta_subject/choices.py:163
|
220
264
|
msgid "No complications"
|
221
265
|
msgstr ""
|
222
266
|
|
223
|
-
#: choices.py:
|
267
|
+
#: meta_subject/choices.py:164
|
224
268
|
msgid "Complications with full recovery"
|
225
269
|
msgstr ""
|
226
270
|
|
227
|
-
#: choices.py:
|
271
|
+
#: meta_subject/choices.py:165
|
228
272
|
msgid "Complications with ongoing recovery"
|
229
273
|
msgstr ""
|
230
274
|
|
231
|
-
#: choices.py:
|
275
|
+
#: meta_subject/choices.py:166
|
232
276
|
msgid "Maternal mortality"
|
233
277
|
msgstr ""
|
234
278
|
|
235
|
-
#: choices.py:
|
279
|
+
#: meta_subject/choices.py:171
|
236
280
|
msgid "Own cash"
|
237
281
|
msgstr ""
|
238
282
|
|
239
|
-
#: choices.py:
|
283
|
+
#: meta_subject/choices.py:172
|
240
284
|
msgid "Insurance"
|
241
285
|
msgstr ""
|
242
286
|
|
243
|
-
#: choices.py:
|
287
|
+
#: meta_subject/choices.py:173
|
244
288
|
msgid "Relative of others paying"
|
245
289
|
msgstr ""
|
246
290
|
|
247
|
-
#: choices.py:
|
291
|
+
#: meta_subject/choices.py:174
|
248
292
|
msgid "Free drugs from the pharmacy"
|
249
293
|
msgstr ""
|
250
294
|
|
251
|
-
#: choices.py:
|
295
|
+
#: meta_subject/choices.py:179 meta_subject/choices.py:185
|
252
296
|
msgid "Present"
|
253
297
|
msgstr ""
|
254
298
|
|
255
|
-
#: choices.py:
|
299
|
+
#: meta_subject/choices.py:180 meta_subject/choices.py:187
|
256
300
|
msgid "Absent"
|
257
301
|
msgstr ""
|
258
302
|
|
259
|
-
#: choices.py:
|
303
|
+
#: meta_subject/choices.py:186
|
260
304
|
msgid "Present with reinforcement"
|
261
305
|
msgstr ""
|
262
306
|
|
263
|
-
#: choices.py:
|
307
|
+
#: meta_subject/choices.py:193
|
264
308
|
msgid "New"
|
265
309
|
msgstr ""
|
266
310
|
|
267
|
-
#: choices.py:
|
311
|
+
#: meta_subject/choices.py:194
|
268
312
|
msgid "Open. Some information is still pending."
|
269
313
|
msgstr ""
|
270
314
|
|
271
|
-
#: choices.py:
|
315
|
+
#: meta_subject/choices.py:195
|
272
316
|
msgid "Closed. This report is complete"
|
273
317
|
msgstr ""
|
274
318
|
|
275
|
-
#: choices.py:
|
319
|
+
#: meta_subject/choices.py:200
|
276
320
|
msgid "Bus"
|
277
321
|
msgstr ""
|
278
322
|
|
279
|
-
#: choices.py:
|
323
|
+
#: meta_subject/choices.py:201
|
280
324
|
msgid "Train"
|
281
325
|
msgstr ""
|
282
326
|
|
283
|
-
#: choices.py:
|
327
|
+
#: meta_subject/choices.py:202
|
284
328
|
msgid "Ambulance"
|
285
329
|
msgstr ""
|
286
330
|
|
287
|
-
#: choices.py:
|
331
|
+
#: meta_subject/choices.py:203
|
288
332
|
msgid "Private taxi"
|
289
333
|
msgstr ""
|
290
334
|
|
291
|
-
#: choices.py:
|
335
|
+
#: meta_subject/choices.py:204
|
292
336
|
msgid "Own bicycle"
|
293
337
|
msgstr ""
|
294
338
|
|
295
|
-
#: choices.py:
|
339
|
+
#: meta_subject/choices.py:205
|
296
340
|
msgid "Hired motorbike"
|
297
341
|
msgstr ""
|
298
342
|
|
299
|
-
#: choices.py:
|
343
|
+
#: meta_subject/choices.py:206
|
300
344
|
msgid "Own car"
|
301
345
|
msgstr ""
|
302
346
|
|
303
|
-
#: choices.py:
|
347
|
+
#: meta_subject/choices.py:207
|
304
348
|
msgid "Own motorbike"
|
305
349
|
msgstr ""
|
306
350
|
|
307
|
-
#: choices.py:
|
351
|
+
#: meta_subject/choices.py:208
|
308
352
|
msgid "Hired bicycle"
|
309
353
|
msgstr ""
|
310
354
|
|
311
|
-
#: choices.py:
|
355
|
+
#: meta_subject/choices.py:209
|
312
356
|
msgid "Foot"
|
313
357
|
msgstr ""
|
314
358
|
|
315
|
-
#: choices.py:
|
359
|
+
#: meta_subject/choices.py:215
|
316
360
|
msgid "Patient unwell (outpatient)"
|
317
361
|
msgstr ""
|
318
362
|
|
319
|
-
#: choices.py:
|
363
|
+
#: meta_subject/choices.py:216
|
320
364
|
msgid "Patient hospitalised"
|
321
365
|
msgstr ""
|
322
366
|
|
323
|
-
#: choices.py:
|
367
|
+
#: meta_subject/choices.py:217
|
324
368
|
msgid "Routine appointment (non-study)"
|
325
369
|
msgstr ""
|
326
370
|
|
327
|
-
#: choices.py:
|
371
|
+
#: meta_subject/choices.py:218
|
328
372
|
msgid "Recurrence of symptoms"
|
329
373
|
msgstr ""
|
330
374
|
|
331
|
-
#: choices.py:
|
375
|
+
#: meta_subject/choices.py:224
|
332
376
|
msgid "Scheduled visit"
|
333
377
|
msgstr ""
|
334
378
|
|
335
|
-
#: choices.py:
|
379
|
+
#: meta_subject/choices.py:225
|
336
380
|
msgid "Unscheduled visit"
|
337
381
|
msgstr ""
|
338
382
|
|
339
|
-
#: choices.py:
|
383
|
+
#: meta_subject/choices.py:226
|
340
384
|
msgid "Missed visit"
|
341
385
|
msgstr ""
|
342
386
|
|
343
|
-
#: choices.py:
|
387
|
+
#: meta_subject/choices.py:229
|
344
388
|
msgid "Estimated"
|
345
389
|
msgstr ""
|
346
390
|
|
347
|
-
#: choices.py:
|
391
|
+
#: meta_subject/choices.py:229
|
348
392
|
msgid "Measured"
|
349
393
|
msgstr ""
|
350
394
|
|
351
|
-
#: choices.py:
|
395
|
+
#: meta_subject/choices.py:232
|
352
396
|
msgid "Not at all"
|
353
397
|
msgstr ""
|
354
398
|
|
355
|
-
#: choices.py:
|
399
|
+
#: meta_subject/choices.py:233
|
356
400
|
msgid "A little bit"
|
357
401
|
msgstr ""
|
358
402
|
|
359
|
-
#: choices.py:
|
403
|
+
#: meta_subject/choices.py:234
|
360
404
|
msgid "Moderately"
|
361
405
|
msgstr ""
|
362
406
|
|
363
|
-
#: choices.py:
|
407
|
+
#: meta_subject/choices.py:235
|
364
408
|
msgid "Quite a bit"
|
365
409
|
msgstr ""
|
366
410
|
|
367
|
-
#: choices.py:
|
411
|
+
#: meta_subject/choices.py:236
|
368
412
|
msgid "Extremely"
|
369
413
|
msgstr ""
|
414
|
+
|
415
|
+
#: meta_subject/models/health_economics/health_economics_update.py:20
|
416
|
+
msgid ""
|
417
|
+
"Thinking over the last 12 months, can you tell me what the average earnings "
|
418
|
+
"of the household have been?"
|
419
|
+
msgstr ""
|
420
|
+
|
421
|
+
#: meta_subject/models/health_economics/health_economics_update.py:36
|
422
|
+
msgid "Are you the household head?"
|
423
|
+
msgstr ""
|
424
|
+
|
425
|
+
#: meta_subject/models/health_economics/health_economics_update.py:40
|
426
|
+
msgid ""
|
427
|
+
"By head of the household we mean the main decision maker in the household. "
|
428
|
+
"The head can be either male or female. If two people are equal decision-"
|
429
|
+
"makers, take the older person."
|
430
|
+
msgstr ""
|
431
|
+
|
432
|
+
#: meta_subject/models/health_economics/health_economics_update.py:48
|
433
|
+
msgid "If No, what is your relationship to the household head?"
|
434
|
+
msgstr ""
|
435
|
+
|
436
|
+
#: meta_subject/models/health_economics/health_economics_update.py:52
|
437
|
+
msgid "Not applicable if patient is head of household"
|
438
|
+
msgstr ""
|
439
|
+
|
440
|
+
#: meta_subject/models/health_economics/health_economics_update.py:56
|
441
|
+
msgid "If OTHER relationship, specify ..."
|
442
|
+
msgstr ""
|
443
|
+
|
444
|
+
#: meta_subject/models/health_economics/health_economics_update.py:61
|
445
|
+
msgid ""
|
446
|
+
"How many rooms does your dwelling have in total, without counting the "
|
447
|
+
"bathrooms/ toilets or hallways/passageways?"
|
448
|
+
msgstr ""
|
449
|
+
|
450
|
+
#: meta_subject/models/health_economics/health_economics_update.py:68
|
451
|
+
msgid "How many rooms are used for sleeping in your dwelling?"
|
452
|
+
msgstr ""
|
453
|
+
|
454
|
+
#: meta_subject/models/health_economics/health_economics_update.py:73
|
455
|
+
msgid "How many beds does your dwelling have in total?"
|
456
|
+
msgstr ""
|
457
|
+
|
458
|
+
#: meta_subject/models/health_economics/health_economics_update.py:79
|
459
|
+
msgid ""
|
460
|
+
"Outside of this household, how many other people depend on this household's "
|
461
|
+
"income?"
|
462
|
+
msgstr ""
|
463
|
+
|
464
|
+
#: meta_subject/models/health_economics/health_economics_update.py:84
|
465
|
+
msgid ""
|
466
|
+
"Insert '0' if no dependents other than the members in the household roster"
|
467
|
+
msgstr ""
|
468
|
+
|
469
|
+
#: meta_subject/models/health_economics/health_economics_update.py:89
|
470
|
+
msgid "Would you say your household's financial situation is?"
|
471
|
+
msgstr ""
|
@@ -22,7 +22,7 @@ from edc_visit_schedule.constants import (
|
|
22
22
|
)
|
23
23
|
from edc_visit_schedule.utils import is_baseline
|
24
24
|
|
25
|
-
from meta_visit_schedule.constants import MONTH42
|
25
|
+
from meta_visit_schedule.constants import MONTH39, MONTH42, MONTH45
|
26
26
|
|
27
27
|
|
28
28
|
def hba1c_crf_required_at_baseline(visit):
|
@@ -206,14 +206,27 @@ class Predicates(PersistantSingletonMixin):
|
|
206
206
|
return required
|
207
207
|
|
208
208
|
def mnsi_required(self, visit, **kwargs) -> bool:
|
209
|
-
"""Returns True if
|
210
|
-
|
209
|
+
"""Returns True if:
|
210
|
+
- MNSI assessment not performed in the 1, 3 or 6M visits
|
211
|
+
- MNSI assessment not performed in the 36, 39, 42, 45M visits
|
212
|
+
- MNSI assessment not performed in the 48M visit
|
211
213
|
"""
|
214
|
+
model_cls = django_apps.get_model(f"{self.app_label}.mnsi")
|
212
215
|
required = True
|
213
|
-
if
|
214
|
-
|
215
|
-
|
216
|
-
|
216
|
+
if visit.visit_code_sequence != 0:
|
217
|
+
required = False
|
218
|
+
elif visit.visit_code not in [
|
219
|
+
MONTH1,
|
220
|
+
MONTH3,
|
221
|
+
MONTH6,
|
222
|
+
MONTH36,
|
223
|
+
MONTH39,
|
224
|
+
MONTH42,
|
225
|
+
MONTH45,
|
226
|
+
MONTH48,
|
227
|
+
]:
|
228
|
+
required = False
|
229
|
+
elif visit.visit_code in [MONTH1, MONTH3, MONTH6]:
|
217
230
|
objs = model_cls.objects.filter(
|
218
231
|
subject_visit__subject_identifier=visit.subject_identifier,
|
219
232
|
subject_visit__visit_code__in=[MONTH1, MONTH3, MONTH6],
|
@@ -223,16 +236,30 @@ class Predicates(PersistantSingletonMixin):
|
|
223
236
|
if obj.mnsi_performed == YES:
|
224
237
|
required = False
|
225
238
|
break
|
239
|
+
elif visit.visit_code in [MONTH36, MONTH39, MONTH42, MONTH45]:
|
240
|
+
objs = model_cls.objects.filter(
|
241
|
+
subject_visit__subject_identifier=visit.subject_identifier,
|
242
|
+
subject_visit__visit_code__in=[MONTH36, MONTH39, MONTH42, MONTH45],
|
243
|
+
subject_visit__visit_code_sequence=0,
|
244
|
+
)
|
245
|
+
for obj in objs:
|
246
|
+
if obj.mnsi_performed == YES:
|
247
|
+
required = False
|
248
|
+
break
|
226
249
|
return required
|
227
250
|
|
228
251
|
def sf12_required(self, visit, **kwargs):
|
229
252
|
model = f"{self.app_label}.sf12"
|
253
|
+
if visit.visit_code_sequence == 0 and visit.visit_code in [MONTH36, MONTH48]:
|
254
|
+
return True
|
230
255
|
return self.persistant_singleton_required(
|
231
256
|
visit, model=model, exclude_visit_codes=[DAY1]
|
232
257
|
)
|
233
258
|
|
234
259
|
def eq5d3l_required(self, visit, **kwargs):
|
235
260
|
model = f"{self.app_label}.eq5d3l"
|
261
|
+
if visit.visit_code_sequence == 0 and visit.visit_code in [MONTH36, MONTH48]:
|
262
|
+
return True
|
236
263
|
return self.persistant_singleton_required(
|
237
264
|
visit, model=model, exclude_visit_codes=[DAY1]
|
238
265
|
)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# Generated by Django 5.1.2 on 2024-11-18 02:18
|
2
|
+
|
3
|
+
import django.core.validators
|
4
|
+
from django.db import migrations, models
|
5
|
+
|
6
|
+
|
7
|
+
class Migration(migrations.Migration):
|
8
|
+
|
9
|
+
dependencies = [
|
10
|
+
("meta_subject", "0213_rename_bloodresultslipid_bloodresultslipids_and_more"),
|
11
|
+
]
|
12
|
+
|
13
|
+
operations = [
|
14
|
+
migrations.AddField(
|
15
|
+
model_name="historicalstudymedication",
|
16
|
+
name="stock_codes",
|
17
|
+
field=models.CharField(
|
18
|
+
blank=True,
|
19
|
+
help_text="Enter the medication bottle barcode or bacodes seperated by comma, no spaces",
|
20
|
+
max_length=30,
|
21
|
+
null=True,
|
22
|
+
validators=[
|
23
|
+
django.core.validators.RegexValidator(
|
24
|
+
regex="^([a-zA-Z0-9]{6})(,[a-zA-Z0-9]{6})*$"
|
25
|
+
)
|
26
|
+
],
|
27
|
+
),
|
28
|
+
),
|
29
|
+
migrations.AddField(
|
30
|
+
model_name="studymedication",
|
31
|
+
name="stock_codes",
|
32
|
+
field=models.CharField(
|
33
|
+
blank=True,
|
34
|
+
help_text="Enter the medication bottle barcode or bacodes seperated by comma, no spaces",
|
35
|
+
max_length=30,
|
36
|
+
null=True,
|
37
|
+
validators=[
|
38
|
+
django.core.validators.RegexValidator(
|
39
|
+
regex="^([a-zA-Z0-9]{6})(,[a-zA-Z0-9]{6})*$"
|
40
|
+
)
|
41
|
+
],
|
42
|
+
),
|
43
|
+
),
|
44
|
+
]
|