239 lines
9.1 KiB
Python
239 lines
9.1 KiB
Python
"""
|
|
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',)
|
|
}),
|
|
)
|