Ruijin心内药历批改
技能版本:v3.1.4(v3.1.0 新增批改同时同步输出官方《教学药历质量评估表》打分表;v3.0.0 起批注写入统一走融合引擎 scripts/comment_engine.py——全文档遍历 + 对象模型写回 + 精确锚点三合一,word_comment_utils.py 降级为薄封装;心衰指南要点为 2026 ESC(分类二分法、FMT/AMT 框架、SGLT2i+MRA 前移、非奈利酮/GLP-1RA);批改规则、评分标准未变)
批改心血管内科方向临床药师学员提交的教学药历,基于103份已批改心内药历416条真实教师批注分析。
数据基础
- 分析样本:101份含Word批注的已批改药历(共103份)
- 批注总量:416条,平均4.1条/份
- 主要批改者:两位带教老师(分别贡献 84%、11% 的批注)
- 学员分布:5 位学员(每人 19–22 份)
评分标准
详细评分标准(四维度ABCD等级评分+54项扣分表)请参阅 references/评分标准.md。
资源文件索引
| 文件 | 用途 |
|---|---|
references/评分标准.md |
四维度ABCD等级评分框架+54项扣分标准表(各维度定级参考) |
references/心内科指南核心知识.md |
17份2024-2026心内科指南要点速查 |
scripts/comment_engine.py |
融合批注写入引擎(全文档遍历+对象模型写回+精确锚点) |
scripts/word_comment_utils.py |
薄封装(保留 grade_yaoli 签名 + 嵌套表格提取函数) |
scripts/extract_word_comments.py |
从docx提取已有Word批注的工具脚本 |
scripts/validate.py |
输出完整性验证 + 批注署名规范校验(python scripts/validate.py <输出文件> 心内带教老师) |
scripts/scoring_sheet.py |
打分表输出引擎(同步生成教学药历质量评估表) |
scripts/template_data.py |
内嵌官方打分表模板(附件1-3原表 base64,逐字节一致) |
依赖: python-docx, lxml, openpyxl(安装:pip install python-docx lxml openpyxl)
批改流程
🔍 检查点0:药历类型确认
> ⚠️ 在开始批改前,确认以下信息:
> 1. 药历是否为心血管内科方向?(若非心内,应切换到对应专科批改skill)
> 2. 药历格式是否为瑞金医院标准教学药历表格?(非标准格式需调整提取策略)
> 3. 用户需求是完整批改还是局部/定向批改?
批改模式选择:
| 模式 | 适用场景 | 执行范围 |
|------|---------|---------|
| 完整批改 | 默认模式 | 5步全流程 → 输出带批注docx |
| 定向批改 | 用户指定关注某病种/模块 | 仅检查指定模块(如房颤抗凝)→ 输出带批注docx |
| 局部检查 | 用户只想检查1-2个模块 | 仅输出问题清单(无docx) |
第1步:药历读取与模块提取
使用 python-docx 读取学员提交的 docx 文件,定位各模块内容:
from docx import Document
doc = Document('药历文件路径')
table = doc.tables[0] # 瑞金标准药历为单表格结构
> ⚠️ 嵌套表格(必读): 部分药历采用"主表格+嵌套表格"结构(如既往用药史、治疗方案、治疗日志中的用药记录表均放在嵌套表格 w:tbl in w:tc 内)。python-docx 的 cell.paragraphs / cell.text 只返回单元格直接段落,不含嵌套表格内内容——直接使用会导致模块内容提取为空、锚定文本搜索不到。提取时必须使用 scripts/word_comment_utils.py 中的递归函数:
> python
> from word_comment_utils import iter_cell_paragraphs, get_cell_full_text
> # 遍历某cell全部段落(含嵌套表格内段落)
> for para in iter_cell_paragraphs(cell): ...
> # 获取cell完整文本(含嵌套表格内文本)
> text = get_cell_full_text(cell)
>
> 搜索锚定文本时同样需递归遍历(grade_yaoli 已内置)。
> ⚠️ 文本抽取陷阱(必读): Word/WPS 的可见字符不只存在于 <w:t>。python-docx 的 paragraph.text / cell.text 只取 <w:t>,会静默丢弃 run 级字符——如 <w:noBreakHyphen/>(不换行连字符,屏幕显示 -,WPS/Word 打 - 常存为此)、<w:sym/>、<w:tab/>、<w:br/>。后果:把学员写的「每2-3日」读成「每23日」、「LDL-C」读成「LDLC」、「D-二聚体」读成「D二聚体」,进而误批。脚本已内置 para_text() 完整还原这些字符(get_cell_full_text() / 评语标签判断 / grade_yaoli() 锚点匹配均已改用),不要再直接用 paragraph.text / cell.text 抽取。
模块提取策略(瑞金标准格式):
| 模块 | 定位方法 | 关键标志词 |
|---|---|---|
| 患者基本信息 | 第1-2行单元格 | 姓名、性别、年龄 |
| 主诉 | 搜索"主诉"标签所在行 | "主诉" |
| 现病史 | 搜索"现病史"标签所在行 | "现病史" |
| 既往用药史 | 搜索"既往用药史"标签所在行 | "既往用药史"、"既往史" |
| 入院诊断 | 搜索"入院诊断"标签所在行 | "入院诊断" |
| 诊断要点分析 | 搜索"诊断要点"标签所在行 | "诊断要点" |
| 治疗方案分析 | 搜索"治疗原则"或"治疗方案" | "治疗原则"、"初始治疗方案" |
| 监护计划 | 搜索"监护"标签所在行 | "药学监护"、"监护计划" |
| 治疗日志 | 搜索"D1"或"入院后"开头的段落 | "D1"、"D2"、"入院后第" |
| 带教老师评语 | 搜索"带教老师评语"标签所在单元格 | "药 学 带 教 老 师 评 语"(标签行,评语写入其下方内容行) |
| 总结 | 搜索"治疗经过"或"药物治疗总结" | "治疗经过"、"出院带药" |
> Fallback:如果搜索标志词找不到目标模块,遍历所有cell打印text,手动确认模块位置后再编写搜索词。
> 检查点1:读取完成后,向用户展示提取到的模块清单,确认是否完整。若有模块缺失,询问是否继续。
第2步:基本要求检查
逐项检查:
- [ ] 药历是否字迹清晰、可通读(电子版此条通常通过)
- [ ] 是否存在抄袭/拷贝行为的痕迹
- [ ] 表格药历是否填写完整、无漏项
- [ ] 药物名称是否全部使用通用名(禁用商品名,每出现1处扣1分,≥5处为重度缺陷)
- [ ] 注射剂是否标注所用溶媒
- [ ] 带教老师是否按时修改并提供针对性评语
> 重度缺陷快速判定:出现以下任一情况直接判定不合格——①字迹不可通读 ②拷贝导致原则性错误 ③带教老师无评语 ④通用名≥5处使用商品名。发现重度缺陷时暂停并向用户报告,由用户决定是否继续批改。
第3步:首页逐项检查
3.1 主诉
- 格式是否正确:症状+时间(如"反复胸闷气促3年,加重1周")
- 如果医生写的不规范,学员应自己去简单问一下病史
- 症状出现的时间是否明确
3.2 现病史
- 按时间发展的先后顺序描述
- 强调治疗经过,而非发病过程
- 内容需自己归纳整理,不要简单照搬/复制病历内容
- 与治疗无关的内容可以适当删略
3.3 既往用药史(⭐高频扣分区,17%批注涉及)
7要素必须逐项记录:名称+剂量+途径+频率+疗效+不良反应+依从性
- 不能简单写"无殊",即使患者否认用药也应说明已问诊
- 不要太依赖医生的病史,用药史要自己去床旁问诊
- 包括中草药及保健品
3.4 诊断要点分析
- 建议格式:"患者有……症状、……体征、……实验室检查,符合××指南关于××病的诊断,并排除其他××疾病,所以诊断为……"
- 只对主要诊断进行分析,后续治疗原则应围绕主要诊断
- 诊断依据要用自己概括性的语言总结,不要把现病史抄下来
3.5 心内科专病诊断要点
| 疾病 | 需补充的分级/分型信息 |
|---|---|
| 心力衰竭 | 类型(HFrEF<50%/HFpEF≥50%,2026二分法无HFmrEF)、NYHA分级 |
| 急性心肌梗死 | ST段是否抬高、罪犯血管、Killip分级 |
| 心房颤动 | 类型(阵发性/持续性/永久性)、CHA₂DS₂-VASc评分、HAS-BLED评分 |
| 冠心病/心绞痛 | CCS分级(稳定型)/ ACS分型(不稳定型) |
| 高血压 | 分级、危险分层 |
| 肥厚型心肌病 | 有无梗阻(HOCM)、心功能分级 |
| CKD | 分期(CKD 1-5期) |
3.6 药物治疗方案分析(⭐最高频扣分区,28%批注涉及)
ZWX老师选药分析深度要求(2026复评强调):
| 要求 | ❌错误示例 | ✅正确做法 |
|---|---|---|
| 阐述"为什么选该药" | "SGLT2i选择合理" | 阐述为何选达格列净vs恩格列净,引用DAPA-HF和EMPEROR-Reduced |
| 结合患者特殊性 | 泛泛而谈禁忌症 | 结合血钠、血压、心率等具体情况分析 |
| 同类药物对比 | 只说"醛固酮受体拮抗剂" | 螺内酯vs依普利酮的选择依据,引用2022 AHA/ACC/HF IA推荐 |
| 循证依据引用 | 无指南/研究引用 | 引用指南需说明版本年份,研究需说明名称 |
初始治疗方案评价核心原则:
- 注意是"评价"而非"推荐用药"
- 不要堆砌药理理论知识,药历是医疗文书
- 必须评价禁忌症(结合肝肾功能、血压、心率)
- 必须结合患者具体用药剂量分析,而非泛泛而谈
心内常用指南:详见 references/心内科指南核心知识.md
3.7 药学监护计划(⭐第二高频扣分区,28%批注涉及)
监护计划5大核心要求(带教老师反复强调):
- 明确监护对象:针对完整患者个体,不逐个药物制定
- 找准监护切入点
- 药学监护三要素:疗效+不良反应+执行注意事项
- 制定监测指标:有具体检测指标和监护方法
- 明确监护周期:每日/每3日/每周,不能模糊
常见问题速判:
- ❌ 逐个药物制定监护计划 → 应针对患者整体
- ❌ 监护指标过多、无重点 → 只列出与用药相关的指标
- ❌ 没有监护周期 → 必须明确QD/Q3D/QW
- ❌ 混淆监护与用药教育 → 监护≠教育
- ❌ 治疗方案调整后监护未更新 → 必须相应调整
心内科监护计划常用监测指标(详见 references/评分标准.md 2.6节):
| 药物类别 | 疗效监护 | 安全性监护 | 建议频率 |
|---|---|---|---|
| ARNI/ACEI/ARB | 血压、心衰症状 | 肾功能、血钾 | 血压每日,肾功能用药后3天及每周 |
| β受体阻滞剂 | 心率、心功能 | 血压 | 心率/血压每日 |
| MRA | 心衰症状 | 血钾、肾功能 | 血钾每3天,肾功能每周 |
| SGLT2i | 体重、心衰症状 | 血糖、酮体、eGFR | 血糖每日,肾功能每周 |
| 利尿剂 | 尿量、体重、水肿 | 电解质 | 电解质每1-3天 |
| 华法林 | INR值 | 出血征象 | INR调整期1-3天,稳定后4周 |
| NOAC | — | 出血、肾功能 | 肾功能3-6月 |
第4步:药物治疗日志检查
ZWX老师日志书写核心要求(2026复评强调):
| 要求 | ❌错误 | ✅正确 |
|---|---|---|
| 日志≠"同首页" | "D1:同首页" | 记录入院当日实际执行的监护内容 |
| 书写依据 | 拷贝医生病程记录 | 以监护计划为依据,计划监护什么→日志体现什么 |
| 前后呼应 | 监护计划与日志脱节 | 日志是监护计划的执行记录和结果反馈 |
| 方案调整 | 治疗调整后日志未体现 | 治疗方案调整→日志中体现监护计划相应调整 |
治疗经过总结模板:
> 患者男,××岁。既往有××年的××病……此次因……(主诉)于××月××日入住××科。入院体检发现……(阳性体征),结合……检查,诊断为……疾病……入院后初始给予……药治疗,效果(好/不好)……故于入院后第××天,更改治疗方案为……。此后……检查示……,……症状较前明显/无改善,于××月××日带……药出院。
第5步:总结部分检查
5.1 药物治疗总结
ZWX老师药师工作总结四要素(2026复评强调):
| 要素 | ❌错误 | ✅正确 |
|---|---|---|
| 发现问题 | "积极监护" | 具体问题描述 |
| 提出建议 | "协助医生调整用药" | 具体药学建议内容 |
| 采纳情况 | 未说明 | 采纳/未采纳及原因 |
| 监护结果 | "详细宣教" | 问题是否解决 |
5.2 出院带药
- 药品名后备注规格
- 宣教要点:用药目的、用法用量、注意事项、依从性
- 注意服药时间建议
5.3 随访计划
- 需随访时须制定随访计划
- 患者自行监测指导(如华法林INR监测、心衰体重/尿量)
🔍 检查点2:批改意见确认
> ⚠️ 在生成批注docx之前,向用户确认:
> 1. 展示拟插入的8-12条批注清单(锚定文本+批注内容摘要)
> 2. 展示拟写入的评语总结文本
> 3. 由用户确认/调整后,再执行docx生成
心内科重点药物审查要点
抗栓/抗凝
- 双抗适应症、疗程评估(ACS PCI→12月,HBR→6月)
- NOAC vs 华法林选择依据、剂量分析
- 出血风险评估(HAS-BLED≥3分高危)
- 抗凝时机(术前停药、桥接)
心衰GDMT(2026 ESC:FMT基础治疗 + AMT附加治疗)
- FMT(所有心衰不分LVEF):SGLT2i + MRA(均 I A)
- HFrEF 再加:ARNI/ACEI + β阻滞剂(ARNI优先于ACEI/ARB)
- HFpEF:仅 SGLT2i + MRA(sMRA螺内酯或nsMRA非奈利酮);ACEI/ARB/ARNI降为IIb
- β阻滞剂:心率控制目标、禁忌症
- MRA:血钾、肾功能(非奈利酮按eGFR分层剂量)
- SGLT2i:同类药物对比分析(达格列净vs恩格列净)
- 利尿剂:尿量、电解质(注意碳酸氢钠钠潴留)
- AMT:伊伐布雷定(LVEF≤35%+窦律+心率>70)、维利西呱(LVEF<45%)、地高辛、GLP-1RA(LVEF≥45%+BMI≥30)
降脂
- LDL-C达标评估(超高危<1.4+降幅≥50%)
- 他汀强度选择+联合降脂时机
降压
- ARNI vs ACEI/ARB选择
- β阻滞剂降压vs控心率的不同目的
抗心律失常
- 房颤室率控制vs节律控制
- 胺碘酮:甲功、肝功、QT间期
降糖(心内合并糖尿病)
- SGLT2i心血管获益、不同SGLT2i比较
ZWX老师病例特异性关注点
心衰患者
| 问题 | 批注要点 |
|---|---|
| 利尿剂分析 | 呋塞米vs托拉塞米、静脉vs口服选择依据 |
| 血钠与禁忌 | 评估血钠是否存在药物使用禁忌 |
| 正性肌力药 | 左西孟旦使用时机深入理解 |
| HFimpEF | LVEF改善后是否继续GDMT全剂量 |
冠心病/ACS患者
| 问题 | 批注要点 |
|---|---|
| 降脂达标 | LDL-C目标<1.4mmol/L且降幅≥50% |
| 高强度他汀 | STEMI急性期应启动高强度他汀 |
| 负荷剂量 | DAPT替格瑞洛负荷剂量 |
| PAH与ACEI | 区分PAH病因判断ACEI合理性 |
用药教育
| 问题 | 批注要点 |
|---|---|
| 内容准确性 | 每种药物单独列出教育要点,不可张冠李戴 |
| SGLT2i风险 | 泌尿生殖道感染、DKA风险 |
| 利尿剂低钾 | 低钾血症注意事项 |
批改风格与语气
带教老师(占 84% 批注,主要风格):严格但耐心,引导式提问优先
- ✅ "患者目前的血压如何?是否可以耐受?" > ❌ "血压记录缺失"
- ✅ 先定位问题,再给建议 > ❌ 只指出问题不给方向
- ✅ 提供标准格式/模板 > ❌ 只说"格式不对"
带教老师(占 11% 批注,次要风格):简洁直接,一针见血
- 短句批注:"格式对齐""注意归纳""缺少内容"
语气原则:严格不失耐心,体现"带教"而非"审稿"
评分规则(2026最新版教学药历质量评估表)
四维度ABCD等级评分(总分100分)
| 维度 | 分值 | A | B | C | D |
|---|---|---|---|---|---|
| 基本要求 | 30分 | 30-26 | 25-22 | 21-18 | 17-0 |
| 教学药历首页 | 30分 | 30-26 | 26-22 | 21-18 | 17-0 |
| 治疗日志部分 | 30分 | 30-26 | 26-22 | 21-18 | 17-0 |
| 总结 | 10分 | 10-9 | 8-7 | 6-5 | 4-0 |
各维度评估要点(官方评估表原文)
基本要求(30分):①药历书写应字迹工整、客观、真实、准确、及时、完整;②应当使用医药学术语,使用药品通用名称;③应当表述准确,语句通顺,标点正确;④教学药历应有一年期师资的修改和评语。
教学药历首页(30分):①药历首页表格中不应有缺漏项;②主诉、现病史完整清晰,阳性体征及实验室、影像、特殊检查结果简洁明了,既往史与用药史详尽描述,如有院前抢救史应清楚记录;③对患者既往出现过的药品(食品)过敏反应,及发生过的药物不良反应详细具体描述;④对药物治疗方案的分析应逻辑顺畅,依据充分;⑤药学监护计划部分应有明确的监护内容、监测指标和监测周期。
治疗日志部分(30分):①应按规定日期书写日志,首次药物治疗记录应于患者入院48小时内完成,日志通常3天写一次,危重症患者应每日记录,治疗方案有重大调整或病情危重有抢救时应随时记录;②日志写作应完整通顺,疾病发展变化描述清晰准确,不应遗漏主要的阳性体征和阳性结果;③应对初始药学监护计划的执行记录与监护结果进行记录,如有用药变更,应制订新的药学监护方案;④如有病情变化与用药变更时应有详尽的分析、判断、处理及结果记录;⑤应对异常的实验室等辅助检查结果进行分析,提出药学处理建议;⑥记录临床药师参与药物治疗情况;⑦应有出院药物治疗方案。
总结(10分):①应对本次入院药物治疗过程进行总结;②对患者药物治疗过程中的主要问题和处理过程进行分析评价;③对临床药师在本次治疗过程中的作用进行总结;④应有对患者出院后继续服药的用药指导,同时有对患者自行监测的辅导;⑤对需要的患者制订随访计划,制定明确的随访要求,包括门诊随诊时间及随诊项目。
评分等级
| 等级 | 总分范围 | 说明 |
|---|---|---|
| 优秀 | ≥85分 | 可作为优秀范例 |
| 合格 | 70-84分 | 需小幅改进 |
| 不合格 | <70分 | 需大幅改进 |
评分方法
- 逐维度评估:对照各维度评估要点,结合
references/评分标准.md中的详细扣分项,确定每个维度的ABCD等级及对应得分 - 汇总得分:4维度得分相加=总分(满分100分)
- 确定等级:根据总分对应优秀/合格/不合格
- 重度缺陷检查:若存在重度缺陷,直接判定不合格,不再逐维度评分
重度缺陷(出现任一直接不合格)
①字迹潦草难以辨认、不能通读 ②有证据证明系拷贝行为导致的原则性错误 ③带教老师无评语 ④药物名称未使用通用名出现≥5处
批改输出规范
双轨制输出
- 批注气泡(Word Comment):在药历具体文字位置插入批注,学员可直接看到右侧气泡
- 评语总结:在"药 学 带 教 老 师 评 语"单元格写红色粗体总结,不重复具体问题
批注气泡规范
- 锚定文本:最短且唯一的文字片段,确保文档中只匹配一处
- 批注内容:先指出问题→再给改进建议,语气遵循引导式提问优先
- 署名:
心内带教老师 - ID编排:多份药历时按份递增(药历1: 0-9,药历2: 100+)
- 数量:每份8-12条,覆盖主要扣分点
- 引号:批注文本统一使用「」而非"",避免XML/编码问题
批注锚定位置参考(按优先级):
| 模块 | 搜索锚定文本示例 |
|---|---|
| 主诉 | 症状描述片段 |
| 既往用药史 | "既往用药史"标题 |
| 用药分析 | 药品通用名 |
| 监护计划 | "监测"或监护项目关键词 |
| 治疗日志 | "入院后"或日期标记 |
| 用药教育 | "用药教育"标题 |
| 药师总结 | "药师在本次治疗中" |
评语总结模板
该药历记录了[诊断]患者的治疗经过。整体[评价等级],
主要问题:[3-5条核心问题简述]。
建议[改进方向]后可达到良好水平。
- 格式:红色粗体(RGB 0xFF0000,12pt)
- 仅写总结性评语,不重复批注中的具体问题
技术实现
v3.0.0 起批注写入统一走融合引擎 scripts/comment_engine.py(全文档遍历 + 对象模型写回 + 精确锚点),scripts/word_comment_utils.py 降级为薄封装。
调用方式(签名不变):
from word_comment_utils import grade_yaoli
ok = grade_yaoli(source_path, output_path, comments_data, summary_text)
# comments_data: [(搜索锚定文本, 批注内容), ...]
# summary_text: 评语总结(红色粗体写入"药学带教老师评语"单元格)
融合引擎三要点:
1. 全文档遍历:iter_doc_paragraphs() 遍历正文段落 + 所有表格(递归嵌套表格),修复旧版「只搜 tables[0]」的结构脆弱性
2. 对象模型写回:python-docx 官方 Comments.add_comment() + OPC 自动维护部件关系,不再手拼 PackURI/_blob
3. 精确锚点:find_anchor() 支持 contains/exact/startswith + 全文档命中计数,missed/ambiguous/degraded 显式上报
> Fallback:锚定文本找不到时,引擎记录为 missed 并在结果中标注;评语标签行找不到时,summary_written 为 False。
同步输出质量评估表(打分表)
批改完成、输出批改 Word 后,同步生成对应的官方《教学药历质量评估表》打分表(附件1-3,xlsx)。
- 模板:内嵌于
scripts/template_data.py(官方评估表原文件 base64,与官方 .xlsx 逐字节一致)——因上传平台(SkillHub 等)的文件类型白名单不含 .xlsx,技能包内不再携带 .xlsx;调用时template_path=None即自动使用内嵌模板(若显式传入一个存在的 .xlsx 路径,则优先用该文件) - 做法:以模板为底,复制后仅写入四个评分维度的「得分」列(G4:G7);总分列 G8 保留模板求和公式,由 Excel/WPS 打开时自动计算;标题、评估要点原文、分值区间、边框、列宽、行高、合并单元格等格式 100% 保留,不新增、不删除模板任何文字
- 四个维度及满分(即评分总览表各维度得分):
| 维度 | 满分 |
|------|------|
| 基本要求 | 30 |
| 教学药历首页 | 30 |
| 治疗日志部分 | 30 |
| 总结 | 10 | - 调用(与批注写入同一脚本流程内执行):
python
from scoring_sheet import write_score_sheet
write_score_sheet(
template_path=None, # 自动使用 scripts/template_data.py 内嵌的官方模板(包内无需 .xlsx)
output_path=r'<输出目录>\{原文件名}-打分表.xlsx',
scores={'基本要求': N1, '教学药历首页': N2, '治疗日志部分': N3, '总结': N4},
)
- 输出文件:与批改 docx 同名同目录,后缀
-打分表.xlsx;在最终确认步骤中一并展示打分表路径、各维度得分与总分
高频扣分点快速参考
| # | 问题类型 | 占比 | ZWX老师强调要点 |
|---|---|---|---|
| 1 | 治疗方案分析不深入 | 28% | 阐述选药依据+引用指南/研究 |
| 2 | 监护计划不具体 | 28% | 明确周期(QD/Q3D/QW)+与日志呼应 |
| 3 | 既往用药史不全 | 17% | 7要素逐项记录 |
| 4 | 剂量/途径缺失 | 15% | 注意频次正确性(如沙库巴曲缬沙坦bid) |
| 5 | 日志写"同首页" | 15% | 禁止,必须写当日实际监护内容 |
| 6 | 主诉/现病史格式 | 13% | 症状+时间,不照搬 |
| 7 | 药师总结笼统 | 10% | 四要素:问题+建议+采纳+结果 |
| 8 | 禁忌症未评估 | 10% | 结合患者具体情况 |
| 9 | 选药分析浅 | 9% | 同类药物对比+循证依据 |
| 10 | 诊断分型缺失 | 9% | HFrEF/HFpEF/CCS/ACS分型必须明确 |
版本记录
| 版本 | 日期 | 核心改进 |
|---|---|---|
| v3.1.4 | 2026-10-08 | 上传平台兼容性修复(可直接替换,批改规则与评分标准未变):官方打分表模板改为 base64 内嵌——新增 scripts/template_data.py(内嵌官方评估表原文件,解码后与官方 .xlsx 逐字节一致),scripts/scoring_sheet.py 支持 template_path=None 时自动回退内嵌模板;因 SkillHub 等平台文件类型白名单不含 .xlsx,打包时排除全部二进制表格(.xlsx/.xls/.xlsm),技能包内不再携带 .xlsx;内嵌模板与文件模板两条通道产物已用「逐单元格 + 样式 + 结构」快照实测完全等价。另修复写入得分列(G4:G7)时覆盖模板「自动换行」属性的问题 |
| v3.1.3 | 2026-10-08 | 发布勘误(可直接替换,批改规则与评分标准未变):①修复段落遍历在无 w14:paraId 的 docx(如 .doc 转出)上可能静默丢段的问题——改为按 XML 元素树遍历,实测旧实现最多丢 52% 段落、致批注大面积遗漏;②教学带教评语改为真正的红色粗体(补 w:b/w:bCs,此前只有红色、无加粗);③批注署名规范校验改为默认执行并始终显示结果;④统一 scripts/validate.py 并补全 SKILL.md 调用示例(第 2 个位置参数=期望署名)(本 skill 原缺 validate.py,本次补装);⑤frontmatter 补齐 author/tags/category,统一触发词字段、移除 agent_created;⑥SKILL.md 学员分布改为匿名表述(移除 5 位学员真实姓名) |
| v3.1.2 | 2026-10-08 | 发布勘误(可直接替换,批改规则未变):移除 SKILL.md 中残留的带教老师真实姓名(含字母代称),改为「带教老师」并保留原有批注占比统计;其余内容不变 |
| v3.1.1 | 2026-10-06 | 批注署名规范化 + 校验增强(兼容性修复,可直接替换):批注署名统一为「XX带教老师」——运行时 author 与 initials 均写「XX带教老师」,不再使用老师真名或字母缩写(原 XB / XH / ZL / ICU / FJ / XNDJ 等缩写已全部废止);scripts/comment_engine.py 的 author/initials 参数说明同步更新为强制一致;批改规则、评分标准未变 |
| v3.1.0 | 2026-09-26 | 新增打分表输出(升次版本):批改完成、输出批改 Word 的同时,同步生成对应的官方《质量评估表》打分表(xlsx)——新增统一脚本 scripts/scoring_sheet.py(6 skill 各持一份 MD5 一致)+ 自带官方模板(药历版 references/教学药历质量评估表.xlsx / 病例分析版 references/病例分析质量评估表.xlsx);做法为复制模板后仅写入四维度「得分」列(G4:G7),总分列保留模板求和公式自动计算,格式 100% 保留、不新增/删除模板文字。批改规则、评分标准未变 |
| v3.0.0 | 2026-09-24 | 批注写入技术路线重做(融合架构):三套独立实现收敛为统一引擎 scripts/comment_engine.py——全文档遍历 iter_doc_paragraphs()(正文+所有表格含递归嵌套,修复旧「只搜 tables[0]」局限)、对象模型写回 insert_comment()(python-docx 官方 Comments.add_comment() + OPC 自动维护,弃用手拼 PackURI/_blob)、精确锚点 find_anchor()(contains/exact/startswith + 全文档命中计数,missed/ambiguous/degraded 显式上报)。word_comment_utils.py 降级为薄封装(保留 grade_yaoli 签名 + 嵌套表格提取函数)。批改规则、评分标准未变 |
| v2.3.0 | 2026-09-24 | 心衰指南升级至 2026 ESC(升次版本):references/心内科指南核心知识.md 心衰部分由 2024 更新为 2026 ESC(Eur Heart J 2026,DOI:10.1093/eurheartj/ehag100)。分类改二分法(HFmrEF 删除、HFrEF 扩展到 LVEF<50%);GDMT 拆分为 FMT(基础)/AMT(附加)/GDIT 框架;SGLT2i+MRA 前移到所有心衰(不分 LVEF,均 I A);新增非奈利酮(nsMRA)、GLP-1RA;HFpEF 中 ACE-I/ARB/ARNI 降为 IIb C;更新药物起始/目标剂量表(纠正旧版沙库巴曲缬沙坦剂量错误);同步更新 SKILL.md 病种索引与心衰 GDMT 审查要点。批改规则、评分标准未变 |
| v2.2.2 | 2026-09-16 | 修复文本抽取丢字(勘误,升修订号):scripts/word_comment_utils.py 新增 para_text() 完整还原 <w:noBreakHyphen/>→-、<w:sym/>→符号、<w:tab/>→\t、<w:br/>→\n;get_cell_full_text()、评语标签判断、锚点匹配全部由 paragraph.text 改用 para_text()(原实现会把「每2-3日」读成「每23日」、「LDL-C」读成「LDLC」);SKILL.md 新增「文本抽取陷阱」说明。批改规则、评分标准未变 |
| v2.2.1 | — | 更早版本记录未留存 |