meta-edc 0.3.33__py3-none-any.whl → 0.3.34__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_auth/auth_objects.py +15 -0
- meta_auth/auths.py +5 -2
- meta_edc/settings/debug.py +2 -2
- meta_edc/settings/defaults.py +4 -0
- meta_edc/urls.py +1 -0
- {meta_edc-0.3.33.dist-info → meta_edc-0.3.34.dist-info}/METADATA +6 -3
- {meta_edc-0.3.33.dist-info → meta_edc-0.3.34.dist-info}/RECORD +40 -29
- {meta_edc-0.3.33.dist-info → meta_edc-0.3.34.dist-info}/WHEEL +1 -1
- meta_pharmacy/admin.py +128 -0
- meta_pharmacy/admin_site.py +5 -0
- meta_pharmacy/apps.py +3 -0
- meta_pharmacy/constants.py +10 -0
- meta_pharmacy/forms.py +65 -0
- meta_pharmacy/migrations/0002_initial.py +693 -0
- meta_pharmacy/migrations/0003_auto_20240909_2335.py +64 -0
- meta_pharmacy/models.py +102 -0
- meta_pharmacy/urls.py +8 -0
- meta_prn/action_items.py +9 -1
- meta_reports/admin/__init__.py +1 -0
- meta_reports/admin/dbviews/__init__.py +1 -0
- meta_reports/admin/dbviews/imp_substitutions_admin.py +88 -0
- meta_reports/migrations/0017_auto_20240819_1711.py +1 -0
- meta_reports/migrations/0047_impsubstitutions.py +56 -0
- meta_reports/migrations/0048_auto_20240909_2338.py +48 -0
- meta_reports/models/__init__.py +1 -0
- meta_reports/models/dbviews/__init__.py +1 -0
- meta_reports/models/dbviews/imp_substitutions/__init__.py +1 -0
- meta_reports/models/dbviews/imp_substitutions/unmanaged_model.py +37 -0
- meta_reports/models/dbviews/imp_substitutions/view_definition.py +20 -0
- meta_reports/models/dbviews/on_study_missing_values/qa_cases.py +0 -1
- meta_sites/tests/test_sites.py +1 -1
- meta_subject/migrations/0107_auto_20220415_0043.py +28 -22
- meta_subject/migrations/0126_auto_20220719_2142.py +4 -4
- meta_subject/migrations/0131_auto_20220722_0411.py +28 -23
- meta_subject/migrations/0132_auto_20220722_1825.py +10 -6
- meta_subject/migrations/0135_auto_20220722_2212.py +39 -35
- meta_subject/migrations/0150_auto_20220914_0039.py +15 -11
- meta_analytics/notebooks/meta_endpoints.ipynb +0 -286
- {meta_edc-0.3.33.dist-info → meta_edc-0.3.34.dist-info}/AUTHORS +0 -0
- {meta_edc-0.3.33.dist-info → meta_edc-0.3.34.dist-info}/LICENSE +0 -0
- {meta_edc-0.3.33.dist-info → meta_edc-0.3.34.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,693 @@
|
|
1
|
+
# Generated by Django 5.1 on 2024-09-09 20:35
|
2
|
+
|
3
|
+
import _socket
|
4
|
+
import django.db.models.deletion
|
5
|
+
import django_audit_fields.fields.hostname_modification_field
|
6
|
+
import django_audit_fields.fields.userfield
|
7
|
+
import django_audit_fields.fields.uuid_auto_field
|
8
|
+
import django_audit_fields.models.audit_model_mixin
|
9
|
+
import django_revision.revision_field
|
10
|
+
import edc_pharmacy.models.rx
|
11
|
+
import edc_sites.managers
|
12
|
+
import edc_utils.date
|
13
|
+
import meta_pharmacy.models
|
14
|
+
import simple_history.models
|
15
|
+
import uuid
|
16
|
+
from django.conf import settings
|
17
|
+
from django.db import migrations, models
|
18
|
+
|
19
|
+
|
20
|
+
class Migration(migrations.Migration):
|
21
|
+
|
22
|
+
initial = True
|
23
|
+
|
24
|
+
dependencies = [
|
25
|
+
("edc_action_item", "0037_remove_actionitem_reference_model_and_more"),
|
26
|
+
("edc_pharmacy", "0023_remove_rx_edc_pharmac_modifie_986021_idx_and_more"),
|
27
|
+
("meta_pharmacy", "0001_initial"),
|
28
|
+
("sites", "0002_alter_domain_unique"),
|
29
|
+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
30
|
+
]
|
31
|
+
|
32
|
+
operations = [
|
33
|
+
migrations.CreateModel(
|
34
|
+
name="Rx",
|
35
|
+
fields=[],
|
36
|
+
options={
|
37
|
+
"proxy": True,
|
38
|
+
"indexes": [],
|
39
|
+
"constraints": [],
|
40
|
+
},
|
41
|
+
bases=("edc_pharmacy.rx",),
|
42
|
+
managers=[
|
43
|
+
("objects", edc_pharmacy.models.rx.Manager()),
|
44
|
+
("on_site", edc_sites.managers.CurrentSiteManager()),
|
45
|
+
],
|
46
|
+
),
|
47
|
+
migrations.CreateModel(
|
48
|
+
name="HistoricalRx",
|
49
|
+
fields=[
|
50
|
+
(
|
51
|
+
"revision",
|
52
|
+
django_revision.revision_field.RevisionField(
|
53
|
+
blank=True,
|
54
|
+
editable=False,
|
55
|
+
help_text="System field. Git repository tag:branch:commit.",
|
56
|
+
max_length=75,
|
57
|
+
null=True,
|
58
|
+
verbose_name="Revision",
|
59
|
+
),
|
60
|
+
),
|
61
|
+
(
|
62
|
+
"created",
|
63
|
+
models.DateTimeField(
|
64
|
+
blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
|
65
|
+
),
|
66
|
+
),
|
67
|
+
(
|
68
|
+
"modified",
|
69
|
+
models.DateTimeField(
|
70
|
+
blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
|
71
|
+
),
|
72
|
+
),
|
73
|
+
(
|
74
|
+
"user_created",
|
75
|
+
django_audit_fields.fields.userfield.UserField(
|
76
|
+
blank=True,
|
77
|
+
help_text="Updated by admin.save_model",
|
78
|
+
max_length=50,
|
79
|
+
verbose_name="user created",
|
80
|
+
),
|
81
|
+
),
|
82
|
+
(
|
83
|
+
"user_modified",
|
84
|
+
django_audit_fields.fields.userfield.UserField(
|
85
|
+
blank=True,
|
86
|
+
help_text="Updated by admin.save_model",
|
87
|
+
max_length=50,
|
88
|
+
verbose_name="user modified",
|
89
|
+
),
|
90
|
+
),
|
91
|
+
(
|
92
|
+
"hostname_created",
|
93
|
+
models.CharField(
|
94
|
+
blank=True,
|
95
|
+
default=_socket.gethostname,
|
96
|
+
help_text="System field. (modified on create only)",
|
97
|
+
max_length=60,
|
98
|
+
verbose_name="Hostname created",
|
99
|
+
),
|
100
|
+
),
|
101
|
+
(
|
102
|
+
"hostname_modified",
|
103
|
+
django_audit_fields.fields.hostname_modification_field.HostnameModificationField(
|
104
|
+
blank=True,
|
105
|
+
help_text="System field. (modified on every save)",
|
106
|
+
max_length=50,
|
107
|
+
verbose_name="Hostname modified",
|
108
|
+
),
|
109
|
+
),
|
110
|
+
(
|
111
|
+
"device_created",
|
112
|
+
models.CharField(blank=True, max_length=10, verbose_name="Device created"),
|
113
|
+
),
|
114
|
+
(
|
115
|
+
"device_modified",
|
116
|
+
models.CharField(
|
117
|
+
blank=True, max_length=10, verbose_name="Device modified"
|
118
|
+
),
|
119
|
+
),
|
120
|
+
(
|
121
|
+
"locale_created",
|
122
|
+
models.CharField(
|
123
|
+
blank=True,
|
124
|
+
help_text="Auto-updated by Modeladmin",
|
125
|
+
max_length=10,
|
126
|
+
null=True,
|
127
|
+
verbose_name="Locale created",
|
128
|
+
),
|
129
|
+
),
|
130
|
+
(
|
131
|
+
"locale_modified",
|
132
|
+
models.CharField(
|
133
|
+
blank=True,
|
134
|
+
help_text="Auto-updated by Modeladmin",
|
135
|
+
max_length=10,
|
136
|
+
null=True,
|
137
|
+
verbose_name="Locale modified",
|
138
|
+
),
|
139
|
+
),
|
140
|
+
(
|
141
|
+
"id",
|
142
|
+
django_audit_fields.fields.uuid_auto_field.UUIDAutoField(
|
143
|
+
blank=True,
|
144
|
+
db_index=True,
|
145
|
+
editable=False,
|
146
|
+
help_text="System auto field. UUID primary key.",
|
147
|
+
),
|
148
|
+
),
|
149
|
+
("subject_identifier", models.CharField(max_length=50)),
|
150
|
+
(
|
151
|
+
"action_identifier",
|
152
|
+
models.CharField(blank=True, db_index=True, max_length=50, null=True),
|
153
|
+
),
|
154
|
+
(
|
155
|
+
"parent_action_identifier",
|
156
|
+
models.CharField(
|
157
|
+
blank=True,
|
158
|
+
help_text="action identifier that links to parent reference model instance.",
|
159
|
+
max_length=30,
|
160
|
+
null=True,
|
161
|
+
),
|
162
|
+
),
|
163
|
+
(
|
164
|
+
"related_action_identifier",
|
165
|
+
models.CharField(
|
166
|
+
blank=True,
|
167
|
+
help_text="action identifier that links to related reference model instance.",
|
168
|
+
max_length=30,
|
169
|
+
null=True,
|
170
|
+
),
|
171
|
+
),
|
172
|
+
("action_item_reason", models.TextField(editable=False, null=True)),
|
173
|
+
(
|
174
|
+
"slug",
|
175
|
+
models.CharField(
|
176
|
+
db_index=True,
|
177
|
+
default="",
|
178
|
+
editable=False,
|
179
|
+
help_text="a field used for quick search",
|
180
|
+
max_length=250,
|
181
|
+
null=True,
|
182
|
+
),
|
183
|
+
),
|
184
|
+
(
|
185
|
+
"rx_identifier",
|
186
|
+
models.CharField(db_index=True, default=uuid.uuid4, max_length=36),
|
187
|
+
),
|
188
|
+
("rx_name", models.CharField(default="study prescription", max_length=36)),
|
189
|
+
("report_datetime", models.DateTimeField(default=edc_utils.date.get_utcnow)),
|
190
|
+
(
|
191
|
+
"rx_date",
|
192
|
+
models.DateField(
|
193
|
+
default=edc_utils.date.get_utcnow, verbose_name="Date RX written"
|
194
|
+
),
|
195
|
+
),
|
196
|
+
(
|
197
|
+
"rx_expiration_date",
|
198
|
+
models.DateField(
|
199
|
+
blank=True,
|
200
|
+
help_text="Leave blank. Will be filled when end of study report is submitted",
|
201
|
+
null=True,
|
202
|
+
verbose_name="Date RX expires",
|
203
|
+
),
|
204
|
+
),
|
205
|
+
(
|
206
|
+
"status",
|
207
|
+
models.CharField(
|
208
|
+
choices=[
|
209
|
+
("New", "New"),
|
210
|
+
("partial", "Partially filled"),
|
211
|
+
("filled", "Filled"),
|
212
|
+
("cancelled", "Cancelled"),
|
213
|
+
],
|
214
|
+
default="New",
|
215
|
+
max_length=25,
|
216
|
+
),
|
217
|
+
),
|
218
|
+
(
|
219
|
+
"refill",
|
220
|
+
models.IntegerField(
|
221
|
+
blank=True,
|
222
|
+
help_text="Number of times this prescription may be refilled",
|
223
|
+
null=True,
|
224
|
+
),
|
225
|
+
),
|
226
|
+
("rando_sid", models.CharField(blank=True, max_length=25, null=True)),
|
227
|
+
("randomizer_name", models.CharField(blank=True, max_length=25, null=True)),
|
228
|
+
(
|
229
|
+
"weight_in_kgs",
|
230
|
+
models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True),
|
231
|
+
),
|
232
|
+
("clinician_initials", models.CharField(max_length=3, null=True)),
|
233
|
+
(
|
234
|
+
"notes",
|
235
|
+
models.TextField(
|
236
|
+
blank=True,
|
237
|
+
help_text="Private notes for pharmacist only",
|
238
|
+
max_length=250,
|
239
|
+
null=True,
|
240
|
+
),
|
241
|
+
),
|
242
|
+
(
|
243
|
+
"history_id",
|
244
|
+
models.UUIDField(
|
245
|
+
default=uuid.uuid4, editable=False, primary_key=True, serialize=False
|
246
|
+
),
|
247
|
+
),
|
248
|
+
("history_date", models.DateTimeField(db_index=True)),
|
249
|
+
("history_change_reason", models.CharField(max_length=100, null=True)),
|
250
|
+
(
|
251
|
+
"history_type",
|
252
|
+
models.CharField(
|
253
|
+
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
|
254
|
+
max_length=1,
|
255
|
+
),
|
256
|
+
),
|
257
|
+
(
|
258
|
+
"action_item",
|
259
|
+
models.ForeignKey(
|
260
|
+
blank=True,
|
261
|
+
db_constraint=False,
|
262
|
+
null=True,
|
263
|
+
on_delete=django.db.models.deletion.DO_NOTHING,
|
264
|
+
related_name="+",
|
265
|
+
to="edc_action_item.actionitem",
|
266
|
+
),
|
267
|
+
),
|
268
|
+
(
|
269
|
+
"history_user",
|
270
|
+
models.ForeignKey(
|
271
|
+
null=True,
|
272
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
273
|
+
related_name="+",
|
274
|
+
to=settings.AUTH_USER_MODEL,
|
275
|
+
),
|
276
|
+
),
|
277
|
+
(
|
278
|
+
"parent_action_item",
|
279
|
+
models.ForeignKey(
|
280
|
+
blank=True,
|
281
|
+
db_constraint=False,
|
282
|
+
null=True,
|
283
|
+
on_delete=django.db.models.deletion.DO_NOTHING,
|
284
|
+
related_name="+",
|
285
|
+
to="edc_action_item.actionitem",
|
286
|
+
),
|
287
|
+
),
|
288
|
+
(
|
289
|
+
"registered_subject",
|
290
|
+
models.ForeignKey(
|
291
|
+
blank=True,
|
292
|
+
db_constraint=False,
|
293
|
+
null=True,
|
294
|
+
on_delete=django.db.models.deletion.DO_NOTHING,
|
295
|
+
related_name="+",
|
296
|
+
to="edc_pharmacy.subject",
|
297
|
+
verbose_name="Subject Identifier",
|
298
|
+
),
|
299
|
+
),
|
300
|
+
(
|
301
|
+
"related_action_item",
|
302
|
+
models.ForeignKey(
|
303
|
+
blank=True,
|
304
|
+
db_constraint=False,
|
305
|
+
null=True,
|
306
|
+
on_delete=django.db.models.deletion.DO_NOTHING,
|
307
|
+
related_name="+",
|
308
|
+
to="edc_action_item.actionitem",
|
309
|
+
),
|
310
|
+
),
|
311
|
+
(
|
312
|
+
"site",
|
313
|
+
models.ForeignKey(
|
314
|
+
blank=True,
|
315
|
+
db_constraint=False,
|
316
|
+
null=True,
|
317
|
+
on_delete=django.db.models.deletion.DO_NOTHING,
|
318
|
+
related_name="+",
|
319
|
+
to="sites.site",
|
320
|
+
),
|
321
|
+
),
|
322
|
+
],
|
323
|
+
options={
|
324
|
+
"verbose_name": "historical rx",
|
325
|
+
"verbose_name_plural": "historical rxs",
|
326
|
+
"ordering": ("-history_date", "-history_id"),
|
327
|
+
"get_latest_by": ("history_date", "history_id"),
|
328
|
+
},
|
329
|
+
bases=(simple_history.models.HistoricalChanges, models.Model),
|
330
|
+
),
|
331
|
+
migrations.CreateModel(
|
332
|
+
name="HistoricalSubstitutions",
|
333
|
+
fields=[
|
334
|
+
(
|
335
|
+
"revision",
|
336
|
+
django_revision.revision_field.RevisionField(
|
337
|
+
blank=True,
|
338
|
+
editable=False,
|
339
|
+
help_text="System field. Git repository tag:branch:commit.",
|
340
|
+
max_length=75,
|
341
|
+
null=True,
|
342
|
+
verbose_name="Revision",
|
343
|
+
),
|
344
|
+
),
|
345
|
+
(
|
346
|
+
"created",
|
347
|
+
models.DateTimeField(
|
348
|
+
blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
|
349
|
+
),
|
350
|
+
),
|
351
|
+
(
|
352
|
+
"modified",
|
353
|
+
models.DateTimeField(
|
354
|
+
blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
|
355
|
+
),
|
356
|
+
),
|
357
|
+
(
|
358
|
+
"user_created",
|
359
|
+
django_audit_fields.fields.userfield.UserField(
|
360
|
+
blank=True,
|
361
|
+
help_text="Updated by admin.save_model",
|
362
|
+
max_length=50,
|
363
|
+
verbose_name="user created",
|
364
|
+
),
|
365
|
+
),
|
366
|
+
(
|
367
|
+
"user_modified",
|
368
|
+
django_audit_fields.fields.userfield.UserField(
|
369
|
+
blank=True,
|
370
|
+
help_text="Updated by admin.save_model",
|
371
|
+
max_length=50,
|
372
|
+
verbose_name="user modified",
|
373
|
+
),
|
374
|
+
),
|
375
|
+
(
|
376
|
+
"hostname_created",
|
377
|
+
models.CharField(
|
378
|
+
blank=True,
|
379
|
+
default=_socket.gethostname,
|
380
|
+
help_text="System field. (modified on create only)",
|
381
|
+
max_length=60,
|
382
|
+
verbose_name="Hostname created",
|
383
|
+
),
|
384
|
+
),
|
385
|
+
(
|
386
|
+
"hostname_modified",
|
387
|
+
django_audit_fields.fields.hostname_modification_field.HostnameModificationField(
|
388
|
+
blank=True,
|
389
|
+
help_text="System field. (modified on every save)",
|
390
|
+
max_length=50,
|
391
|
+
verbose_name="Hostname modified",
|
392
|
+
),
|
393
|
+
),
|
394
|
+
(
|
395
|
+
"device_created",
|
396
|
+
models.CharField(blank=True, max_length=10, verbose_name="Device created"),
|
397
|
+
),
|
398
|
+
(
|
399
|
+
"device_modified",
|
400
|
+
models.CharField(
|
401
|
+
blank=True, max_length=10, verbose_name="Device modified"
|
402
|
+
),
|
403
|
+
),
|
404
|
+
(
|
405
|
+
"locale_created",
|
406
|
+
models.CharField(
|
407
|
+
blank=True,
|
408
|
+
help_text="Auto-updated by Modeladmin",
|
409
|
+
max_length=10,
|
410
|
+
null=True,
|
411
|
+
verbose_name="Locale created",
|
412
|
+
),
|
413
|
+
),
|
414
|
+
(
|
415
|
+
"locale_modified",
|
416
|
+
models.CharField(
|
417
|
+
blank=True,
|
418
|
+
help_text="Auto-updated by Modeladmin",
|
419
|
+
max_length=10,
|
420
|
+
null=True,
|
421
|
+
verbose_name="Locale modified",
|
422
|
+
),
|
423
|
+
),
|
424
|
+
(
|
425
|
+
"id",
|
426
|
+
django_audit_fields.fields.uuid_auto_field.UUIDAutoField(
|
427
|
+
blank=True,
|
428
|
+
db_index=True,
|
429
|
+
editable=False,
|
430
|
+
help_text="System auto field. UUID primary key.",
|
431
|
+
),
|
432
|
+
),
|
433
|
+
("subject_identifier", models.CharField(max_length=50)),
|
434
|
+
("report_datetime", models.DateTimeField()),
|
435
|
+
("row_index", models.IntegerField(null=True)),
|
436
|
+
("sid", models.IntegerField(verbose_name="SID")),
|
437
|
+
(
|
438
|
+
"visit_no",
|
439
|
+
models.IntegerField(blank=True, null=True, verbose_name="Visit Number"),
|
440
|
+
),
|
441
|
+
("dispensed_sid", models.IntegerField(verbose_name="Dispensed SID")),
|
442
|
+
(
|
443
|
+
"updated_visit_no",
|
444
|
+
models.IntegerField(blank=True, null=True, verbose_name="Visit Number"),
|
445
|
+
),
|
446
|
+
(
|
447
|
+
"updated_subject_identifier",
|
448
|
+
models.CharField(
|
449
|
+
blank=True, max_length=50, null=True, verbose_name="Taken from subject"
|
450
|
+
),
|
451
|
+
),
|
452
|
+
(
|
453
|
+
"arm_match",
|
454
|
+
models.CharField(
|
455
|
+
choices=[
|
456
|
+
("Yes", "Yes"),
|
457
|
+
("No", "No"),
|
458
|
+
("not_evaluated", "Not evaluated"),
|
459
|
+
],
|
460
|
+
default="not_evaluated",
|
461
|
+
max_length=15,
|
462
|
+
),
|
463
|
+
),
|
464
|
+
("notes", models.TextField(verbose_name="Notes")),
|
465
|
+
(
|
466
|
+
"history_id",
|
467
|
+
models.UUIDField(
|
468
|
+
default=uuid.uuid4, editable=False, primary_key=True, serialize=False
|
469
|
+
),
|
470
|
+
),
|
471
|
+
("history_date", models.DateTimeField(db_index=True)),
|
472
|
+
("history_change_reason", models.CharField(max_length=100, null=True)),
|
473
|
+
(
|
474
|
+
"history_type",
|
475
|
+
models.CharField(
|
476
|
+
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
|
477
|
+
max_length=1,
|
478
|
+
),
|
479
|
+
),
|
480
|
+
(
|
481
|
+
"history_user",
|
482
|
+
models.ForeignKey(
|
483
|
+
null=True,
|
484
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
485
|
+
related_name="+",
|
486
|
+
to=settings.AUTH_USER_MODEL,
|
487
|
+
),
|
488
|
+
),
|
489
|
+
(
|
490
|
+
"site",
|
491
|
+
models.ForeignKey(
|
492
|
+
blank=True,
|
493
|
+
db_constraint=False,
|
494
|
+
null=True,
|
495
|
+
on_delete=django.db.models.deletion.DO_NOTHING,
|
496
|
+
related_name="+",
|
497
|
+
to="sites.site",
|
498
|
+
),
|
499
|
+
),
|
500
|
+
(
|
501
|
+
"rx",
|
502
|
+
models.ForeignKey(
|
503
|
+
blank=True,
|
504
|
+
db_constraint=False,
|
505
|
+
null=True,
|
506
|
+
on_delete=django.db.models.deletion.DO_NOTHING,
|
507
|
+
related_name="+",
|
508
|
+
to="meta_pharmacy.rx",
|
509
|
+
),
|
510
|
+
),
|
511
|
+
],
|
512
|
+
options={
|
513
|
+
"verbose_name": "historical IMP Substitution",
|
514
|
+
"verbose_name_plural": "historical IMP Substitutions",
|
515
|
+
"ordering": ("-history_date", "-history_id"),
|
516
|
+
"get_latest_by": ("history_date", "history_id"),
|
517
|
+
},
|
518
|
+
bases=(simple_history.models.HistoricalChanges, models.Model),
|
519
|
+
),
|
520
|
+
migrations.CreateModel(
|
521
|
+
name="Substitutions",
|
522
|
+
fields=[
|
523
|
+
(
|
524
|
+
"revision",
|
525
|
+
django_revision.revision_field.RevisionField(
|
526
|
+
blank=True,
|
527
|
+
editable=False,
|
528
|
+
help_text="System field. Git repository tag:branch:commit.",
|
529
|
+
max_length=75,
|
530
|
+
null=True,
|
531
|
+
verbose_name="Revision",
|
532
|
+
),
|
533
|
+
),
|
534
|
+
(
|
535
|
+
"created",
|
536
|
+
models.DateTimeField(
|
537
|
+
blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
|
538
|
+
),
|
539
|
+
),
|
540
|
+
(
|
541
|
+
"modified",
|
542
|
+
models.DateTimeField(
|
543
|
+
blank=True, default=django_audit_fields.models.audit_model_mixin.utcnow
|
544
|
+
),
|
545
|
+
),
|
546
|
+
(
|
547
|
+
"user_created",
|
548
|
+
django_audit_fields.fields.userfield.UserField(
|
549
|
+
blank=True,
|
550
|
+
help_text="Updated by admin.save_model",
|
551
|
+
max_length=50,
|
552
|
+
verbose_name="user created",
|
553
|
+
),
|
554
|
+
),
|
555
|
+
(
|
556
|
+
"user_modified",
|
557
|
+
django_audit_fields.fields.userfield.UserField(
|
558
|
+
blank=True,
|
559
|
+
help_text="Updated by admin.save_model",
|
560
|
+
max_length=50,
|
561
|
+
verbose_name="user modified",
|
562
|
+
),
|
563
|
+
),
|
564
|
+
(
|
565
|
+
"hostname_created",
|
566
|
+
models.CharField(
|
567
|
+
blank=True,
|
568
|
+
default=_socket.gethostname,
|
569
|
+
help_text="System field. (modified on create only)",
|
570
|
+
max_length=60,
|
571
|
+
verbose_name="Hostname created",
|
572
|
+
),
|
573
|
+
),
|
574
|
+
(
|
575
|
+
"hostname_modified",
|
576
|
+
django_audit_fields.fields.hostname_modification_field.HostnameModificationField(
|
577
|
+
blank=True,
|
578
|
+
help_text="System field. (modified on every save)",
|
579
|
+
max_length=50,
|
580
|
+
verbose_name="Hostname modified",
|
581
|
+
),
|
582
|
+
),
|
583
|
+
(
|
584
|
+
"device_created",
|
585
|
+
models.CharField(blank=True, max_length=10, verbose_name="Device created"),
|
586
|
+
),
|
587
|
+
(
|
588
|
+
"device_modified",
|
589
|
+
models.CharField(
|
590
|
+
blank=True, max_length=10, verbose_name="Device modified"
|
591
|
+
),
|
592
|
+
),
|
593
|
+
(
|
594
|
+
"locale_created",
|
595
|
+
models.CharField(
|
596
|
+
blank=True,
|
597
|
+
help_text="Auto-updated by Modeladmin",
|
598
|
+
max_length=10,
|
599
|
+
null=True,
|
600
|
+
verbose_name="Locale created",
|
601
|
+
),
|
602
|
+
),
|
603
|
+
(
|
604
|
+
"locale_modified",
|
605
|
+
models.CharField(
|
606
|
+
blank=True,
|
607
|
+
help_text="Auto-updated by Modeladmin",
|
608
|
+
max_length=10,
|
609
|
+
null=True,
|
610
|
+
verbose_name="Locale modified",
|
611
|
+
),
|
612
|
+
),
|
613
|
+
(
|
614
|
+
"id",
|
615
|
+
django_audit_fields.fields.uuid_auto_field.UUIDAutoField(
|
616
|
+
blank=True,
|
617
|
+
editable=False,
|
618
|
+
help_text="System auto field. UUID primary key.",
|
619
|
+
primary_key=True,
|
620
|
+
serialize=False,
|
621
|
+
),
|
622
|
+
),
|
623
|
+
("subject_identifier", models.CharField(max_length=50)),
|
624
|
+
("report_datetime", models.DateTimeField()),
|
625
|
+
("row_index", models.IntegerField(null=True)),
|
626
|
+
("sid", models.IntegerField(verbose_name="SID")),
|
627
|
+
(
|
628
|
+
"visit_no",
|
629
|
+
models.IntegerField(blank=True, null=True, verbose_name="Visit Number"),
|
630
|
+
),
|
631
|
+
("dispensed_sid", models.IntegerField(verbose_name="Dispensed SID")),
|
632
|
+
(
|
633
|
+
"updated_visit_no",
|
634
|
+
models.IntegerField(blank=True, null=True, verbose_name="Visit Number"),
|
635
|
+
),
|
636
|
+
(
|
637
|
+
"updated_subject_identifier",
|
638
|
+
models.CharField(
|
639
|
+
blank=True, max_length=50, null=True, verbose_name="Taken from subject"
|
640
|
+
),
|
641
|
+
),
|
642
|
+
(
|
643
|
+
"arm_match",
|
644
|
+
models.CharField(
|
645
|
+
choices=[
|
646
|
+
("Yes", "Yes"),
|
647
|
+
("No", "No"),
|
648
|
+
("not_evaluated", "Not evaluated"),
|
649
|
+
],
|
650
|
+
default="not_evaluated",
|
651
|
+
max_length=15,
|
652
|
+
),
|
653
|
+
),
|
654
|
+
("notes", models.TextField(verbose_name="Notes")),
|
655
|
+
(
|
656
|
+
"site",
|
657
|
+
models.ForeignKey(
|
658
|
+
null=True,
|
659
|
+
on_delete=django.db.models.deletion.PROTECT,
|
660
|
+
related_name="+",
|
661
|
+
to="sites.site",
|
662
|
+
),
|
663
|
+
),
|
664
|
+
(
|
665
|
+
"rx",
|
666
|
+
models.ForeignKey(
|
667
|
+
blank=True,
|
668
|
+
null=True,
|
669
|
+
on_delete=django.db.models.deletion.PROTECT,
|
670
|
+
to="meta_pharmacy.rx",
|
671
|
+
),
|
672
|
+
),
|
673
|
+
],
|
674
|
+
options={
|
675
|
+
"verbose_name": "IMP Substitution",
|
676
|
+
"verbose_name_plural": "IMP Substitutions",
|
677
|
+
"abstract": False,
|
678
|
+
"default_permissions": ("add", "change", "delete", "view", "export", "import"),
|
679
|
+
"default_manager_name": "objects",
|
680
|
+
"indexes": [
|
681
|
+
models.Index(
|
682
|
+
fields=["sid", "dispensed_sid", "subject_identifier"],
|
683
|
+
name="meta_pharma_sid_8172c4_idx",
|
684
|
+
),
|
685
|
+
models.Index(fields=["row_index"], name="meta_pharma_row_ind_d06d33_idx"),
|
686
|
+
],
|
687
|
+
},
|
688
|
+
managers=[
|
689
|
+
("objects", meta_pharmacy.models.MyManager()),
|
690
|
+
("on_site", edc_sites.managers.CurrentSiteManager()),
|
691
|
+
],
|
692
|
+
),
|
693
|
+
]
|