feat: update medical training case and auth modules

This commit is contained in:
2026-06-03 17:34:47 +08:00
parent b4bb38b7be
commit fd0b3e1982
45 changed files with 1459 additions and 812 deletions
+34
View File
@@ -183,3 +183,37 @@ class ScoringRule(BaseModel):
def __str__(self):
return f"{self.case.title} - {self.dimension}"
class CaseExamItem(BaseModel):
"""病例检查/检验项目表(与 consultation 库 case_exam_item 同构)"""
case = models.ForeignKey(
CaseBase, on_delete=models.CASCADE,
related_name='exam_items', db_column='case_id',
verbose_name='病例',
)
item_code = models.CharField('检查项目编码', max_length=64)
item_name = models.CharField('检查项目名称', max_length=128)
item_type = models.CharField('项目类型', max_length=32)
category = models.CharField('项目分类', max_length=64, blank=True, default='')
result_text = models.TextField('结果文本')
result_structured = models.JSONField('结构化结果', null=True, blank=True, default=None)
is_key = models.BooleanField('是否关键检查', default=False)
is_abnormal = models.BooleanField('是否异常', default=False)
score_weight = models.DecimalField('评分权重', max_digits=5, decimal_places=2, default=1.00)
display_order = models.IntegerField('展示顺序', default=0)
class Meta:
db_table = 'case_exam_item'
verbose_name = '病例检查项'
verbose_name_plural = '病例检查项'
ordering = ['display_order', 'id']
constraints = [
models.UniqueConstraint(
fields=['case', 'item_code'],
name='uk_case_exam_item_code',
),
]
def __str__(self):
return f"{self.case_id}:{self.item_code}"