1、心电数据基础:心电信号原理、心电图波形特征、常见心律失常类型

1.1 心电信号是怎么来的?

说实话,很多人一开始接触心电数据,会觉得这东西很玄乎。不就是几条弯弯曲曲的线吗?其实不然。

心脏要跳动,靠的是电信号驱动。这个电信号从窦房结出发,像接力赛一样,一路传到心房、房室结、心室。每次电信号传导,都会在身体表面产生微弱的电位差。我们把电极贴在皮肤上,就能捕捉到这种变化。

我当年第一次看真实的心电数据时,心里想的是:「这玩意儿真能看出心脏有没有问题?」后来做多了项目才明白,每个波折背后都有它的生理意义。

核心要点:心电信号本质是心肌细胞去极化和复极化的综合电位变化。频率范围在0.05Hz~100Hz之间,幅度通常只有0.5mV~4mV。嗯,信号非常微弱,这也是为什么采集电路需要高增益、高共模抑制比。

1.2 心电图波形特征——你得认识这几个「零件」

一个标准的心电图周期,由P波、QRS波群、T波组成。有时候还能看到U波,不过那个比较少见。

波形 代表什么 正常时长 我踩过的坑
P波 心房去极化 ≤0.11s P波太小容易被噪声淹没,滤波参数要调好
QRS波群 心室去极化 0.06~0.10s 宽QRS往往提示室性心律,别漏了
T波 心室复极化 0.10~0.25s T波高尖可能是高血钾,我吃过这个亏
PR间期 房室传导时间 0.12~0.20s PR间期延长=房室传导阻滞,别当正常处理
QT间期 心室除极+复极总时间 0.32~0.44s(需校正) QT延长容易诱发尖端扭转型室速,要警惕

你想想看,这些波形组合在一起,就像心脏的「指纹」。每个波形的形态、时长、幅度,都能告诉我们心脏的工作状态。

我的经验:做心电数据存储系统时,我习惯把每个波形的起止点都标记出来。这样回放的时候,可以快速定位异常片段。说白了,就是给数据打好标签,后面分析起来才顺手。

1.3 常见心律失常类型——这些你得能认出来

做心电系统,最核心的功能之一就是识别心律失常。我整理了几种最常见的,也是面试时经常被问到的。

1.3.1 窦性心律与窦性心律失常

正常人的心律就是窦性心律。P波规律出现,频率在60~100次/分。如果频率<60,叫窦性心动过缓;>100,叫窦性心动过速。

我记得有一次做24小时动态心电监测,发现患者夜间心率掉到38次/分。当时差点报警,后来发现是运动员,生理性的。所以啊,阈值不能设太死。

1.3.2 房性早搏与室性早搏

早搏说白了就是心脏「抢拍」了。房性早搏的P波形态和正常不一样,QRS一般正常。室性早搏更吓人——QRS宽大畸形,没有P波。

我曾经在项目中遇到一个情况:室早二联律被算法误判为室速。原因是噪声干扰导致QRS宽度计算偏大。后来我加了一个形态学校验,准确率才上去。

1.3.3 心房颤动

房颤是最常见的心律失常之一。特征很明显:P波消失,代之以f波,RR间期绝对不齐。

做房颤检测时,我建议重点关注两点:一是P波检测的灵敏度,二是RR间期的变异性分析。两者结合,准确率能到95%以上。

1.3.4 室性心动过速

这个比较危险。连续3个以上的室早,频率>100次/分,QRS宽大畸形。搞不好会恶化为室颤。

警告:室速和室上速伴差传有时候很难区分。我建议在系统中同时保留自动分析和人工复核的接口。别全信算法,也别全不信。

1.4 心电数据的存储要点

讲完了信号原理和波形特征,最后聊聊存储。毕竟咱们的课程是《心电数据存储与历史回放系统实现》。

我个人习惯用以下结构来存储心电数据:

{
  "patient_id": "P2024001",
  "record_time": "2024-01-15 14:30:00",
  "sample_rate": 250,  // Hz
  "lead_count": 12,
  "data": [  // 每个导联的采样点
    [0.12, 0.15, 0.13, ...],  // 导联I
    [0.08, 0.11, 0.09, ...],  // 导联II
    // ... 其他导联
  ],
  "annotations": [
    {"type": "normal", "start": 100, "end": 350},
    {"type": "pvc", "start": 1200, "end": 1450}
  ]
}

为什么要存标注信息?因为回放的时候,你不可能每次都重新做波形识别。把识别结果存下来,回放时直接加载,速度快得多。

小技巧:心电数据压缩可以用差分编码。相邻采样点的差值通常很小,用更少的位数就能存储。我在一个项目里用这个方法,存储空间省了60%。

好了,这一章的内容就到这里。心电信号原理是基础,波形特征是工具,心律失常类型是应用场景。三者串起来,你就能理解心电数据的全貌了。