码间随笔 · ESSAY

0 分≠"0 分"

那天下午,病区的一条反馈摆到了我面前。

我们医院报表系统里,VTE(静脉血栓)风险评估模块弹出了一个提示:某位患者风险评估总分达到 4 分,属于需要重点关注的高风险人群。可病区护士看完直摇头:

"这位患者我们刚评估完,就是 0 分,怎么可能是 4 分?"

一边是系统自动算出来的结论,一边是临床一线的坚持。两边都说得斩钉截铁,谁也不像在说谎。

01 先查报表,再查系统

我决定自己动手核实。先从报表下钻到明细——患者姓名、住院号、评估医生、评估科室、评估时间,一项项都对得上。最后落在"总分"那一栏,我愣了一下。

文书上清清楚楚写着:0分

注意,是"0分",不是"0"。

看起来只是一字之差,不仔细看甚至发现不了。但就是这多出来的一个"分"字,把整张报表给"骗"了。

02 一个"分"字,是怎么骗过报表的

报表在筛选"总分达到 4 分及以上"的患者时,用的是排除法:把 0 分、1 分、2 分、3 分的都排掉,剩下的自然就是达标人群。判断逻辑大概长这样——

"如果总分不等于 0、也不等于 1、也不等于 2、也不等于 3,那就是 4 分以上。"

问题恰恰出在这里。

数据库里存的不是数字 0,而是字符串"0分"。在数据库眼里,"0分"是一个完完整整的新词,它既不等于"0",也不等于"1""2""3"。于是四个排除条件全部落空,报表顺理成章地判定:这肯定是个 4 分以上的患者。

打个比方:门卫手里有份名单,写着"0、1、2、3",见到名单上的人就放行。结果这天来了个人,手里举着"0分"的牌子。门卫左看右看,名单上没有这个名字,于是大手一挥:"名单上没有?那肯定是重要人物,进!"

人还是那个人,只是名字后面多了个字,门卫就不认得了。

03 这锅,谁背?

说到底是三道环节一起漏了:

第一,护士端录入时,分值格式没有统一。本该填纯数字"0",结果带上了单位"分",系统还毫无察觉。

第二,数据库没有做校验。存进来的数据是什么格式,它就存什么格式,来者不拒。

第三,我当初写报表时,默认数据一定是干净的纯数字,直接按字符串去比较,压根没想过里面会混进"带单位"的写法。

前两道防线没守住,最后一道防线也没兜住。这一层层的"没想到"叠在一起,才酿成了这场乌龙。

04 一点教训

事情不大,没有造成实际影响,但值得记一笔。

其一,别默认数据是"干净"的。录入端永远比你想象的更"自由",什么格式都可能出现。写报表的人,得先做好数据不会乖乖听话的准备。

其二,写报表不只是写逻辑,更是在和现实打交道。动手之前多问一句"这里可能出现什么意外值",往往能省下大量返工。

其三,遇到矛盾先别急着站队。报表说 4 分,病区说 0 分,两边都没说谎——真相往往藏在你最想不到的地方,比如一个多出来的"分"字。

最后,我也把报表逻辑改了:先提取数字、再比较大小,以后"0分""1分"这种格式再也不会蒙混过关。希望这起因为"分"字引发的冤案,是医院系统里的最后一次。

← 返回码间随笔 码间随笔 · 码不停蹄