from django.contrib import admin from access_core.governance.models import ( AuditEvent, CareTeamReviewTask, ClinicalEventLog, ClinicalReviewTask, PhysicianReview, PseudonymousCaseRecord, PseudonymousClinicalPacket, SafetySignalEvent, ) @admin.register(PhysicianReview) class PhysicianReviewAdmin(admin.ModelAdmin): list_display = ["review_type", "decision", "reviewed_by", "reviewed_at"] list_filter = ["review_type", "decision"] @admin.register(ClinicalReviewTask) class ClinicalReviewTaskAdmin(admin.ModelAdmin): list_display = ["assigned_to", "task_type", "status", "assigned_at"] list_filter = ["task_type", "status"] @admin.register(SafetySignalEvent) class SafetySignalEventAdmin(admin.ModelAdmin): list_display = [ "beneficiary", "signal_severity", "signal_type", "review_status", "created_at", ] list_filter = ["signal_severity", "signal_type", "review_status"] @admin.register(ClinicalEventLog) class ClinicalEventLogAdmin(admin.ModelAdmin): list_display = ["beneficiary", "event_type", "event_date", "requires_review"] list_filter = ["event_type", "requires_review"] @admin.register(CareTeamReviewTask) class CareTeamReviewTaskAdmin(admin.ModelAdmin): list_display = ["beneficiary", "trigger_type", "priority", "status", "assigned_at"] list_filter = ["trigger_type", "priority", "status"] @admin.register(AuditEvent) class AuditEventAdmin(admin.ModelAdmin): """Read-only by design — the audit trail is append-only (see governance/audit.py).""" list_display = [ "created_at", "user", "action", "target_table", "target_record_id", "ip_address", ] list_filter = ["action"] search_fields = ["target_table", "target_record_id"] readonly_fields = [f.name for f in AuditEvent._meta.fields] def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False @admin.register(PseudonymousCaseRecord) class PseudonymousCaseRecordAdmin(admin.ModelAdmin): list_display = ["case_id", "age_band", "sex", "clinical_track"] list_filter = ["clinical_track"] @admin.register(PseudonymousClinicalPacket) class PseudonymousClinicalPacketAdmin(admin.ModelAdmin): list_display = ["case_record", "packet_type", "review_status", "created_at"] list_filter = ["packet_type", "review_status"]