---
# System prepended metadata

title: 快篩

---

# 快篩

---
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"
                }
            ]
        }
    }
}
```