132 lines
6.4 KiB
Python
132 lines
6.4 KiB
Python
"""
|
|
Django REST Framework serializers for psychology app.
|
|
"""
|
|
|
|
from rest_framework import serializers
|
|
from .models import (
|
|
PsychologyConsultation,
|
|
PsychologyAssessment,
|
|
PsychologySession,
|
|
PsychologyGoal,
|
|
PsychologyProgressReport,
|
|
)
|
|
|
|
|
|
class PsychologyConsultationSerializer(serializers.ModelSerializer):
|
|
"""Serializer for PsychologyConsultation model."""
|
|
|
|
patient_name = serializers.CharField(source='patient.get_full_name', read_only=True)
|
|
provider_name = serializers.CharField(source='provider.get_full_name', read_only=True)
|
|
referral_reason_display = serializers.CharField(source='get_referral_reason_display', read_only=True)
|
|
suicide_risk_display = serializers.CharField(source='get_suicide_risk_display', read_only=True)
|
|
homicide_risk_display = serializers.CharField(source='get_homicide_risk_display', read_only=True)
|
|
|
|
class Meta:
|
|
model = PsychologyConsultation
|
|
fields = [
|
|
'id', 'patient', 'patient_name', 'tenant', 'consultation_date',
|
|
'provider', 'provider_name', 'appointment',
|
|
'referral_reason', 'referral_reason_display', 'referral_source',
|
|
'presenting_problem', 'family_history', 'medical_history',
|
|
'developmental_history', 'educational_history', 'social_history',
|
|
'appearance', 'behavior', 'mood', 'affect', 'speech',
|
|
'thought_process', 'thought_content', 'perception',
|
|
'cognition', 'insight', 'judgment',
|
|
'suicide_risk', 'suicide_risk_display',
|
|
'homicide_risk', 'homicide_risk_display',
|
|
'risk_assessment_notes', 'clinical_impressions',
|
|
'provisional_diagnosis', 'treatment_goals', 'treatment_approach',
|
|
'recommendations', 'frequency_duration', 'referrals_needed',
|
|
'signed_by', 'signed_at', 'created_at', 'updated_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at', 'signed_by', 'signed_at']
|
|
|
|
|
|
class PsychologyAssessmentSerializer(serializers.ModelSerializer):
|
|
"""Serializer for PsychologyAssessment model."""
|
|
|
|
patient_name = serializers.CharField(source='patient.get_full_name', read_only=True)
|
|
provider_name = serializers.CharField(source='provider.get_full_name', read_only=True)
|
|
assessment_type_display = serializers.CharField(source='get_assessment_type_display', read_only=True)
|
|
|
|
class Meta:
|
|
model = PsychologyAssessment
|
|
fields = [
|
|
'id', 'patient', 'patient_name', 'tenant', 'assessment_date',
|
|
'provider', 'provider_name', 'appointment',
|
|
'assessment_type', 'assessment_type_display', 'reason_for_assessment',
|
|
'relevant_history', 'current_medications', 'tests_administered',
|
|
'behavioral_observations', 'test_validity',
|
|
'cognitive_functioning', 'emotional_functioning',
|
|
'behavioral_functioning', 'social_functioning', 'adaptive_functioning',
|
|
'strengths', 'weaknesses', 'diagnostic_impressions', 'dsm5_diagnosis',
|
|
'recommendations', 'treatment_recommendations',
|
|
'educational_recommendations', 'follow_up_recommendations',
|
|
'signed_by', 'signed_at', 'created_at', 'updated_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at', 'signed_by', 'signed_at']
|
|
|
|
|
|
class PsychologySessionSerializer(serializers.ModelSerializer):
|
|
"""Serializer for PsychologySession model."""
|
|
|
|
patient_name = serializers.CharField(source='patient.get_full_name', read_only=True)
|
|
provider_name = serializers.CharField(source='provider.get_full_name', read_only=True)
|
|
session_type_display = serializers.CharField(source='get_session_type_display', read_only=True)
|
|
therapy_modality_display = serializers.CharField(source='get_therapy_modality_display', read_only=True)
|
|
current_risk_level_display = serializers.CharField(source='get_current_risk_level_display', read_only=True)
|
|
|
|
class Meta:
|
|
model = PsychologySession
|
|
fields = [
|
|
'id', 'patient', 'patient_name', 'tenant', 'session_number',
|
|
'session_date', 'provider', 'provider_name', 'appointment',
|
|
'session_type', 'session_type_display',
|
|
'therapy_modality', 'therapy_modality_display', 'duration_minutes',
|
|
'presenting_issues', 'interventions_used', 'client_response',
|
|
'progress_toward_goals', 'behavioral_observations', 'mood_affect',
|
|
'current_risk_level', 'current_risk_level_display', 'risk_notes',
|
|
'homework_assigned', 'plan_for_next_session', 'clinical_notes',
|
|
'signed_by', 'signed_at', 'created_at', 'updated_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at', 'signed_by', 'signed_at']
|
|
|
|
|
|
class PsychologyGoalSerializer(serializers.ModelSerializer):
|
|
"""Serializer for PsychologyGoal model."""
|
|
|
|
patient_name = serializers.CharField(source='patient.get_full_name', read_only=True)
|
|
status_display = serializers.CharField(source='get_status_display', read_only=True)
|
|
|
|
class Meta:
|
|
model = PsychologyGoal
|
|
fields = [
|
|
'id', 'patient', 'patient_name', 'consultation',
|
|
'goal_description', 'target_date', 'status', 'status_display',
|
|
'progress_percentage', 'progress_notes', 'achieved_date',
|
|
'created_at', 'updated_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class PsychologyProgressReportSerializer(serializers.ModelSerializer):
|
|
"""Serializer for PsychologyProgressReport model."""
|
|
|
|
patient_name = serializers.CharField(source='patient.get_full_name', read_only=True)
|
|
provider_name = serializers.CharField(source='provider.get_full_name', read_only=True)
|
|
attendance_rate = serializers.DecimalField(max_digits=5, decimal_places=2, read_only=True)
|
|
|
|
class Meta:
|
|
model = PsychologyProgressReport
|
|
fields = [
|
|
'id', 'patient', 'patient_name', 'tenant', 'report_date',
|
|
'provider', 'provider_name', 'treatment_start_date',
|
|
'sessions_scheduled', 'sessions_attended', 'attendance_rate',
|
|
'presenting_problems_summary', 'treatment_provided',
|
|
'goals_progress', 'overall_progress',
|
|
'current_functioning', 'current_symptoms',
|
|
'recommendations', 'continue_treatment', 'discharge_plan', 'prognosis',
|
|
'signed_by', 'signed_at', 'created_at', 'updated_at',
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at', 'signed_by', 'signed_at', 'attendance_rate']
|