# 疫苗接種 --- 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" } ] } } } ```