""" 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',) }), )