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

195 lines
6.9 KiB
Python

"""
Django admin configuration for slp app.
"""
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from .models import (
SLPConsult,
SLPAssessment,
SLPIntervention,
SLPTarget,
SLPProgressReport,
)
@admin.register(SLPConsult)
class SLPConsultAdmin(admin.ModelAdmin):
"""Admin interface for SLPConsult model."""
list_display = ['patient', 'consultation_date', 'consult_variant', 'type_of_service', 'provider',
'signed_by', 'tenant']
list_filter = ['consultation_date', 'consult_variant', 'type_of_service', 'tenant', 'signed_at']
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en',
'primary_concern']
readonly_fields = ['id', 'created_at', 'updated_at']
date_hierarchy = 'consultation_date'
fieldsets = (
(_('Patient & Provider'), {
'fields': ('patient', 'tenant', 'consultation_date', 'consult_variant', 'type_of_service',
'provider', 'appointment')
}),
(_('Consultation Details'), {
'fields': ('primary_concern', 'suspected_areas', 'communication_modes', 'screen_time_hours')
}),
(_('Variant Questionnaire'), {
'fields': ('variant_questionnaire',),
'classes': ('collapse',)
}),
(_('Skills & Screening'), {
'fields': ('skills_to_observe', 'oral_motor_screening'),
'classes': ('collapse',)
}),
(_('Recommendations'), {
'fields': ('recommendations',)
}),
(_('Signature'), {
'fields': ('signed_by', 'signed_at'),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.register(SLPAssessment)
class SLPAssessmentAdmin(admin.ModelAdmin):
"""Admin interface for SLPAssessment model."""
list_display = ['patient', 'assessment_date', 'provider', 'signed_by', 'signed_at', 'tenant']
list_filter = ['assessment_date', 'tenant', 'signed_at']
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en']
readonly_fields = ['id', 'created_at', 'updated_at']
date_hierarchy = 'assessment_date'
fieldsets = (
(_('Patient & Provider'), {
'fields': ('patient', 'tenant', 'assessment_date', 'provider', 'appointment')
}),
(_('Diagnosis & History'), {
'fields': ('diagnosis_statement', 'case_history')
}),
(_('History Sections'), {
'fields': ('prenatal_history', 'perinatal_history', 'postnatal_history',
'developmental_history', 'medical_status'),
'classes': ('collapse',)
}),
(_('Speech/Language & Test Scores'), {
'fields': ('speech_language_detail', 'gfta3_score', 'jat_score', 'ssi_score')
}),
(_('Assessments'), {
'fields': ('oral_mechanism', 'rossetti_domains', 'joint_attention_skills'),
'classes': ('collapse',)
}),
(_('Summary & Plan'), {
'fields': ('clinical_summary', 'recommendations', 'frequency_per_week',
'session_duration_minutes', 'referral_rules')
}),
(_('Signature'), {
'fields': ('signed_by', 'signed_at'),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.register(SLPIntervention)
class SLPInterventionAdmin(admin.ModelAdmin):
"""Admin interface for SLPIntervention model."""
list_display = ['patient', 'session_number', 'session_date', 'provider', 'signed_by', 'signed_at', 'tenant']
list_filter = ['session_date', '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', 'appointment', 'session_number', 'session_date',
'session_time', 'provider', 'previous_session')
}),
(_('Intervention Targets (JSON)'), {
'fields': ('intervention_targets_json',),
'classes': ('collapse',)
}),
(_('Signature'), {
'fields': ('signed_by', 'signed_at'),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.register(SLPTarget)
class SLPTargetAdmin(admin.ModelAdmin):
"""Admin interface for SLPTarget model."""
list_display = ['intervention', 'target_number', 'subjective', 'assessment']
list_filter = ['intervention__patient', 'intervention__session_date']
search_fields = ['subjective', 'intervention__patient__mrn']
readonly_fields = ['id']
fieldsets = (
(None, {
'fields': ('intervention', 'target_number')
}),
(_('SOAP Format'), {
'fields': ('subjective', 'objective', 'assessment', 'plan')
}),
(_('Prompt Strategies'), {
'fields': ('prompt_strategies',),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id',),
'classes': ('collapse',)
}),
)
@admin.register(SLPProgressReport)
class SLPProgressReportAdmin(admin.ModelAdmin):
"""Admin interface for SLPProgressReport model."""
list_display = ['patient', 'report_date', 'provider', 'signed_by', 'signed_at', 'tenant']
list_filter = ['report_date', 'tenant', 'signed_at', 'reassessment_needed']
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en']
readonly_fields = ['id', 'created_at', 'updated_at', 'attendance_rate']
date_hierarchy = 'report_date'
fieldsets = (
(_('Patient & Provider'), {
'fields': ('patient', 'tenant', 'report_date', 'provider')
}),
(_('Session Summary'), {
'fields': ('sessions_scheduled', 'sessions_attended', 'attendance_rate')
}),
(_('Diagnosis & Progress'), {
'fields': ('final_diagnosis', 'objectives_progress', 'plan_details')
}),
(_('Progress Summary'), {
'fields': ('overall_progress', 'participation_level', 'carryover_level', 'prognosis')
}),
(_('Recommendations'), {
'fields': ('recommendations', 'package_sessions_count', 'reassessment_needed')
}),
(_('Signature'), {
'fields': ('signed_by', 'signed_at'),
'classes': ('collapse',)
}),
(_('Metadata'), {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)