186 lines
6.8 KiB
Python
186 lines
6.8 KiB
Python
"""
|
|
Django admin configuration for medical app.
|
|
"""
|
|
|
|
from django.contrib import admin
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from .models import (
|
|
MedicalConsultation,
|
|
MedicationPlan,
|
|
MedicalFollowUp,
|
|
ConsultationResponse,
|
|
ConsultationFeedback,
|
|
)
|
|
|
|
|
|
@admin.register(MedicalConsultation)
|
|
class MedicalConsultationAdmin(admin.ModelAdmin):
|
|
"""Admin interface for MedicalConsultation model."""
|
|
|
|
list_display = ['patient', 'consultation_date', 'provider', 'signed_by', 'signed_at', 'tenant']
|
|
list_filter = ['consultation_date', 'tenant', 'signed_at']
|
|
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en',
|
|
'chief_complaint', 'clinical_summary']
|
|
readonly_fields = ['id', 'created_at', 'updated_at']
|
|
date_hierarchy = 'consultation_date'
|
|
|
|
fieldsets = (
|
|
(_('Patient & Provider'), {
|
|
'fields': ('patient', 'tenant', 'consultation_date', 'provider')
|
|
}),
|
|
(_('Chief Complaint'), {
|
|
'fields': ('chief_complaint', 'appointment')
|
|
}),
|
|
(_('History'), {
|
|
'fields': ('present_illness_history', 'past_medical_history', 'vaccination_status',
|
|
'family_history', 'social_history', 'pregnancy_history', 'neonatal_history')
|
|
}),
|
|
(_('Developmental Milestones'), {
|
|
'fields': ('developmental_motor_milestones', 'developmental_language_milestones',
|
|
'developmental_social_milestones', 'developmental_cognitive_milestones'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Behavioral Symptoms'), {
|
|
'fields': ('behavioral_symptoms',),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Physical Examination'), {
|
|
'fields': ('physical_exam',),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Assessment & Plan'), {
|
|
'fields': ('clinical_summary', 'recommendations', 'referrals_needed')
|
|
}),
|
|
(_('Medications'), {
|
|
'fields': ('medications',),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Orders'), {
|
|
'fields': ('lab_orders', 'radiology_orders'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Signature'), {
|
|
'fields': ('signed_by', 'signed_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Metadata'), {
|
|
'fields': ('id', 'created_at', 'updated_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
|
|
|
|
@admin.register(ConsultationResponse)
|
|
class ConsultationResponseAdmin(admin.ModelAdmin):
|
|
"""Admin interface for ConsultationResponse model."""
|
|
|
|
list_display = ['consultation', 'response_type', 'responder', 'response_date', 'follow_up_needed', 'tenant']
|
|
list_filter = ['response_type', 'response_date', 'follow_up_needed', 'tenant']
|
|
search_fields = ['consultation__patient__mrn', 'responder__first_name', 'responder__last_name', 'assessment']
|
|
readonly_fields = ['id', 'created_at', 'updated_at']
|
|
date_hierarchy = 'response_date'
|
|
|
|
fieldsets = (
|
|
(_('Response Information'), {
|
|
'fields': ('consultation', 'tenant', 'response_type', 'responder', 'response_date')
|
|
}),
|
|
(_('Assessment & Recommendations'), {
|
|
'fields': ('assessment', 'recommendations', 'follow_up_needed', 'notes')
|
|
}),
|
|
(_('Metadata'), {
|
|
'fields': ('id', 'created_at', 'updated_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
|
|
|
|
@admin.register(ConsultationFeedback)
|
|
class ConsultationFeedbackAdmin(admin.ModelAdmin):
|
|
"""Admin interface for ConsultationFeedback model."""
|
|
|
|
list_display = ['consultation', 'feedback_type', 'submitted_by_name', 'feedback_date',
|
|
'satisfaction_rating', 'communication_rating', 'care_quality_rating']
|
|
list_filter = ['feedback_type', 'feedback_date', 'satisfaction_rating', 'communication_rating', 'care_quality_rating']
|
|
search_fields = ['consultation__patient__mrn', 'submitted_by_name', 'comments']
|
|
readonly_fields = ['id', 'created_at', 'updated_at']
|
|
date_hierarchy = 'feedback_date'
|
|
|
|
fieldsets = (
|
|
(_('Feedback Information'), {
|
|
'fields': ('consultation', 'feedback_type', 'submitted_by', 'submitted_by_name', 'feedback_date')
|
|
}),
|
|
(_('Ratings'), {
|
|
'fields': ('satisfaction_rating', 'communication_rating', 'care_quality_rating')
|
|
}),
|
|
(_('Comments & Suggestions'), {
|
|
'fields': ('comments', 'concerns', 'suggestions')
|
|
}),
|
|
(_('Metadata'), {
|
|
'fields': ('id', 'created_at', 'updated_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
|
|
|
|
@admin.register(MedicationPlan)
|
|
class MedicationPlanAdmin(admin.ModelAdmin):
|
|
"""Admin interface for MedicationPlan model."""
|
|
|
|
list_display = ['consultation', 'drug_name', 'dose', 'frequency', 'compliance', 'improved']
|
|
list_filter = ['frequency', 'compliance', 'improved']
|
|
search_fields = ['drug_name', 'consultation__patient__mrn']
|
|
readonly_fields = ['id']
|
|
|
|
fieldsets = (
|
|
(None, {
|
|
'fields': ('consultation', 'drug_name')
|
|
}),
|
|
(_('Dosage & Administration'), {
|
|
'fields': ('dose', 'frequency', 'frequency_other')
|
|
}),
|
|
(_('Effectiveness & Compliance'), {
|
|
'fields': ('compliance', 'gains', 'side_effects', 'target_behavior', 'improved')
|
|
}),
|
|
(_('Metadata'), {
|
|
'fields': ('id',),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
|
|
|
|
@admin.register(MedicalFollowUp)
|
|
class MedicalFollowUpAdmin(admin.ModelAdmin):
|
|
"""Admin interface for MedicalFollowUp model."""
|
|
|
|
list_display = ['patient', 'followup_date', 'provider', 'family_satisfaction', 'signed_by',
|
|
'signed_at', 'tenant']
|
|
list_filter = ['followup_date', 'family_satisfaction', 'tenant', 'signed_at']
|
|
search_fields = ['patient__mrn', 'patient__first_name_en', 'patient__last_name_en']
|
|
readonly_fields = ['id', 'created_at', 'updated_at']
|
|
date_hierarchy = 'followup_date'
|
|
|
|
fieldsets = (
|
|
(_('Patient & Provider'), {
|
|
'fields': ('patient', 'tenant', 'followup_date', 'provider', 'previous_consultation')
|
|
}),
|
|
(_('Complaints & Status'), {
|
|
'fields': ('previous_complaints_status', 'new_complaints')
|
|
}),
|
|
(_('Vitals & Assessment'), {
|
|
'fields': ('nursing_vitals', 'assessment', 'recommendations', 'family_satisfaction')
|
|
}),
|
|
(_('Medications'), {
|
|
'fields': ('medication_snapshot',),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Signature'), {
|
|
'fields': ('signed_by', 'signed_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
(_('Metadata'), {
|
|
'fields': ('id', 'created_at', 'updated_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|