# Physiol Meas API List ## 生理量測APIs ### 上傳量測資料 * **上傳量測資料ByAIO** [POST /physiol/meas/aio](#上傳量測資料ByAIO-POST-physiolmeasaio) * **上傳量測資料ByDevice** [POST /physiol/meas/device](#上傳量測資料ByDevice-POST-physiolmeasdevice) * **批次上傳量測資料ByDevice** [POST /physiol/meas/batchdevice](#批次上傳量測資料ByDevice-POST-physiolmeasbatchdevice) ### 取得量測資料 * **取得個人資訊** [POST /physiol/meas/userInfo](#取得個人資訊-POST-physiolmeasuserInfo) * **取得個人量測值** [GET /phy/recent](#取得個人量測值) * **取得個人量測值-含異常值** [GET /phy/recentDetail](#取得個人量測值-含異常值) * **取得生理資料警示範圍** [POST /physiol/meas/threshold](#取得生理資料警示範圍-POST-physiolmeasthreshold) * **[APP/WEB] 生理量測紀錄列表的量測率** [POST /physiol/meas/measureRate](#APPWEB-生理量測紀錄列表的量測率-POST-physiolmeasmeasureRate) * **[APP/WEB] 生理量測紀錄列表的趨勢圖** [POST /physiol/meas/measureTrend](#APPWEB-生理量測紀錄列表的趨勢圖-POST-physiolmeasmeasureTrend) * **[APP/WEB] 取得生理測量儀表板** [POST /physiol/meas/dashboard](#APPWEB-取得生理測量儀表板-POST-physiolmeasdashboard) * **血壓** * **取得血壓記錄列表/警示列表** [POST /bloodPressureRecord/list](#取得血壓記錄列表警示列表-POST-bloodPressureRecordlist) * **取得血壓記錄警示圖表** [POST /bloodPressureRecord/tagCount](#取得血壓記錄警示圖表-POST-bloodPressureRecordtagCount) * **更新血壓記錄** [POST /bloodPressureRecord/edit](#更新血壓紀錄-POST-bloodPressureRecordedit) * **刪除血壓記錄** [POST /bloodPressureRecord/delete](#刪除血壓紀錄-POST-bloodPressureRecorddelete) * **更新量測血壓時段提醒** [POST /bloodPressure/duration/edit](#更新量測血壓時段提醒-POST-bloodPressuredurationedit) * **取得所有量測血壓時段** [GET /bloodPressure/duration/list](#取得所有量測血壓時段-GET-bloodPressuredurationlist) * **血氧** * **取得血氧記錄列表** [POST /spo2Record/list](#取得血氧記錄列表-POST-spo2Recordlist) * **更新血氧記錄** [POST /spo2Record/edit](#更新血氧紀錄-POST-spo2Recordedit) * **刪除血氧記錄** [POST /spo2Record/delete](#刪除血氧紀錄-POST-spo2Recorddelete) * **體溫** * **取得體溫記錄列表** [POST /temperatureRecord/list](#取得體溫記錄列表-POST-temperatureRecordlist) * **更新體溫記錄** [POST /temperatureRecord/edit](#更新體溫紀錄-POST-temperatureRecordedit) * **刪除體溫記錄** [POST /temperatureRecord/delete](#刪除體溫紀錄-POST-temperatureRecorddelete) * **體重/體脂/肌肉量/腰圍/臀圍** * **取得體重/體脂/肌肉量/腰圍/臀圍記錄列表,警示列表** [POST /bodyHighWeight/list](#取得體重體脂肌肉量腰圍臀圍記錄列表警示列表-POST-bodyHighWeightlist) * **取得體重/體脂/肌肉量/腰圍/臀圍記錄警示數量** [POST /bodyHighWeight/tagCount](#取得體重體脂肌肉量腰圍臀圍記錄警示數量-POST-bodyHighWeighttagCount) * **更新身高體重記錄** [POST /bodyHighWeight/edit](#更新身高體重記錄-POST-bodyHighWeightedit) * **刪除身高體重記錄** [POST /bodyHighWeight/delete](#刪除身高體重記錄-POST-bodyHighWeightdelete) * **胰島素** * [新增/編輯/修改/刪除/列表 APIs](https://gitlab.devpack.cc/mr0s00/h365_v1/h365_v1/-/wikis/Backend_api/Insulin_record_api) * **血糖** * [新增/編輯/修改/刪除/列表 APIs](https://gitlab.devpack.cc/mr0s00/h365_v1/h365_v1/-/wikis/Backend_api/blood_sugar_api) --- ## 上傳量測資料ByAIO **POST /physiol/meas/aio** ### 用於: * AIO 上傳生理測量資訊 * 體溫 * 血氧 * 血壓/脈搏 ### Header { Content-Type: application/x-www-form-urlencoded } ### Request form: | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | id_no| Y | String | 身分證字號,由AIO設備上傳時為必填,若是透過app呼叫時則不用,會由token去取householdMemberId來用 | | temperature | N | String | 體溫 | | systolic_pressure | N | String | 舒張壓 | | diastolic_pressure | N | String | 縮收壓 | | heartbeat | N | String | 脈搏 | | spo2 | N | String | 血氧 | | body_weight | N | String | 身高 | | body_high | N | String | 體重 | | measure_date | Y | String | 測量時間 UTC+0 milliseconds | | lat | N | float | 緯度 | lng | N | float | 經度 ### Response Body Example: ```javascript { "result": true, "errormessage": "" } ``` --- ## 上傳量測資料ByDevice **POST /physiol/meas/device** ### 用於: * App 上傳生理測量資訊 * 體溫 * 血氧 * 血壓/脈搏 * 身高/體重 ### Request Body: | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | temperature | N | String | 體溫 | | systolicPressure | N | String | 舒張壓 | | diastolicPressure | N | String | 縮收壓 | | heartbeat | N | String | 脈搏 | | spo2 | N | String | 血氧 | | bodyHigh | N | String | 身高 | | bodyWeight | N | String | 體重 | | measureDate | Y | String | 測量時間 UTC+0 milliseconds | | deviceId | N | String | 有帶表示 設備上傳,否之,手動輸入| | lat | N | float | 緯度 | lng | N | float | 經度 ### Request Body Example: ```javascript { "temperature": "36.7", "systolicPressure": "110", "diastolicPressure": "78", "heartbeat": "80", "spo2": "98", "bodyHigh": "180.8", "bodyWeight": "70.1", "measureDate": "1550628000000", "lat":22.357741, "lng":120.901022 } ``` ### Response Body: * data | Parameter | format | desc | | -----| -----|-------- | | setSpo2 | boolean | 成功設定血氧 | | setTemperature | boolean | 成功設定體溫 | | setBloodPressure | boolean | 成功設定血壓/脈搏 | | setBodyHeighAndWeight | boolean | 成功設定身高/體重 | ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "setSpo2": true, "setBloodPressure": true, "setTemperature": true, "setBodyHighAndWeight": true } } } ``` --- ## 批次上傳量測資料ByDevice **POST /physiol/meas/batchdevice** ### 用於: * App 上傳生理測量資訊 * 體溫 * 血氧 * 血壓/脈搏 * 身高/體重 ### Request Body: | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | temperature | N | String | 體溫 | | systolicPressure | N | String | 舒張壓 | | diastolicPressure | N | String | 縮收壓 | | heartbeat | N | String | 脈搏 | | spo2 | N | String | 血氧 | | bodyHigh | N | String | 身高 | | bodyWeight | N | String | 體重 | | insulin | N | JsonObject | 胰島素 | | deviceModelId | N | String | 指定胰島素專用機型,若有帶則以此為主,並表示手動輸入,不帶則表示設備上傳,此時 deviceId 必填,並以設備已配對好之胰島素機型當成測量機型。| | bloodSugar | N | JsonObject | 血糖值 | | periodType | N | String | 檢測時段 | | measureDate | Y | String | 測量時間 UTC+0 milliseconds | | deviceId | N | String | 有帶表示 設備上傳,否之,手動輸入| ### Request Body Example: ```javascript { "deviceId":"my_device_id", "dataList": [ { "temperature": "36.7", "systolicPressure": "110", "diastolicPressure": "78", "heartbeat": "80", "spo2": "98", "bodyHigh": "180.8", "bodyWeight": "70.1", "insulin": { "deviceModelId": "2cd1cb7b-d976-4d53-9a66-e22d176d9e86", //指定胰島素機型 "dose": 21 }, "bloodSugar": { "value": 100, "periodType": "BEFORE_LUNCH" }, "measureDate": "1550628000000" }, { "temperature": "35.2", "systolicPressure": "140", "diastolicPressure": "80", "heartbeat": "90", "bodyHigh": "165.5", "bodyWeight": "90.3", "insulin": { "dose": 21 }, "bloodSugar": { "value": 100, "periodType": "AFTER_DINNER" }, "measureDate": "1620773570000" } ] } ``` ### Response Body: * data | Parameter | format | desc | | -----| -----|-------- | | setSpo2| boolean | 成功設定血氧 | | setTemperature| boolean | 成功設定體溫 | | setBloodPressure| boolean | 成功設定血壓/脈搏 | | setBodyHighAndWeight| boolean | 成功設定身高/體重 | ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": [ { "setSpo2": true, "setBloodPressure": true, "setTemperature": true, "setBodyHighAndWeight": true }, { "setBloodPressure": true, "setTemperature": true, "setBodyHighAndWeight": true } ] } } ``` --- ## 取得個人資訊 **POST /physiol/meas/userInfo** ### 用於: * 個人健康管理名單 > 個人資訊 ### Request body: | Parameter | Required | format | desc | | -----| -----|-------- | -----| | householdMemberId| Y(地區管理者、醫生、護士) <br> N() | string | 家戶成員id | ### Request body Example: ```javascript // 地區管理者、醫生、護士 { "householdMemberId": "61b64513fc5a4a77bab8153915e4735f" } // 一般用戶,不必帶參數,只能取得自己的資訊 { } ``` ### Response body: | Parameter |format | desc | | -----| -----|-----| | name| string | 姓名 | | idCardNo| string | 身分證字號| | birthDate| string | 生日| | gender| string | 性別,1:男, 2:女| | tribeCode| string | 原住民身分碼 | | tribeName| string | 原住民身分| | address| string | 地址 | postCode| string | 郵遞區號 | | mobile| string | 電話| | healthStatus| string | 健檢結果的健康狀態<br> 0:沒有資料<br>1:笑臉<br>2:哭臉| | potentialDisease| string | 潛在疾病- TODO | ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "name": "王大陸", "idCardNo": "E111222333", "birthDate": "1980-01-01", "gender": 1, "tribeCode": 7, "tribeName": "其他原住民族", "address": "高雄市那瑪夏區達卡努瓦里五鄰大光巷75號", "postCode": "84941", "mobile": "0988999666", "healthStatus": 1, "potentialDisease": "" } } } ``` --- ## 取得個人量測值 **GET /phy/recent** ### 用於: * 個人健康管理名單 > 個人資訊 ### Request body: | Parameter | Required | format | desc | | -----| -----|-------- | -----| ### Request body Example: ```javascript // 一般用戶,不必帶參數,只能取得自己的資訊 { } ``` ### Response body: | Parameter |format | desc | | -----| -----|-----| | bodyWeight| float | 體重 | | bmi| float | BMI| | fat| float | 體脂| | systolic| string | 舒張壓| | diastolic| string | 收縮壓 | | heartRate| string | 心跳| | beforeMeals| string | 飯前血糖 | afterMeals| string | 飯後血糖 | | insulin| int | 胰島素| | temperature| float | 體溫| | oxygen| int | 血氧 | | waterVolume| int | 喝水量 | | muscle | number | 最新一筆肌肉量資訊| | waist | number | 最新一筆腰圍資訊| | hips | number | 最新一筆臀圍資訊| | dailyDehydration| int | 今日脫水量(含負數) | | hasPdHistoryRecords| bool | 是否有透析紀錄歷史可匯出(上個月到今天) | ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "bodyWeight": 50, "bmi": 12.7, "fat": 4.3, "systolic": 120, "diastolic": 89, "heartRate": 90, "beforeMeals": 89, "afterMeals": 67, "insulin": 5, "temperature": 36.4, "oxygen": 99, "waterVolume": 67, "muscle": 32.27, "waist": 90, "hips": 110, "dailyDehydration": -100, "hasPdHistoryRecords": true } } } ``` --- ## 取得個人量測值-含異常值 **GET /phy/recentDetail** ### 查詢 ```url= GET /phy/recentDetail ``` ### Response Body Param | 欄位 | 型態 | 說明 | |---|---|---| |bodyWeight | number | 最新一筆體重資訊| |bmi | number | 最新一筆 bmi 資訊| |fat | number | 最新一筆體脂資訊| |systolic | number | 最新一筆收縮壓資訊| |diastolic | number | 最新一筆舒張壓資訊| |heartRate | number | 最新一筆心跳資訊| |beforeMeals | number | 最新一筆飯前血糖資訊| |afterMeals | number | 最新一筆飯後血糖資訊| |insulin | number | 最新一筆胰島素資訊| |temperature | number | 最新一筆體溫資訊| |oxygen | number | 最新一筆血氧資訊| |waterVolume | number | 最新一筆有記錄的當天喝水量資訊| |muscle | number | 最新一筆肌肉量資訊| |waist | number | 最新一筆腰圍資訊| |hips | number | 最新一筆臀圍資訊| |dailyDehydration|number|今日脫水量| |dailyDehydrationLatestMeasureDate|number|今日脫水量的最後量測時間| |hasPdHistoryRecords|boolean| 往前一個月內是否有上船腹膜透析紀錄| |abnormalNum | number | 量測值異常的數量| |recordNum | number | 量測值數量| |-value | number | 量測值| |-isNormal | boolean | 量測值是否異常| |-unit | string | 量測值單位| |-measureDate | number | 量測時間| ### Response Body Example ```javascript { "httpCode": 200, "result": { "data": { "bodyWeight": { "value": "55.0", "isNormal": false, "unit": "%", "measureDate": 1627270766619 }, "bmi": { "value": "17.6", "isNormal": false, "measureDate": 1627270766619 }, "fat": { "value": "19.0", "isNormal": true, "unit": "%", "measureDate": 1627270766619 }, "systolic": { "value": "155", "isNormal": true, "unit": "mmHg", "measureDate": 1627270804450 }, "diastolic": { "value": "133", "isNormal": false, "unit": "mmHg", "measureDate": 1627270804450 }, "heartRate": { "value": "88", "isNormal": true, "unit": "次/分鐘", "measureDate": 1627270804450 }, "beforeMeals": { "value": "22", "isNormal": false, "unit": "mg/dL", "measureDate": 1627269071039 }, "insulin": { "value": "3", "isNormal": true, "unit": "u", "measureDate": 1616479468839 }, "temperature": { "value": "39.3", "isNormal": false, "unit": "度", "measureDate": 1627271190685 }, "oxygen": { "value": "93", "isNormal": true, "unit": "%", "measureDate": 1627271165866 }, "waterVolume": { "value": "500", "isNormal": true, "unit": "ml", "measureDate": 1615795758791 }, "muscle": { "value": "57.20000076293945", "isNormal": true, "unit": "kg", "measureDate": 1686798108330 }, "waist": { "value": "85.0", "isNormal": true, "unit": "cm", "measureDate": 1689326250000 }, "hips": { "value": "100.0", "isNormal": true, "unit": "cm", "measureDate": 1689326250000 }, "dailyDehydration": 200, "dailyDehydrationLatestMeasureDate": 1615795758791, "hasPdHistoryRecords": false, "abnormalNum": 5, "recordNum": 11 } } } ``` --- ## 取得生理資料警示範圍 **POST /physiol/meas/threshold** ### Response body: | Parameter |format | desc | | -----| -----|-----| | measureThresholdId| string | 警示 ID | | measureType| string | 生理資料型態| | dangerHigh| Float | 危險高標| | warningHigh| Float | 警告高標| | dangerLow| Float | 危險低標 | | warningLow| Float | 警告低標| | unit| String | 單位| ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "thresholdList": [ { "measureThresholdId": "3e007ca1-ba76-4237-858c-14978855fd76", "measureType": "SYSTOLIC_PRESSURE", "dangerHigh": 181.0, "warningHigh": 140.0, "dangerLow": 89.0, "warningLow": 99.0, "unit": "mmHg" }, { "measureThresholdId": "4b8e1719-b6e1-4d81-91b0-f08729f34d94", "measureType": "DIASTOLIC_PRESSURE", "dangerHigh": 121.0, "warningHigh": 80.0, "dangerLow": 19.0, "warningLow": 59.0, "unit": "mmHg" }, { "measureThresholdId": "1211b0d5-64bf-48c4-af56-010bd5827ac8", "measureType": "HEARTBEAT", "dangerHigh": 121.0, "warningHigh": 100.0, "dangerLow": 49.0, "warningLow": 59.0, "unit": "次/分鐘" }, { "measureThresholdId": "042b0377-1447-4fbd-838b-f7cfe7dbda38", "measureType": "BLOOD_SUGAR_HUNGRY", "dangerHigh": 451.0, "warningHigh": 101.0, "dangerLow": 50.0, "warningLow": 59.0, "unit": "mg/dL" }, { "measureThresholdId": "5ad66568-a0a5-470a-9078-f1a2ac76e874", "measureType": "BLOOD_SUGAR_DIET", "dangerHigh": 451.0, "warningHigh": 141.0, "dangerLow": 50.0, "warningLow": 59.0, "unit": "mg/dL" }, { "measureThresholdId": "ebfa8678-b851-449f-bacb-f7c96b162839", "measureType": "SPO2", "dangerLow": 89.0, "warningLow": 93.0, "unit": "%" }, { "measureThresholdId": "7508a733-bc03-4b71-bade-67064da67943", "measureType": "TEMPERATURE", "dangerHigh": 38.0, "warningHigh": 37.0, "dangerLow": 34.9, "warningLow": 35.8, "unit": "度" }, { "measureThresholdId": "882b27e9-5e5a-49eb-bcfb-57907e31269d", "measureType": "BMI", "dangerHigh": 30.1, "warningHigh": 27.1, "dangerLow": 15.4, "warningLow": 18.4 }, { "measureThresholdId": "554d0b22-90bd-4449-a093-a7cdc6559421", "measureType": "FAT_MEN_UNDER_30", "dangerHigh": 25.1, "warningHigh": 20.1, "dangerLow": 13.9, "warningLow": 10.9, "unit": "%" }, { "measureThresholdId": "e4e4f9f9-d8db-41ab-a169-0ef7355f1a47", "measureType": "FAT_MEN_OTHER", "dangerHigh": 25.1, "warningHigh": 23.1, "dangerLow": 16.9, "warningLow": 10.9, "unit": "%" }, { "measureThresholdId": "4da3d540-4f3b-49b8-a9e9-fdeef3d4fc11", "measureType": "FAT_WOMEN_UNDER_30", "dangerHigh": 30.1, "warningHigh": 24.1, "dangerLow": 16.9, "warningLow": 10.9, "unit": "%" }, { "measureThresholdId": "e0a70a22-390d-463d-8db6-e0241b0cc4bb", "measureType": "FAT_WOMEN_OTHER", "dangerHigh": 30.1, "warningHigh": 27.1, "dangerLow": 19.9, "warningLow": 10.9, "unit": "%" }, { "measureThresholdId": "3558de30-3296-4a16-abb9-45bf182826d6", "measureType": "WEIGHT_MEN_RANGE", "dangerHigh": 15.0, "warningHigh": 10.0, "dangerLow": 10.0, "warningLow": 15.0, "unit": "%" }, { "measureThresholdId": "cf50e8e1-6ec7-4c8c-9584-5aed726db57a", "measureType": "WEIGHT_WOMEN_RANGE", "dangerHigh": 15.0, "warningHigh": 10.0, "dangerLow": 10.0, "warningLow": 15.0, "unit": "%" }, { "measureThresholdId": "1550e863-6b0c-4103-9521-d3c231b73418", "measureType": "ENERGY_RANGE", "dangerHigh": 15.0, "warningHigh": 10.0, "dangerLow": 10.0, "warningLow": 15.0, "unit": "%" }, { "measureThresholdId": "526ea711-c816-4064-b5fc-29a17e7d282e", "measureType": "WEIGHT", "unit": "kg" }, { "measureThresholdId": "dbdaf8ae-327d-44be-b4b1-6e5d79bb77f2", "measureType": "ENERGY", "unit": "卡/天" } ] } } } ``` ### 血糖的 measureType 和 periodType 對照表 | measureType |periodType | | -----| -----| | BLOOD_SUGAR_HUNGRY| WAKE_UP | | BLOOD_SUGAR_HUNGRY| BEFORE_BREAKFAST | | BLOOD_SUGAR_DIET| AFTER_BREAKFAST | | BLOOD_SUGAR_HUNGRY| BEFORE_LUNCH | | BLOOD_SUGAR_DIET| AFTER_LUNCH | | BLOOD_SUGAR_HUNGRY| BEFORE_DINNER | | BLOOD_SUGAR_DIET|AFTER_DINNER| | BLOOD_SUGAR_HUNGRY|BEFORE_SLEEP| --- ## [APP/WEB] 生理量測紀錄列表的量測率 **POST /physiol/meas/measureRate** ### 用於: * WEB(醫生、護士、區管理者) ``` 智能遠距服務 > 個人健康管理名單 > 查看個人健康紀錄 > 生理量測紀錄列表-量測率 ``` * APP(一般民眾) ``` 生理量測 > 胰島素記錄列表 > 胰島素/血壓/體溫/血氧/血糖-量測率 ``` ### Request Body: | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | type |Y | String |取得檢測紀錄的種類,定義:<br>**INSULIN** (胰島素)<br> **BLOOD_PRESSURE_HEARTBEAT** (血壓)<br> **TEMPERATURE** (體溫)<br> **SPO2** (血氧)<br>**BLOOD_SUGAR** (血糖)<br>**BODY_HIGH_WEIGHT**(身高體重)<br>**FAT**(體脂)<br>**MUSCLE**(肌肉量)<br>**WAIST**(腰圍)<br>**HIPS**(臀圍)| | endDate | Y | String | 結束時間 UTC+0 milliseconds | | startDate | Y | String | 開始時間 UTC+0 milliseconds | | householdMemberId| N (一般民眾身分不用傳)<br>Y (非一般民眾身分必填)| String | 家戶成員id | ### Request Body Example: ```javascript { "type": "INSULIN", "startDate": 1550448540000, "endDate": 1550628000000, "householdMemberId": "78af42a808c64ff58cf0db08f420db16" // 一般民眾身分登入不必傳此值 } ``` ### Response Body: * data | Parameter | format | desc | | -----| -----|-------- | | percentage| float | 量測率的 % 數 | | totalDays| int| 分母,總天數 | | measureDays| int| 分子,有量測值的天數 | ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "percentage": 66.66666666666666, "totalDays": 3, "measureDays": 2 } } } ``` --- ## [APP/WEB] 生理量測紀錄列表的趨勢圖 **POST /physiol/meas/measureTrend** ### 用於: * WEB(醫生、護士、區管理者) ``` 智能遠距服務 > 個人健康管理名單 > 查看個人健康紀錄 > 生理量測紀錄列表-趨勢圖 ``` * APP(一般民眾) ``` 生理量測 > 胰島素記錄列表 > 胰島素/血壓/體溫/血氧/血糖-趨勢圖 ``` ### Request Body: | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | type |Y | String |取得檢測紀錄的種類,定義:<br>**INSULIN** (胰島素)<br> **BLOOD_PRESSURE** (血壓)<br> **HEARTBEAT** (心跳)<br> **TEMPERATURE** (體溫)<br> **SPO2** (血氧)<br>**BLOOD_SUGAR** (血糖)<br>**BODY_WEIGHT**(體重)<br>**FAT**(體脂)<br>**MUSCLE**(肌肉量)<br>**WAIST**(腰圍)<br>**HIPS**(臀圍)<!--**HBA1C**(糖化血色素)<br>**TRIGLYCERIDE**(三酸甘油脂)<br>**TOTAL_CHOLESTEROL**(總膽固醇)<br>**HDL**(高密度膽固醇)<br>**LDL**(低密度膽固醇)-->| | endDate | Y | String | 結束時間 UTC+0 milliseconds | | startDate | Y | String | 開始時間 UTC+0 milliseconds | | householdMemberId| N (一般民眾身分不用傳)<br>Y (非一般民眾身分必填)| String | 家戶成員id | ### Request Body Example: ```javascript { "type": "INSULIN", "startDate": 1550448540000, "endDate": 1550628000000, "householdMemberId": "78af42a808c64ff58cf0db08f420db16" // 一般民眾身分登入不必傳此值 } ``` ### Response Body: * data | Parameter | format | desc | | -----| -----|-------- | | datetime| long | UTC+0 的 milliseconds | | type| String | 取得檢測紀錄的種類,定義:<br>**INSULIN** (胰島素) | | value| double | 值 | ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": [ { "datetime": "1550716249381", "type": "INSULIN", "value": 32 }, { "datetime": "1550715707461", "type": "INSULIN", "value": 3 }, { "datetime": "1550715693717", "type": "INSULIN", "value": 51 } ] } } ``` --- ## [APP/WEB] 取得生理測量儀表板 **POST /physiol/meas/dashboard** ### 用於: * 取得生理測量儀表板 ### Header { Content-Type: application/x-www-form-urlencoded } ### Request form: | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | endDate | Y | String | 結束時間 UTC+0 milliseconds | | startDate | Y | String | 開始時間 UTC+0 milliseconds | | householdMemberId| N (一般民眾身分)<br>Y (非一般民眾身分)| String | 家戶成員編號。一般民眾身分不需帶此值,系統會自動取得個人的家戶成員編號 | ### Request form Example: ```javascript { "startDate": "1550448000000", "endDate": "1550534400000", "householdMemberId": "78af42a808c64ff58cf0db08f420db16" } ``` ### Response Body: * bloodPressure | Parameter | format | desc | | -----| -----|-------- | | systolicPressure| string | 舒張壓 | | systolicPressureTag| string | 舒張壓標籤 | | diastolicPressure| string | 收縮壓 | | diastolicPressureTag| string | 收縮壓標籤 | | heartbeat| string | 脈搏 | | heartbeatTag| string | 脈搏標籤 | | measureDate | String | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * spo2 | Parameter | format | desc | | -----| -----|-------- | | spo2| string | 血氧 | | spo2Tag|string|血氧警示標籤| | measureDate | String | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * temperature | Parameter | format | desc | | -----| -----|-------- | | temperature| string | 體溫 | | temperatureTag|string|體溫警示標籤| | measureDate | String | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * bloodSugar | Parameter | format | desc | | -----| -----|-------- | | value| string | 血糖值 | | periodType| string | 量測時段| | measureDate | String | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | | bloodSugarTag| String | 血糖標籤(WARNING/DANGER/NORMAL) | * insulin | Parameter | format | desc | | -----| -----|-------- | | deviceModelName| string | 機台廠牌型號 | | dose| string | 胰島素劑量 | | measureDate | String | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * bodyHighWeight | Parameter | format | desc | | -----| -----|-------- | | bodyWeight| string | 體重 | | measureDate | String | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * bodyFat | Parameter | Format | Desc | | -----| -----|-------- | | fat | double | 體脂 | | fatTag | string | 體脂警示標籤 | | measureDate | timestamp | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * bodyMuscle | Parameter | Format | Desc | | -----| -----|-------- | | muscle | double | 肌肉量 | | muscleTag | string | 肌肉量警示標籤 | | measureDate | timestamp | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * bodyWaist | Parameter | Format | Desc | | -----| -----|-------- | | waist | double | 腰圍 | | waistTag | string | 腰圍警示標籤 | | measureDate | timestamp | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | * bodyHips | Parameter | Format | Desc | | -----| -----|-------- | | hips | double | 臀圍 | | hipsTag | string | 臀圍警示標籤 | | measureDate | timestamp | 測量時間 UTC+0 milliseconds | | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype) | <!-- * 糖化血色素 hba1c | Parameter | format | desc | | --------- |-------- |-------- | | vhrId | String | 糖化血色素 uuid | | hba1c | float | 糖化血色素 | | hba1cTag | String | 糖化血色素標籤 (DANGER/NORMAL) | | measureDate | long | 測量時間 UTC+0 milliseconds| | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype)| * 血脂 bloodLipids | Parameter | format | desc | | --------- |-------- |-------- | | vblrId | String | 血脂 uuid | | hdl | Integer | 高密度膽固醇 | | hdlTag | String | 高密度膽固醇標籤 (DANGER/NORMAL) | | ldl | Integer | 低密度膽固醇 | | ldlTag | String | 低密度膽固醇標籤 (DANGER/NORMAL) | | totalCholesterol | Integer | 總膽固醇 | | totalCholesterolTag | String | 總膽固醇標籤 (DANGER/NORMAL) | | triglyceride | Integer | 三酸甘油脂 | | triglycerideTag | String | 三酸甘油脂標籤 (DANGER/NORMAL) | | measureDate | long | 測量時間 UTC+0 milliseconds| | resource | String | [測量類別](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/-/wikis/Type-Definition/#resourcetype)| --> #### resource (輸入來源) * MANUAL: 生理量測手動輸入 * DEVICE: 生理量測配對裝置 * ALL_IN_ONE: AIO機器 #### dietSession (用餐期間) (待補...) #### xxxTag ([警示標籤](https://wistron-my.sharepoint.com/:x:/r/personal/annie_ih_wang_wistron_com1/_layouts/15/Doc.aspx?sourcedoc=%7B669766C8-D15B-4F40-AC5F-D206AA3C4B9F%7D&file=%E7%94%9F%E7%90%86%E9%87%8F%E6%B8%AC%E6%A8%99%E6%BA%96%E5%80%BCv3.xlsx&action=default&mobileredirect=true&isSPOFile=1&cid=5f2a30cb-ef54-4d32-993b-98c0a2593afc)) * NORMAL: 正常 * WARNING: 警告 * DANGER: 危險 #### dataType (資料類別) * PHYSIOL: 生理量測 * VISITOR: 醫護量測 ##### 若數值為空,表示當天尚未測量 例如: ``` { "spo2": "", } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "bloodPressureHeartbeat": { "userBloodPressureRecordId": "919909f4-6e76-4fa4-9f56-028653158c13", "systolicPressure": "12", "diastolicPressure": "33", "heartbeat": "44", "systolicPressureTag": "DANGER", "diastolicPressureTag": "WARNING", "heartbeatTag": "DANGER", "measureDate": 1587963660000, "resource": "MANUAL", "dataType": "VISITOR" }, "spo2": { "userSpo2RecordId": "9fe0be5c-6750-4fb7-9543-3a430e82364b", "spo2": "98", "spo2Tag": "NORMAL", "measureDate": 1554165014115, "resource": "MANUAL" }, "temperature": { "userTemperatureRecordId": "b159fb12-2295-4378-b0ef-1d577f9dca72", "temperature": "35.70", "temperatureTag": "NORMAL", "measureDate": 1587966720000, "resource": "MANUAL", "dataType": "VISITOR" }, "bloodSugar": { "value": "96", "periodType": "WAKE_UP", "measureDate": 1554165010795, "resource": "MANUAL", "bloodSugarTag": "NORMAL" }, "insulin": { "deviceModelName": "優泌樂混合型50/50KwikPen", "dose": "2.0", "measureDate": 1554165053868, "resource": "MANUAL" }, "bodyHighWeight": { "userBodyHighWeightRecordId": "", "bodyWeight": "70.1", "measureDate": 1551259226000, "resource": "DEVICE" }, "bodyFat": { "userBodyHighWeightRecordId": "97cfc4d9-e8da-4621-921c-fdab7528e974", "measureDate": 1650418203035, "resource": "MANUAL", "fat": 28.5, "fatTag": "DANGER" }, "bodyMuscle": { "userBodyHighWeightRecordId": "97cfc4d9-e8da-4621-921c-fdab7528e974", "measureDate": 1650418203035, "resource": "MANUAL", "muscle": 51.81, "muscleTag": "WARNING" }, "bodyWaist": { "userBodyHighWeightRecordId": "5e1b7bd8-0c98-460f-83d6-216def6023ad", "measureDate": 1689326250000, "resource": "MANUAL", "waist": 85.0, "waistTag": "NORMAL" }, "bodyHips": { "userBodyHighWeightRecordId": "5e1b7bd8-0c98-460f-83d6-216def6023ad", "measureDate": 1689326250000, "resource": "MANUAL", "hips": 100.0, "hipsTag": "NORMAL" } } } } ``` --- ## 取得血壓記錄列表/警示列表 **POST /bloodPressureRecord/list** ### 用於: * 取得血壓記錄列表 * Query 帶上 warningTag, measureType 即可取得 警示列表 ### Request body Example: ```javascript { "query": { "startDate": "1550448000000", "endDate": "1550799654741", "householdMemberId": "7890bcfd11724a36a7077dc9ade21611", "warningTag": "DANGER" // DANGER, WARING, NORMAL, "measureType": "HEARTBEAT" // HEARTBEAT, DIASTOLIC_PRESSURE, SYSTOLIC_PRESSURE }, "pagination": { "current": "1", "pageSize": "10" }, "sorter": { "field": "measureDate", "order": "asc" } } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": [ { "systolicPressure": "100", "diastolicPressure": "60", "heartbeat": "40", "systolicPressureTag": "WARNING", "diastolicPressureTag": "DANGER", "heartbeatTag": "DANGER", "measureDate": 1550628000000, "resource": "MANUAL", "dataType": "PHYSIOL" //PHYSIOL:生理量測, VISITOR: 醫護量測 }, { "systolicPressure": "100", "diastolicPressure": "60", "heartbeat": "40", "systolicPressureTag": "WARNING", "diastolicPressureTag": "DANGER", "heartbeatTag": "DANGER", "measureDate": 1550628000000, "resource": "DEVICE", "dataType": "VISITOR" //PHYSIOL:生理量測, VISITOR: 醫護量測 }, ], "pagination": { "current": 1, "pageSize": 10, "total": 3 }, "sorter": { "field": "measureDate", "order": "asc" } } } ``` --- ## 取得血壓記錄警示圖表 **POST /bloodPressureRecord/tagCount** ### 用於: * 取得血壓記錄警示圖表 ### Request body Example: ```javascript { "startDate": "1550448000000", "endDate": "1550834400000", "householdMemberId": "7890bcfd11724a36a7077dc9ade21611", "measureType": "HEARTBEAT" // HEARTBEAT, DIASTOLIC_PRESSURE, SYSTOLIC_PRESSURE } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": [ { "type": "DANGER", "value": 3 }, { "type": "WARNING", "value": 0 }, { "type": "NORMAL", "value": 13 } ] } } ``` --- ## 更新血壓紀錄 **POST /bloodPressureRecord/edit** ### 用於: * 更新血壓紀錄 ### Request body Example: ```javascript { "userBloodPressureRecordId": "88a2549c-f5fc-430b-ae70-3367651073e3", "systolicPressure": "120", "diastolicPressure": "80", "heartbeat": "70" } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userBloodPressureRecordId": "88a2549c-f5fc-430b-ae70-3367651073e3" } } } ``` --- ## 刪除血壓紀錄 **POST /bloodPressureRecord/delete** ### 用於: * 刪除血壓紀錄 ### Request body Example: ```javascript { "userBloodPressureRecordId": "86ff2f07-2be8-4c9e-8517-14aed6a7a065" } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userBloodPressureRecordId": "86ff2f07-2be8-4c9e-8517-14aed6a7a065" } } } ``` --- ## 更新量測血壓時段提醒 **POST /bloodPressure/duration/edit** ### Request Example ```javascript { "durations": ["1800", "1900", "2030"] // 1800 表示 18:00, 2030 表示 20:30, 以此類推 } ``` *若傳入空Array則代表關閉 ### Response Body: * Response Example ```javascript { "httpCode": 200, "result": { "data": 3 } } ``` --- ## 取得所有量測血壓時段 **GET /bloodPressure/duration/list** ### Response Body: * Response Example ```javascript { "httpCode": 200, "result": { "data": [ { "userBloodPressureDurationId": "4f5ab0a8-0d68-48a9-b2ef-57cae08d9f6d", "householdMemberId": "c4f527836fc74d3ab608e230401de989", "duration": "1800" }, { "userBloodPressureDurationId": "174a0062-c5b5-4740-97a2-c6d8785ffb83", "householdMemberId": "c4f527836fc74d3ab608e230401de989", "duration": "1900" }, { "userBloodPressureDurationId": "d8e8885c-2e1d-4c5d-bcf9-fd3b7a0f227b", "householdMemberId": "c4f527836fc74d3ab608e230401de989", "duration": "2030" } ] } } ``` *若得到空data則代表關閉 --- ## 取得血氧記錄列表 **POST /spo2Record/list** ### 用於: * 取得血氧記錄列表 ### Request body Example: ```javascript { "query": { "startDate": "1550448000000", "endDate": "1550799654741", "householdMemberId": "7890bcfd11724a36a7077dc9ade21611" }, "pagination": { "current": "1", "pageSize": "10" }, "sorter": { "field": "measureDate", "order": "asc" } } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": [ { "userSpo2RecordId": "b99fbd74-3eb8-4c82-aca4-2f9fcc903324", "householdMemberId": "7890bcfd11724a36a7077dc9ade21611", "spo2": 40, "measureDate": 1550628000000, "resource": "DEVICE" }, ], "pagination": { "current": 1, "pageSize": 10, "total": 1 }, "sorter": { "field": "measureDate", "order": "asc" } } } ``` --- ## 更新血氧紀錄 **POST /spo2Record/edit** ### 用於: * 更新血氧紀錄 ### Request body Example: ```javascript { "userSpo2RecordId": "b99fbd74-3eb8-4c82-aca4-2f9fcc903324", "spo2": 90 } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userSpo2RecordId": "b99fbd74-3eb8-4c82-aca4-2f9fcc903324" } } } ``` --- ## 刪除血氧紀錄 **POST /spo2Record/delete** ### 用於: * 刪除血氧紀錄 ### Request body Example: ```javascript { "userSpo2RecordId": "b99fbd74-3eb8-4c82-aca4-2f9fcc903324" } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userSpo2RecordId": "b99fbd74-3eb8-4c82-aca4-2f9fcc903324" } } } ``` --- ## 取得體溫記錄列表 **POST /temperatureRecord/list** ### 用於: * 取得體溫記錄列表 ### Request body Example: ```javascript { "query": { "startDate": "1550448000000", "endDate": "1550799654741", "householdMemberId": "7890bcfd11724a36a7077dc9ade21611" }, "pagination": { "current": "1", "pageSize": "10" }, "sorter": { "field": "measureDate", "order": "asc" } } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": [ { "userTemperatureRecordId": "fe6c1994-7c4a-470f-9da3-b15648db8bb2", "householdMemberId": "7890bcfd11724a36a7077dc9ade21611", "temperature": 37.7, "measureDate": 1550628000000, "resource": "MANUAL", "dataType": "PHYSIOL" //PHYSIOL:生理量測, VISITOR: 醫護量測 } ], "pagination": { "current": 1, "pageSize": 10, "total": 3 }, "sorter": { "field": "measureDate", "order": "asc" } } } ``` --- ## 更新體溫紀錄 **POST /temperatureRecord/edit** ### 用於: * 更新體溫紀錄 ### Request body Example: ```javascript { "userTemperatureRecordId": "b8b87d58-38f6-4c88-b74c-d46a166330a4", "temperature": 50 } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userTemperatureRecordId": "b8b87d58-38f6-4c88-b74c-d46a166330a4" } } } ``` --- ## 刪除體溫紀錄 **POST /temperatureRecord/delete** ### 用於: * 刪除體溫紀錄 ### Request body Example: ```javascript { "userTemperatureRecordId": "b8b87d58-38f6-4c88-b74c-d46a166330a4" } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userTemperatureRecordId": "b8b87d58-38f6-4c88-b74c-d46a166330a4" } } } ``` --- ## 取得體重/體脂/肌肉量/腰圍/臀圍記錄列表,警示列表 **POST /bodyHighWeight/list** ### 用於: * 取得體重/體脂/肌肉量/腰圍/臀圍記錄列表 * Query 帶上 warningTag, measureType 即可取得 警示列表 ### Request body: | Parameter | Required | Format | Desc | | --------- | -------- | -------- |-------- | | startDate | Y | String | 開始時間 UTC+0 milliseconds | | endDate | Y | String | 結束時間 UTC+0 milliseconds | | householdMemberId| N (一般民眾身分)<br>Y (非一般民眾身分)| String | 家戶成員編號。一般民眾身分不需帶此值,系統會自動取得個人的家戶成員編號 | | measureType | N | String | 量測類型,可帶:<br>**BODY_WEIGHT**(體重),<br>**FAT**(體脂),<br>**MUSCLE**(肌肉量),<br>**WAIST**(腰圍),<br>**HIPS**(臀圍)。<br>ps.有帶值時,回傳該類型有值的資料. | | warningTag | N | String | 警示標籤,可帶:<br>**WARNING**(警告)<br>**DANGER**(危險)<br>**NORMAL**(正常)。 | ### Request body Example: ```javascript // 取得記錄列表 { "query": { "startDate": "1550448000000", "endDate": "1550799654741", "householdMemberId": "7890bcfd11724a36a7077dc9ade21611", "measureType": "MUSCLE" }, "pagination": { "current": "1", "pageSize": "10" }, "sorter": { "field": "measureDate", "order": "asc" } } // 取得警示列表 { "query": { "startDate": "1650297600000", "endDate": "1650902399000", "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5", "warningTag":"NORMAL", "measureType": "FAT" }, "pagination": { "current": "1", "pageSize": "10" }, "sorter": { "field": "measureDate", "order": "asc" } } ``` ### Response Body Example: ```javascript // 取得記錄列表 { "httpCode": 200, "result": { "data": [ { "userBodyHighWeightRecordId": "43409de9-5f2e-4e50-a13c-2926a08b253d", "householdMemberId": "43704172da6e48c3a849079392caadd8", "measureDate": 1551259226000, "resource": "DEVICE", "lat": 25.0604067, "lng": 121.6481024, "muscle": 51.81, "muscleTag": "NORMAL" } ], "pagination": { "current": 1, "pageSize": 10, "total": 1 }, "sorter": { "field": "measureDate", "order": "asc" } } } ``` ## 取得體重/體脂/肌肉量/腰圍/臀圍記錄警示數量 **POST /bodyHighWeight/tagCount** ### 用於: * 取得體脂記錄警示數量 ### Request body: | Parameter | Required | Format | Desc | | --------- | -------- | -------- |-------- | | startDate | Y | String | 開始時間 UTC+0 milliseconds | | endDate | Y | String | 結束時間 UTC+0 milliseconds | | householdMemberId| N (一般民眾身分)<br>Y (非一般民眾身分)| String | 家戶成員編號| | measureType | Y | String | 量測類型,可帶: <br>**BODY_WEIGHT**(體重),<br>**FAT**(體脂),<br>**MUSCLE**(肌肉量),<br>**WAIST**(腰圍),<br>**HIPS**(臀圍)。 | ### Request body Example: ```javascript { "startDate": "1650729600000", "endDate": "1651334399000", "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5", "measureType": "FAT" } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": [ { "type": "DANGER", "value": 3 }, { "type": "WARNING", "value": 0 }, { "type": "NORMAL", "value": 1 } ] } } ``` --- ## 更新身高體重記錄 **POST /bodyHighWeight/edit** ### 用於: * 更新身高體重紀錄 ### Request body Example: ```javascript { "userBodyHighWeightRecordId": "b643e43c-fa85-4b46-86e7-4d18d2d0731a", "bodyHigh": 187.8, "bodyWeight": 66.6 } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userBodyHighWeightRecordId": "b643e43c-fa85-4b46-86e7-4d18d2d0731a" } } } ``` --- ## 刪除身高體重記錄 **POST /bodyHighWeight/delete** ### 用於: * 刪除身高體重紀錄 ### Request body Example: ```javascript { "userBodyHighWeightRecordId": "b643e43c-fa85-4b46-86e7-4d18d2d0731a" } ``` ### Response Body Example: ```javascript { "httpCode": 200, "result": { "data": { "userBodyHighWeightRecordId": "b643e43c-fa85-4b46-86e7-4d18d2d0731a" } } } ``` ---