跳到主要内容

ECG 长程分析 API

长程分析(Holter Analysis)支持 24 小时及以上的连续心电数据分析,提供专业的长程心电报告。

异步处理

长程分析采用异步模式,提交任务后通过轮询查询接口获取结果。分析时长取决于数据量和分析处理进度。


分析流程


接口列表

接口方法说明
/api/v1/advanced/ecg/holter/upload-urlGET获取文件上传地址
/api/v1/advanced/ecg/holter/submitPOST提交一条长程分析记录
/api/v1/advanced/ecg/holter/result/:idGET查询长程分析结果

Step 1:获取上传地址

GET /api/v1/advanced/ecg/holter/upload-url

用于获取心电二进制文件的上传地址。

请求参数

参数类型必填说明
fileTypestring文件类型,当前仅支持 BINARY16BIN3_16

请求示例

curl -X GET "https://api.heartvoice.com.cn/api/v1/advanced/ecg/holter/upload-url?fileType=BINARY16" \
-H "Authorization: Bearer YOUR_API_KEY"

响应示例

{
"errorCode": "0",
"msg": "成功",
"data": "https://ecgdata-1255716792.cos.ap-shanghai.myqcloud.com/openapi/2039546102478438400/2604021132295727.BINARY16?sign=xxx"
}

说明

  • 返回值 data 为文件上传地址。
  • 客户端拿到地址后,自行完成文件上传。
  • 上传文件格式说明如下。

文件上传示例

客户端获取到上传地址后,可直接使用该地址上传原始心电文件。示例如下:

curl -X PUT --location "https://ecgdata-1255716792.cos.ap-shanghai.myqcloud.com/openapi/2039546102478438400/2604021132295727.BINARY16?sign=xxx" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d @/path/to/your/file.BINARY16

说明:

  • 将命令中的 URL 替换为 Step 1 接口实际返回的上传地址。
  • /path/to/your/file.BINARY16 替换为本地待上传文件路径。
  • 文件扩展名应与申请上传地址时传入的 fileType 保持一致。

上传文件格式说明

当前支持以下两种二进制文件格式:

BINARY16 格式(单导联)
  • 2 个字节为一组,表示 1 个 ECG 信号点。
  • 第 1、2 字节表示第 1 个信号点。
  • 第 3、4 字节表示第 2 个信号点。
  • 以此类推。
  • 字节按大端有符号数转换为十进制值。
字节1 字节2 -> 第1个信号点
字节3 字节4 -> 第2个信号点
字节5 字节6 -> 第3个信号点
...
BIN3_16 格式(三导联)
  • 6 个字节为一组。
  • 第 1、2 字节表示第 1 个导联的第 1 个点。
  • 第 3、4 字节表示第 2 个导联的第 1 个点。
  • 第 5、6 字节表示第 3 个导联的第 1 个点。
  • 后续按相同顺序依次表示下一采样点的三导联数据。
  • 字节按大端有符号数转换为十进制值。
字节1 字节2   -> 第1导联第1个点
字节3 字节4 -> 第2导联第1个点
字节5 字节6 -> 第3导联第1个点
字节7 字节8 -> 第1导联第2个点
字节9 字节10 -> 第2导联第2个点
字节11 字节12 -> 第3导联第2个点
...

Step 2:提交长程分析记录

POST /api/v1/advanced/ecg/holter/submit

文件上传完成后,调用该接口提交分析任务。

请求体参数

参数类型必填说明
fileUrlstring文件的上传地址
adcGainnumberECG 增益参数
adcZeronumberECG 零点参数
sampleRateinteger采样率
deviceIdstring设备 ID
startTimestring记录开始时间,格式必须为 yyyy-MM-dd HH:mm:ss
subjectobject受检者信息

subject 参数

参数类型必填说明
namestring姓名,最长 20 个字符
ageinteger年龄
genderstring性别,最长 5 个字符

请求示例

curl -X POST "https://api.heartvoice.com.cn/api/v1/advanced/ecg/holter/submit" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fileUrl": "https://ecgdata-1255716792.cos.ap-shanghai.myqcloud.com/openapi/2039546102478438400/2604021132295727.BINARY16?sign=xxx",
"adcGain": 1000,
"adcZero": 0,
"sampleRate": 256,
"deviceId": "DEVICE_001",
"startTime": "2026-04-02 10:00:00",
"subject": {
"name": "张三",
"age": 56,
"gender": "男"
}
}'

响应示例

{
"errorCode": "0",
"msg": "成功",
"data": "123456"
}

说明

  • 返回值 data 为本次长程分析记录 ID。
  • 后续查询结果时,使用该 ID 调用结果接口。

Step 3:查询长程分析结果

GET /api/v1/advanced/ecg/holter/result/:id

根据提交接口返回的记录 ID 查询分析结果。请将路径中的 :id 替换为实际记录 ID。

路径参数

参数类型必填说明
idlong长程分析记录 ID

请求示例

curl -X GET "https://api.heartvoice.com.cn/api/v1/advanced/ecg/holter/result/123456" \
-H "Authorization: Bearer YOUR_API_KEY"

未分析完成示例

{
"errorCode": "0",
"msg": "success",
"data": null
}

分析完成示例

{
"errorCode": "0",
"msg": "成功",
"data": {
"longRangeId": "123456",
"adcGain": 1000,
"adcZero": 0.0,
"sampleRate": 256,
"deviceId": "DEVICE_001",
"startTime": "2026-01-27T05:51:49.000+00:00",
"duration": 4423.675,
"report": "{\"diagDescription\":\"记录全过程为窦性心律,心率介于60~60次/分,平均心率60次/分,心率正常。偶发房性早搏,单发房早1次。\",\"hr\":{\"avgHr\":60,\"maxHr\":60,\"maxHrIdx\":67559,\"maxTopHr\":[{\"hr\":60,\"idx\":67559},{\"hr\":60,\"idx\":69159},{\"hr\":60,\"idx\":70359}],\"minHr\":60,\"minHrIdx\":67559,\"minTopHr\":[{\"hr\":60,\"idx\":877904},{\"hr\":60,\"idx\":879104},{\"hr\":60,\"idx\":880304}]},\"hrvPer1Hours\":[{\"avgNn\":997,\"duration\":\"PT1H13M43S\",\"hrv\":{\"highFrequencyPower\":0.73,\"histogram\":{\"x\":[0.0,7.81,15.63,23.44,31.25,39.06],\"y\":[0.0,0.0,0.0,0.0,0.0,0.0]},\"lowFrequencyPower\":1.6,\"pnn50\":0.8,\"rmssd\":37.71,\"sdann\":11.36,\"sdnn\":43.47,\"sdnnIndex\":11.42,\"spectrum\":{\"x\":[0.0,0.01,0.02,0.03,0.04,0.05],\"y\":[27.17198685934816,0.39541511692910203,0.19464690395184117,0.0815961821718201,0.03969849117036164,0.042867407692248775]},\"totalPower\":30.39,\"triIndex\":1.03,\"veryLowFrequencyPower\":6.16},\"startTime\":\"2026-01-27T13:51:49\",\"type\":\"全程\"},{\"avgNn\":996,\"duration\":\"PT1H\",\"hrv\":{\"highFrequencyPower\":0.9,\"histogram\":{\"x\":[0.0,7.81,15.63,23.44,31.25,39.06],\"y\":[0.0,0.0,0.0,0.0,0.0,0.0]},\"lowFrequencyPower\":2.05,\"pnn50\":1.0,\"rmssd\":42.1,\"sdann\":12.68,\"sdnn\":48.49,\"sdnnIndex\":14.38,\"spectrum\":{\"x\":[0.0,0.01,0.02,0.03,0.04,0.05],\"y\":[35.09696860777187,0.5082682315253021,0.24911680280378853,0.10403246731350774,0.049413477273076205,0.05310185996700735]},\"totalPower\":39.17,\"triIndex\":1.03,\"veryLowFrequencyPower\":7.95},\"startTime\":\"2026-01-27T13:51:49\",\"type\":\"小时\"}],\"labelIdx\":{\"PAUSE\":[{\"idx\":[7565,7979]},{\"idx\":[46155,46559]}],\"SINGLE_PAC\":[{\"idx\":[46155,46559]}],\"SN\":[{\"idx\":[3200,5200]},{\"idx\":[6400,8400]},{\"idx\":[11200,13200]}],\"IVB\":[{\"idx\":[171200,643600]},{\"idx\":[753600,883600]}]},\"labelIdxList\":{\"SINGLE_PAC\":[46155],\"SN\":[3200,6400,11200,19200,25600,32000],\"IVB\":[171200,172800,174400,176000,177600,179200]},\"labels\":[\"SINGLE_PAC\",\"SN\",\"IVB\"],\"premature\":{\"bigeminyPAC\":0,\"bigeminyPACCnt\":0,\"bigeminyPJC\":0,\"bigeminyPJCCnt\":0,\"bigeminyPVC\":0,\"bigeminyPVCCnt\":0,\"pairedPAC\":0,\"pairedPACCnt\":0,\"pairedPJC\":0,\"pairedPJCCnt\":0,\"pairedPVC\":0,\"pairedPVCCnt\":0,\"singlePAC\":1,\"singlePJC\":0,\"singlePVC\":0,\"totalJT\":0,\"totalJTCnt\":0,\"totalPAC\":1,\"totalPJC\":0,\"totalPVC\":0,\"totalSVT\":0,\"totalSVTCnt\":0,\"totalVT\":0,\"totalVTCnt\":0,\"triadPAC\":0,\"triadPACCnt\":0,\"triadPJC\":0,\"triadPJCCnt\":0,\"triadPVC\":0,\"triadPVCCnt\":0},\"qtc\":{\"maxTopQtc\":[{\"idx\":4,\"qtc\":492},{\"idx\":16,\"qtc\":506},{\"idx\":7,\"qtc\":515}],\"minTopQtc\":[{\"idx\":41,\"qtc\":339},{\"idx\":37,\"qtc\":344},{\"idx\":50,\"qtc\":379}]},\"totalValidBeats\":4204,\"totalValidDuration\":4220.0}",
"pdfUrl": "https://ecgdata-1255716792.cos.ap-shanghai.myqcloud.com/openapi/2015617052407152640/260325163718451.BIN3_16_AI.pdf?sign=xxx"
}
}

返回字段说明

字段类型说明
longRangeIdstring长程分析记录 ID
adcGainnumberECG 增益参数
adcZeronumberECG 零点参数
sampleRateinteger采样率
deviceIdstring设备 ID
startTimedatetime记录开始时间
durationnumber记录时长,单位为秒
reportstring分析结果 JSON 字符串,包含诊断描述、心率、HRV、标签、早搏统计、QTc 等结果
pdfUrlstringAI 分析报告 PDF 地址

说明

  • 分析未完成时,返回 data: null
  • 分析完成后,data.report 中返回该条记录的分析结果字符串,data.pdfUrl 为对应的 PDF 报告地址。
  • 如需结构化结果,需对 report 字段中的 JSON 字符串再做一次解析。