XX医院V4.0项目复盘:一个”血泪”交加的标杆

“我们原计划用六个月,花300万,把一个V3.0的医院,升级成V4.0。”

“结果我们用了一年,花了580万,差点把公司搞破产。”

周总在复盘会上,第一句话就把大家逗笑了。

这是软佳内部,关于XX医院V4.0项目的正式复盘。

参与人员:项目全员(实施、开发、运维、测试、产品)30多人。

周总:”我们不谈’成绩’,只谈’学到了什么’。因为只有教训,才能让你进步。”

1. 需求调研:我们踩的第一个坑

“项目开始时,我们以为需求很清晰。”产品经理小王说。

“毕竟V4.0不是全新项目,是在V3.0基础上的升级。V3.0有哪些功能,客户满意哪些、不满意哪些,我们做了调研问卷。”

但问题出在:问卷写得不好

问卷问题是:”您对V3.0系统满意吗?A.满意 B.不满意 C.一般”

“有多少人选C?”周总问。

“80%。”小王说。

“那’不满意’的具体是什么?”

“问卷后面有开放题,但大家懒得填。我们只能靠猜测。”

周总摇头:”这就好比医生问病人’你舒服吗?’病人说’还行’,然后医生就开药了。”

他们真正搞清楚需求,是用了一招:蹲点观察

实施团队派出三个人,分别在挂号处、护士站、医生办公室,各待了三天,记录每一个操作,记录每一个抱怨。

“才发现,他们最痛的不是’功能不够’,而是’流程卡顿’——排队两小时,窗口操作三分钟,其中两分钟在等系统。”

“还有,很多功能有,但没人用,因为太复杂。”

“所以需求不是’加功能’,是’减流程’。”

2. 方案设计:我们相信了”标准答案”

“根据需求,我们设计了V4.0方案。”技术负责人老周说。

“方案里有很多’最佳实践’——来自其他医院的经验。比如’医嘱闭环管理’、’移动查房’、’智能分诊’…”

“但XX医院的人,看到方案就摇头。”

“为什么?”

“他们说:’我们要的是’挂号快、收费准、病历好找’,你们这些’高大上’的功能,我们用不着。我们人手不够,没精力学新东西。'”

老周说,他们犯的错是:把其他医院的成功经验,当成标准答案,强加给XX医院

后来他们改了:不做”标准方案”,做”场景化方案”

他们和XX医院的医生、护士、收费员,一起梳理了”核心场景”:

– 门诊挂号(平均8分钟,目标5分钟)

– 医生开医嘱(平均3分钟,目标2分钟)

– 护士执行医嘱(平均2分钟,目标1分钟)

– 住院结算(平均15分钟,目标10分钟)

然后,每个场景,单独优化。

比如,”医生开医嘱”场景,他们去掉了一切与开药无关的功能(比如科研数据录入),把常用药放在前面,做成快捷键。

“减功能,比加功能更难。”老周说。

但减完后,医生满意度飙升。

3. 开发阶段:我们低估了”一致性”

“开发过程中,我们犯了一个低级错误——前后端接口,没有统一规范。”后端工程师小李说。

“前端要一个’患者基本信息’接口,后端A同事给了A版本;前端要’医嘱列表’,B同事给了B版本。字段名不统一,分页方式不统一,错误码也不统一。”

“结果联调的时候,前端怨声载道。一个简单的需求,要对接三四次才能通。”

周总问:”为什么没做接口规范?”

“有规范,但没人执行。”小李低头。

“这是管理问题,不是技术问题。”

老周说:”我们后来強制推行了’接口契约先行’——任何接口变更,必须先写契约文档(OpenAPI),前后端一起review,然后才能开发。”

这个制度,救了后期很多时间。

4. 测试阶段:我们发现”数据质量”是魔鬼

“测试阶段,我们用了两周时间,覆盖所有功能。所有用例通过率98%,以为稳了。”

“结果数据迁移一跑,问题全出来了。”

测试环境的数据,是”干净”的——每条记录都完整,编码规范,关联正确。

生产环境的数据,是”脏”的——三年的数据,有重复患者、有缺失字段、有错误编码、有历史遗留的”影子记录”。

“我们迁移第一天,失败率30%。”

“为什么测试环境没事?”

“因为测试环境数据是我们自己造的,我们知道边界。生产数据是历史积累,我们不知道的坑太多了。”

老周说:”这次教训是:数据迁移测试,必须用生产数据的脱敏副本,不能用测试工厂数据。”

他们连夜把生产环境数据脱敏,拷到测试库,重新跑迁移脚本。又发现一堆问题:

– 患者身份证号有重复(历史数据错误)

– 药品编码不匹配(新旧编码转换表有遗漏)

– 医嘱时间格式不统一(有datetime有string)

这些问题,一条条手动清洗,写了50多个清洗脚本。

“数据迁移,占项目总工时的40%。”老周说。

“但这是必须花的。数据是资产,迁移错了,系统再好也白搭。”

5. 上线前:我们差点”栽”在培训上

“上线前一周,我们给全院做了培训。”小张说。

“培训方式是:大礼堂,一次性讲所有功能,然后发手册。”

“结果呢?”

“反馈:’听不懂’、’信息量太大’、’回去就忘了’。”

“培训后考试,及格率40%。”

小张意识到,这种培训方式不行。

他连夜改了方案:

– 分批次培训,按角色:挂号员、收费员、护士、医生、科主任

– 每个角色,只培训他们要用到的功能(平均每人20个功能,而不是200个)

– 培训后,当场实操,每人登录测试环境,完成三个典型任务

– 三天后,再培训一次,这次只讲难点

第二次培训,及格率90%。

“培训不是’灌输’,是’教会使用’。”小张说。

“而且培训要分多次,第一次讲基础,第二次讲进阶,第三次讲问题收集。”

6. 上线日:我们的”双跑”方案

“上线日,我们用了’双跑’方案——新旧系统并行运行。”老周说。

“为什么不用’一刀切’?”

“因为数据迁移没完全做完,有部分模块数据不一致。’一刀切’等于把旧数据锁死在新系统,一旦有问题回不去。”

“双跑方案,是新系统处理新业务,旧系统处理旧业务。等新系统稳定了,再把旧数据逐步迁移过来。”

“但双跑有风险——两个系统数据要同步,不能冲突。”

“比如,病人在旧系统退费,新系统不知道;新系统开医嘱,旧系统查不到。”

他们做了数据同步中间件,每隔5分钟,把双方的变更同步一次。

同步规则很复杂:

– 冲突解决:新系统优先

– 删除操作:双向删除

– 修改操作:后写的覆盖先写的

“这个同步中间件,是我们上线前两周紧急开发的。”小吴说。

“为什么早不做?”

“因为没想到双跑方案要用到同步。我们以为数据迁移能在上线前完成。”

教训:预案要早做,不能临时抱佛脚

7. 上线后三个月:真正的考验

“上线后第一个月,是’救火月’。”运维工程师小王说。

“每天都有新问题:这个科室不会用,那个功能报错,另一个数据对不上。”

“我们成立了’上线保障组’,七个人,24小时 on-call。”

“最长一次,连续48小时没睡,因为数据同步出bug,导致重复收费。”

但三个月后,系统稳定了。

“怎么稳的?”

“两个原因:一是我们快速响应,问题出现后4小时内解决;二是我们做了’渐进式优化’——不是一次改完,是每周优化一点。”

比如,发现”医嘱开立”慢,我们分析发现是药品搜索慢;优化搜索后,发现是下拉列表加载慢;优化下拉后,发现是缓存穿透…

一个问题,可能要改三四次,才能彻底好。

“但这就是迭代的意义。”小王说。

8. 客户方的变化:从怀疑到信任

“项目刚开始,李主任天天盯着我们,动不动就威胁’要换供应商’。”小张说。

“三个月后,他开始主动提需求,比如’能不能加个慢病管理模块’。”

“六个月后,他在班子会说:’软佳虽然贵,但值。'”

“为什么转变?”

“因为我们兑现了承诺——’上线不是结束’。我们持续优化,持续服务,让他 seeing 我们在乎。”

9. 复盘会的结论:提炼方法论

周总最后说:

“XX医院项目,是我们目前最成功的案例。但成功不是’运气好’,是’把该踩的坑都踩了一遍,然后爬出来了’。

我们总结出(‘三三制’)方法论:

三个阶段

1. 需求阶段:少说多听——让客户说出’真实需求’,而不是’表面需求’

2. 开发阶段:少做多想——做核心功能,想扩展性

3. 上线阶段:少言多做——用行动建立信任,不是用话术

三个原则

1. 透明——问题不隐瞒,进度不隐瞒,风险不隐瞒

2. 敏捷——小步快跑,快速迭代,不追求一次完美

3. 客户成功——我的成功=客户成功

三个底线

1. 数据不能丢

2. 业务不能停

3. 安全不能破

守住了这三个底线,再大的问题,都能解决。

守不住,再好的方案,都是空中楼阁。”

10. 写在最后:项目不是”做完”的,是”养”大的

周总最后说了句话:

“很多人觉得,项目交付了,就结束了。

但我觉得,项目交付,才是真正的开始。

系统上线后,要养——像养孩子一样,发现病灶及时治,定期体检,不断优化。

XX医院V4.0,现在还在’养’的过程中。我们每周去一次,每月优化一次。

(‘服务即产品’)

我们卖的不是软件,是’持续服务’。

软件会老化,会落后,会出问题。但只要服务在,就能让它一直有用。

这就是我们的护城河。”

互动话题

你经历过最深刻的一次项目复盘是什么?学到了什么?

> 基于真实医院场景改编,人物均为化名


立即免费试用门诊系统https://app.kmhis.com/
International Versionhttps://app.kmhis.com/multi/
了解软佳门诊管理系统详情https://www.kmhis.com/outpatient-management-system.html


扫码预约

手机扫码试用患者预约。请勿输入个人真实信息(点击图片可查看原图)

支持8种语言:简体中文、繁体中文、香港中文、English、藏文、泰文、老挝语、越南语


说真的。这类问题我见过太多了。每次看到医院同事为选型头疼。我就想,要是早点有人把这些经验分享出来就好了。毕竟。选择不对。后面全是麻烦。选择对了。省心省力。还能提升整个机构的运行效率。希望这篇能帮到正在纠结的你。

你如果有具体需求。也可以去 www.kmhis.com 看看。那里有更详细的技术方案和案例。

杨院长生日,收到了一条”奇怪”的祝福短信:客户关系维护的长期主义与”非销售”艺术

杨院长生日那天,早上八点,手机响了。

一条短信:

> “杨院长您好,我是昆明软佳的小张。您最近在忙关于HIS系统二期的事情吗?听说你们想加一个慢病管理模块,我们最近做了两家医院的方案,如果需要参考,我可以发给您。——小张,138xxxx”

杨院长愣住了。

她确实在考虑HIS系统二期,要加慢病管理,但还没跟任何人说。连信息科李主任都不知道。

这个”小张”怎么知道的?

她回复:”谢谢,你怎么知道我考虑这个?”

小张秒回:”上次您开会时说’要关注慢病患者管理’,我记下了。刚好我们公司最近在做这方面的产品,就跟您分享一下。”

杨院长心里一暖。

这是个用心的销售。

但更让她感慨的是:这是她收到的唯一一条”生日祝福”,不是群发的,是有实质内容的

1. “客户关系”不是”节日群发”:小张做对了什么?

杨院长把这事跟李主任说了,顺便问:”你们信息科跟软佳谁对接?”

“小张,客户成功经理。”

“他怎么样?”

李主任苦笑:”这就是小张啊。软佳的客户经理,跟华通的赵某完全是两种人。”

赵某是华通的销售,逢年过节群发祝福短信,内容都是”尊敬的X总,值此佳节…”,连名字都不带换的,杨院长收到过好几次,直接删。

但小张不一样。

“你知道他做了什么吗?”李主任问。

杨院长摇头。

“去年冬天,我们儿科有个新生儿严重黄疸,需要转上级医院。但转院要HIS系统出转诊单,那功能我们没有买。小张知道后,连夜联系他们公司,免费给我们开了个临时授权,让我们用了一个月。”

“这种事,他们收费吗?”

“不收。他说’病人要紧’。”

“然后呢?”

“然后我们就买了那个模块。但不是因为他’献殷勤’,是因为他真的理解我们的需求。”

2. “销售”和”客户成功经理”,有什么区别?

小张的身份,从销售,变成了”客户成功经理”。

这是软佳两年前做的组织变革。

以前,销售签完合同就交给实施团队,自己再去追新客户。实施团队交付完,交给运维,自己再去实施下一个项目。运维解决报障,但不会主动联系客户。

客户在软佳的体验,是(“断点式服务”)——每个环节都有人,但环节之间有 gap。

变革后,每个客户,从销售开始,就有一个(“成功经理”)全程跟进。

小张就是XX医院的成功经理。

他的职责不是”卖更多产品”,而是”让客户成功”。

具体做:

每月至少一次上门拜访,不聊销售,只了解需求

每季度提供一份”系统健康报告”(性能、故障、使用率)

每半年做一次”需求工作坊”,帮客户梳理下一步要做什么

客户遇到任何问题,第一个联系他,他协调公司内部资源

“这不就是售后吗?”杨院长问。

李主任:”售后是被动响应,客户有问题才找你。成功经理是主动服务。他会提前发现客户可能遇到的问题。”

比如,小张最近发现XX医院的”医患沟通记录”功能使用率很低——这个功能是医生和患者在线沟通的,但医生不爱用。

小张没直接问”为什么不用”,而是去门诊待了一上午,看医生怎么和病人交流。

他发现:

– 医生在诊室,电脑上一边开医嘱一边跟病人说话,没空打字

– 而且有些患者是老人,不会用手机看消息

小张回去后,没跟客户说”你们得用这个功能”,而是提了个建议:把”医患沟通”和”语音病历”集成,医生说话,自动转文字发给患者

医院采纳了,这个功能的使用率从5%飙升到70%。

这就是(“卖解决方案,不是卖功能”)

3. “客户成功”怎么衡量?KPI决定行为

软佳给成功经理定的KPI,很奇怪:

客户健康度评分(系统可用率、故障次数、用户满意度调研)

客户续约率(不是”销售额”)

客户增购率(在原有合同基础上,买更多模块)

NPS(净推荐值)——客户是否愿意推荐给别人

小张的KPI里没有”本月签单金额”。

但奇怪的是,有了这个岗位,公司的:

– 续约率从70%提升到95%

– 增购率从20%提升到40%

– 客户流失率从15%降到5%

“因为客户感受到,你是真为他好。”杨院长说。

“赵某就 never 这样。”李主任说。

赵某也有KPI——”本月销售额”。所以他见客户,三句话不离”买这个模块””那个功能要不要””我们新产品很好”。

客户觉得他是来收割的,不是来帮忙的。

小张相反。他上门,first 问的是”最近有什么问题””什么功能不好用””你们明年准备做什么”。

问得多,说得少。

但问多了,他就知道客户真正要什么。

4. 生日短信的背后:长期主义的胜利

那天晚上,杨院长把小张发来的”慢病管理方案”研究了一下。

确实,做得很用心。方案里不仅有产品功能,还有:

– 三家已上线医院的运营数据(脱敏的)

– 患者满意度

– 医护人员使用率

– 投资回报率分析

这说明小张是真的调研过,不是随便发个模板来应付。

杨院长回复:”方案收到,很有参考价值。我们下周三开班子会讨论这个事,如果你方便,可以来参加,做个简短汇报。”

小张回复:”谢谢杨院长!我一定到,但不会推销产品,只分享案例。”

杨院长笑了。

她知道,下周三如果小张做得让她满意,二期项目很可能还是软佳的。即使不是全给他们,至少分一块蛋糕。

而这一切,都源于那条生日短信。

(杨院长不知道的是,那条短信,是小张花了两个小时写的——他查了杨院长半年的公开活动,发现她在一个学术会议上提到”慢病管理”,才有的放矢。)

5. 客户关系,不是”搞定一个人”,而是”搞定一个组织”

但小张也有失败的时候。

有一次,他极力推荐一个”智能分诊”模块,说能极大提升门诊效率——AI分诊,患者手机填写症状,系统推荐科室。

但信息科李主任试用了,说:”这玩意儿不实用。它让患者自己在手机上选症状,但很多患者描述不清楚,选错了,反而增加医生工作量。”

小张没坚持,回去跟公司说:”这个产品不适合XX医院,我们先不推。”

“那不等于放弃这个客户了吗?”同事问。

“不是,是更信任我们了。”小张说,”如果我们强推一个不适合的东西,客户会怀疑我们之前推的东西,是不是也不适合。”

这就是(“有时不卖,才是最好的卖”)

杨院长后来才知道这事。

“小张这个人,能处。”她说。

6. “关系”的三个层次:从交易到伙伴

李主任把软佳的客户关系维护,总结为三个层次:

第一层:交易关系

– 你给我钱,我给产品

– 履约即结束

– 容易替代(谁便宜选谁)

第二层:服务关系

– 有问题,响应快

– 有需求,能满足

– 有感情,但不多

– 不太容易被替代

第三层:伙伴关系

– 主动发现客户问题

– 帮客户规划未来

– 为客户的失败感到难过,为客户的 success 感到高兴

– 很难被替代——因为客户觉得你”懂”他

软佳在向第三层努力。

而华通,还在第一层——赵某每次来,就是”我们有个新功能,您要不要看看?”

7. 一个细节,让关系升华:搬家前的”免费检查”

去年冬天,XX医院搬新院区。

搬家前一天,小张带着两个工程师, arrive 医院, free 帮他们检查新院区的网络、机房、AP信号。

“这不是你们的事吧?”李主任问。

“是也不是。”小张说,”如果你们新院区网络有问题,我们的系统用着也不顺。帮你们,也是帮我们自己。”

他们忙到晚上十点,发现一个机房的网线标签贴错了(核心交换机和汇聚交换机接反了),及时纠正。如果搬家后才发现问题,得折腾三四天。

杨院长听说后,送来一箱水果:”你们真是…”

“应该的。”小张说。

杨院长 later 说:”搬家那次,让我 seeing 了什么是’靠谱’——不是签了合同才负责,是客户的事都是事。”

8. 关系的本质:把客户当成”活生生的人”

小张后来在一次内部培训上说:

“很多人觉得’客户关系’就是送礼、请吃饭、逢年过节送月饼。”

“但真正的客户关系,是(‘把客户当成活生生的人’)。”

他有KPI要完成,有领导要汇报,有病人要看,有投诉要处理。

你帮他把事做成,就是最好的关系。

你送他茅台,但他的系统三天两头崩,他 pressure 很大,他烦死了,他哪有心思喝茅台?

相反,你帮他解决一个问题,他记一辈子。

有时候,一句话的力量,胜过一万块礼品。

比如,客户生日,你送个蛋糕,不如发条短信说’记得您曾经提过X事,我帮您留意了,有进展’。

客户会觉得:你把我当人,你记得我说过的话。

这比什么都贵。

9. “客户成功经理”的制度设计:释放一线人员的善意

软佳的客户成功经理制度,有几个关键点:

① 独立性

– 成功经理不属于销售部门,也不属于实施部门

– 直接向”客户成功委员会”汇报(跨部门)

– KPI不与销售额挂钩

② 授权

– 可以调动公司内部资源(技术、产品、实施)

– 可以批准小额”免费服务”(如临时授权、紧急支持)

– 可以直接向高层反馈客户问题

③ 考核

– 客户NPS(占40%)

– 续约率(占30%)

– 健康度评分(占20%)

– 内部协作评分(占10%)

④ 客户数量

– 每个成功经理负责不超过15个客户

– 保证每月至少有一次面对面沟通

10. 长期主义的胜利:信任是最深的护城河

周总后来在一次内部会说:

“客户关系,是慢慢养出来的。”

不要指望签单时就亲如兄弟,而是:

– 第一次故障时,你响应快

– 第一次需求变更时,你理解

– 第一次升级时,你稳定

– 第一次续约时,你主动

每一次互动,都是一次”存款”或”取款”。

存多了,关系就稳了。

取多了,关系就崩了。

软佳的”客户关系账户”,一直在存钱。

华通的”客户关系账户”,一直在取钱(卖新功能、加价、推卸责任)。

所以,华通的客户,稍微有点风吹草动(谣言),就动摇。

而软佳的客户,即使有谣言,也不信——因为他们的”信任余额”够厚。

互动话题

你有过最感动的一次客户服务/售后服务经历吗?是什么让你觉得”值了”?

> 基于真实医院场景改编,人物均为化名


立即免费试用门诊系统https://app.kmhis.com/
International Versionhttps://app.kmhis.com/multi/
了解软佳门诊管理系统详情https://www.kmhis.com/outpatient-management-system.html


扫码预约

手机扫码试用患者预约。请勿输入个人真实信息(点击图片可查看原图)

支持8种语言:简体中文、繁体中文、香港中文、English、藏文、泰文、老挝语、越南语


说真的。这类问题我见过太多了。每次看到医院同事为选型头疼。我就想,要是早点有人把这些经验分享出来就好了。毕竟。选择不对。后面全是麻烦。选择对了。省心省力。还能提升整个机构的运行效率。希望这篇能帮到正在纠结的你。

你如果有具体需求。也可以去 www.kmhis.com 看看。那里有更详细的技术方案和案例。

当监控系统成了”摆设”:一次性能瓶颈的深度追踪

凌晨两点告警响起,这不是电话,而是整个技术团队被拉起的紧急呼叫。

XX省第一人民医院的门诊系统在晚高峰时段出现了严重卡顿,部分科室甚至无法登录。值班工程师小李第一时间检查了监控系统——所有指标正常:服务器CPU使用率40%(远低于警戒线),内存充足,网络流量平稳,数据库响应时间在可接受范围。

但患者的投诉电话持续不断:”系统卡死了!””挂号要五分钟!””收费窗口动不了了!”

小李感到困惑:监控显示一切正常,为什么用户体验如此糟糕?

1. 传统监控指标的致命盲区

李主任凌晨三点赶到数据中心。他首先查看了监控仪表板:CPU平均负载2.5(8核),内存使用率55%,网络带宽利用率30%,数据库连接池使用率60%——所有指标都在安全范围内。

但业务层的监控显示:挂号API平均响应时间从200毫秒上升到8秒,错误率从0.1%上升到15%。

“这怎么可能?”小李说,”应用服务器CPU才40%,数据库查询时间也正常,为什么响应会这么慢?”

李主任问:”你监控的是哪个层面的响应时间?”

“是应用服务器到网关的响应时间。”

“那数据库呢?前端呢?网络链路呢?”

小李摇了摇头——他们只监控了应用服务器的响应时间,没有监控端到端的完整链路。

这是一个典型的监控盲区问题。传统的监控体系过于关注基础设施层(服务器、网络、数据库),而忽略了业务链路层的真实用户体验。

老林建议立即进行链路追踪。他们在关键业务路径上插入了一些探针,很快发现:从用户点击”挂号”到页面返回,大部分时间(约7秒)消耗在数据库查询上,而不是应用处理。

但数据库监控显示查询响应时间只有50毫秒。矛盾在哪?

进一步深挖,他们发现了一个细节:数据库的”平均查询时间”是50毫秒,但这个平均值掩盖了长尾问题——90%的查询确实很快(10-20毫秒),但10%的查询因为锁等待或缓存失效,需要2-3秒甚至更长。平均值被大量的快速查询拉低了,但那些慢查询正好发生在门诊高峰期,直接影响用户体验。

这就是为什么”所有指标正常”但用户感觉”卡”——因为平均值掩盖了长尾延迟。

2. 缓存失效风暴:看不见的雪崩

小吴通过慢查询日志,锁定了几个最慢的查询。它们都涉及同一个表:DOCTOR_SCHEDULE(医生排班表)。这个表每天凌晨会被批量更新一次,之后正常增删改。

但为什么这个表的查询会突然变慢?

他们查看了数据库的缓存状态:InnoDBbufferpoolpagesdirty(脏页数)高达80%,而InnoDBbufferpoolpagesfree(空闲页)只有5%。这意味着缓冲池几乎被占满,新数据无法加载,必须进行大量磁盘I/O。

“是谁占用了这么多缓冲池?”李主任问。

他们启用了performanceschema,查看当前正在执行的热点查询。发现有一个后台任务:DailyReportJob,在早上九点二十分开始执行,它需要扫描DOCTORSCHEDULE全表(300万行)来计算统计指标。这个任务没有设限流,也没有错峰执行,直接冲击生产数据库。

更糟糕的是,这个任务的执行时间长达25分钟。在这25分钟内,业务查询不得不等待I/O资源,导致响应时间飙升。

“这个报表任务为什么在门诊高峰期跑?”李主任质问。

外包团队的回复是:”我们试过在晚上跑,但晚上数据量太大,要跑两个小时。所以改到白天,利用系统空闲期。”

但他们误解了”空闲”——门诊高峰期恰恰是系统最忙的时候,根本不是空闲期。

3. 从单点故障到系统思维

这次故障的修复相对简单:停止报表任务,系统响应迅速恢复正常。但李主任知道,这只是治标。

他们做了几件事:

1. 给报表任务加上了资源限制:CPU配额、内存限制、I/O优先级

2. 将报表任务的执行时间改到凌晨四点到六点,避开业务高峰

3. 优化报表SQL,增加了索引,将执行时间从25分钟降到3分钟

4. 购买并部署了APM(应用性能监控)工具,可以对每个请求进行全链路追踪

但更深层的反思在复盘会上。

老林说:”我们以前的监控思路是’看服务器’,现在是’看业务’。服务器指标只是手段,业务指标才是目的。以后我们的监控仪表板,首先要展示的是:挂号成功率、平均等待时间、门诊吞吐量、患者满意度(通过反馈系统)。如果这些业务指标正常,服务器指标哪怕有点波动也问题不大;但如果业务指标异常,服务器指标再’漂亮’也没用。”

小李问:”那为什么以前没意识到这点?”

李主任回答:”因为我们被’技术指标’绑架了。我们觉得CPU<80%、内存<85%就是健康。但实际上,用户体验是另一回事。一个慢查询可能CPU占用很低,但会让用户等得抓狂。"

“所以我们需要建立业务感知监控——不只是监控系统’活着没’,更要监控系统’好不好用’。”

4. 构建业务感知监控体系

接下来的三个月,团队构建了一套新的监控体系:

第一层:用户体验监控

– 部署前端真实用户监控(RUM),自动采集页面加载时间、API响应时间、错误率

– 关键业务路径设置SLA告警:挂号API P95响应时间>3秒告警,错误率>1%告警

第二层:应用链路追踪

– 使用OpenTelemetry标准,在每个微服务中植入探针

– 可以trace一个挂号请求的全链路:网关→挂号服务→医生排班服务→数据库→返回

– 快速定位瓶颈在哪个环节

第三层:资源质量监控

– 不只监控”连接池使用率”,还监控”活跃连接率”、”空闲连接率”、”等待获取连接的线程数”

– 不只监控”CPU使用率”,还监控”运行队列长度”、”上下文切换频率”

– 引入”资源争用指数”:多个业务竞争同一资源时,指数的变化趋势

第四层:业务指标监控

– 每小时门诊挂号量、退号率、平均候诊时间

– 每病区住院病人数、出院结算平均时长

– 药房发药量、处方审核通过率

– 这些业务指标与系统指标关联分析,发现隐性关联

5. 从”救火”到”防火”

新监控体系上线后,团队发现了多个之前忽略的隐患:

隐患一: 每天上午10:30-11:00,挂号响应时间会周期性上升。原来是某个后台任务StatisticsCollector在整点运行,它需要聚合前一天的统计数据。虽然它只跑5分钟,但在这5分钟内会锁住一些核心表。

解决方法:将统计任务拆分,部分移到夜间,部分改为增量计算,减少单次执行时间。

隐患二: 每月1号的住院结算特别慢。原因是财务科会在1号凌晨批量处理上月住院结算,这个任务会访问大量历史数据。虽然它在凌晨2点运行,但因为数据量太大,仍然会对白天产生余波(缓冲池污染)。

解决方法:将历史数据移到只读副本,结算任务走副本查询,不冲击生产库。

隐患三: 药房发药系统在午高峰(12:00-13:00)经常出现”短暂卡顿”。原因是药房医生会在这个时段集中提交处方,而处方审核服务需要调用外部医保接口进行合规性检查。医保接口响应慢(平均1.5秒)时,大量线程会阻塞等待。

解决方法:引入异步审核和本地缓存,将医保接口响应时间从关键路径中剥离。

6. 运维思维的转变

李主任在年度总结会上,分享了他对”现代运维”的理解:

“运维不再是’保证服务器不宕机’,而是’保证业务连续性’。服务器宕机只是最极端的情况,更多时候的问题是’业务慢’、’业务错’、’业务不稳定’。这些问题的根源可能不在服务器,而在于应用设计、数据模型、资源争用、外部依赖。”

“所以运维人员不能只懂服务器,要懂业务;不能只看指标,要看指标背后的用户感受。”

软佳的总监听后说:”你们现在的监控体系,已经接近我们给顶级三甲医院做的方案了。但我要补充一点:监控的终极目标不是发现更多问题,而是减少问题发生的频率和影响。也就是说,监控要能预警,预警之后能自动处置,自动处置不了才人工介入。”

“我们正在推一个’智能运维’平台,它能基于历史数据预测容量瓶颈,提前触发扩容;能识别异常模式,自动创建工单;甚至在检测到某些已知故障模式时,自动执行修复脚本。”

李主任问:”那运维人员岂不是要失业了?”

总监笑:”恰恰相反,运维人员要从’重复救火’中解放出来,去做更有价值的事——容量规划、架构优化、业务连续性设计。机器适合处理明确的规则,人适合处理模糊的决策。”

半年后,XX医院的HIS系统实现了连续200天无P1故障。李主任在科室内部的墙上写了两句话:

第一句: “指标正常 ≠ 系统健康”

第二句: “业务感知,才是运维的最终标尺”

互动话题

你们医院的监控体系能发现”业务异常”吗?还是只能看服务器指标?你有什么从”监控正常”到”业务异常”的排查经历?欢迎分享你们的监控实践。

> 基于真实医院场景改编,人物均为化名


立即免费试用门诊系统https://app.kmhis.com/
International Versionhttps://app.kmhis.com/multi/
了解软佳门诊管理系统详情https://www.kmhis.com/outpatient-management-system.html


扫码预约

手机扫码试用患者预约。请勿输入个人真实信息(点击图片可查看原图)

支持8种语言:简体中文、繁体中文、香港中文、English、藏文、泰文、老挝语、越南语


说真的。这类问题我见过太多了。每次看到医院同事为选型头疼。我就想,要是早点有人把这些经验分享出来就好了。毕竟。选择不对。后面全是麻烦。选择对了。省心省力。还能提升整个机构的运行效率。希望这篇能帮到正在纠结的你。

你如果有具体需求。也可以去 www.kmhis.com 看看。那里有更详细的技术方案和案例。