""" 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',) }), )