Files

85 lines
2.7 KiB
Python

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__'