85 lines
2.7 KiB
Python
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__'
|