养老机构用AI健康监测系统落地实录:从传感器数据到慢病预警,技术架构全拆解
养老机构用AI健康监测系统落地实录:从传感器数据到慢病预警,技术架构全拆解
智能穿戴设备在养老行业普及了三四年,但我跑了十几家机构发现一个扎心的事实:设备戴了、数据收了、大屏也装了,但真正把数据用起来做预警的,十家里面不到两家。
原因很简单——手环上报的心率、血氧、步数,如果没有一套靠谱的分析系统去消化,那就是一堆数字垃圾。
去年底帮一家连锁养老机构做了一套AI健康监测平台,从数据采集到预警推送全链路打通,效果比较实在。今天纯技术角度拆一拆,给正在或准备做这个方向的同行一些参考。
数据采集层:不要把鸡蛋放在一个篮子里
第一个坑就是设备兼容。市面上养老手环品牌五花八门,华为、小米、Amazfit、还有各种白牌设备,每家API协议都不一样。
我们的做法是统一抽象一个设备适配层:
class DeviceAdapter(ABC):
@abstractmethod
def fetch_realtime_data(self, device_id: str) -> dict:
pass
@abstractmethod
def parse_vital_signs(self, raw: dict) -> VitalSigns:
pass
class HuaweiAdapter(DeviceAdapter):
def fetch_realtime_data(self, device_id):
resp = requests.get(f"https://api.huawei.com/health/v1/devices/{device_id}/data")
return resp.json()
这样的好处是:新接入一个品牌只需要写一个Adapter,核心分析逻辑完全不用动。目前我们对接了6个品牌共12款设备,数据采集成功率从最初的74%稳定到了96%以上。
数据统一后上报到Kafka做缓冲,消费端用Flink做实时清洗——剔除传感器漂移产生的异常值(比如心率突然飙到500这种明显错误),然后按5秒窗口聚合为均值,写入时序数据库TDengine。
关键选型细节: 为什么选TDengine而不是InfluxDB?因为养老场景按床位/老人维度打标签,TDengine的标签过滤和按时间自动分片的特性,在单表千万级时序点下查询延迟能控制在20ms以内,实测比InfluxDB快3倍左右。
分析引擎:异常检测不能只靠阈值
很多厂商的所谓AI预警,其实就是设了几个固定阈值:心率>120报警、血氧<90报警。但老年人的基础体征差异极大——一个80岁心衰患者的静息心率可能常年100+,阈值设高了漏报,设低了每天几百条假警报,护士直接把推送关了。
我们换了个思路:基于个人画像的动态基线建模。
第一步:建立个人基线
每位老人入住后前7天作为学习期,收集静息心率、夜间血氧、活动量等指标的分布特征:
老人A(80岁,冠心病史):
静息心率基线:82±6 bpm
夜间血氧基线:95±2%
日间活动量基线:3200±800步
老人B(75岁,糖尿病):
静息心率基线:72±5 bpm
夜间血氧基线:97±1%
日间活动量基线:5600±1200步
第二步:滑动窗口异常打分
我们用了一个轻量的Isolation Forest + 移动Z-Score组合模型。对每个维度的实时数据,计算当前值偏离基线的Z-score,超过3.0标记为异常,同时用Isolation Forest做多维度联合判断——比如"心率正常但血氧突然下降+活动量骤减"这种组合特征,单维度阈值根本抓不住。
算法跑在Flink上(每10秒触发一次滑动窗口计算),单节点可以支撑5000+床位。
第三步:分级预警策略
不是所有异常都要推送给护士。我们把预警分为三级:
- L1(观察级):Z-score 3.0-3.5,单一维度偏离 -> 推送给值班护士后台提醒,不弹窗
- L2(关注级):Z-score 3.5-4.0 或两个维度同时偏离 -> 弹窗+语音播报
- L3(紧急级):Z-score >4.0 或三维度联合异常 -> 直接电话连线值班手机+护士站大屏高亮
这套分级机制上线后,护士对预警的有效反馈率从23%提升到了81%——因为她们知道推过来的东西是靠谱的。
慢病趋势预测:这才是真正省钱的模块
预警是短期的,真正对养老机构有价值的是趋势预判——提前发现慢性病恶化信号,在老人需要住院之前就干预。
我们基于LightGBM训练了一个慢病风险模型,输入是老人过去30天的体征时序特征+用药记录+日常活动模式,输出未来7天的心血管事件风险概率(0-1)。
特征工程是关键。举几个实际有效的特征:
- 心率变异性(HRV)下降斜率:连续3天HRV下降超过15%是心血管风险的强信号
- 夜间血氧波动幅度:夜间的SpO2标准差增大往往预示呼吸系统问题
- 活动量模式突变:一位平时每天走5000步的老人突然降到1000步持续2天,大概率身体有情况
模型离线训练好后导为ONNX格式,部署到CPU推理服务器上,每天凌晨2点批量跑一次全量预测。1500位老人30天特征的全量推理耗时约45秒,完全够用。
落地效果:不吹数据,放真实结果
系统上线运行三个月后:
- 提前发现高风险事件27例(心衰早期信号6例、血糖异常波动11例、呼吸系统恶化5例、跌倒风险上升5例),其中19例在护士干预后避免了院外就医
- 家属夜间紧急电话减少约60%——因为系统在凌晨自动监测,异常直接推送给值班护士处理了
- 入住率提升了约8%(机构反馈:不少家属是看中了这套监测系统才决定入住的)
技术栈总结
采集层:华为/小米SDK + 自定义Adapter + Kafka
实时清洗:Flink + TDengine
异常检测:Isolation Forest + Z-Score(Flink CEP)
趋势预测:LightGBM -> ONNX -> CPU推理
推送:WebSocket(护士站大屏)+ 电话网关
整个系统后端团队4个人(2后端+1算法+1数仓),从零到上线用了4个月。不算便宜,但也绝不是什么天价项目。
如果你所在机构也在考虑搭建类似的AI健康监测系统,或者在养老数字化方面有具体需求,欢迎来智岳科技聊聊。我们不卖标准化的SaaS,更倾向于按实际场景做定制——毕竟每个机构的床位规模、老人健康状况、护士配比都不一样,套模板是走不远的。
