尘土与星辰 -1992|第292章|硬规则与脱敏池|中文
回到租用的共享办公区时,已是下午四点半。走廊里的声控灯坏了三盏,剩下的一盏接触不良,随着脚步声明明灭灭。林尘推开玻璃门,把背包放在靠窗的工位上。左脚落地时,那股从脚踝窜到小腿的钝痛让他下意识屏住了呼吸。他没坐下,先弯腰从桌底抽出半箱未开封的矿泉水,垫在椅子下方
第292章 硬规则与脱敏池
回到租用的共享办公区时,已是下午四点半。走廊里的声控灯坏了三盏,剩下的一盏接触不良,随着脚步声明明灭灭。林尘推开玻璃门,把背包放在靠窗的工位上。左脚落地时,那股从脚踝窜到小腿的钝痛让他下意识屏住了呼吸。他没坐下,先弯腰从桌底抽出半箱未开封的矿泉水,垫在椅子下方,把左脚搁上去。血液循环受阻的麻木感稍微缓解,但骨缝里的刺痛依旧清晰。
他打开笔记本电脑,屏幕亮起,映出昨晚没关的Excel表格。资金流向的单元格已经标红。四十万进共管账户,扣除税费和手续费,实际可用三十七万二。服务器八台GPU实例,按月预付六万;苏曼团队三人薪资加社保,九万;日常运维、差旅、服务器带宽,两万。三十七万二减去十七万,剩余二十万二。这二十万二,必须覆盖接下来四十五天的合规评估、数据脱敏工具采购、第三方审计配合,以及突发状况的缓冲。
林尘新建了一个Sheet,命名为《交付清单V1.0-合规版》。他习惯把复杂问题拆成可执行的颗粒度。第一列是节点,第二列是交付物,第三列是验收标准,第四列是责任人,第五列是风险预案。手指在键盘上敲击,发出规律的嗒嗒声。
节点1:数据底层脱敏。交付物:脱敏规则库+执行脚本。验收标准:患者姓名、身份证号、手机号、详细住址替换率100%,临床诊断字段保留。风险预案:旧系统GBK编码与UTF-8混排导致正则匹配失效,需增加编码自动识别模块。
节点2:本地化推理节点部署。交付物:边缘服务器镜像+离线模型包。验收标准:断网状态下核心诊断功能可用,响应延迟<2秒。风险预案:医院机房电力不稳,需配置UPS备用电源。
节点3:接口联调与审计日志。交付物:API对接文档+全量操作留痕系统。验收标准:卫健委评估组可一键导出审计轨迹,无权限越权漏洞。风险预案:院方旧HIS系统接口不开放,需通过中间库抓取,增加数据一致性校验。
敲完最后一行,他保存文件,导出PDF。拿起手机,拨通苏曼的电话。响了四声,接通。背景音是机房风扇的低频嗡鸣。 “清单发你了。”林尘说,“四十五天的评估期,预算要重新切。脱敏和合规预审占大头。你那边模型微调的进度,能不能往后压一周?” “压不了。”苏曼的声音很平静,带着熬夜后的微哑,“临床主任签字后,试点科室已经跑起来了。医生反馈说,辅助诊断的置信度在82%左右,但遇到罕见并发症,模型还是会给出保守建议。我需要这周把新标注的三千条病历喂进去,做一次增量训练。否则全院推广时,误报率会超标。” “增量训练需要算力。”林尘看着屏幕上的预算表,“八台GPU实例,现在全跑在试点科室的实时推理上。如果分出一部分做训练,推理延迟会上升。” “可以错峰。”苏曼顿了顿,“凌晨两点到六点,医院系统访问量最低。我把训练任务切到那个时段。但脱敏脚本必须提前跑通。评估组最看重的是数据出境安全。我们的模型如果要在本地跑,训练数据就不能出机房。旧病历里的非结构化文本,比如医生手写的病程记录,里面夹杂着大量缩写和口语化描述。现有的正则规则漏脱率太高。” “漏脱率多少?” “测试集里大概3.4%。主要是老医生习惯用‘王床’代指‘王主任床位’,或者把患者姓名简写成姓氏加床号。正则会把‘王床’当成患者名,直接替换成‘***’,导致临床上下文断裂。” 林尘沉默了几秒。3.4%的漏脱率,在技术测试里可以接受,但在省级医疗安全评估里,是硬伤。评估组不会听解释,只会看报告。 “加一层规则。”林尘说,“不依赖纯正则。先跑一遍实体识别,把‘医生’‘护士’‘床位’‘科室’这些上下文特征提取出来。如果‘姓氏+床号’出现在医嘱签名栏,标记为医护人员,不脱敏。如果出现在患者信息栏,再替换。脚本今晚能出吗?” “能。但需要人工复核样本。”苏曼说,“我让标注组抽五百条出来,手动校对。明天上午给你反馈。” “好。预算我这边调。训练算力按错峰排期,脱敏脚本优先。清单里的节点,按这个顺序推进。” “明白。”苏曼挂了电话。
林尘放下手机,端起桌上的保温杯。水已经凉了,他喝了一口,胃里泛起一阵轻微的抽搐。他从抽屉里摸出半板布洛芬,抠出两粒,就着冷水咽下。药效上来需要四十分钟。他不能等,必须把脱敏脚本的底层逻辑写清楚。
屏幕的光映在脸上。他打开代码编辑器,新建文件data_masking_v3.py。左手搭在键盘上,右脚踩在桌沿,左脚悬空。他开始写规则引擎的类结构。不追求优雅,只追求稳定。每一个try-except块都加上详细的日志记录,每一条正则表达式都配上测试用例。他写得很慢,但很稳。遇到不确定的边界条件,他就停下来,在旁边的纸质笔记本上画流程图。箭头、判断框、异常分支。像当年在青石村堂屋里,对着那台二手电脑拆解Python语法一样。
晚上九点,药效开始起作用,脚部的刺痛转为沉闷的酸胀。他站起来,在狭窄的过道里慢慢走了两圈,活动僵硬的关节。回到座位,继续调试。十一点,脚本跑通。他导入一份五千条的脱敏测试集。进度条缓慢推进。98.1%通过。1.9%进入异常队列。他点开异常队列,逐条核对。果然,大部分是“李床”“张护”这类缩写被误判。他调整了上下文权重参数,重新跑了一遍。通过率提升到99.4%。剩下的0.6%,是真正的生僻字和乱码。他加了一个兜底逻辑:无法识别的字段,统一替换为[REDACTED],并记录原始哈希值,供后续人工复核。
凌晨一点二十。他把最终版脚本和测试报告打包,发给苏曼。邮件发送成功的提示音响起时,他靠在椅背上,闭上眼睛。呼吸逐渐平稳。资金、技术、合规,三条线终于咬合在一起。没有奇迹,只有拆解、试错、修正。
手机屏幕突然亮起。不是苏曼的回复。是一封来自省卫健委评估筹备组的系统邮件。标题:《关于AI辅助诊疗系统安全评估的现场核查通知》。 林尘睁开眼,点开附件。正文很短:“经综合研判,原定四十五天评估周期压缩至二十八天。现场核查组将于本月22日进驻贵司及试点医院。请提前准备数据脱敏台账、本地部署环境及第三方渗透测试报告。逾期视为自动放弃评估资格。” 22日。距离今天,只有九天。 预算没变,算力没变,但时间砍掉了一半。脱敏脚本的覆盖率必须从99.4%提到99.9%。渗透测试报告需要找有资质的第三方机构加急出具,费用至少三万。共管账户里的钱,原本按周拨付的缓冲期,现在必须一次性前置。
林尘盯着屏幕上的日期。左脚又开始隐隐作痛。他没动,只是伸手拉开抽屉,翻出那本厚厚的错题本。在新的一页,他写下:1:25 评估周期压缩至28天。风险:脱敏覆盖率不足、渗透测试加急成本超支、资金拨付节奏断裂。对策:今晚重排甘特图,联系第三方机构锁定档期,向赵启明申请首笔资金提前释放30%。
笔尖停顿。他补上最后一句:注:不赌运气。只算概率。
窗外的城市已经睡去,只有远处高架桥上偶尔驶过的货车,发出低沉的轰鸣。林尘合上本子,重新把手放回键盘上。屏幕的光,照亮了他眼底的血丝,也照亮了下一行待写的代码。时间不等人,但规则可以提前铺好。他按下回车,开始重构进度表。下一场硬仗,在九天后。而他,已经准备好了。
More from WayDigital
Continue through other published articles from the same publisher.
Comments
0 public responses
All visitors can read comments. Sign in to join the discussion.
Log in to comment