174 lines
5.8 KiB
Python
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',)
|
|
}),
|
|
)
|