agdar/referrals/admin.py
2025-11-02 14:35:35 +03:00

95 lines
3.1 KiB
Python

"""
Django admin configuration for referrals app.
"""
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from .models import (
Referral,
ReferralAutoRule,
)
@admin.register(Referral)
class ReferralAdmin(admin.ModelAdmin):
"""Admin interface for Referral model."""
list_display = ['patient', 'from_clinic', 'to_clinic', 'urgency', 'status', 'created_at', 'tenant']
list_filter = ['urgency', 'status', 'from_clinic', 'to_clinic', 'tenant', 'created_at']
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en',
'external_provider_name']
readonly_fields = ['id', 'is_internal', 'is_external', 'is_pending', 'response_time',
'created_at', 'updated_at']
date_hierarchy = 'created_at'
fieldsets = (
(_('Patient & Status'), {
'fields': ('patient', 'tenant', 'status', 'urgency')
}),
(_('Source'), {
'fields': ('from_clinic', 'from_provider')
}),
(_('Destination (Internal)'), {
'fields': ('to_clinic', 'to_provider'),
'classes': ('collapse',)
}),
(_('Destination (External)'), {
'fields': ('external_provider_name', 'external_provider_contact'),
'classes': ('collapse',)
}),
(_('Referral Details'), {
'fields': ('reason', 'clinical_summary')
}),
(_('Response'), {
'fields': ('response_notes', 'responded_at'),
'classes': ('collapse',)
}),
(_('Additional Information'), {
'fields': ('notes', 'completed_at')
}),
(_('Metadata'), {
'fields': ('id', 'is_internal', 'is_external', 'is_pending', 'response_time',
'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.register(ReferralAutoRule)
class ReferralAutoRuleAdmin(admin.ModelAdmin):
"""Admin interface for ReferralAutoRule model."""
list_display = ['name', 'trigger_clinic', 'target_clinic', 'urgency', 'auto_create',
'is_active', 'tenant']
list_filter = ['urgency', 'auto_create', 'is_active', 'trigger_clinic', 'target_clinic', 'tenant']
search_fields = ['name', 'description', 'target_external_provider']
readonly_fields = ['id', 'created_at', 'updated_at']
fieldsets = (
(None, {
'fields': ('name', 'tenant', 'is_active')
}),
(_('Description'), {
'fields': ('description',)
}),
(_('Trigger Conditions'), {
'fields': ('trigger_clinic', 'trigger_keywords')
}),
(_('Target (Internal)'), {
'fields': ('target_clinic',),
'classes': ('collapse',)
}),
(_('Target (External)'), {
'fields': ('target_external_provider',),
'classes': ('collapse',)
}),
(_('Rule Configuration'), {
'fields': ('urgency', 'auto_create')
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)