""" Django admin configuration for psychology app. """ from django.contrib import admin from django.utils.translation import gettext_lazy as _ from .models import ( PsychologyConsultation, PsychologyAssessment, PsychologySession, PsychologyGoal, PsychologyProgressReport, ) @admin.register(PsychologyConsultation) class PsychologyConsultationAdmin(admin.ModelAdmin): """Admin interface for PsychologyConsultation model.""" list_display = ['patient', 'consultation_date', 'referral_reason', 'provider', 'suicide_risk', 'homicide_risk', 'signed_by', 'signed_at', 'tenant'] list_filter = ['consultation_date', 'referral_reason', 'suicide_risk', 'homicide_risk', 'tenant', 'signed_at'] search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en', 'presenting_problem', 'provisional_diagnosis'] readonly_fields = ['id', 'created_at', 'updated_at'] date_hierarchy = 'consultation_date' fieldsets = ( (_('Patient & Provider'), { 'fields': ('patient', 'tenant', 'consultation_date', 'provider', 'appointment') }), (_('Referral Information'), { 'fields': ('referral_reason', 'referral_source', 'presenting_problem') }), (_('Background Information'), { 'fields': ('family_history', 'medical_history', 'developmental_history', 'educational_history', 'social_history'), 'classes': ('collapse',) }), (_('Mental Status Examination'), { 'fields': ('appearance', 'behavior', 'mood', 'affect', 'speech', 'thought_process', 'thought_content', 'perception', 'cognition', 'insight', 'judgment'), 'classes': ('collapse',) }), (_('Risk Assessment'), { 'fields': ('suicide_risk', 'homicide_risk', 'risk_assessment_notes') }), (_('Clinical Impressions'), { 'fields': ('clinical_impressions', 'provisional_diagnosis') }), (_('Treatment Plan'), { 'fields': ('treatment_goals', 'treatment_approach', 'recommendations', 'frequency_duration', 'referrals_needed') }), (_('Signature'), { 'fields': ('signed_by', 'signed_at'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(PsychologyAssessment) class PsychologyAssessmentAdmin(admin.ModelAdmin): """Admin interface for PsychologyAssessment model.""" list_display = ['patient', 'assessment_date', 'assessment_type', 'provider', 'signed_by', 'signed_at', 'tenant'] list_filter = ['assessment_date', 'assessment_type', 'tenant', 'signed_at'] search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en', 'reason_for_assessment', 'diagnostic_impressions'] readonly_fields = ['id', 'created_at', 'updated_at'] date_hierarchy = 'assessment_date' fieldsets = ( (_('Patient & Provider'), { 'fields': ('patient', 'tenant', 'assessment_date', 'provider', 'appointment') }), (_('Assessment Details'), { 'fields': ('assessment_type', 'reason_for_assessment') }), (_('Background'), { 'fields': ('relevant_history', 'current_medications'), 'classes': ('collapse',) }), (_('Tests & Observations'), { 'fields': ('tests_administered', 'behavioral_observations', 'test_validity') }), (_('Results Summary'), { 'fields': ('cognitive_functioning', 'emotional_functioning', 'behavioral_functioning', 'social_functioning', 'adaptive_functioning') }), (_('Strengths & Weaknesses'), { 'fields': ('strengths', 'weaknesses') }), (_('Diagnosis'), { 'fields': ('diagnostic_impressions', 'dsm5_diagnosis') }), (_('Recommendations'), { 'fields': ('recommendations', 'treatment_recommendations', 'educational_recommendations', 'follow_up_recommendations') }), (_('Signature'), { 'fields': ('signed_by', 'signed_at'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(PsychologySession) class PsychologySessionAdmin(admin.ModelAdmin): """Admin interface for PsychologySession model.""" list_display = ['patient', 'session_number', 'session_date', 'session_type', 'therapy_modality', 'duration_minutes', 'current_risk_level', 'provider', 'signed_by', 'signed_at', 'tenant'] list_filter = ['session_date', 'session_type', 'therapy_modality', 'current_risk_level', 'tenant', 'signed_at'] search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en', 'presenting_issues', 'interventions_used'] readonly_fields = ['id', 'created_at', 'updated_at'] date_hierarchy = 'session_date' fieldsets = ( (_('Patient & Provider'), { 'fields': ('patient', 'tenant', 'session_number', 'session_date', 'provider', 'appointment') }), (_('Session Details'), { 'fields': ('session_type', 'therapy_modality', 'duration_minutes') }), (_('Session Content'), { 'fields': ('presenting_issues', 'interventions_used', 'client_response') }), (_('Progress Notes'), { 'fields': ('progress_toward_goals', 'behavioral_observations', 'mood_affect') }), (_('Risk Assessment'), { 'fields': ('current_risk_level', 'risk_notes') }), (_('Homework & Plan'), { 'fields': ('homework_assigned', 'plan_for_next_session') }), (_('Clinical Notes'), { 'fields': ('clinical_notes',), 'classes': ('collapse',) }), (_('Signature'), { 'fields': ('signed_by', 'signed_at'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(PsychologyGoal) class PsychologyGoalAdmin(admin.ModelAdmin): """Admin interface for PsychologyGoal model.""" list_display = ['patient', 'goal_description', 'status', 'progress_percentage', 'target_date', 'achieved_date'] list_filter = ['status', 'target_date', 'patient'] search_fields = ['goal_description', 'patient__mrn', 'progress_notes'] readonly_fields = ['id', 'created_at', 'updated_at'] date_hierarchy = 'target_date' fieldsets = ( (None, { 'fields': ('patient', 'consultation', 'goal_description', 'status') }), (_('Progress'), { 'fields': ('progress_percentage', 'target_date', 'achieved_date') }), (_('Progress Notes'), { 'fields': ('progress_notes',), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) @admin.register(PsychologyProgressReport) class PsychologyProgressReportAdmin(admin.ModelAdmin): """Admin interface for PsychologyProgressReport model.""" list_display = ['patient', 'report_date', 'provider', 'sessions_scheduled', 'sessions_attended', 'attendance_rate', 'continue_treatment', 'signed_by', 'signed_at', 'tenant'] list_filter = ['report_date', 'continue_treatment', 'tenant', 'signed_at'] search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en', 'overall_progress', 'recommendations'] readonly_fields = ['id', 'created_at', 'updated_at', 'attendance_rate'] date_hierarchy = 'report_date' fieldsets = ( (_('Patient & Provider'), { 'fields': ('patient', 'tenant', 'report_date', 'provider') }), (_('Treatment Summary'), { 'fields': ('treatment_start_date', 'sessions_scheduled', 'sessions_attended', 'attendance_rate') }), (_('Progress Summary'), { 'fields': ('presenting_problems_summary', 'treatment_provided', 'goals_progress', 'overall_progress') }), (_('Current Status'), { 'fields': ('current_functioning', 'current_symptoms') }), (_('Recommendations'), { 'fields': ('recommendations', 'continue_treatment', 'discharge_plan') }), (_('Prognosis'), { 'fields': ('prognosis',) }), (_('Signature'), { 'fields': ('signed_by', 'signed_at'), 'classes': ('collapse',) }), (_('Metadata'), { 'fields': ('id', 'created_at', 'updated_at'), 'classes': ('collapse',) }), )