根因:deleteEncounterDiagnosisInfos() 调用 conditionMapper.deleteByEncounterId() 删除了 cli_condition 记录,而 infectious_card.diag_id 指向的就是 cli_condition.id。 数据库验证:infectious_card 表中 10 条记录仅 1 条能 JOIN 到 cli_condition, 其余 9 条的 condition 已被级联删除,导致再次保存诊断时 hasInfectiousReport=0, 前端未过滤已报卡诊断,重复弹出报卡界面。 修复:移除 conditionMapper.deleteByEncounterId(encounterId),仅删除就诊诊断关联记录。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>