# 用藥提醒、紀錄
[TOC]
## 常數定義
### 用藥週期
欄位 | 型態 | 說明
---|---|---
weekDays | string array | 用藥週期 ("MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY")
## API清單
### 新增用藥時段提醒
```url
POST /medication/remind/add
```
* 如果沒有傳householdMemberId,會從token裡去抓取
#### Request-新增用藥時段提醒
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
medicationName | string | Y | 100 | | 藥包名稱
isEnable | bool | Y | | | 是否啟用
durations | int array | Y | | | 用藥時、分(800 表示 08:00, 2030 表示 20:30, 以此類推)
weekDays | string array | Y | 7 | | 用藥週期, 請參閱 [用藥週期](#用藥週期)
remindStartDate | date | Y | | | 用藥提醒起始日期
remindEndDate | date | Y | | | 用藥提醒結束日期
```javascript
{
"medicationName": "藥包B-糖尿病",
"isEnable": false,
"durations": [
800, 1300, 1800
],
"weekDays": [
"MONDAY","WEDNESDAY","FRIDAY"
],
"remindStartDate": "2023-01-01",
"remindEndDate": "2023-12-31"
}
```
#### Response-新增用藥時段提醒
欄位 | 型態 | 說明
--- | --- | ---
id | string | 用藥時段提醒id
medicationName | string | 藥包名稱
counts | int | 每日用藥次數
isEnable | bool | 是否啟用
remindStartDate | date | 用藥提醒起始日期
remindEndDate | date | 用藥提醒結束日期
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "6499d554-45e7-45e2-93b6-32d5ca65b9d5",
"medicationName": "藥包B-糖尿病",
"counts": 3
"isEnable": false,
"createTime": 1611196161158,
"updateTime": null,
"remindStartDate": 1672502400000,
"remindEndDate": 1703952000000
}
}
}
```
----
### 修改用藥時段提醒
```url
POST /medication/remind/update
```
* 如果沒有傳householdMemberId,會從token裡去抓取
#### Request-修改用藥時段提醒
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
id | string | Y | 36 | | 用藥時段提醒id
medicationName | string | Y | 100 | | 藥包名稱
isEnable | bool | Y | | | 是否啟用
durations | string array | Y | | | 用藥時、分(800 表示 08:00, 2030 表示 20:30, 以此類推)
weekDays | string array | Y | 7 | | 用藥週期, 請參閱 [用藥週期](#用藥週期)
remindStartDate | date | Y | | | 用藥提醒起始日期
remindEndDate | date | Y | | | 用藥提醒結束日期
```javascript
{
"id": "6499d554-45e7-45e2-93b6-32d5ca65b9d5",
"medicationName": "藥包C-糖尿病",
"isEnable": true,
"durations": [
0, 900, 1800, 2330
],
"weekDays": [
"MONDAY","WEDNESDAY","SUNDAY"
],
"remindStartDate": "2023-01-01",
"remindEndDate": "2023-12-31"
}
```
#### Response-修改用藥時段提醒
欄位 | 型態 | 說明
--- | --- | ---
id | string | 用藥時段提醒id
medicationName | string | 藥包名稱
counts | int | 每日用藥次數
isEnable | bool | 是否啟用
remindStartDate | date | 用藥提醒起始日期
remindEndDate | date | 用藥提醒結束日期
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "6499d554-45e7-45e2-93b6-32d5ca65b9d5",
"medicationName": "藥包C-糖尿病",
"counts": 4
"isEnable": true,
"createTime": 1611196161158,
"updateTime": null,
"remindStartDate": 1672502400000,
"remindEndDate": 1703952000000
}
}
}
```
---
### 取得所有用藥時段
```url
GET /medication/remind/list
```
#### Response-取得所有用藥時段
欄位 | 型態 | 說明
--- | --- | ---
id | string | 用藥時段提醒id
medicationName | string | 藥包名稱
counts | int | 用藥次數
isEnable | bool | 是否啟用
createTime | timestamp | 建立時間
updateTime | timestamp | 最後更新時間
remindStartDate | date | 用藥提醒起始日期
remindEndDate | date | 用藥提醒結束日期
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "fbedea40-66fe-4d64-a621-a4fa9f2c6c51",
"medicationName": "魚油123",
"counts": 1,
"isEnable": true,
"createTime": 1694152197126,
"updateTime": 1694152600322,
"remindStartDate": 1672502400000,
"remindEndDate": 1703952000000
},
{
"id": "b5d4fa0f-bf2e-4ced-ac92-ab0fa5f95b2b",
"medicationName": "ECKD",
"counts": 2,
"isEnable": true,
"createTime": 1612842021000,
"updateTime": null
},
{
"id": "d047801d-1a2d-41c9-ad09-e9753b8a6b01",
"medicationName": "心臟病",
"counts": 1,
"isEnable": true,
"createTime": 1612842021090,
"updateTime": null
}
],
"total": 2
}
}
```
---
### 依照用藥提醒Id取得明細
```url
GET /medication/remind/detail/list/{masterId}
```
#### Response-依照用藥提醒Id取得明細
欄位 | 型態 | 說明
--- | --- | ---
durations | int array | 用藥時、分(800 表示 08:00, 2030 表示 20:30, 以此類推)
weekDays | string array | 用藥週期, 請參閱 [用藥週期](#用藥週期)
```javascript
{
"httpCode": 200,
"result": {
"data": {
"weekDays": [
"MONDAY",
"WEDNESDAY"
],
"durations": [
1100,
1800
]
}
}
}
```
---
### 依照"星期幾"取得所有用藥時段
```url
POST /medication/remind/list/{householdMemberId}
```
* 如果沒有傳householdMemberId,會從token裡去抓取
#### Request-依照"星期幾"取得所有用藥時段
欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明
---|---|---|---|---|---
weekDays | string array | true | 用藥週期, 請參閱 [用藥週期](#用藥週期)
```javascript
{
"weekDays": ["MONDAY"]
}
```
#### Response-依照"星期幾"取得所有用藥時段
欄位 | 型態 | 說明
--- | --- | ---
id | string | 用藥時段提醒id
counts | int | 用藥次數
remindStartDate | date | 用藥提醒起始日期
remindEndDate | date | 用藥提醒結束日期
durations | int | 用藥時、分(800 表示 08:00, 2030 表示 20:30, 以此類推)
weekDays | string | 用藥週期, 請參閱 [用藥週期](#用藥週期)
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "6cf39565-4b23-4c7d-9e1c-d7f6b7e611ab",
"duration": 1800,
"weekDays": "MONDAY",
"counts": 2
},
{
"id": "0afe674e-b050-4db2-8702-8469188dc8d4",
"duration": 2000,
"weekDays": "MONDAY",
"counts": 2
}
]
}
}
```
---
### ~~新增用藥記錄~~
``` url
POST /medication/recoord/add
```
* 如果沒有傳householdMemberId,會從token裡去抓取
* medicationTime從訊息通知(notificationRecord)取用
* 如果已經新增,會直接修改,可變更欄位為 **isTaken**
#### Request Payload:
```javascript
{
"medicationTime":"2021/01/22 18:55",
"medicationName":"心臟病",
"isTaken":true
}
```
#### Response Body:
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e30096ed-b8ea-4424-890a-2c4a2189cad0",
"isTaken": true,
"medicationTime": "2021/01/22 18:55",
"medicationName":"心臟病",
"createTime": 1611543142033,
"updateTime": null
}
}
}
```
#### ErrorMsg:#medicationTime
*A. 時間格式不符合
```javascript
{
"errorMsg": "API_ERROR.ARGUMENT_ERROR",
"errorDesc": "[{\"medicationTime\":\"medicationTime too long and it's format must be like 2010/01/01 00:00\"}]",
"httpCode": 400
}
```
*B. 時間格式不符合或是設定時間太小不符合規定
```javascript
{
"errorMsg": "API_ERROR.ARGUMENT_ERROR",
"errorDesc": "[{\"medicationTime\":\"The medicationTime's format must be like 2010/01/01 00:00 and it must after 2010/01/01 00:00\"}]",
"httpCode": 400
}
```
---
### 編輯用藥備註
```url
POST /medication/record/update
```
#### Request Payload:
```javascript
{
"id": "e30096ed-b8ea-4424-890a-2c4a2189cad0",
"isTaken": false
}
```
#### Response Body:
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e30096ed-b8ea-4424-890a-2c4a2189cad0"
}
}
}
```
---
### ~~刪除用藥記錄~~
```url
DELETE /medication/recoord/{id}
```
#### Response Body:
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "984bd148-f487-416e-8c5d-e19b57112d9c"
}
}
}
```
---
### 取得用藥列表
``` url
POST /medication/record/list
```
#### Request Payload:
```javascript
{
"query":{
"startAt": 1611273600000,
"endAt": 1611273600000
},
"pagination": {
"current": 1,
"total": 1,
"pageSize": 10
},
"sorter": {}
}
```
#### Response Body:
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "e30096ed-b8ea-4424-890a-2c4a2189cad0",
"isTaken": false,
"medicationTime": "2021/01/22 18:55",
"createTime": 1611543142033,
"updateTime": 1611543753539
}
],
"total": 1
}
}
```
---
### 用Id取得某一筆用藥記錄
```url
POST /medication/record/detail
```
#### Request Payload:
```javascript
{
// "medicationTime":"2021/01/22 18:55"
"id": "XXXXX-SSSSS-ZZZZZZ-JJJJJJ"
}
```
#### Response Body:
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e30096ed-b8ea-4424-890a-2c4a2189cad0",
"isTaken": false,
"medicationTime": "2021/01/22 18:55",
"createTime": 1611543142033,
"updateTime": 1611543753539
}
}
}
```
---