数据计算

计算数据说明

有些数据如睡眠,不能从手表直接获取,需要调用埃微物联网平台的算法接口计算得到,通常需要您对某些手表数据做 预处理,然后作为参数去调用算法接口。

算法接口

地址 http://api1.iwown.com/algoservice

返回值格式:

{
    "ReturnCode":0,
    "Data":{}
}

ReturnCode:

  • 0 - 代表正常;

  • 10001/10505 - API处理有错误;

  • 10002 - 参数有问题,有遗漏或参数值有问题;

  • 10404 - 没有数据

10001/10505/10002 通常代表客户端程序调用有问题,如果自己查不出问题,需联系API开发咨询。 Data 字段根据API不同而不同,有可能没有

睡眠计算

URL: /calculation/sleep

Method: POST

Params/json:

{
    "prevDay":"[{\"E\":{\"a\":[0,0,0,22,0]},\"Q\":363,\"T\":[9,2]},{\"E\":{\"a\":[0,0,0,412,0]},\"T\":[9,12]}]",
    "nextDay":"[{\"E\":{\"a\":[1,4,2,0,360]},\"H\":{\"a\":84,\"n\":82,\"x\":89},\"Q\":560,\"T\":[0,1]}]",
    "prevDayRri":[-3,3000,-1,0,-1,844,755,817,830,779,748,648,717],
    "nextDayRri":[815,796,817,851,841,800,819,857,834,808,877,791,825,839,813,822,821,832,829,831,822],
    "recordDate":20240101
}

prevDay/nextDay: 预处理得到的睡眠字符串,分别是recordDate前一天和当天的睡眠字符串 prevDayRri/nextDayRri: rri预处理得到的列表,分别是recordDate前一天和当天的rri数据, 用来计算眼动睡眠,预处理方法参考房颤预处理部分。

返回值:

{
    "ReturnCode": 0,
    "message": "操作成功",
    "data": {
        "completed": 1,
        "start_time": "2021-12-01 00:36",
        "end_time": "2021-12-01 08:13",
        "hr": 0,
        "turn_times": 0,
        "respiratory": {
            "avg":7.8,
            "max":7.8,
            "min":7.8
        },
        "sections": [{
            "start": "2021-12-01 00:36",
            "end": "2021-12-01 00:52",
            "type": 4
        }, {
            "start": "2021-12-01 00:52",
            "end": "2021-12-01 00:59",
            "type": 3
        }, {
            "start": "2021-12-01 00:59",
            "end": "2021-12-01 01:05",
            "type": 4
        }, {
            "start": "2021-12-01 01:05",
            "end": "2021-12-01 01:11",
            "type": 6
        }, {
            "start": "2021-12-01 01:11",
            "end": "2021-12-01 01:31",
            "type": 4
        }, {
            "start": "2021-12-01 01:31",
            "end": "2021-12-01 01:35",
            "type": 6
        }, {
            "start": "2021-12-01 01:35",
            "end": "2021-12-01 02:12",
            "type": 4
        }, {
            "start": "2021-12-01 02:12",
            "end": "2021-12-01 02:25",
            "type": 3
        }, {
            "start": "2021-12-01 02:25",
            "end": "2021-12-01 03:33",
            "type": 4
        }, {
            "start": "2021-12-01 03:33",
            "end": "2021-12-01 03:52",
            "type": 3
        }, {
            "start": "2021-12-01 03:52",
            "end": "2021-12-01 05:07",
            "type": 4
        }, {
            "start": "2021-12-01 05:07",
            "end": "2021-12-01 05:19",
            "type": 3
        }, {
            "start": "2021-12-01 05:19",
            "end": "2021-12-01 05:35",
            "type": 4
        }, {
            "start": "2021-12-01 05:35",
            "end": "2021-12-01 05:48",
            "type": 3
        }, {
            "start": "2021-12-01 05:48",
            "end": "2021-12-01 06:10",
            "type": 4
        }, {
            "start": "2021-12-01 06:10",
            "end": "2021-12-01 06:16",
            "type": 3
        }, {
            "start": "2021-12-01 06:16",
            "end": "2021-12-01 08:13",
            "type": 4
        }]
    }
}

completed: 为1时表示睡眠数据不会再变化,为0时表示睡眠数据有可能还会变化,用户没起床或者睡回笼觉

sections: 分段睡眠数据,每段睡眠都有开始/结束时间,睡眠类型。

hr: 睡眠心率

turn_times: 翻身次数

respiratory: 呼吸率

type:

  • 3 深睡

  • 4 浅睡

  • 6 清醒

  • 7 快速眼动

根据分段睡眠可以计算整个睡眠深睡/浅睡/清醒时长。

心电分析

URL: /calculation/ecg

Method: POST

Params/json:

{
    "ecg_list":[74825,11003,5622,3103,280,-217,-650,-947,-1223]
}

ecg_list: 单次心电测量的原始数据,按照收到数据的先后顺序合并

返回值:

{
    "ReturnCode": 0,
    "message": "操作成功",
    "data": {
        "result": 1,
        "hr": 86,
        "effective": 0,
        "direction": -1
    }
}

hr: 心率 effective: 有效值,0有效,-1信号太弱,1说明有干扰 direction: 方向; -1说明数据反了,所有数据点前加负号

result:

  • 0 无结果, 有干扰或者数据异常

  • 1 窦性心率

  • 2 窦性心率过缓

  • 3 窦性心率过速

  • 4 心律不齐(早搏)

  • 5 心律不齐(房颤)

  • 6 心率过速(室上性心动过速)

房颤分析

URL: /calculation/af

Method: POST

Params/json:

{
    "rri_list":[-3,3000,-1,0,-1,365,356,531,388,533,390,616,352,448,424,626,546,663,664,-2,-1,-1,-2,-1,-1,-2,324,327,326,329,-2,-1,-1,-2,1018,1024,1036,1037,1099,1074,1085,1035,1072,1098,1089,1071,1117,1157,1212,1083]
}

rri_list: 需要分析的时间段内房颤原始数据,按照收到数据的先后顺序合并

返回值:

{
    "ReturnCode": 0,
    "message": "操作成功",
    "data": {
        "result": 1
    }
}

result:

  • 0 无结果, 有干扰或者数据异常

  • 1 窦性心率

  • 2 窦性心率过缓

  • 3 窦性心率过速

  • 4 心律不齐(早搏)

  • 5 心律不齐(房颤)

  • 6 心率过速(室上性心动过速)

数据预处理

睡眠

处理方式参考sample API代码里面数据预处理部分,以Java代码为例,在SleepPreprocessor类里面DataPrepare方法。 每条数据预处理后得到的sleep string用这条数据的时间保存下来,拼接这一天的sleep string,得到一个json数组格式 字符串,完成一天数据的预处理,拼接方法在SleepPreprocessor类里面CombineSleepRawData方法。睡眠算法接口需要 传当天和前一天的sleep string。

心电

处理方式参考sample API代码里面数据预处理部分,以Java代码为例,在EcgPreprocessor类里面DataPrepare方法。 每条数据预处理后得到的原始数据用这条数据的时间保存下来,按照收到数据的先后顺序合并时间相同的所有原始数据即为 单次测量的心电数据,然后调用心电分析接口

房颤

处理方式参考sample API代码里面数据预处理部分,以Java代码为例,在RriPreprocessor类里面DataPrepare方法。 保存合并您想计算的时间区间内所有的rri数据,然后调用房颤分析接口

API示例程序

Java版本(springboot): [java示例下载](http://api8.iwown.com/dist/4gdata-java.zip)

Golang版本(echo): [golang示例下载](http://api8.iwown.com/dist/4gdata-golang.zip)

python版本(flask): [python示例下载](http://api8.iwown.com/dist/4gdata-python.zip)

c#版本API(asp.net): [c#示例下载](http://api8.iwown.com/dist/4gdata-csharp.zip)

php版本API(lumen): [php示例下载](http://api8.iwown.com/dist/4gdata-php.zip)