Skip to content

Commit

Permalink
add report_datetime to impsubstitutions changelists
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvw committed Sep 11, 2024
1 parent a299b19 commit 9e753c3
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 5 deletions.
11 changes: 9 additions & 2 deletions meta_pharmacy/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from django_audit_fields.admin import audit_fieldset_tuple
from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
from edc_model_admin.history import SimpleHistoryAdmin
from edc_model_admin.list_filters import ReportDateListFilter
from edc_pharmacy.admin.list_filters import MedicationsListFilter
from edc_sites.admin import SiteModelAdminMixin

Expand Down Expand Up @@ -51,15 +52,21 @@ class SubstitutionsAdmin(
"dispensed_sid",
"arm_match",
"subject_identifier",
"report_datetime",
"report_date",
)

radio_fields = {"arm_match": admin.VERTICAL}

list_filter = ("arm_match", "report_datetime")
list_filter = ("arm_match", ReportDateListFilter)

search_fields = ["subject_identifier", "sid", "dispensed_sid"]

@admin.display(description="Report date", ordering="report_datetime")
def report_date(self, obj) -> str | None:
if obj.report_datetime:
return obj.report_datetime.date()
return None


@admin.register(Rx, site=meta_pharmacy_admin)
class RxAdmin(ModelAdminSubjectDashboardMixin, admin.ModelAdmin):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 5.1 on 2024-09-11 00:30

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("meta_pharmacy", "0003_auto_20240909_2335"),
]

operations = [
migrations.AlterField(
model_name="historicalsubstitutions",
name="report_datetime",
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name="substitutions",
name="report_datetime",
field=models.DateTimeField(null=True),
),
]
17 changes: 17 additions & 0 deletions meta_pharmacy/migrations/0005_auto_20240911_0352.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 5.1 on 2024-09-11 00:52
from django.apps import apps as django_apps
from django.db import migrations


def update_report_datetime_as_none(apps, schema_editor):
model_cls = django_apps.get_model("meta_pharmacy.substitutions")
model_cls.objects.update(report_datetime=None)


class Migration(migrations.Migration):

dependencies = [
("meta_pharmacy", "0004_alter_historicalsubstitutions_report_datetime_and_more"),
]

operations = [migrations.RunPython(update_report_datetime_as_none)]
2 changes: 1 addition & 1 deletion meta_pharmacy/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class Substitutions(NonUniqueSubjectIdentifierFieldMixin, SiteModelMixin, BaseUu
values are sequential and not designed for human transcription.
"""

report_datetime = models.DateTimeField()
report_datetime = models.DateTimeField(null=True, blank=False)

row_index = models.IntegerField(null=True)

Expand Down
15 changes: 14 additions & 1 deletion meta_reports/admin/dbviews/imp_substitutions_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from django.utils.translation import gettext_lazy as _
from edc_appointment.models import Appointment
from edc_model_admin.dashboard import ModelAdminDashboardMixin
from edc_model_admin.list_filters import ReportDateListFilter
from edc_model_admin.mixins import TemplatesModelAdminMixin
from edc_qareports.modeladmin_mixins import QaReportModelAdminMixin
from edc_sites.admin import SiteModelAdminMixin
Expand All @@ -31,14 +32,20 @@ class ImpSubstitutionsAdmin(
"subject",
"sid",
"dispensed_sid",
"report_date",
"arm_match",
"allocated_date",
"user_created",
"user_modified",
"modified",
]

list_filter = ["arm_match", ScheduleStatusListFilter, "allocated_datetime"]
list_filter = [
"arm_match",
ScheduleStatusListFilter,
ReportDateListFilter,
"allocated_datetime",
]

search_fields = ["subject_identifier", "sid", "dispensed_sid"]

Expand Down Expand Up @@ -86,3 +93,9 @@ def render_button(self, obj=None):
context=dict(title=title, url=url, label=label),
)
return crf_button

@admin.display(description="Report date", ordering="report_datetime")
def report_date(self, obj) -> str | None:
if obj.report_datetime:
return obj.report_datetime.date()
return None
54 changes: 54 additions & 0 deletions meta_reports/migrations/0049_auto_20240911_0327.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Generated by Django 5.1 on 2024-09-11 00:27

import django_db_views.migration_functions
import django_db_views.operations
from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("meta_reports", "0048_auto_20240909_2338"),
]

operations = [
django_db_views.operations.ViewRunPython(
code=django_db_views.migration_functions.ForwardViewMigration(
"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",
"imp_subjectitutions_view",
engine="django.db.backends.mysql",
),
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
"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",
"imp_subjectitutions_view",
engine="django.db.backends.mysql",
),
atomic=False,
),
django_db_views.operations.ViewRunPython(
code=django_db_views.migration_functions.ForwardViewMigration(
"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",
"imp_subjectitutions_view",
engine="django.db.backends.postgresql",
),
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
"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",
"imp_subjectitutions_view",
engine="django.db.backends.postgresql",
),
atomic=False,
),
django_db_views.operations.ViewRunPython(
code=django_db_views.migration_functions.ForwardViewMigration(
"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",
"imp_subjectitutions_view",
engine="django.db.backends.sqlite3",
),
reverse_code=django_db_views.migration_functions.BackwardViewMigration(
"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",
"imp_subjectitutions_view",
engine="django.db.backends.sqlite3",
),
atomic=False,
),
]
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class ImpSubstitutions(QaReportModelMixin, DBView):
max_length=15, choices=YES_NO_NOT_EVALUATED, default=NOT_EVALUATED
)

report_datetime = models.DateTimeField(null=True)

allocated_datetime = models.DateTimeField(null=True)

user_created = models.CharField(max_length=25)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

def get_view_definition() -> dict:
subquery = """
select s.subject_identifier, s.sid, s.dispensed_sid, arm_match, r.allocated_datetime,
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
Expand Down

0 comments on commit 9e753c3

Please sign in to comment.