# 快篩
---
API 清單
* [快篩試劑清單](#快篩試劑清單)
* [快篩記錄列表](#快篩記錄列表)
* [新增快篩記錄](#新增快篩記錄)
* [編輯快篩記錄](#編輯快篩記錄)
* [刪除快篩記錄](#刪除快篩記錄)
* [刪除快篩記錄照片](#刪除快篩記錄照片)
* [取得上傳照片網址](#取得上傳照片網址)
---
## 快篩試劑清單
```url
GET /rapid-test/kit-list
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
```javascript
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 快篩試劑id
name | string | 快篩試劑名稱
seq | int | 序號
```javascript
{
"httpCode": 20,
"result": {
"data": [
{
"id": "c5cb52be-29cd-4bc6-8e78-38d9ca78d07f",
"name": "英斯特家用試劑",
"seq": 1
},
{
"id": "fe83e14a-d1ef-4467-9b36-45b4fb5d8812",
"name": "萊析樂家用新冠病毒核酸檢測組",
"seq": 2
},...
}
}
}
```
## 快篩記錄列表
```url
POST /rapid-test/record/list
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
householdMemberId | string | Y | | householdMemberId
pagination | json | | | 分頁
-current | int | | 1 | 當前頁數
-pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
sorter | json | | 排序欄位
-field | string | | testTime | 排序欄位, 可排序欄位:testTime, name, resource
-order | string | | desc | 升冪或降冪, 預設為desc
```javascript
{
"query": {
"householdMemberId": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a"
},
"pagination": {
"current": 1,
"total": 1,
"pageSize": 10
},
"sorter": {
"field": "testTime",
"order": "desc"
}
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 快篩記錄id
name | string | 快篩試劑名稱
testTime | timestamp | 快篩測試日期
testResult | string | 快篩結果, NEGATIVE:陰性, POSITIVE:陽性
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
imageUrl | string | 可 download 的 快篩記錄照片url, 時效 3600 秒
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"name": "英斯特家用試劑",
"testTime": 1609545600000,
"testResult": "NEGATIVE",
"resource": "Web",
"imageUrl": "http://10.31.49.126/swift/v1/AUTH_test/kmuh/rapid_test_record/e1e21182-3aff-4c5c-93d4-42e711695836.png"
}, ...
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 2
},
"sorter": {}
}
}
```
## 新增快篩記錄
```url
POST /rapid-test/record/add
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
householdMemberId | string | Y | | Web端必填,App端可不填,由後端從token中取得
rapidTestKitId | string | Y | | 快篩試劑Id
testTime | timestamp | Y | | 快篩測試日期
testResult | string | Y | | 快篩結果, NEGATIVE:陰性, POSITIVE:陽性
resource | string | Y | | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
objectKey | string | N | | 上傳快篩照片的objectKey, 先取得快篩照片上傳網址並上傳成功,取其 objectKey。
isMultipart | boolean | N | | 快篩照片上傳時是否分塊上傳,預設為 false
totalPart | int | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 快篩照片上傳的總分塊數量,不可小於2
uploadId | string | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 從 /rapid-test/record/get-upload-url 取得的 uploadId
```javascript
{
"householdMemberId": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"rapidTestKitId": "c5cb52be-29cd-4bc6-8e78-38d9ca78d07f",
"testTime": 1609545600000,
"testResult": "NEGATIVE",
"resource": "App",
"objectKey": "rapid_test_record/98386d85-592e-4e7d-80f3-0e22a389ff65.png",
"isMultipart": false,
"totalPart": null,
"uploadId": null
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 快篩記錄id
name | string | 接種疫苗名稱
testTime | timestamp | 快篩測試日期
testResult | string | 快篩結果, NEGATIVE:陰性, POSITIVE:陽性
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"name": "英斯特家用試劑",
"testTime": 1609545600000,
"testResult": "NEGATIVE",
"resource": "Web"
}
}
}
```
## 編輯快篩記錄
```url
POST /rapid-test/record/update
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 快篩記錄id
rapidTestKitId | string | Y | | 快篩試劑Id
testTime | timestamp | Y | | 快篩測試日期
testResult | string | Y | | 快篩結果, NEGATIVE:陰性, POSITIVE:陽性
resource | string | Y | | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
objectKey | string | N | | 上傳快篩照片的objectKey, 先取得快篩照片上傳網址並上傳成功,取其 objectKey。
isMultipart | boolean | N | | 快篩照片上傳時是否分塊上傳,預設為 false
totalPart | int | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 快篩照片上傳的總分塊數量,不可小於2
uploadId | string | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 從 /rapid-test/record/get-upload-url 取得的 uploadId
```javascript
{
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"rapidTestKitId": "c5cb52be-29cd-4bc6-8e78-38d9ca78d07f",
"testTime": 1609545600000,
"testResult": "NEGATIVE",
"resource": "App",
"objectKey": "rapid_test_record/98386d85-592e-4e7d-80f3-0e22a389ff65.png",
"isMultipart": false,
"totalPart": null,
"uploadId": null
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 快篩記錄id
name | string | 接種疫苗名稱
testTime | timestamp | 快篩測試日期
testResult | string | 快篩結果, NEGATIVE:陰性, POSITIVE:陽性
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"name": "英斯特家用試劑",
"testTime": 1609545600000,
"testResult": "NEGATIVE",
"resource": "Web"
}
}
}
```
## 刪除快篩記錄
```url
POST /rapid-test/record/delete
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 快篩記錄id
```javascript
{
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a"
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
count | int | 刪除筆數, 1表示成功
```javascript
{
"httpCode": 200,
"result": {
"data": {
"count": 1
}
}
}
```
## 刪除快篩記錄照片
```url
POST /rapid-test/record/delete-image
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 快篩記錄id
```javascript
{
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a"
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 快篩記錄id
name | string | 接種疫苗名稱
testTime | timestamp | 快篩測試日期
testResult | string | 快篩結果, NEGATIVE:陰性, POSITIVE:陽性
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"name": "英斯特家用試劑",
"testTime": 1609545600000,
"testResult": "NEGATIVE",
"resource": "Web"
}
}
}
```
## 取得上傳照片網址
```url
POST /rapid-test/record/get-upload-url
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
isMultipart | boolean | Y | false | 是否使用分段上傳
fileName | String | Y | | 檔名,不包含副檔名,限制最多50字
fileType | String | Y | | 副檔名, 限制最多10字
totalPart | int | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 總分塊數量,不可小於2
parts | Array [...part] | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | part 資訊
* part(Object)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
chunkSize | int | Y | | 該 chunk 的大小, bytes
md5 | string | Y | | 該 part 的 md5
part | int | Y | | part number, 第幾塊 chunk
```javascript
// 單檔
{
"isMultipart": false,
"fileName": "ad_bg_jp",
"fileType": "png"
}
// 分塊上傳
{
"isMultipart": true,
"fileName": "giphy (7)",
"fileType": "mp4",
"totalPart": 2,
"parts": [
{
"chunkSize": 5242880,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 1
},
{
"chunkSize": 3145728,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 2
}
]
}
```
#### Response
* data
欄位 | 型態 | 說明
--- | --- | ---
objectKey | string | storage 中的 objectKey, **unique**
uploadId | string | 識別該次上傳的 uploadId
fileName | string | 名稱
fileType | string | 副檔名
url | string | 單檔上傳的時候,才會回傳該 url, 時效 3600 秒
parts | [...part] | multipart上傳各part的url
* part(Object)
欄位 | 型態 | 說明
--- | --- | ---
chunkSize | int | 該 chunk 的大小, bytes
md5 | string | 該 part 的 md5
part | int | part number, 第幾塊 chunk
url | string | 可上傳的 url, 時效 3600 秒
```javascript
// HttpStatus:422, 上傳的檔案類型不允許
{
"errorMsg": "SERVICE_ERROR.UPLOAD_FILE_TYPE_NOT_ALLOWED",
"httpCode": 422
}
// HttpStatus: 200
// 單檔
{
"httpCode": 200,
"result": {
"data": {
"objectKey": "event/9f9de11b-12b9-4964-bae8-3233e9da065b.png",
"uploadId": "11becd09-7571-4b0d-b8ee-cb3f09f66cf0",
"fileName": "ad_bg_jp",
"fileType": "png",
// 單檔 才有 url
"url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh/rapid_test_record%2F9f9de11b-12b9-4964-bae8-3233e9da065b.png?temp_url_sig=e61d9e721d860294bde4d0151e111ebf8ed57ed7&temp_url_expires=1554114780"
}
}
}
// 分塊上傳
{
"httpCode": 200,
"result": {
"data": {
"objectKey": "event/f76adf26-1e22-4b18-980d-b9a68efc5171.mp4",
"uploadId": "53fde368-43d9-455f-a610-62091fc30be6",
"fileName": "giphy (7)",
"fileType": "mp4",
"parts": [
{
"chunkSize": 5242880,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 1,
"url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/rapid_test_record%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F1?temp_url_sig=796c52b00f75b62be658533b2fadbc7f14381e36&temp_url_expires=1554263771"
},
{
"chunkSize": 3145728,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 2,
"url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/rapid_test_record%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F2?temp_url_sig=ad71de81dfbcd94bce4a091f2630c6f1373ff3cd&temp_url_expires=1554263771"
}
]
}
}
}
```