# VPN Case Care History APIs ## 個案照護歷程/關懷APIs [TOC] ## API Require Headers: ```javascript { Content-Type: 'application/json', Accept: 'application/json', Authorization: accessToken, } ``` ## [WEB] 取得照護歷程總覽 **POST /vpnCaseHistory/list** ### Request Body: * query | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | cpiId | Y | String | case_pat_info id | | startDate | N | Date | 檢查日期起始日 | | endDate | N | Date | 檢查日期迄日 | | diseaseType | N | String | 收案疾病, 空值或null表示查全部, 目前僅支援 DM, ECKD, BC | | stageStatus | N | String | 疾病階段/類型, 空值或null表示查全部 <br> diseaseType為ECKD時, STAGE0, STAGE1, STAGE2, STAGE3A, STAGE3B, STAGE4, STAGE5 <br> diseaseType為BC時, B:B型肝炎, C:C型肝炎, BC:B+C型肝炎, OTHER:其他類型 | | keyword | N | String | 查詢照護人員名字關鍵字 | * sorter (sorter can be null, default sorter field: createTime desc) | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | field| N| String | 排序欄位,預設為 checkDate,可排序欄位: checkDate, diseaseType, stageStatus, careStatus, careStaffName | | order| N| String | desc/asc,預設為 desc| * pagination (pagination can be null. If null, it will return all data) | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | | current| N| String | 目前頁數| | pageSize| N| String |一頁幾筆 | ### Request Body Example: ```javascript { "query": { "cpiId":"30dabdf5-d569-4336-bd59-e9ee77033b3e", "startDate": 1624147200000, "endDate": 1624579200000, "diseaseType": "", "stageStatus": "", "keyword": "" }, "pagination": { "current": "1", "pageSize": "10" }, "sorter": { "field": "checkDate", "order": "desc" } } ``` ### Response Body: | Parameter | format | desc | |----------- |----------|--------| | id | String | 照護歷程id | | vpnCsiId | String | 收案id | | checkDate | Date | 檢查日期 | | yearMark | String | 作業年度 | | vpnCaseCheckId | String | 檢核資料ID, 為空表示沒有檢驗資料 | | diseaseType| String | 疾病類別, DM, ECKD, BC | | stageStatus | String | 疾病階段/類型 <br> **DM:** N/A <br> **ECKD:** STAGE0, STAGE1, STAGE2, STAGE3A, STAGE3B, STAGE4, STAGE5 <br> **BC:** B:B型肝炎, C:C型肝炎, BC:B+C型肝炎, OTHER:其他類型 | | careStatus | String | 照護階段 <br> **DM:** FIRST:新收案, REVIEW:追蹤, YEARREVIEW:年度評估階段, SECOND_REVIEW:二階追蹤, SECOND_YEARREVIEW:二階年度評估階段 <br> **ECKD:** FIRST:新收案, REVIEW:追蹤 <br> **BC:** FIRST:新收案, REVIEW:追蹤, TRANSFER_OUT:轉出 | | careStaffId | String | 照護人員id | | careStaffName | String | 照護人員姓名 | | careStaffRoleName | String | 照護人員職稱/角色 | | careStaffDivisionName | String | 照護人員科別 | ### Response Body Example: ```javascript // 400 不存在此 收案id vpnCsiId { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 200 { "httpCode": 200, "result": { "data": [ { "id": "3f6fe1ff-3845-4ed0-9a88-0ab804013f1f", "vpnCsiId": "36267a43-ff57-4a42-a562-350dc60e1033", "checkDate": 1624550400000, "yearMark": "2", "stageStatus": "", "vpnCaseCheckId": "", "diseaseType": "DM", "createTime": 1626173447187, "careStatus": "FIRST", "careStaffId": "04398e47-e702-4290-a1c1-c4931404840e", "careStaffName": "陳醫生", "careStaffRoleName": "外科醫生", "careStaffDivisionName": "外科" },... ], "pagination": { "current": 1, "pageSize": 10, "total": 1 }, "sorter": { "field": "checkDate", "order": "desc" }, "total": 1 } } // no data { "httpCode": 200, "result": { "data": [] } } ``` ## [WEB] 新增照護歷程 **POST /vpnCaseHistory/add** ### Request Body: | Parameter | Required | format | desc | |-----------|----------|--------|------| | vpnCsiId | Y | String | 收案ID | | checkDate | Y | Date | 檢查日期 | | yearMark | N | String | 作業年度 | | diseaseType | N | String | 收案疾病, 目前僅支援 DM, ECKD, BC | | stageStatus | N | String | 疾病階段/類型, <br> **DM:** null <br> **ECKD:** STAGE0, STAGE1, STAGE2, STAGE3A, STAGE3B, STAGE4, STAGE5 <br> **BC:** B:B型肝炎, C:C型肝炎, BC:B+C型肝炎, OTHER:其他類型 | | careStatus | N | String | 照護階段 <br> **DM:** FIRST:新收案, REVIEW:追蹤, YEARREVIEW:年度評估階段, SECOND_REVIEW:二階追蹤, SECOND_YEARREVIEW:二階年度評估階段 <br> **ECKD:** FIRST:新收案, REVIEW:追蹤 <br> **BC:** FIRST:新收案, REVIEW:追蹤, TRANSFER_OUT:轉出 | ### Request Body Example: ```javascript { "vpnCsiId": "36267a43-ff57-4a42-a562-350dc60e1033", "checkDate": 1625097600000, "yearMark": "1", "diseaseType": "DM", "stageStatus": null, "careStatus": "FIRST" } ``` ### Response Body: | Parameter | format | desc | |----------- |----------|--------| | id | String | 照護歷程id | | vpnCsiId | String | 收案id | | checkDate | Date | 檢查日期 | | yearMark | String | 作業年度 | | vpnCaseCheckId | String | 檢核資料ID, 為空表示沒有檢驗資料 | | diseaseType| String | 疾病類別, DM, ECKD, BC | | stageStatus | String | 疾病階段/類型 <br> **DM:** N/A <br> **ECKD:** STAGE0, STAGE1, STAGE2, STAGE3A, STAGE3B, STAGE4, STAGE5 <br> **BC:** B:B型肝炎, C:C型肝炎, BC:B+C型肝炎, OTHER:其他類型 | | careStatus | String | 照護階段 <br> **DM:** FIRST:新收案, REVIEW:追蹤, YEARREVIEW:年度評估階段, SECOND_REVIEW:二階追蹤, SECOND_YEARREVIEW:二階年度評估階段 <br> **ECKD:** FIRST:新收案, REVIEW:追蹤 <br> **BC:** FIRST:新收案, REVIEW:追蹤, TRANSFER_OUT:轉出 | | careStaffId | String | 照護人員id | | careStaffName | String | 照護人員姓名 | | careStaffRoleName | String | 照護人員職稱/角色 | | careStaffDivisionName | String | 照護人員科別 | ### Response Body Example: ```javascript // 400 不存在此 收案id vpnCsiId { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 422 個案照護歷程收案疾病不允許 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_DISEASE_NOT_ALLOWED", "httpCode": 422 } // 422 個案照護歷程疾病階段/類型不允許 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_STAGE_STATUS_NOT_ALLOWED", "httpCode": 422 } // 422 個案照護歷程照護階段不允許 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_CARE_STATUS_NOT_ALLOWED", "httpCode": 422 } // 200 { "httpCode": 200, "result": { "data": { "id": "da76f6ca-bd92-4ea6-9404-49e4f4f7d8ed", "vpnCsiId": "36267a43-ff57-4a42-a562-350dc60e1033", "checkDate": 1625068800000, "yearMark": "1", "stageStatus": "", "vpnCaseCheckId": "", "diseaseType": "DM", "createTime": 1626205611976, "careStatus": "FIRST", "careStaffId": "04398e47-e702-4290-a1c1-c4931404840e", "careStaffName": "陳醫生", "careStaffRoleName": "外科醫生", "careStaffDivisionName": "外科" } } } ``` ## [WEB] 編輯照護歷程 **POST /vpnCaseHistory/update** ### Request Body: | Parameter | Required | format | desc | |-----------|----------|--------|------| | id | Y | String | 照護歷程ID | | checkDate | Y | Date | 檢查日期 | | yearMark | N | String | 作業年度 | | diseaseType | N | String | 收案疾病, 目前僅支援 DM, ECKD, BC | | stageStatus | N | String | 疾病階段/類型, <br> **DM:** null <br> **ECKD:** STAGE0, STAGE1, STAGE2, STAGE3A, STAGE3B, STAGE4, STAGE5 <br> **BC:** B:B型肝炎, C:C型肝炎, BC:B+C型肝炎, OTHER:其他類型 | | careStatus | N | String | 照護階段 <br> **DM:** FIRST:新收案, REVIEW:追蹤, YEARREVIEW:年度評估階段, SECOND_REVIEW:二階追蹤, SECOND_YEARREVIEW:二階年度評估階段 <br> **ECKD:** FIRST:新收案, REVIEW:追蹤 <br> **BC:** FIRST:新收案, REVIEW:追蹤, TRANSFER_OUT:轉出 | ### Request Body Example: ```javascript { "id":"3f6fe1ff-3845-4ed0-9a88-0ab804013f1f", "checkDate": 1624579200000, "yearMark": "2", "diseaseType": "DM", "stageStatus": null, "careStatus": "FIRST" } ``` ### Response Body: | Parameter | format | desc | |----------- |----------|--------| | id | String | 照護歷程id | | vpnCsiId | String | 收案id | | checkDate | Date | 檢查日期 | | yearMark | String | 作業年度 | | vpnCaseCheckId | String | 檢核資料ID, 為空表示沒有檢驗資料 | | diseaseType| String | 疾病類別, DM, ECKD, BC | | stageStatus | String | 疾病階段/類型 <br> **DM:** N/A <br> **ECKD:** STAGE0, STAGE1, STAGE2, STAGE3A, STAGE3B, STAGE4, STAGE5 <br> **BC:** B:B型肝炎, C:C型肝炎, BC:B+C型肝炎, OTHER:其他類型 | | careStatus | String | 照護階段 <br> **DM:** FIRST:新收案, REVIEW:追蹤, YEARREVIEW:年度評估階段, SECOND_REVIEW:二階追蹤, SECOND_YEARREVIEW:二階年度評估階段 <br> **ECKD:** FIRST:新收案, REVIEW:追蹤 <br> **BC:** FIRST:新收案, REVIEW:追蹤, TRANSFER_OUT:轉出 | | careStaffId | String | 照護人員id | | careStaffName | String | 照護人員姓名 | | careStaffRoleName | String | 照護人員職稱/角色 | | careStaffDivisionName | String | 照護人員科別 | ### Response Body Example: ```javascript // 400 不存在此 收案id vpnCsiId { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 422 個案照護歷程不存在 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_NOT_EXIST", "httpCode": 422 } // 422 個案照護歷程已存在 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_EXIST", "httpCode": 422 } // 422 個案照護歷程收案疾病不允許 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_DISEASE_NOT_ALLOWED", "httpCode": 422 } // 422 個案照護歷程疾病階段/類型不允許 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_STAGE_STATUS_NOT_ALLOWED", "httpCode": 422 } // 422 個案照護歷程照護階段不允許 { "errorMsg": "SERVICE_ERROR.VPN_CASE_CARE_HISTORY_CARE_STATUS_NOT_ALLOWED", "httpCode": 422 } // 200 { "httpCode": 200, "result": { "data": { "id": "da76f6ca-bd92-4ea6-9404-49e4f4f7d8ed", "vpnCsiId": "36267a43-ff57-4a42-a562-350dc60e1033", "checkDate": 1625068800000, "yearMark": "1", "stageStatus": "", "vpnCaseCheckId": "", "diseaseType": "DM", "createTime": 1626205611976, "careStatus": "FIRST", "careStaffId": "04398e47-e702-4290-a1c1-c4931404840e", "careStaffName": "陳醫生", "careStaffRoleName": "外科醫生", "careStaffDivisionName": "外科" } } } ``` ## [WEB] 刪除照護歷程 **GET /vpnCaseHistory/delete** ### Request Body: | Parameter | Required | format | desc | |-----------|----------|--------|------| | id | Y | String | 照護歷程Id | ### Request Body Example: ```javascript GET /vpnCaseHistory/delete?id=5abaac9a-43c0-4e66-9dda-16c0a62c547 ``` ### Response Body: * httpCode 200 - data | Parameter | format | desc | |-----------|--------|------| | id | String | 回傳刪除成功的照護歷程id | | count | int | 回傳刪除筆數 | ```javascript // 400 不存在此 id { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 200 { "httpCode": 200, "result": { "data": { "id": "5abaac9a-43c0-4e66-9dda-16c0a62c547c", "count": 1 } } } ``` ## [WEB] 取得檢驗資料 **POST /vpnCaseHistory/data** ### Request Body: | Parameter | Required | format | desc | |-----------|----------|--------|------| | id | Y | String | 照護歷程Id | | diseaseType | Y | String | 收案疾病, 目前僅支援 DM, ECKD, BC | ### Request Body Example: ```javascript { "id" : "0b4ce4d5-a62e-410f-a0e8-17865332bedb", "diseaseType" : "DM" } ``` ### Response Body: * httpCode 200 - data | Parameter | format | desc | |-----------|--------|------| | id | String | 照護歷程ID | | diseaseType| String | 疾病類別, DM, ECKD, BC | | check | Object | 檢核資料 (每個疾病的資料格式不同) <BR>[請參閱](#各疾病物件)| ### Request Body Example: ```javascript // 400 不存在此 id { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 200 { "httpCode": 200, "result": { "data": { "id": "3f6fe1ff-3845-4ed0-9a88-0ab804013f1f", "diseaseType": "DM", "check": { "baseTall": "168", "baseWeight": "80", "baseSbp": "80", "baseEbp": "125", "bloodChkDate": 1624550400000, "bloodHba1c": "100", "bloodLdl": "101", "bloodAc": "102", "bloodPc": "103", "bloodTg": "104", "urineChkDate": 1624550400000, "urineMicro": "105", "urineRoutine": "NORMAL", "bloodCreat": "106", "egfr": "107", "smoking": "N" } } } } // no data { "httpCode": 200, "result": { "data": {} } } ``` ## [WEB] 新增檢驗資料 **POST /vpnCaseHistory/data/add** ### Request Body: | Parameter | Required | format | desc | |-----------|----------|--------|------| | id | Y | String | 照護歷程Id | | diseaseType | Y | String | 收案疾病, 目前僅支援 DM, ECKD, BC | | check | N | Object | 檢驗資料詳細內容(每個疾病的資料格式不同) <BR> [請參閱](#各疾病物件)| ### Request Body Example: ```javascript { "id": "0b4ce4d5-a62e-410f-a0e8-17865332bedb", "diseaseType": "DM", "check": { //每種疾病類資料內容不同 } } ``` ### Response Body: * httpCode 200 - data | Parameter | format | desc | |-----------|--------|------| | id | String | 回傳新增成功的照護歷程ID | ### Request Body Example: ```javascript // 400 不存在此 id { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 200 { "httpCode": 200, "result": { "data": { "id": "43704172da6e48c3a849079392caadd8" } } } } ``` ## [WEB] 編輯檢驗資料 **POST /vpnCaseHistory/data/update** ### Request Body: | Parameter | Required | format | desc | |-----------|----------|--------|------| | id | Y | String | 照護歷程Id | | diseaseType | Y | String | 收案疾病, 目前僅支援 DM, ECKD, BC | | check | N | Object | 檢驗資料詳細內容(每個疾病的資料格式不同) <BR> [請參閱](#各疾病物件)| ### Request Body Example: ```javascript { "id": "0b4ce4d5-a62e-410f-a0e8-17865332bedb", "diseaseType": "DM", "check": { //每種疾病類資料內容不同 } } //無檢驗資料 { "id": "0b4ce4d5-a62e-410f-a0e8-17865332bedb", "diseaseType": "DM" } ``` ### Response Body: * httpCode 200 - data | Parameter | format | desc | |-----------|--------|------| | id | String | 回傳編輯成功的照護歷程ID | ### Request Body Example: ```javascript // 400 不存在此 id { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 200 { "httpCode": 200, "result": { "data": { "id": "0b4ce4d5-a62e-410f-a0e8-17865332bedb" } } } } ``` ## [WEB] 刪除檢驗資料 **POST /vpnCaseHistory/data/delete** ### Request Body: | Parameter | Required | format | desc | |-----------|----------|--------|------| | id | Y | String | 照護歷程Id | | diseaseType | Y | String | 收案疾病, 目前僅支援 DM, ECKD, BC | | vpnCaseCheckId| N | String| 檢驗資料Id| ### Request Body Example: ```javascript { "id": "0b4ce4d5-a62e-410f-a0e8-17865332bedb", "diseaseType": "DM", "vpnCaseCheckId" : "143a5fa7-d8b0-48b9-add2-697db9d40a45" } ``` ### Response Body: * httpCode 200 - data | Parameter | format | desc | |-----------|--------|------| | count| String | 回傳刪除成功的筆數 | ### Request Body Example: ```javascript // 400 不存在此 id { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // 200 { "httpCode": 200, "result": { "data": { "count": 1 } } } } ``` ## 量測值異常 POST /caseCareRecord/measureAbnormal/list Measure Abnormal List Data ```url POST /caseCareRecord/measureAbnormal/list ``` 取得指定日期區間的量測值異常列表 - 將回傳accessToken(JWT)帶入呼叫API的header中 - 依照accessToken(JWT)的areaCode帶入requestVO中 API require headers: ```javascript { Content-Type: 'application/json', Accept: 'application/json', Authorization: accessToken, } ``` ### Request Body: * query | Parameter | format | required | desc | | ------------ | -------- | -------- | -------------| | startDate | Date | true | 查詢起始日期 | | endDate | Date | true | 查詢結束日期 | | physiolItems | String[] | true | 異常值項目 | | status | String | false | 處理狀態 Y:已處理, N: 待處理, P: 處理中 | | patName | String | false | 個案姓名 | ### Request Body Example: ```javascript { "query":{ "startDate":"2020-11-01", "endDate":"2020-11-30", "physiolItems": ["bloodPressure", "bloodSugar", "heartBeat"], "status": "N", "patName":"杜小月" }, "pagination":{ "current": "1", "pageSize": "10" }, "sorter":{ "field": "recordTime", "order": "desc" } } ``` ### Response Body: | Parameter | format | desc | | ------------ | -------- |-------------| | id | int | 個案關懷Id | | measureDate | Timestamp | 測量時間 UTC+0 milliseconds | | houseHoldMemberId | String | houseHoldMemberId | | cpiId | String | cpiId | | detail | Json | 所有生理資料,第一層key代表異常項目 | | normal | Json | 正常的生理資料項目 | | status | String | 處理狀態 Y:已處理, N: 待處理, P: 處理中 | | remark | String | 處理備註 | | updateUserName | String | 處理人員 | | updateTime | Timestamp | 測量時間 UTC+0 milliseconds | ```javascript { "httpCode": 200, "result": { "data": [ { "id": 1, "recordTime": '2020-11-15', "houseHoldMemberId": '12b2f6bf-e121-4b49-9eba-166407affbb6', "cpiId": '207fa97b-5eb5-4b22-96cb-7192e8761689', "detail": { "bloodPressure": { "measureDate": 1605543000000, "resource": "MANUAL", "systolic": 100, "diastolic": 88 }, "bloodSugar": { "measureDate": 1605543000000, "resource": "MANUAL", "value": 309, "periodType": "BEFORE_LUNCH" }, "normal": { "heartBeat": { "measureDate": 1605543000000, "resource": "MANUAL", "value": 120 } } }, "status": 'N', "remark": '', "updateUserName": '衛生所管理員', "updateTime": 1605003618545, "measureDate": 1605543000000 } ], "pagination":{ "current":1, "pageSize":10, "total":1 }, "sorter":{ } } } ``` ## [WEB]近一小時量測值異常 POST /caseCareRecord/measureAbnormal/nearlyHour/list Measure Abnormal Nearly Hour List ```url POST /caseCareRecord/measureAbnormal/nearlyHour/list ``` - 用於個案總覽Dashboard - 取得近一小時內量測值異常的人員列表 - 單人有多筆異常資料,只取最後一筆 - 依照量測時間,由新至舊依序排列 - 依照Token的areaCode帶入requestVO中 ***Request Headers*** ```url Authorization: accessToken ``` ***Request Body*** - None ***Response*** | Parameter | Data Type | Comment | | ------------ | -------- |-------------| | id | int | 個案關懷Id | | houseHoldMemberId | String | houseHoldMemberId | | patName | String | 個案姓名 | | patTel | String | 電話 | detail | Json | 所有生理資料,第一層key代表異常項目 | | status | String | 處理狀態 Y:已處理, N: 待處理, P: 處理中 | | remark | String | 處理備註 | | updateUserName | String | 處理人員 | | kind | String | 紀錄類別 (B: 量測異常)| | measureDate | Timestamp | 測量時間 milliseconds | | gender | Integer | 性別 (性別: 1男, 2女)| | birthDate | TimeStamp | 生日 milliseconds| | show | string | 是否顯示於dashboard Y:顯示, N:隱藏 | ***Response Example*** ```javascript { "httpCode": 200, "result": { "data": [ { "id": 14, "houseHoldMemberId": "a3a9e792-ad4d-4139-a54e-82fd1ec6fb18", "patName": "更新個人5", "patTel": "09123456789", "detail": "{\"bloodPressure\":{\"systolic\":250,\"diastolic\":71,\"measureDate\":1613730000000,\"resource\":\"MANUAL\"},\"normal\":{\"heartBeat\":{}}}", "status": "N", "remark": "", "updateUserName": "", "kind": "B", "updateTime": null, "measureDate": 1648459128000, "gender": 1, "birthDate": 1613491200000, "show": "Y" }, { "id": 20, "houseHoldMemberId": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a", "patName": "test1", "patTel": "", "detail": "{\"bloodSugar\":{\"periodType\":\"BEFORE_BREAKFAST\",\"measureDate\":1612184400000,\"resource\":\"MANUAL\",\"value\":57}}", "status": "N", "remark": "", "updateUserName": "", "kind": "B", "updateTime": null, "measureDate": 1648458048000, "gender": 1, "birthDate": 1611763200000, "show": "N" } ] } } ``` ## Dashboard量測異常 - 撥出 POST /caseCareRecord/callOut ```url POST /caseCareRecord/callOut ``` ***Request*** 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- id | Integer | Y | | 個案關懷id ```javascript { "id": 886 } ``` ***Response*** | 欄位 | 型態 | 說明 | --- | --- | --- | id | Integer | 關懷記錄id | recordTime | timestamp | 關懷紀錄時間 | kind | String | 紀錄類別 (B: 量測異常)| | status | String | 處理狀態, Y:已處理, N:未處理, P:處理中 | meetingId | Long | 會議室id | show | String | 是否顯示在dashboard, Y:顯示, N:不顯示 ```javascript // HttpStatus:422, 已在處理中 { "errorMsg": "SERVICE_ERROR.CASE_CARE_RECORD_IS_PROCESSING", "httpCode": 422 } // HttpStatus: 200 { "httpCode": 200, "result": { "data": { "id": 14, "recordTime": 1648569600000, "householdMemberId": "a3a9e792-ad4d-4139-a54e-82fd1ec6fb18", "cpiId": "dcf35965-b21f-4394-9cfa-b8a5b2572735", "kind": "B", "detail": "{\"bloodPressure\":{\"systolic\":250,\"diastolic\":71,\"measureDate\":1613730000000,\"resource\":\"MANUAL\"},\"normal\":{\"heartBeat\":{}}}", "status": "P", "meetingId": 1648794240151, "show": "Y" } } } ``` ## Dashboard量測異常 - 從Dashboard移除 POST /caseCareRecord/moveOut ```url POST /caseCareRecord/moveOut ``` - 移除後,此個案的量測值異常卡片不會顯示於dashboard上 ***Request*** 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- id | Integer | Y | | 個案關懷id ```javascript { "id": 888 } ``` ***Response*** 欄位 | 型態 | 說明 --- | --- | --- count | int | 更新資料筆數, > 0表示更新成功 ```javascript // HttpStatus:400, 資料不存在 { "errorMsg": "API_ERROR.NOT_EXIST", "httpCode": 400 } // HttpStatus:200 { "httpCode": 200, "result": { "data": { "count": 1 } } } ``` ## 紀錄更新 POST /caseCareRecord/latest-measure-list 取得最新量測更新紀錄 ```url POST /caseCareRecord/latest-measure-list ``` 取得指定日期區間的最新量測更新紀錄 - 將回傳accessToken(JWT)帶入呼叫API的header中 - 依照accessToken(JWT)的areaCode帶入requestVO中 API require headers: ```javascript { Content-Type: 'application/json', Accept: 'application/json', Authorization: accessToken, } ``` ### Request Body: * query | Parameter | format | required | desc | | ------------ | -------- | -------- | -------------| | startDate | Date | true | 查詢起始日期 | | endDate | Date | true | 查詢結束日期 | | physiolItems | String[] | true | 異常值項目列表, bloodPressure:血壓, heartBeat:心跳, bloodSugar:血糖, insulin:胰島素, spo2:血氧濃度, temperature:體溫, weight:體重, bmi:BMI, fat:體脂, waist:腰圍, hips:臀圍, water:喝水量, diet:飲食記錄 | | patName | String | false | 個案姓名 | ### Request Body Example: ```javascript { "query": { "startDate": "2023-05-01", "endDate": "2023-07-26", "physiolItems": [ "bloodPressure", "heartBeat", "bloodSugar", "insulin", "spo2", "temperature", "weight", "bmi", "fat", "waist", "hips", "water", "diet" ], "patName": null }, "pagination": { "current": 1, "pageSize": 10, "total": 0 }, "sorter": { "field": "latestMeasureDate", "order": "desc" } } ``` ### Response Body: Parameter | format | desc ------------ | -------- |------------- houseHoldMemberId | String | houseHoldMemberId cpiId | String | case_pat_info id patName | String | 個案姓名 patTel | String | 個案電話 gender | int | 個案性別, 1: 男, 2:女 age | int | 個案年齡 latestMeasureDate | Timestamp | 最新測量時間 UTC+0 milliseconds systolicPressure | int | 收縮壓 diastolicPressure | int | 舒張壓 heartbeat | int | 心跳 bloodSugar | int | 血糖 insulinDose | double | 胰島素 spo2 | int | 血氧濃度 temperature | double | 體溫 bodyWeight | double | 體重 bmi | double | BMI fat | double | 體脂 waist | double | 腰圍 hips | double | 臀圍 waterVolume | double | 喝水量 dietTimePeriodType | int | 飲食記錄餐別, 參閱 [用餐餐別](https://hackmd.io/9-h8HBMyRFGs3_2q6d1gtQ#%E7%94%A8%E9%A4%90%E9%A4%90%E5%88%A5) ```javascript { "httpCode": 200, "result": { "data": [ { "houseHoldMemberId": "150b53f5-7126-4900-9fb0-87a08b45e06b", "cpiId": "e8ebdf9a-23db-44e2-9935-623429d5449c", "patName": "呂學霖", "patTel": "0973621449", "gender": 1, "age": 27, "latestMeasureDate": 1689922612723, "systolicPressure": 100, "diastolicPressure": 90, "bloodPressureMeasureDate": 1689833422643, "heartbeat": 75, "heartbeatMeasureDate": 1689833422643, "spo2": 85, "spo2MeasureDate": 1689833540435, "bodyWeight": 70.9000015258789, "bodyWeightMeasureDate": 1689922612723, "bmi": 22.759191238475204, "bmiMeasureDate": 1689922612723, "fat": 20.0, "fatMeasureDate": 1689834161770, "waist": 100.0, "waistMeasureDate": 1689834161770, "hips": 85.0, "hipsMeasureDate": 1689834884047 }, { "houseHoldMemberId": "c0fbb6d5-53c4-4962-bc17-1591e4903b2f", "cpiId": "498c5ed0-c183-4186-95ca-d88d642b1bc6", "patName": "becca", "patTel": "0933816312", "gender": 2, "age": 30, "latestMeasureDate": 1689906083450, "systolicPressure": 70, "diastolicPressure": 80, "bloodPressureMeasureDate": 1689900404285, "heartbeat": 90, "heartbeatMeasureDate": 1689900404285, "bloodSugar": 88, "bloodSugarMeasureDate": 1689900422496, "temperature": 36.0, "temperatureMeasureDate": 1684801879787, "bodyWeight": 48.0, "bodyWeightMeasureDate": 1689906083450, "bmi": 19.0, "bmiMeasureDate": 1689906083450, "fat": 13.0, "fatMeasureDate": 1689906083450, "waterVolume": 240, "waterMeasureDate": 1684801892650, "dietTimePeriodType": 20, "dietMeasureDate": 1684812480000 } ], "pagination": { "current": 1, "pageSize": 10, "total": 4 }, "sorter": { "field": "latestMeasureDate", "order": "desc" }, "total": 4 } } ``` ==================-- MEMO --================== ## 各疾病物件: #### ECKD 檢驗資料 check object | Parameter | Required | format | desc| | --------- | -------- |-------- |-------| | baseTall | Y | String | 身高 | | baseWeight | Y | String | 體重 | | baseSbp | Y | String | 血壓-收縮壓 (mmHg) | | baseEbp | Y | String | 血壓-舒張壓 (mmHg) | | egfr | Y | String | 腎絲球濾過率值, eGFR | | bloodHba1c | Y | String | 糖化血色素 (%), HbA1c(mg/dl) | | bloodLdl | Y | String | 低密度脂蛋白 (mg/dl), LDL(mg/dl) | | upcr | Y | String | 尿蛋白及尿液肌酸酐比值, Urine PCR(mg/gm) | | bloodCreat | Y | String | 肌酸酐(mg/dl), Serum creatinine(mg/dl) | | smoking | Y | String | 抽煙, 1:無, 2:有 | | baseWaist | N | String | 腰圍 | | baseHips | N | String | 臀圍 | | bmi | N | String | BMI | | urineProtein | N | String | 尿液試紙(蛋白質) | | urineGlucose | N | String | 尿液試紙(尿糖) | | urineOb | N | String | 尿液試紙(潛血) | | urineMicro | N | String | 尿液微量白蛋(ACR), Urine ACR(mg/dl) | | uricAcid | N | String | 尿酸, Uric acid | | chol | N | String | 總膽固醇, CHOL | | bloodAc | N | String | 飯前血糖值 (mg/dl), Sugar AC(mg/dl) | | drugHypertensives | N | String | 降血壓藥, 可勾選項目: ACEI, ARB, CCB, DRI, OTHER <br> 將勾選的選項以','串接, 勾選OTHER時,將填入的值以':'串接在OTHER後 <br> ex: ACEI,ARB,OTHER:藥物abc | | drugInsulin | N | String | 胰島素, Y:是, N:否 | | drugHypoglycemic | N | String | 降血糖藥, Y:是, N:否 | | drugHypolipidemics | N | String | 降血脂藥, Y:是, N:否 | | drugHyperuricemia | N | String | 降血酸藥, Y:是, N:否 | | drugNsaid | N | String | NSAID, Y:是, N:否 | | drugChinese | N | String | 中草藥, Y:是, N:否 | | heRecord | N | String | 護理營業衛教紀錄, Y:是, N:否 | | heTarget | N | String | 衛教對象, 可勾選項目: SELF:本人, FAMILY:家屬, OTHER:其他 <br> 將勾選的選項以','串接, 勾選OTHER時,將填入的值以':'串接在OTHER後 <br> ex: SELF,FAMILY,OTHER:路人甲 | | heMethod | N | String | 衛教方式, 可勾選項目: ONE:個別衛教, TEL:電訪, GROUP:團體, OTHER:其他 <br> 將勾選的選項以','串接, 勾選OTHER時,將填入的值以':'串接在OTHER後 <br> ex: TEL,GROUP,OTHER:心電感應 | #### ECKD Object Example: ```javascript // ECKD檢驗資料 check: { "baseTall": "966", "baseWeight": "83", "baseSbp": "338", "baseEbp": "054", "egfr": "083", "bloodHba1c": "478", "bloodLdl": "453", "upcr": "736", "bloodCreat": "432", "smoking": "1", "baseWaist": "90", "baseHips": "90", "bmi": "30", "urineProtein": null, "urineGlucose": null, "urineOb": null, "urineMicro": "2", "uricAcid": "123", "chol": "123", "bloodAc": "123", "drugHypertensives": "ACEI,ARB,OTHER:藥物abc", "drugInsulin": "N", "drugHypoglycemic": "N", "drugHypolipidemics": "N", "drugHyperuricemia": "N", "drugNsaid": "N", "drugChinese": "N", "heRecord": "Y", "heTarget": "SELF,FAMILY,OTHER:路人甲", "heMethod": "TEL,GROUP,OTHER:心電感應" } ``` #### DM 檢驗資料 check object | Parameter | Required | format | desc | |-----------|----------|--------|------| FIRST、YEARREVIEW、SECOND_YEARREVIEW | baseTall| **Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段) | String | 身高 | | baseWeight| **Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段) | String | 體重| | baseSbp | **Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|收縮壓| | baseEbp| **Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|舒張壓| | bloodChkDate|**Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|血液檢驗日期| | bloodHba1c|**Y** (照護階段**FIRST, SECOND_REVIEW, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|糖化血色素| | bloodLdl|**Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|低密度脂蛋白 (mg/dl)| | bloodAc|**Y** (照護階段**FIRST, SECOND_REVIEW, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|飯前血糖值 (mg/dl)| | bloodPc|**Y** (照護階段**FIRST, SECOND_REVIEW, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|飯後血糖值 (mg/dl)| | bloodTg|**Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|三酸甘油酯 (mg/dl)| | urineChkDate|**Y** (照護階段**FIRST, SECOND_REVIEW, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|尿液檢查日期| | urineMicro | **Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段) | String |尿液微量白蛋白(ACR)| | urineRoutine| **Y** (照護階段**FIRST**)、<br>**N** (其他照護階段) | String | 尿液常規檢查: NORMAL(正常),ABNORMAL(異常)| | bloodCreat|**Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|肌酸酐| | egfr|**Y** (照護階段**FIRST, SECOND_YEARREVIEW**)、<br>**N** (其他照護階段)|String|腎絲球濾過率值| #### DM Object Example: ```javascript // DM 檢驗資料 check: { "baseTall":"285", "baseWeight":"19", "baseSbp":"182", "baseEbp":"244", "bloodAc":"059", "bloodPc":"943", "bloodChkDate":1552869286893, "bloodHba1c":"417", "bloodLdl":"682", "bloodTg":"823", "urineChkDate":1552869286893, "urineMicro":"0", "urineRoutine":"ABNORMAL", "bloodCreat":"50", "egfr":"60" } ``` #### B/C肝炎 檢驗資料 check object: | Parameter | Required | format | desc | | --------- | -------- | -------- |-------- | |hbsag |Y (**肝炎類型**為 **B**/**BC**)、<br>N (肝炎類型:**C**/**OTHER**)| int|HBsAg 1陽性/2陰性| |hbeag |Y (**肝炎類型**為 **B**/**BC**)、<br>N (肝炎類型:**C**/**OTHER**)|int |HBeAg 1陽性/2陰性| |antiHcv |Y(**肝炎類型**為 **C**/**BC**)、<br>N (肝炎類型:**B**/**OTHER**)|int| Anti-HCV 1陽性/2陰性| |got |Y (**肝炎類型**為 **B**/**C**/**BC**/**OTHER**)|int | GOT, 0~9999正整數| |gpt |Y (**肝炎類型**為 **B**/**C**/**BC**/**OTHER**)|int |GPT, 0~9999正整數| |abdominalUltrasound |Y (**肝炎類型**為 **B**/**C**/**BC**/**OTHER**)| int|腹部超音波檢查結果 (0:正常, 1:異常)| #### B/C 肝炎 Object Example: ```javascript // BC肝炎 檢驗資料 check: { "hbsag": 1, "hbeag": 2, "antiHcv": 1, "got": 500, "gpt": 450, "abdominalUltrasound": 0 } ```