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

174 lines
5.8 KiB
Python

"""
Django admin configuration for aba app.
"""
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from .models import (
ABAConsult,
ABABehavior,
ABAGoal,
ABASession,
ABASkillTarget,
)
@admin.register(ABAConsult)
class ABAConsultAdmin(admin.ModelAdmin):
"""Admin interface for ABAConsult model."""
list_display = ['patient', 'consultation_date', 'reason_of_referral', 'provider', 'signed_by',
'signed_at', 'tenant']
list_filter = ['consultation_date', 'reason_of_referral', 'tenant', 'signed_at']
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en']
readonly_fields = ['id', 'created_at', 'updated_at']
date_hierarchy = 'consultation_date'
fieldsets = (
(_('Patient & Provider'), {
'fields': ('patient', 'tenant', 'consultation_date', 'provider', 'appointment')
}),
(_('Referral Information'), {
'fields': ('reason_of_referral', 'parental_concern', 'school_concern')
}),
(_('Interview Details'), {
'fields': ('respondents', 'interviewer', 'diagnosed_condition', 'interaction_hours_per_day')
}),
(_('Factors'), {
'fields': ('physiological_factors', 'medical_factors'),
'classes': ('collapse',)
}),
(_('Recommendations'), {
'fields': ('recommendations',)
}),
(_('Signature'), {
'fields': ('signed_by', 'signed_at'),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.register(ABASession)
class ABASessionAdmin(admin.ModelAdmin):
"""Admin interface for ABASession model."""
list_display = ['patient', 'session_date', 'session_type', 'duration_minutes', 'provider',
'engagement_level', 'cooperation_level', 'signed_by', 'signed_at', 'tenant']
list_filter = ['session_date', 'session_type', 'tenant', 'signed_at']
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en']
readonly_fields = ['id', 'created_at', 'updated_at']
date_hierarchy = 'session_date'
fieldsets = (
(_('Patient & Provider'), {
'fields': ('patient', 'tenant', 'session_date', 'provider', 'appointment')
}),
(_('Session Details'), {
'fields': ('session_type', 'duration_minutes', 'engagement_level', 'cooperation_level')
}),
(_('Session Content'), {
'fields': ('target_behaviors', 'interventions_used', 'activities_performed')
}),
(_('Observations & Progress'), {
'fields': ('behavioral_observations', 'progress_notes')
}),
(_('Recommendations'), {
'fields': ('recommendations', 'home_program')
}),
(_('Signature'), {
'fields': ('signed_by', 'signed_at'),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.register(ABASkillTarget)
class ABASkillTargetAdmin(admin.ModelAdmin):
"""Admin interface for ABASkillTarget model."""
list_display = ['session', 'skill_name', 'mastery_level', 'trials_correct', 'trials_total',
'success_rate', 'order']
list_filter = ['mastery_level', 'session__patient']
search_fields = ['skill_name', 'session__patient__mrn']
readonly_fields = ['id']
fieldsets = (
(None, {
'fields': ('session', 'skill_name', 'order')
}),
(_('Mastery Tracking'), {
'fields': ('mastery_level', 'trials_correct', 'trials_total')
}),
(_('Notes'), {
'fields': ('notes',),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id',),
'classes': ('collapse',)
}),
)
@admin.register(ABABehavior)
class ABABehaviorAdmin(admin.ModelAdmin):
"""Admin interface for ABABehavior model."""
list_display = ['consult', 'behavior_description', 'frequency', 'intensity', 'duration', 'order']
list_filter = ['frequency', 'intensity', 'consult__patient']
search_fields = ['behavior_description', 'consult__patient__mrn']
readonly_fields = ['id', 'created_at', 'updated_at']
fieldsets = (
(None, {
'fields': ('consult', 'behavior_description', 'order')
}),
(_('Behavior Characteristics'), {
'fields': ('frequency', 'intensity', 'duration')
}),
(_('Functional Analysis'), {
'fields': ('antecedents_likely', 'antecedents_least_likely', 'consequences')
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.register(ABAGoal)
class ABAGoalAdmin(admin.ModelAdmin):
"""Admin interface for ABAGoal model."""
list_display = ['consult', 'goal_description', 'status', 'target_date', 'achieved_date']
list_filter = ['status', 'target_date', 'consult__patient']
search_fields = ['goal_description', 'consult__patient__mrn']
readonly_fields = ['id', 'created_at', 'updated_at']
date_hierarchy = 'target_date'
fieldsets = (
(None, {
'fields': ('consult', 'goal_description', 'status')
}),
(_('Goal Details'), {
'fields': ('target_date', 'achieved_date')
}),
(_('Progress Notes'), {
'fields': ('progress_notes',),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)