from rest_framework import serializers from .models import ( CaseBase, TraditionalCase, ScriptCase, TeachingCase, CaseStage, ScoringRule ) class CaseBaseListSerializer(serializers.ModelSerializer): department_name = serializers.CharField(source='department.name', read_only=True) created_by_name = serializers.CharField(source='created_by.real_name', read_only=True) class Meta: model = CaseBase fields = [ 'id', 'title', 'case_type', 'difficulty', 'difficulty_score', 'department', 'department_name', 'chief_complaint', 'patient_age', 'patient_gender', 'tags', 'estimated_minutes', 'osce_enabled', 'publish_status', 'status', 'created_by_name', 'created_at', 'updated_at' ] class CaseBaseDetailSerializer(serializers.ModelSerializer): department_name = serializers.CharField(source='department.name', read_only=True) created_by_name = serializers.CharField(source='created_by.real_name', read_only=True) class Meta: model = CaseBase fields = '__all__' class CaseBaseCreateSerializer(serializers.ModelSerializer): """病例创建序列化器""" class Meta: model = CaseBase fields = [ 'title', 'case_type', 'difficulty', 'department', 'chief_complaint', 'description', 'patient_age', 'patient_gender', 'tags', 'symptom_tags', 'disease_tags', 'competency_tags', 'guideline_tags', 'knowledge_points', 'icd_codes', 'estimated_minutes', 'osce_enabled', 'rag_enabled', 'ai_prompt_template', 'multimodal_assets' ] def create(self, validated_data): validated_data['created_by'] = self.context['request'].user return super().create(validated_data) class TraditionalCaseSerializer(serializers.ModelSerializer): case_title = serializers.CharField(source='case.title', read_only=True) class Meta: model = TraditionalCase fields = '__all__' class ScriptCaseSerializer(serializers.ModelSerializer): case_title = serializers.CharField(source='case.title', read_only=True) class Meta: model = ScriptCase fields = '__all__' class TeachingCaseSerializer(serializers.ModelSerializer): case_title = serializers.CharField(source='case.title', read_only=True) class Meta: model = TeachingCase fields = '__all__' class CaseStageSerializer(serializers.ModelSerializer): class Meta: model = CaseStage fields = '__all__' class ScoringRuleSerializer(serializers.ModelSerializer): case_title = serializers.CharField(source='case.title', read_only=True) class Meta: model = ScoringRule fields = '__all__'