meta-edc 0.3.34__py3-none-any.whl → 0.3.36__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_edc-0.3.34.dist-info → meta_edc-0.3.36.dist-info}/METADATA +1 -1
- {meta_edc-0.3.34.dist-info → meta_edc-0.3.36.dist-info}/RECORD +15 -12
- meta_pharmacy/admin.py +9 -2
- meta_pharmacy/forms.py +5 -3
- meta_pharmacy/migrations/0004_alter_historicalsubstitutions_report_datetime_and_more.py +23 -0
- meta_pharmacy/migrations/0005_auto_20240911_0352.py +17 -0
- meta_pharmacy/models.py +1 -1
- meta_reports/admin/dbviews/imp_substitutions_admin.py +14 -1
- meta_reports/migrations/0049_auto_20240911_0327.py +54 -0
- meta_reports/models/dbviews/imp_substitutions/unmanaged_model.py +2 -0
- meta_reports/models/dbviews/imp_substitutions/view_definition.py +2 -1
- {meta_edc-0.3.34.dist-info → meta_edc-0.3.36.dist-info}/AUTHORS +0 -0
- {meta_edc-0.3.34.dist-info → meta_edc-0.3.36.dist-info}/LICENSE +0 -0
- {meta_edc-0.3.34.dist-info → meta_edc-0.3.36.dist-info}/WHEEL +0 -0
- {meta_edc-0.3.34.dist-info → meta_edc-0.3.36.dist-info}/top_level.txt +0 -0
@@ -289,17 +289,19 @@ meta_lists/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
289
289
|
meta_lists/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
290
290
|
meta_lists/tests/test_lists.py,sha256=qcp2emRyd5-cP2oLluy8MpUucBDQ8_GdUxjh2KbZPv4,212
|
291
291
|
meta_pharmacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
292
|
-
meta_pharmacy/admin.py,sha256
|
292
|
+
meta_pharmacy/admin.py,sha256=-HCVaaDFtt_uHzdaSQfM5yDfP44_VgIl-s-IcrPQqzg,3535
|
293
293
|
meta_pharmacy/admin_site.py,sha256=Ekq8Z13f1w4Llm6exO5w4Jk4Bvt-5WN1ydy_BS2rbdI,171
|
294
294
|
meta_pharmacy/apps.py,sha256=VNiKT23F5d5nkXxzu1L-kAqovNOdfxzp-cUC6qcioVQ,732
|
295
295
|
meta_pharmacy/constants.py,sha256=d3NAZwpxCDm9LLQ_QGKBG2txooYg748Ajh8a2deF0kw,263
|
296
|
-
meta_pharmacy/forms.py,sha256=
|
297
|
-
meta_pharmacy/models.py,sha256=
|
296
|
+
meta_pharmacy/forms.py,sha256=4BX6rB7FWBWYlOB2BX4hh3scz5eeKaxt2OCyQBCBO-E,2162
|
297
|
+
meta_pharmacy/models.py,sha256=qwjsvsCr7ryb8DRn1aYD1_wOpAQR6ffumLuYNGxeNEs,3395
|
298
298
|
meta_pharmacy/prepare_meta_pharmacy.py,sha256=5gNiPkmOzWwCW-_q6hgIzj_0tnPuN4Tl1lVI6FygNgs,2945
|
299
299
|
meta_pharmacy/urls.py,sha256=jncXssL_SeRhb_OJVXLdGFvPT3BqtrkSPdq-eyJnGfY,207
|
300
300
|
meta_pharmacy/migrations/0001_initial.py,sha256=2uyWhZ-Qkjum1gJJA5v-BWUdpmKhkf8BcuDQMl8895s,1115
|
301
301
|
meta_pharmacy/migrations/0002_initial.py,sha256=zkPXmGhdEi-EM0HJRBaTUAltdiLRjW1BhU4GEydoBM8,27355
|
302
302
|
meta_pharmacy/migrations/0003_auto_20240909_2335.py,sha256=_hbzV6HaBm-VS_jQMhl3w5srvyaYOQclLBvr_8f79uk,2227
|
303
|
+
meta_pharmacy/migrations/0004_alter_historicalsubstitutions_report_datetime_and_more.py,sha256=33SpQ4UtFs3gblj4WG3KtKtalo8Wynv3uyUOqBe7_Zo,585
|
304
|
+
meta_pharmacy/migrations/0005_auto_20240911_0352.py,sha256=ZwjFlBX_ubNDbTnDny7cvgCb4aSiqhVKhTYDWd6oQmg,534
|
303
305
|
meta_pharmacy/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
304
306
|
meta_prn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
305
307
|
meta_prn/action_items.py,sha256=wz6X7Ve8ibqPBO5kB6S9rYYkWfx8JxsoYRVppzIGAzk,9110
|
@@ -446,7 +448,7 @@ meta_reports/admin/list_filters.py,sha256=pByBzz9-qGwqBfdZFlByxJUZDTJQXOTWfNLjmK
|
|
446
448
|
meta_reports/admin/modeladmin_mixins.py,sha256=RhdkF5W9ccuwaX5NTMF4b9shQJgDFaOlj7ENOTBAG0g,3669
|
447
449
|
meta_reports/admin/dbviews/__init__.py,sha256=2yPu0SO7ZX9yjan0OS9izzws14YYoXcGXmZhwJhax1I,675
|
448
450
|
meta_reports/admin/dbviews/glucose_summary_admin.py,sha256=NqnDKx5l0Q-2xxRGdnf50DaRX1Sn8-DC0jHSk96LkRo,4005
|
449
|
-
meta_reports/admin/dbviews/imp_substitutions_admin.py,sha256
|
451
|
+
meta_reports/admin/dbviews/imp_substitutions_admin.py,sha256=-poOw3fJK7jQERB1PNXNDrWNthwEQpiwmrxoWOsDtjI,3622
|
450
452
|
meta_reports/admin/dbviews/patient_history_missing_baseline_cd4_admin.py,sha256=XyroEqxlX816xrdi0IVSelNPxPBWi96niKa-MQVGkck,2058
|
451
453
|
meta_reports/admin/dbviews/unattended_three_in_row2_admin.py,sha256=0r13KRr0gsH2osmSlffRV11SpSBpWM612AYl-GOoYm0,1347
|
452
454
|
meta_reports/admin/dbviews/unattended_three_in_row_admin.py,sha256=i_-H3pMXRjssf8jFw8gJ8_b0FaM4tX2AI4xfHQDyssU,1121
|
@@ -511,6 +513,7 @@ meta_reports/migrations/0045_auto_20240829_0248.py,sha256=V9F3yLQsbvUL40Fei3FrhB
|
|
511
513
|
meta_reports/migrations/0046_auto_20240829_0250.py,sha256=lKVlj7LrkOJ49LJxccYvQdYEZhnSKTcZEcZMYj7h9q8,30676
|
512
514
|
meta_reports/migrations/0047_impsubstitutions.py,sha256=VPTb5j2t9IvwR-Bq0lnVBGLAVKdL7IbY8DD-cjl_m5o,2088
|
513
515
|
meta_reports/migrations/0048_auto_20240909_2338.py,sha256=mYAOUzJohv9eW9y93fpZTmlgmx_eOBRhUBMr0F3_-_M,3169
|
516
|
+
meta_reports/migrations/0049_auto_20240911_0327.py,sha256=APBkFY9kwzEmhTXkK2-bu6csikh_dVEMH6t2dv_Iz9M,4760
|
514
517
|
meta_reports/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
515
518
|
meta_reports/models/__init__.py,sha256=8JnKMG9devIPboCCGj423x77Ylry2ROdGOnDSk5Xo4w,380
|
516
519
|
meta_reports/models/endpoints.py,sha256=HfxQuKkzu883xbTeVfIEktN-ARoGe1qC6KgEAzRtV5E,925
|
@@ -521,8 +524,8 @@ meta_reports/models/dbviews/glucose_summary/__init__.py,sha256=Tfgjso4TpxMCidAdR
|
|
521
524
|
meta_reports/models/dbviews/glucose_summary/unmanaged_model.py,sha256=uqhD5JLXtyQ94zpG5Puxodjzli3quE4GgiFi7en6EeM,1055
|
522
525
|
meta_reports/models/dbviews/glucose_summary/view_definition.py,sha256=Fc5KN-It9dcBvRta-b26kUl8uQEHA19vrYIhNRqe2Xo,1512
|
523
526
|
meta_reports/models/dbviews/imp_substitutions/__init__.py,sha256=N0507JzoVRtNA9W9_RoiAQYEQZGdvP2U8P83ZJMeZxQ,46
|
524
|
-
meta_reports/models/dbviews/imp_substitutions/unmanaged_model.py,sha256=
|
525
|
-
meta_reports/models/dbviews/imp_substitutions/view_definition.py,sha256=
|
527
|
+
meta_reports/models/dbviews/imp_substitutions/unmanaged_model.py,sha256=ozrkfZFBHAnBBlEY19gRVj6eFiZrVfAnAV6E8OBwnP8,1223
|
528
|
+
meta_reports/models/dbviews/imp_substitutions/view_definition.py,sha256=1t6znTYQJxM_-nTRjMgEY3T2L_ZDFvh2tw-zT8fmxQU,897
|
526
529
|
meta_reports/models/dbviews/missing_screening_ogtt/__init__.py,sha256=7uX_2HfVU-3G1O_xecfGnE5_pcX5eceiRaapeDQtzIw,105
|
527
530
|
meta_reports/models/dbviews/missing_screening_ogtt/note_model.py,sha256=JHItVS11WDFg3lTe7ayH9T7Epd-VvXXD_79FssrmAwc,1813
|
528
531
|
meta_reports/models/dbviews/missing_screening_ogtt/unmanaged_model.py,sha256=_XFzpOiMoxr-F0ebKNEnyXqS6dnb3P5tBRnZlbrQ2x8,1346
|
@@ -1134,9 +1137,9 @@ tests/etc/user-rsa-restricted-private.pem,sha256=CUcHW9bznWdmmASN00hCzvxFPAFl4N2
|
|
1134
1137
|
tests/etc/user-rsa-restricted-public.pem,sha256=mt84djoL-uHw6Wc5SJh0zml6VzXulnf8eQSFg7-fheg,450
|
1135
1138
|
tests/etc/user-salt-local.key,sha256=x5anBw9fvbHurczouT3CjrkWb_xs7Ypm1htIJsgiuiw,256
|
1136
1139
|
tests/etc/user-salt-restricted.key,sha256=pxmpcfBRNB-4C6wTvHXz-9fOfJgKIFOjaAF8ZFfa4q4,256
|
1137
|
-
meta_edc-0.3.
|
1138
|
-
meta_edc-0.3.
|
1139
|
-
meta_edc-0.3.
|
1140
|
-
meta_edc-0.3.
|
1141
|
-
meta_edc-0.3.
|
1142
|
-
meta_edc-0.3.
|
1140
|
+
meta_edc-0.3.36.dist-info/AUTHORS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1141
|
+
meta_edc-0.3.36.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
1142
|
+
meta_edc-0.3.36.dist-info/METADATA,sha256=VHTHIO2rIvXqsAZTTzUCz3jqXvjcUXG8qWlwlgwHgPY,3015
|
1143
|
+
meta_edc-0.3.36.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
1144
|
+
meta_edc-0.3.36.dist-info/top_level.txt,sha256=RkzjNXwRq2kg_uZ_1bDwPUntijSXoY2YBqtByDwvvrc,244
|
1145
|
+
meta_edc-0.3.36.dist-info/RECORD,,
|
meta_pharmacy/admin.py
CHANGED
@@ -2,6 +2,7 @@ from django.contrib import admin
|
|
2
2
|
from django_audit_fields.admin import audit_fieldset_tuple
|
3
3
|
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
|
4
4
|
from edc_model_admin.history import SimpleHistoryAdmin
|
5
|
+
from edc_model_admin.list_filters import ReportDateListFilter
|
5
6
|
from edc_pharmacy.admin.list_filters import MedicationsListFilter
|
6
7
|
from edc_sites.admin import SiteModelAdminMixin
|
7
8
|
|
@@ -51,15 +52,21 @@ class SubstitutionsAdmin(
|
|
51
52
|
"dispensed_sid",
|
52
53
|
"arm_match",
|
53
54
|
"subject_identifier",
|
54
|
-
"
|
55
|
+
"report_date",
|
55
56
|
)
|
56
57
|
|
57
58
|
radio_fields = {"arm_match": admin.VERTICAL}
|
58
59
|
|
59
|
-
list_filter = ("arm_match",
|
60
|
+
list_filter = ("arm_match", ReportDateListFilter)
|
60
61
|
|
61
62
|
search_fields = ["subject_identifier", "sid", "dispensed_sid"]
|
62
63
|
|
64
|
+
@admin.display(description="Report date", ordering="report_datetime")
|
65
|
+
def report_date(self, obj) -> str | None:
|
66
|
+
if obj.report_datetime:
|
67
|
+
return obj.report_datetime.date()
|
68
|
+
return None
|
69
|
+
|
63
70
|
|
64
71
|
@admin.register(Rx, site=meta_pharmacy_admin)
|
65
72
|
class RxAdmin(ModelAdminSubjectDashboardMixin, admin.ModelAdmin):
|
meta_pharmacy/forms.py
CHANGED
@@ -7,6 +7,8 @@ from edc_offstudy.modelform_mixins import OffstudyNonCrfModelFormMixin
|
|
7
7
|
from edc_prn.modelform_mixins import PrnFormValidatorMixin
|
8
8
|
from edc_sites.forms import SiteModelFormMixin
|
9
9
|
|
10
|
+
from meta_rando.models import RandomizationList
|
11
|
+
|
10
12
|
from .models import Rx, Substitutions
|
11
13
|
|
12
14
|
|
@@ -41,11 +43,11 @@ class SubstitutionsForm(
|
|
41
43
|
)
|
42
44
|
if self.cleaned_data.get("dispensed_sid"):
|
43
45
|
try:
|
44
|
-
|
45
|
-
|
46
|
+
RandomizationList.objects.get(
|
47
|
+
sid=self.cleaned_data.get("dispensed_sid"),
|
46
48
|
)
|
47
49
|
except ObjectDoesNotExist:
|
48
|
-
raise forms.ValidationError({"dispensed_sid": "
|
50
|
+
raise forms.ValidationError({"dispensed_sid": "Invalid SID for this trial"})
|
49
51
|
|
50
52
|
class Meta:
|
51
53
|
model = Substitutions
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Generated by Django 5.1 on 2024-09-11 00:30
|
2
|
+
|
3
|
+
from django.db import migrations, models
|
4
|
+
|
5
|
+
|
6
|
+
class Migration(migrations.Migration):
|
7
|
+
|
8
|
+
dependencies = [
|
9
|
+
("meta_pharmacy", "0003_auto_20240909_2335"),
|
10
|
+
]
|
11
|
+
|
12
|
+
operations = [
|
13
|
+
migrations.AlterField(
|
14
|
+
model_name="historicalsubstitutions",
|
15
|
+
name="report_datetime",
|
16
|
+
field=models.DateTimeField(null=True),
|
17
|
+
),
|
18
|
+
migrations.AlterField(
|
19
|
+
model_name="substitutions",
|
20
|
+
name="report_datetime",
|
21
|
+
field=models.DateTimeField(null=True),
|
22
|
+
),
|
23
|
+
]
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Generated by Django 5.1 on 2024-09-11 00:52
|
2
|
+
from django.apps import apps as django_apps
|
3
|
+
from django.db import migrations
|
4
|
+
|
5
|
+
|
6
|
+
def update_report_datetime_as_none(apps, schema_editor):
|
7
|
+
model_cls = django_apps.get_model("meta_pharmacy.substitutions")
|
8
|
+
model_cls.objects.update(report_datetime=None)
|
9
|
+
|
10
|
+
|
11
|
+
class Migration(migrations.Migration):
|
12
|
+
|
13
|
+
dependencies = [
|
14
|
+
("meta_pharmacy", "0004_alter_historicalsubstitutions_report_datetime_and_more"),
|
15
|
+
]
|
16
|
+
|
17
|
+
operations = [migrations.RunPython(update_report_datetime_as_none)]
|
meta_pharmacy/models.py
CHANGED
@@ -41,7 +41,7 @@ class Substitutions(NonUniqueSubjectIdentifierFieldMixin, SiteModelMixin, BaseUu
|
|
41
41
|
values are sequential and not designed for human transcription.
|
42
42
|
"""
|
43
43
|
|
44
|
-
report_datetime = models.DateTimeField()
|
44
|
+
report_datetime = models.DateTimeField(null=True, blank=False)
|
45
45
|
|
46
46
|
row_index = models.IntegerField(null=True)
|
47
47
|
|
@@ -6,6 +6,7 @@ from django.urls import reverse
|
|
6
6
|
from django.utils.translation import gettext_lazy as _
|
7
7
|
from edc_appointment.models import Appointment
|
8
8
|
from edc_model_admin.dashboard import ModelAdminDashboardMixin
|
9
|
+
from edc_model_admin.list_filters import ReportDateListFilter
|
9
10
|
from edc_model_admin.mixins import TemplatesModelAdminMixin
|
10
11
|
from edc_qareports.modeladmin_mixins import QaReportModelAdminMixin
|
11
12
|
from edc_sites.admin import SiteModelAdminMixin
|
@@ -31,6 +32,7 @@ class ImpSubstitutionsAdmin(
|
|
31
32
|
"subject",
|
32
33
|
"sid",
|
33
34
|
"dispensed_sid",
|
35
|
+
"report_date",
|
34
36
|
"arm_match",
|
35
37
|
"allocated_date",
|
36
38
|
"user_created",
|
@@ -38,7 +40,12 @@ class ImpSubstitutionsAdmin(
|
|
38
40
|
"modified",
|
39
41
|
]
|
40
42
|
|
41
|
-
list_filter = [
|
43
|
+
list_filter = [
|
44
|
+
"arm_match",
|
45
|
+
ScheduleStatusListFilter,
|
46
|
+
ReportDateListFilter,
|
47
|
+
"allocated_datetime",
|
48
|
+
]
|
42
49
|
|
43
50
|
search_fields = ["subject_identifier", "sid", "dispensed_sid"]
|
44
51
|
|
@@ -86,3 +93,9 @@ class ImpSubstitutionsAdmin(
|
|
86
93
|
context=dict(title=title, url=url, label=label),
|
87
94
|
)
|
88
95
|
return crf_button
|
96
|
+
|
97
|
+
@admin.display(description="Report date", ordering="report_datetime")
|
98
|
+
def report_date(self, obj) -> str | None:
|
99
|
+
if obj.report_datetime:
|
100
|
+
return obj.report_datetime.date()
|
101
|
+
return None
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# Generated by Django 5.1 on 2024-09-11 00:27
|
2
|
+
|
3
|
+
import django_db_views.migration_functions
|
4
|
+
import django_db_views.operations
|
5
|
+
from django.db import migrations
|
6
|
+
|
7
|
+
|
8
|
+
class Migration(migrations.Migration):
|
9
|
+
|
10
|
+
dependencies = [
|
11
|
+
("meta_reports", "0048_auto_20240909_2338"),
|
12
|
+
]
|
13
|
+
|
14
|
+
operations = [
|
15
|
+
django_db_views.operations.ViewRunPython(
|
16
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
17
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.imp_subjectitutions_view' as `report_model` from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, s.report_datetime, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
18
|
+
"imp_subjectitutions_view",
|
19
|
+
engine="django.db.backends.mysql",
|
20
|
+
),
|
21
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
22
|
+
"select *, uuid() as id, now() as `created`, 'meta_reports.imp_subjectitutions_view' as `report_model` from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
23
|
+
"imp_subjectitutions_view",
|
24
|
+
engine="django.db.backends.mysql",
|
25
|
+
),
|
26
|
+
atomic=False,
|
27
|
+
),
|
28
|
+
django_db_views.operations.ViewRunPython(
|
29
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
30
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, s.report_datetime, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier NULLS FIRST) as A ORDER BY subject_identifier, site_id",
|
31
|
+
"imp_subjectitutions_view",
|
32
|
+
engine="django.db.backends.postgresql",
|
33
|
+
),
|
34
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
35
|
+
"select *, get_random_uuid() as id, now() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier NULLS FIRST) as A ORDER BY subject_identifier, site_id",
|
36
|
+
"imp_subjectitutions_view",
|
37
|
+
engine="django.db.backends.postgresql",
|
38
|
+
),
|
39
|
+
atomic=False,
|
40
|
+
),
|
41
|
+
django_db_views.operations.ViewRunPython(
|
42
|
+
code=django_db_views.migration_functions.ForwardViewMigration(
|
43
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, s.report_datetime, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
44
|
+
"imp_subjectitutions_view",
|
45
|
+
engine="django.db.backends.sqlite3",
|
46
|
+
),
|
47
|
+
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
|
48
|
+
"select *, uuid() as id, datetime() as created, 'meta_reports.imp_subjectitutions_view' as report_model from (SELECT s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime, s.site_id, s.user_created, s.user_modified, s.modified, s.id AS original_id FROM meta_pharmacy_substitutions AS s LEFT JOIN meta_rando_randomizationlist AS r ON r.subject_identifier = s.subject_identifier ORDER BY s.subject_identifier) as A ORDER BY subject_identifier, site_id",
|
49
|
+
"imp_subjectitutions_view",
|
50
|
+
engine="django.db.backends.sqlite3",
|
51
|
+
),
|
52
|
+
atomic=False,
|
53
|
+
),
|
54
|
+
]
|
@@ -19,6 +19,8 @@ class ImpSubstitutions(QaReportModelMixin, DBView):
|
|
19
19
|
max_length=15, choices=YES_NO_NOT_EVALUATED, default=NOT_EVALUATED
|
20
20
|
)
|
21
21
|
|
22
|
+
report_datetime = models.DateTimeField(null=True)
|
23
|
+
|
22
24
|
allocated_datetime = models.DateTimeField(null=True)
|
23
25
|
|
24
26
|
user_created = models.CharField(max_length=25)
|
@@ -3,7 +3,8 @@ from edc_qareports.sql_generator import SqlViewGenerator
|
|
3
3
|
|
4
4
|
def get_view_definition() -> dict:
|
5
5
|
subquery = """
|
6
|
-
select s.subject_identifier, s.sid, s.dispensed_sid, arm_match,
|
6
|
+
select s.subject_identifier, s.sid, s.dispensed_sid, arm_match,
|
7
|
+
s.report_datetime, r.allocated_datetime,
|
7
8
|
s.site_id, s.user_created, s.user_modified, s.modified, s.id as original_id
|
8
9
|
from meta_pharmacy_substitutions as s left join meta_rando_randomizationlist as r
|
9
10
|
on r.subject_identifier=s.subject_identifier
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|