110 lines
3.5 KiB
Python
110 lines
3.5 KiB
Python
"""
|
|
Feedback admin configuration
|
|
"""
|
|
from django.contrib import admin
|
|
|
|
from .models import Feedback, FeedbackAttachment, FeedbackResponse
|
|
|
|
|
|
@admin.register(Feedback)
|
|
class FeedbackAdmin(admin.ModelAdmin):
|
|
"""Admin interface for Feedback model"""
|
|
list_display = [
|
|
'id', 'feedback_type', 'title', 'get_contact_name', 'hospital',
|
|
'status', 'sentiment', 'rating', 'is_featured', 'created_at'
|
|
]
|
|
list_filter = [
|
|
'feedback_type', 'status', 'sentiment', 'category',
|
|
'priority', 'is_featured', 'is_deleted', 'created_at'
|
|
]
|
|
search_fields = [
|
|
'title', 'message', 'patient__first_name', 'patient__last_name',
|
|
'patient__mrn', 'contact_name', 'contact_email'
|
|
]
|
|
readonly_fields = [
|
|
'id', 'created_at', 'updated_at', 'assigned_at', 'reviewed_at',
|
|
'acknowledged_at', 'closed_at', 'deleted_at'
|
|
]
|
|
fieldsets = (
|
|
('Basic Information', {
|
|
'fields': (
|
|
'id', 'feedback_type', 'title', 'message', 'category',
|
|
'subcategory', 'rating', 'priority'
|
|
)
|
|
}),
|
|
('Patient/Contact', {
|
|
'fields': (
|
|
'patient', 'is_anonymous', 'contact_name', 'contact_email',
|
|
'contact_phone'
|
|
)
|
|
}),
|
|
('Organization', {
|
|
'fields': ('hospital', 'department', 'physician', 'encounter_id')
|
|
}),
|
|
('Status & Workflow', {
|
|
'fields': (
|
|
'status', 'assigned_to', 'assigned_at', 'reviewed_by',
|
|
'reviewed_at', 'acknowledged_by', 'acknowledged_at',
|
|
'closed_by', 'closed_at'
|
|
)
|
|
}),
|
|
('Sentiment Analysis', {
|
|
'fields': ('sentiment', 'sentiment_score')
|
|
}),
|
|
('Flags', {
|
|
'fields': (
|
|
'is_featured', 'is_public', 'requires_follow_up',
|
|
'is_deleted', 'deleted_at', 'deleted_by'
|
|
)
|
|
}),
|
|
('Metadata', {
|
|
'fields': ('source', 'metadata', 'created_at', 'updated_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
date_hierarchy = 'created_at'
|
|
ordering = ['-created_at']
|
|
|
|
|
|
@admin.register(FeedbackAttachment)
|
|
class FeedbackAttachmentAdmin(admin.ModelAdmin):
|
|
"""Admin interface for FeedbackAttachment model"""
|
|
list_display = [
|
|
'id', 'feedback', 'filename', 'file_type', 'file_size',
|
|
'uploaded_by', 'created_at'
|
|
]
|
|
list_filter = ['file_type', 'created_at']
|
|
search_fields = ['filename', 'feedback__title']
|
|
readonly_fields = ['id', 'created_at', 'updated_at']
|
|
date_hierarchy = 'created_at'
|
|
ordering = ['-created_at']
|
|
|
|
|
|
@admin.register(FeedbackResponse)
|
|
class FeedbackResponseAdmin(admin.ModelAdmin):
|
|
"""Admin interface for FeedbackResponse model"""
|
|
list_display = [
|
|
'id', 'feedback', 'response_type', 'created_by',
|
|
'is_internal', 'created_at'
|
|
]
|
|
list_filter = ['response_type', 'is_internal', 'created_at']
|
|
search_fields = ['message', 'feedback__title']
|
|
readonly_fields = ['id', 'created_at', 'updated_at']
|
|
fieldsets = (
|
|
('Response Information', {
|
|
'fields': (
|
|
'id', 'feedback', 'response_type', 'message',
|
|
'created_by', 'is_internal'
|
|
)
|
|
}),
|
|
('Status Change', {
|
|
'fields': ('old_status', 'new_status')
|
|
}),
|
|
('Metadata', {
|
|
'fields': ('metadata', 'created_at', 'updated_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
date_hierarchy = 'created_at'
|
|
ordering = ['-created_at']
|