# 疫苗接種
---
API 清單
* [疫苗清單](#疫苗清單)
* [疫苗接種記錄列表](#疫苗接種記錄列表)
* [新增疫苗接種記錄](#新增疫苗接種記錄)
* [編輯疫苗接種記錄](#編輯疫苗接種記錄)
* [刪除疫苗接種記錄](#刪除疫苗接種記錄)
* [刪除疫苗接種記錄照片](#刪除疫苗接種記錄照片)
* [取得上傳照片網址](#取得上傳照片網址)
---
## 疫苗清單
```url
GET /vaccination/list
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
```javascript
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 疫苗id
name | string | 疫苗名稱
seq | int | 序號
frequency | string | 頻率
```javascript
{
"httpCode": 20,
"result": {
"data": [
{
"id": "6810a8d8-a9f4-4693-876a-490819ff7129",
"name": "COVID-19疫苗-第1劑",
"seq": 1,
"frequency": "選配"
},
{
"id": "058988e2-9fd5-49a3-aba9-d8eb6246cc45",
"name": "COVID-19疫苗-第2劑",
"seq": 2,
"frequency": "選配"
},...
}
}
}
```
## 疫苗接種記錄列表
```url
POST /vaccination/record/list
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
householdMemberId | string | Y | | householdMemberId
pagination | json | | | 分頁
-current | int | | 1 | 當前頁數
-pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
sorter | json | | 排序欄位
-field | string | | shotTime | 排序欄位, 可排序欄位:shotTime, name, resource
-order | string | | desc | 升冪或降冪, 預設為desc
```javascript
{
"query": {
"householdMemberId": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a"
},
"pagination": {
"current": 1,
"total": 1,
"pageSize": 10
},
"sorter": {
"field": "shotTime",
"order": "desc"
}
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 疫苗接種記錄id
shotTime | timestamp | 接種日期
name | string | 接種疫苗名稱
frequency | string | 頻率
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
imageUrl | string | 可 download 的 疫苗接種記錄照片url, 時效 3600 秒
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"shotTime": 1609545600000,
"name": "COVID-19疫苗-第1劑",
"frequency": "選配",
"resource": "Web",
"imageUrl": "http://10.31.49.126/swift/v1/AUTH_test/kmuh/vaccination_record/e1e21182-3aff-4c5c-93d4-42e711695836.png"
}, ...
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 2
},
"sorter": {}
}
}
```
## 新增疫苗接種記錄
```url
POST /vaccination/record/add
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
householdMemberId | string | Y | | Web端必填,App端可不填,由後端從token中取得
vaccineId | string | Y | | 疫苗Id
shotTime | timestamp | Y | | 接種日期
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) | | 從 /vaccination/record/get-upload-url 取得的 uploadId
```javascript
{
"householdMemberId": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"vaccineId": "6810a8d8-a9f4-4693-876a-490819ff7129",
"shotTime": 1609545600000,
"resource": "App",
"objectKey": "vaccination_record/98386d85-592e-4e7d-80f3-0e22a389ff65.png",
"isMultipart": false,
"totalPart": null,
"uploadId": null
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 疫苗接種記錄id
shotTime | timestamp | 接種日期
name | string | 接種疫苗名稱
frequency | string | 頻率
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"shotTime": 1609545600000,
"name": "COVID-19疫苗-第1劑",
"frequency": "選配",
"resource": "Web"
}
}
}
```
## 編輯疫苗接種記錄
```url
POST /vaccination/record/update
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 疫苗接種記錄id
vaccineId | string | Y | | 疫苗Id
shotTime | timestamp | Y | | 接種日期
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) | | 從 /vaccination/record/get-upload-url 取得的 uploadId
```javascript
{
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"vaccineId": "6810a8d8-a9f4-4693-876a-490819ff7129",
"shotTime": 1609545600000,
"resource": "App",
"objectKey": "vaccination_record/98386d85-592e-4e7d-80f3-0e22a389ff65.png",
"isMultipart": false,
"totalPart": null,
"uploadId": null
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 疫苗接種記錄id
shotTime | timestamp | 接種日期
name | string | 接種疫苗名稱
frequency | string | 頻率
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"shotTime": 1609545600000,
"name": "COVID-19疫苗-第1劑",
"frequency": "選配",
"resource": "Web"
}
}
}
```
## 刪除疫苗接種記錄
```url
POST /vaccination/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 /vaccination/record/delete-image
```
Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 疫苗接種記錄id
```javascript
{
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a"
}
```
Response
欄位 | 型態 | 說明
-----| -----|--------
id | string | 疫苗接種記錄id
shotTime | timestamp | 接種日期
name | string | 接種疫苗名稱
frequency | string | 頻率
resource | string | 資料來源, Web: Web輸入(醫護輸入), App: App輸入
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "e9a3042a-7ae1-4069-a2f6-fef3bb69b50a",
"shotTime": 1609545600000,
"name": "COVID-19疫苗-第1劑",
"frequency": "選配",
"resource": "Web"
}
}
}
```
## 取得上傳照片網址
```url
POST /vaccination/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/vaccination_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/vaccination_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/vaccination_record%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F2?temp_url_sig=ad71de81dfbcd94bce4a091f2630c6f1373ff3cd&temp_url_expires=1554263771"
}
]
}
}
}
```