HƯỚNG DẪN TÍCH HỢP API/SDK
1. Danh sách Endpoint tích hợp Đặt lịch hẹn iQMS
STT |
Endpoint |
Giá trị |
Mô tả |
1 |
<domain> |
Hệ thống staging (thử nghiệm) |
|
2 |
<domain> |
Hệ thống production |
2. Xác thực người dùng
Các API của VNPT iQMS đều cần apiToken để truy cập. Do đó cần phải xác thực người dùng/SDK để lấy apiToken cho các API
2.1. Xác thực SSO tài khoản người dùng
Việc xác thực này sử dụng cơ chế OAuth 2.0. API Token tương ứng với quyền của người dùng sẽ được trả về khi người dùng đăng nhập SSO của VNPT iQMS.
2.1.1. Client/3rd Application gọi giao diện xác thực để người dùng đăng nhập
Client/3rd app cần xác thực người dùng mở url gọi qua hệ thống iQMS kèm theo domain và type SSO
- URL: http://<domain>/Home/Login?type=SSO&domain=http%3A%2F%2Fbenhviendakhoabuudien.vnptweb.vn
- Method: GET
- Header:
- Query Param:
- type: Phương thức xác thực (giá trị là SSO)
- domain: Domain trả về khi xác thực thành công
- Output: Website iQMS xác thực thông tin tài khoản người dùng và trả về ticket xác nhận cho domain của client.
2.1.2. Client/3rd Application lấy thông tin người dùng và token
Client sử dung ticket xác thực với backend của iQMS để lấy access token truy cập hệ thống qua API.
- URL: http://<domain>/kong/booking/user/validateTicket
- Method: POST
- Header:
- Request Body:
- ticket: ticket sau khi xác thực với người dùng được trả về ở 2.1.1
- domain: Domain đã sử dụng để đăng nhập và được trả về ở 2.1.1.
Ví dụ: { "ticket": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MTYyMzkwMjJ9.VtpK7PfW-VWPZK7buUtX7n6YXlos54v-xTURtXQp8rw, "domain": "http://benhviendakhoabuudien.vnptweb.vn" }
|
Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "apiToken": "eyJhbGciOiJIUzq1NiJ9.eyJleHAiOjE2MTc3MzcwMD "refreshToken": null, "user": { "rowStatus": 1, "rowStatusTst": 1588040869, "createdAt": 1588040797, "tags": [ "Thai ", "0946360211", "phthai111" ], "id": "5ea7945dc0f7590009bd6a91", "accountType": "IQMS", "thirdAccountId": null, "email": "phthai111@gmail.com", "phone": "+84946360211", "firstName": "Pham Hong Thai ", "lastName": null, "secondaryEmail": null, "secondaryPhone": null, "birthday": "1990-01-01", "gender": "M", "address": "Phường 7, Thành phố Bạc Liêu, Bạc Liêu", "secondaryAddress": null, "avatarUrl": null, "description": null, "identityCard": null, "addressInfo": null,
}, } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành côngs |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
apiToken |
string |
Access Token trả về |
user |
string json |
Thông tin người dùng |
rowStatus |
integer |
Trạng thái kích hoạt của tài khoản. Ví dụ: Kích hoạt : 1, chưa kích hoạt : 2 |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
id |
string |
Mã người dùng |
accountType |
string |
Loại tài khoản |
|
string |
Địa chỉ email |
roles |
list |
List các role của user |
string |
Tên role |
|
roles.code |
string |
Code của role. Ví dụ: ADMIN, USER, … |
roles.level |
integer |
Cấp bậc của role. Ví dụ: level 1, 2, 3. |
firstName |
string |
Tên người dùng |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 8 : mã lỗi sai tên tài khoản hoặc mật khẩu |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
2.2. Lấy SDK Token cho 3rd APP
SDK Token được cấp cho mỗi đơn vị một bộ SDK Token riêng. Sau khi đơn vị được khởi tạo, đơn vị có thể tạo và lấy thông tin SDK Token ở Menu chức năng [Quản lý đơn vị - SDK 3rd]
SDK Token gồm có:
- apiToken: Access Token dành cho SDK
- tokenKey: Token key của đơn vị
- secretKey: Secret key xác thực cho đơn vị
Sử dụng SDK Token bằng cách truyền vào header khi gọi API
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Lưu ý:
- Phạm vi sử dụng SDK token chỉ áp dụng cho nội bộ đơn vị.
- Giới hạn gọi API mặc định là 5000 requests/giờ, 50000 requests/ngày. Đơn vị hạn chế để lộ SDK token cho nhiều hệ thống khác. Trường hợp muốn nâng số lượng request cần liên hệ nhà cung cấp dịch vụ
3. Quản lý thông tin đơn vị
Các API này cần sử dụng SDK Token
3.1. Quản lý dịch vụ
3.1.1. API lấy danh sách dịch vụ của đơn vị
Input:
- URL: <domain-name>/kong/booking/unit/unitService
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
Trường hợp tìm có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 10, "numOfElements": 1, "totalElements": 1, "totalPages": 1, "content": [ { "id": "5ebb9b19379b59000941b8e0", "rowStatus": 1, "rowStatusTst": 1596592672, "createdAt": 1589353241, "unitId": "5eba6116584cbf0009bfd017", "service": { "id": "5daff3b2685c313b202aa24a", "rowStatus": 1, "rowStatusTst": 1596236625, "createdAt": 1571300063, "name": "Khoa Nội Tim Mạch", "description": "Khoa Nội Tim Mạch", "area": { "id": "5e732d436c04442f309d7090", "name": "Y tế", "areaStatus": 1 } }, "allowTakingTicket": 1, "initSeq": 5301, "maxSeq": 5400, "unitServiceGroupId": "5f0d6330a93525000922e199", "limitQuantity": 4, "serviceTypes": [1,2,3] } ] } } |
Trường hợp tìm không có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 10, "numOfElements": 0, "totalElements": 0, "totalPages": 0, "content": [] } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp tìm có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về |
id |
string |
Mã dịch vụ của đơn vị |
rowStatus |
integer |
Trạng thái hoạt động của dịch vụ của đơn vị |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
unitId |
string |
Mã đơn vị |
service |
string json |
Dịch vụ |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
service.description |
string |
Mô tả dịch vụ |
service.area |
string json |
Lĩnh vực của dịch vụ |
string |
Mã lĩnh vực |
|
string |
Tên lĩnh vực |
|
service.area. areaStatus |
integer |
Trạng thái của lĩnh vực |
allowTakingTicket |
integer |
Cho phép lấy vé |
initSeq |
integer |
Số thứ tự khởi tạo |
maxSeq |
integer |
Số thứ tự tối đa được phép cấp |
unitServiceGroupId |
string |
Mã nhóm dịch vụ |
limitQuantity |
integer |
Số lượng giới hạn đặt lịch cho mỗi khung giờ |
serviceTypes |
integer array |
Loại dịch vụ (1: đến lấy vé, 2: họp trực tuyến, 3: tư vấn từ xa) |
Trường hợp tìm không có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về. Không có dữ liệu thì trả về rỗng. |
3.1.2. API lấy chi tiết dịch vụ của đơn vị
Input:
- URL: <domain-name>/kong/booking/unit/unitService/{id}
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": {
"id": "5ebb9b19379b59000941b8e0", "rowStatus": 1, "rowStatusTst": 1596592672, "createdAt": 1589353241, "unitId": "5eba6116584cbf0009bfd017", "service": { "id": "5daff3b2685c313b202aa24a", "rowStatus": 1, "rowStatusTst": 1596236625, "createdAt": 1571300063, "name": "Khoa Nội Tim Mạch", "description": "Khoa Nội Tim Mạch", "area": { "id": "5e732d436c04442f309d7090", "name": "Y tế", "areaStatus": 1 } }, "allowTakingTicket": 1, "initSeq": 5301, "maxSeq": 5400, "unitServiceGroupId": "5f0d6330a93525000922e199", "limitQuantity": 4, "serviceTypes": [1,2,3] } } |
Trường hợp lỗi:
{ "errorCode": integer, "errorMsg": string, "data": null } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã dịch vụ của đơn vị |
rowStatus |
integer |
Trạng thái hoạt động của dịch vụ của đơn vị |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
unitId |
string |
Mã đơn vị |
service |
string json |
Dịch vụ |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
service.description |
string |
Mô tả dịch vụ |
service.area |
string json |
Lĩnh vực của dịch vụ |
string |
Mã lĩnh vực |
|
string |
Tên lĩnh vực |
|
service.area. areaStatus |
integer |
Trạng thái của lĩnh vực |
allowTakingTicket |
integer |
Cho phép lấy vé |
initSeq |
integer |
Số thứ tự khởi tạo |
maxSeq |
integer |
Số thứ tự tối đa được phép cấp |
unitServiceGroupId |
string |
Mã nhóm dịch vụ |
limitQuantity |
integer |
Số lượng giới hạn đặt lịch cho mỗi khung giờ |
serviceTypes |
integer array |
Loại dịch vụ (1: đến lấy vé, 2: họp trực tuyến, 3: tư vấn từ xa) |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
3.1.3. API cập nhật dịch vụ của đơn vị
Input:
- URL: <domain-name>/kong/booking/unit/unitService/{id}
- HTTPs method: PUT
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "initSeq": "6000", "maxSeq": "6999", "limitQuantity": "4", "serviceTypes": [ 1, 2, 3 ], "unitServiceGroupId": "5f7bd99af0be200009e99aa5" } |
Trong đó:
Key |
Type |
Mô tả |
initSeq |
integer |
Số thứ tự khởi tạo |
maxSeq |
integer |
Số thứ tự tối đa được phép cấp |
limitQuantity |
integer |
Số lượng giới hạn đặt lịch cho mỗi khung giờ |
serviceTypes |
integer array |
Loại dịch vụ (1: đến lấy vé, 2: họp trực tuyến, 3: tư vấn từ xa) |
unitServiceGroupId |
string |
Mã nhóm dịch vụ |
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": {
"id": "5ebb9b19379b59000941b8e0", "rowStatus": 1, "rowStatusTst": 1596592672, "createdAt": 1589353241, "unitId": "5eba6116584cbf0009bfd017", "service": { "id": "5daff3b2685c313b202aa24a", "rowStatus": 1, "rowStatusTst": 1596236625, "createdAt": 1571300063, "name": "Khoa Nội Tim Mạch", "description": "Khoa Nội Tim Mạch", "area": { "id": "5e732d436c04442f309d7090", "name": "Y tế", "areaStatus": 1 } }, "allowTakingTicket": 1, "initSeq": 5301, "maxSeq": 5400, "unitServiceGroupId": "5f0d6330a93525000922e199", "limitQuantity": 4, "serviceTypes": [1,2,3] } } |
Trường hợp lỗi:
{ "errorCode": integer, "errorMsg": string, "data": null } |
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 300, "numOfElements": 6, "totalElements": 6, "totalPages": 1, "content": [ { "id": "5e8fee0b0ab251000912a363", "unitId": "5e8fedb50ab251000912a35e", "optionCode": "ALLOW_BOOKING", "optionValue": "true", /// CHO PHÉP "optionValueType": "Bool" }, { "id": "5e8fee0b0ab251000912a364", "unitId": "5e8fedb50ab251000912a35e", "optionCode": "BOOK_SERVICE", "optionValue": "true", /// CHO PHÉP "optionValueType": "Bool" }, { "id": "5e8fee0c0ab251000912a365", "unitId": "5e8fedb50ab251000912a35e", "optionCode": "BOOK_STAFF", "optionValue": "false", /// KHÔNG CHO PHÉP "optionValueType": "Bool" }, … ] } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã dịch vụ của đơn vị |
rowStatus |
integer |
Trạng thái hoạt động của dịch vụ của đơn vị |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
unitId |
string |
Mã đơn vị |
service |
string json |
Dịch vụ |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
service.description |
string |
Mô tả dịch vụ |
service.area |
string json |
Lĩnh vực của dịch vụ |
string |
Mã lĩnh vực |
|
string |
Tên lĩnh vực |
|
service.area. areaStatus |
integer |
Trạng thái của lĩnh vực |
allowTakingTicket |
integer |
Cho phép lấy vé |
initSeq |
integer |
Số thứ tự khởi tạo |
maxSeq |
integer |
Số thứ tự tối đa được phép cấp |
unitServiceGroupId |
string |
Mã nhóm dịch vụ |
limitQuantity |
integer |
Số lượng giới hạn đặt lịch cho mỗi khung giờ |
serviceTypes |
integer array |
Loại dịch vụ (1: đến lấy vé, 2: họp trực tuyến, 3: tư vấn từ xa) |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
3.2. Quản lý quầy phòng
3.2.1. API lấy danh sách quầy phòng
Input:
- URL: <domain-name>/kong/booking/unit/clinic
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
Trường hợp tìm có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 1, "numOfElements": 1, "totalElements": 6, "totalPages": 6, "content": [ { "id": "5f30ef69588d16000916f467", "rowStatus": 1, "rowStatusTst": 1597042537, "createdAt": 1597042537, "type": "COUNTER", "code": "01", "name": "Quầy tiếp nhận số 1", "description": "Quầy 01", "unitId": "5f30ecafb0f81d0009dd5f1d", "services": [ { "id": "5daff3b2685c313b202aa240", "rowStatus": 1, "rowStatusTst": 1602169458, "createdAt": 1571300063, "name": "Khoa Nội Thần Kinh", "description": "Khoa Nội Thần Kinh", "area": { "id": "5e732d436c04442f309d7090", "name": "Y tế", "areaStatus": 1 } } ], "callStatus": 2, "updateStatusTst": 1603436515, "callNumber": 4300, "departmentId": “5e732d436c04442f309d7156” } ] } } |
Trường hợp tìm không có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 10, "numOfElements": 0, "totalElements": 0, "totalPages": 0, "content": [] } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp tìm có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về |
id |
string |
Mã quầy/phòng |
rowStatus |
integer |
Trạng thái tạo, cập nhật quầy/phòng |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
type |
string |
Loại quầy/phòng. Ví dụ: COUNTER: quầy, CLINIC: phòng |
code |
string |
Mã code quầy/phòng |
name |
string |
Tên quầy/phòng |
description |
string |
Mô tả quầy/phòng |
unitId |
string |
Mã đơn vị |
string |
Mã dịch vụ |
|
services.rowStatus |
integer |
Trạng thái của dịch vụ |
services.rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
services.createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
string |
Tên dịch vụ |
|
services.description |
string |
Mô tả dịch vụ |
string |
Mã lĩnh vực |
|
string |
Tên lĩnh vực |
|
services.area.areaStatus |
string |
Trạng thái lĩnh vực |
callStatus |
integer |
Trạng thái hoạt động gọi số |
updateStatusTst |
long |
Thời điểm cập nhật trạng thái gọi số (định dạng timestamp) |
callNumber |
integer |
Số vé được gọi vào phòng |
departmentId |
string |
Mã phòng ban |
Trường hợp tìm không có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về. Không có dữ liệu thì trả về rỗng. |
3.2.2. API lấy chi tiết quầy phòng
Input:
- URL: <domain-name>/kong/booking/unit/clinic/{id}
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
Trường hợp tìm có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "id": "5f30ef69588d16000916f467", "rowStatus": 1, "rowStatusTst": 1597042537, "createdAt": 1597042537, "type": "COUNTER", "code": "01", "name": "Quầy tiếp nhận số 1", "description": "Quầy 01", "unitId": "5f30ecafb0f81d0009dd5f1d", "services": [ { "id": "5daff3b2685c313b202aa240", "rowStatus": 1, "rowStatusTst": 1602169458, "createdAt": 1571300063, "name": "Khoa Nội Thần Kinh", "description": "Khoa Nội Thần Kinh", "area": { "id": "5e732d436c04442f309d7090", "name": "Y tế", "areaStatus": 1 } } ], "callStatus": 2, "updateStatusTst": 1603436515, "callNumber": 4300, "departmentId": “5e732d436c04442f309d7156” } } |
Trường hợp lỗi:
{ "errorCode": integer, "errorMsg": string, "data": null } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp tìm có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã quầy/phòng |
rowStatus |
integer |
Trạng thái tạo, cập nhật quầy/phòng |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
type |
string |
Loại quầy/phòng. Ví dụ: COUNTER: quầy, CLINIC: phòng |
code |
string |
Mã code quầy/phòng |
name |
string |
Tên quầy/phòng |
description |
string |
Mô tả quầy/phòng |
unitId |
string |
Mã đơn vị |
string |
Mã dịch vụ |
|
services.rowStatus |
integer |
Trạng thái của dịch vụ |
services.rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
services.createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
string |
Tên dịch vụ |
|
services.description |
string |
Mô tả dịch vụ |
string |
Mã lĩnh vực |
|
string |
Tên lĩnh vực |
|
services.area.areaStatus |
string |
Trạng thái lĩnh vực |
callStatus |
integer |
Trạng thái hoạt động gọi số |
updateStatusTst |
long |
Thời điểm cập nhật trạng thái gọi số (định dạng timestamp) |
callNumber |
integer |
Số vé được gọi vào phòng |
departmentId |
string |
Mã phòng ban |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
3.2.3. API lấy cập nhật quầy phòng
Input:
- URL: <domain-name>/kong/booking/unit/clinic/{id}
- HTTPs method: PUT
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "code": "4834", "name": "Quầy tiếp đón khu PK Chợ Rẫy 12", "description": "Quầy tiếp đón khu PK Chợ Rẫy", "departmentId": "6077aa5358ce802454abd78e" "unitId": "5f7bd0c7f0be200009e99a84", "services": [ { "id": "5ed75d329a11790009183bbc" } ] } |
Trong đó:
Key |
Type |
Mô tả |
code |
string |
Mã code quầy/phòng |
name |
string |
Tên quầy/phòng |
description |
string |
Mô tả quầy/phòng |
departmentId |
string |
Mã phòng ban |
unitId |
string |
Mã đơn vị |
services |
list string json |
Danh sách dịch vụ |
string |
Mã dịch vụ |
Output: json
Trường hợp tìm có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "id": "5f30ef69588d16000916f467", "rowStatus": 1, "rowStatusTst": 1597042537, "createdAt": 1597042537, "type": "COUNTER", "code": "01", "name": "Quầy tiếp nhận số 1", "description": "Quầy 01", "unitId": "5f30ecafb0f81d0009dd5f1d", "services": [ { "id": "5daff3b2685c313b202aa240", "rowStatus": 1, "rowStatusTst": 1602169458, "createdAt": 1571300063, "name": "Khoa Nội Thần Kinh", "description": "Khoa Nội Thần Kinh", "area": { "id": "5e732d436c04442f309d7090", "name": "Y tế", "areaStatus": 1 } } ], "callStatus": 2, "updateStatusTst": 1603436515, "callNumber": 4300, "departmentId": “5e732d436c04442f309d7156” } } |
Trường hợp lỗi:
{ "errorCode": integer, "errorMsg": string, "data": null } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp tìm có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã quầy/phòng |
rowStatus |
integer |
Trạng thái tạo, cập nhật quầy/phòng |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
type |
string |
Loại quầy/phòng. Ví dụ: COUNTER: quầy, CLINIC: phòng |
code |
string |
Mã code quầy/phòng |
name |
string |
Tên quầy/phòng |
description |
string |
Mô tả quầy/phòng |
unitId |
string |
Mã đơn vị |
string |
Mã dịch vụ |
|
services.rowStatus |
integer |
Trạng thái của dịch vụ |
services.rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
services.createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
string |
Tên dịch vụ |
|
services.description |
string |
Mô tả dịch vụ |
string |
Mã lĩnh vực |
|
string |
Tên lĩnh vực |
|
services.area.areaStatus |
string |
Trạng thái lĩnh vực |
callStatus |
integer |
Trạng thái hoạt động gọi số |
updateStatusTst |
long |
Thời điểm cập nhật trạng thái gọi số (định dạng timestamp) |
callNumber |
integer |
Số vé được gọi vào phòng |
departmentId |
string |
Mã phòng ban |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
4. Luồng nghiệp vụ đặt lịch hẹn trên App hoặc Web của khách hàng
Quy trình các bước đặt lịch tổng thể:
4.1. API lấy danh sách đơn vị
- URL: http://<domain>/api/booking/unit/unit/?rowStatus=1&size=300
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập hoặc SDK Token
- tokenKey: TokenKey của đơn vị ( nếu dùng SDK Token)
- secretKey: Secret key xác thực cho đơn vị ( nếu dùng SDK Token)
- Query Param:
- rowStatus: Trạng thái đơn vị (Xét là 1)
- size: Số lượng phần tử cần lấy (Xét là 300)
- Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 1, "numOfElements": 1, "totalElements": 10, "totalPages": 10, "content": [ { "id": "5e8fedb50ab251000912a35e", "rowStatus": 1, "rowStatusTst": 1586490805, "createdAt": 1586490805, "code": "VNPT_IT_KV2", "name": "VNPT IT KV2", "description": null, "latitude": "10.790141055662", "longitude": "106.692344060327", "address": "42 Phạm Ngọc Thạch, Phường 06, Quận 3, Hồ Chí Minh", "phone": "+84901710312", "fax": "+84479276181", …… } ] } } |
Giao diện tham khảo:
4.2. API lấy cấu hình đặt lịch của đơn vị
iQMS cho phép cơ quan/doanh nghiệp cấu hình có cho người dân chọn dịch vụ hoặc nhân viên khi đặt lịch khám hoặc không chọn. Mỗi đơn vị sẽ có thông tin cấu hình các bước đặt lịch riêng. Các thông tin cần xác định bao gồm:
- ALLOW_BOOKING. Đơn vị có hỗ trợ đặt lịch trên ứng dụng hay không. Mức ảnh hưởng cao nhất. Nếu ALLOW_ BOOKING là FALSE thì không thể đặt hẹn
- BOOK_SERVICE. Đơn vị yêu cầu bước chọn dịch vụ khi đặt lịch. Nếu BOOK_SERVICE là FALSE thì bỏ qua việc chọn dịch vụ, chuyển sang bước tiếp theo.
- BOOK_STAFF. Đơn vị yêu cầu bước chọn Người thực hiện khi đặt lịch. Nếu BOOK_STAFF là FALSE thì bỏ qua việc chọn người thực hiện, chuyển sang bước tiếp theo.
- URL: http://<domain>/api/booking/unit/unitOption/?size=300&unitId=<UNIT_ID>
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Query Param:
unitId: Mã đơn vị được chọn từ danh sách đơn vị ở 4.1
- Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 300, "numOfElements": 6, "totalElements": 6, "totalPages": 1, "content": [ { "id": "5e8fee0b0ab251000912a363", "unitId": "5e8fedb50ab251000912a35e", "optionCode": "ALLOW_BOOKING", "optionValue": "true", /// CHO PHÉP "optionValueType": "Bool" }, { "id": "5e8fee0b0ab251000912a364", "unitId": "5e8fedb50ab251000912a35e", "optionCode": "BOOK_SERVICE", "optionValue": "true", /// CHO PHÉP "optionValueType": "Bool" }, { "id": "5e8fee0c0ab251000912a365", "unitId": "5e8fedb50ab251000912a35e", "optionCode": "BOOK_STAFF", "optionValue": "false", /// KHÔNG CHO PHÉP "optionValueType": "Bool" }, … ] } } |
4.3. API lấy danh sách dịch vụ của đơn vị
Đây là bước được sử dụng khi đơn vị cho phép đặt lịch với BOOK_SERVICE là TRUE
Chú ý: Nếu BOOK_SERVICE là FALSE thì bỏ qua việc chọn dịch vụ, chuyển sang bước tiếp theo.
- URL: http://<domain>/api/booking/unit/unitService/?size=300&rowStatus=1&unitId=<UNIT_ID>
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Query Param:
- size: Số lượng phần tử cần lấy (Giá trị là 300)
- rowStatus: Trạng thái dịch vị (Giá trị là 1)
- unitId: Mã đơn vị được chọn từ danh sách đơn vị ở 4.1
- Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 300, "numOfElements": 2, "totalElements": 2, "totalPages": 1, "content": [ { … },
] } } |
Giao diện tham khảo:
4.4. API lấy danh sách Người thực hiện
Đây là bước được sử dụng khi đơn vị cho phép đặt lịch với BOOK_STAFF là TRUE
- URL: http://<domain>/api/booking/unit/employee/?size=300&unitId=<UNIT_ID>&serviceId=<SERVICE_ID>
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Query Param:
- size: Số lượng phần tử cần lấy (Thiết lập là 300)
- unitId: Mã đơn vị được chọn từ danh sách đơn vị ở 4.1
- serviceId: Mã dịch vụ được chon từ danh sách ở 4.3
Note: Đối với đơn vị có thông tin cấu
hình BOOK_SERVICE là TRUE thì thông tin
Request_param sẽ có thêm cụm &serviceId=<SERVICE_ID>. Ngược lại truyền rỗng.
Nhân viên được phép đặt lịch có Allow_Booking là 1, giá
trị khác không cho đặt lịch
Chú ý: cần lọc dữ liệu với thông
tin Allow_Booking là 1 hoặc cần hiển thị phù hợp
- Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 300, "numOfElements": 1, "totalElements": 1, "totalPages": 1, "content": [ { "id": "5ef01bb6db565e0009911cb1", "firstName": "Nguyễn Văn Dũng", "lastName": null, "email": null, "phone": "+84888998767", "address": null, "gender": "M", "birthday": "1990-01-01", "brief": null, "allowBooking": 1 /// CHO PHÉP ĐẶT LỊCH VỚI ĐỐI TƯỢNG NÀY } ] } } |
Giao diện tham khảo:
4.5. API lấy danh sách Ngày thực hiện
Đây là bước bắt buộc phải sử dụng
- URL: http://<domain>/api/booking/appointment/beforeBook/getDatesCanBook
- Method: POST
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Request Body:
- unitId: Mã đơn vị được chọn từ danh sách đơn vị ở 4.1
- serviceId: Mã dịch vụ được chon từ danh sách ở 4.3. Trường hợp không có giá trị để chọn thì truyền null
- employeeId: Thông tin mã Người thực hiện, chọn ở 4.4. Trường hợp không có giá trị để chọn thì truyền null
Output:
{ "errorCode": 0, "errorMsg": "Success", "data": [ { "date": "2020-07-02", "status": 1 }, { "date": "2020-07-03", "status": 1 }, { "date": "2020-07-04", "status": 1 }, … ] } |
Giao diện tham khảo:
4.6. API lấy danh sách Giờ thực hiện
Đây là bước bắt buộc phải sử dụng
- URL: http://<domain>/api/booking/appointment/beforeBook/getTimeFramesCanBook/
- Method: POST
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Request Body:
- unitId: Mã đơn vị được chọn từ danh sách đơn vị ở 4.1
- serviceId: Mã dịch vụ được chon từ danh sách ở 4.3. Trường hợp không có giá trị để chọn thì truyền null
- employeeId: Thông tin mã Người thực hiện, chọn ở 4.4. Trường hợp không có giá trị để chọn thì truyền null
- date: Thông tin ngày thực hiện, chọn ở 4.5
Output:
{ "errorCode": 0, "errorMsg": "Success", "data": [ { "time": "13:00:00", "limitQuantity": 5, "usedQuantity": 0 }, { "time": "13:30:00", "limitQuantity": 5, "usedQuantity": 1 },.. ] } |
Giao diện tham khảo:
4.7. API Đặt hẹn
- URL: http://<domain>/api/booking/appointment/appointment/
- Method: POST
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Request Body:
- unit: Object mô tả thông tin đơn vị đã chọn
- unitId: Mã đơn vị, ở 4.1
- service: Object mô tả thông tin dịch vụ đã chọn
- serviceId: Mã Dịch vụ, ở 4.3.
- employee: Object mô tả thông tin dịch vụ đã chọn
- employeeId: Mã Người thực hiện ở 4.4.
- arrivalDate: Ngày thực hiện, ở 4.5
- arrivalTime: Giờ thực hiện, ở 4.6
- userId: Thông tin mã người dùng, lấy thông tin từ Bước đăng nhập
- customer: Object mô tả thông tin Người đặt hẹn (Lấy thông tin người dùng đăng nhập,cho phép sửa)
- firstName: Họ tên
- phone: Số điện thoại
- email: Địa chỉ email
- gender: Giới tính
- birthday: Ngày sinh
- address: Địa chỉ
- comment: Yêu cầu thực hiện (Không bắt buộc)
Ví dụ: { "userId": "5e8feda976d6aa00098322b0", "unit": { "id": "5eeb4bcdeabbf0000ad9708e" }, "service": { "id": "5ed75d329a11790009183bbc" }, "employee": { "id": "5ef01bb6db565e0009911cb1" }, "customer": { "firstName": "Trần Tiến Đạt", "phone": "+84904101993", "email": null, "birthday": "2020-04-21", "gender": "F", "address": null }, "arrivalDate": "2020-07-09", "arrivalTime": "07:30:00", "comment": null }
|
Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "id": "5efd51fd48ba88000916631c", "rowStatus": 0, "rowStatusTst": 1593659901, "createdAt": 1593659901, "userId": "5e8feda976d6aa00098322b0", "customer": { "id": "5efb429bdcd6170009b2f317", "firstName": "Trần Tiến Đạt", "lastName": null, "email": null, "phone": "+849041", "address": null, "gender": "F", "birthday": "2020-04-21", "code": null, "identityCard": null, "healthInsurance": null, "socialInsurance": null }, "unit": { "id": "5eeb4bcdeabbf0000ad9708e", "name": "BHXH Huyện Bến Lức Tỉnh Long An", "code": "6ab", "address": "Số 20 Đường Lê Văn Vịnh, Thị trấn Bến Lức, Huyện Bến Lức, Long An", "phone": "+84901710" }, "service": { "id": "5ed75d329a11790009183bbc", "name": "Tiếp nhận hồ sơ" }, "employee": { "id": "5ef01bb6db565e0009911cb1", "firstName": "Nguyễn Văn Dũng", "lastName": null, "email": null, "phone": "+84888998767", "address": null, "gender": "M", "birthday": "1990-01-01", "brief": null, "yearsOfExperience": null }, "arrivalDate": "2020-07-09", "arrivalTime": "07:30:00", "approver": { "autoApprove": "true", "user": null }, "statusLogs": [ { "status": 0, "statusTst": 1593659901, "userId": null, "userName": null } ] } } |
Giao diện tham khảo:
4.8. API lấy danh sách Lịch hẹn đã đặt của người dùng
- URL: http://<domain>/api/booking/appointment/ /appointment/?size=300&rowStatusList=0,10,20,21,22,23,24,30,40,41,42,43&sort=desc&userId=<USER_ID>
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Query Param:
- userId: Thông tin mã người dùng, lấy thông tin ở bước đăng nhập
Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 300, "numOfElements": 5, "totalElements": 5, "totalPages": 1, "content": [ { "id": "5efc77a748ba880009166316", "rowStatus": 10, "rowStatusTst": 1593604007, "createdAt": 1593604007, "userId": "5e8feda976d6aa00098322b0", "customer": { "id": "5efb429bdcd6170009b2f317", "firstName": "Trần Tiến Đạt", "lastName": null, "email": null, "phone": "+84904101993", "address": null, "gender": "F", "birthday": "2020-04-21", "code": null, "identityCard": null, "healthInsurance": null, "socialInsurance": null }, "unit": { "id": "5eeb4bcdeabbf0000ad9708e", "name": "BHXH Huyện Bến Lức Tỉnh Long An", "code": "6ab", "address": "Số 20 Đường Lê Văn Vịnh, Thị trấn Bến Lức, Huyện Bến Lức, Long An", "phone": "+84901710312" }, "service": { "id": "5ed75d329a11790009183bbc", "name": "Tiếp nhận hồ sơ" }, "arrivalDate": "2020-07-30", "arrivalTime": "07:30:00", "comment": "Không có yêu cầu", }, … ] } } |
4.9. API lấy thông tin chi tiết lịch hẹn
- URL: http://<domain>/api/booking/appointment/appointment/<APPOINTMENT_ID>
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Path:
- <APPOINTMENT_ID>: Thông tin mã lịch hẹn, chọn ở Bước 3.9
Output:
{ "errorCode": 0, "errorMsg": "Success", "data": { "id": "5efc77a748ba880009166316", "rowStatus": 10, "rowStatusTst": 1593604007, "createdAt": 1593604007, "userId": "5e8feda976d6aa00098322b0", "customer": { "id": "5efb429bdcd6170009b2f317", "firstName": "Trần Tiến Đạt", "lastName": null, "email": null, "phone": "+84904101993", "address": null, "gender": "F", "birthday": "2020-04-21", "code": null, "identityCard": null, "healthInsurance": null, "socialInsurance": null }, "unit": { "id": "5eeb4bcdeabbf0000ad9708e", "name": "BHXH Huyện Bến Lức Tỉnh Long An", "code": "6ab", "address": "Số 20 Đường Lê Văn Vịnh, Thị trấn Bến Lức, Huyện Bến Lức, Long An", "phone": "+84901710312" }, "service": { "id": "5ed75d329a11790009183bbc", "name": "Tiếp nhận hồ sơ" }, "arrivalDate": "2020-07-30", "arrivalTime": "07:30:00", "comment": "Không có yêu cầu", } } |
5. Quản lý lịch hẹn
5.1. API lấy danh sách lịch hẹn của đơn vị
Input:
- URL: <domain-name>/kong/booking/appointment/appointment
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
Trường hợp tìm có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 1, "numOfElements": 1, "totalElements": 3, "totalPages": 3, "content": [ { "id": "5f851583aa097e00092df0ea", "rowStatus": 20, "rowStatusTst": 1602557428, "createdAt": 1602557315, "userId": "5f7be484275364000993619a", "customer": { "id": "5f1e752b444b420009ed7273", "firstName": "Thái", "phone": "+84329944542", "address": "Huyện Chơn Thành, Bình Phước", "gender": "M", "birthday": "2020-10-01" }, "unit": { "id": "5f30ecafb0f81d0009dd5f1d", "name": "BỆNH VIỆN DEMO", "code": "hhb", "address": "Phường 06, Quận 3, Hồ Chí Minh", "phone": "+84915420212" }, "service": { "id": "5daff3b2685c313b202aa240", "name": "Khoa Nội Thần Kinh" }, "employee": { "id": "5f30f44ab0f81d0009dd5f31", "firstName": "Tuấn Vỹ", "email": "tuanvy.ma88@gmail.com", "phone": "+84773791094", "address": "15 An Bình", "gender": "M", "birthday": "1990-01-01", "brief": "Đã có hơn 8 năm kinh nghiệm.", "yearsOfExperience": 5, "userId": "5f20eaf25e0bf30009a95106" }, "arrivalDate": "2020-10-13", "arrivalTime": "10:00:00", "comment": "test", "ticketNumber": 1, "approver": { "autoApprove": "true", "user": { "id": "5f7be484275364000993619a", "firstName": "Thai", "email": "phthai222@gmail.com", "address": "Huyện Bàu Bàng, Bình Dương", "gender": "M", "birthday": "2020-10-01" } }, "statusLogs": [ { "status": 0, "statusTst": 1602557315 }, { "status": 10, "statusTst": 1602557315 }, { "status": 20, "statusTst": 1602557428, "userId": "5f7be484275364000993619a", "userName": "Thai" } ] } ] } } |
Trường hợp tìm không có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 10, "numOfElements": 0, "totalElements": 0, "totalPages": 0, "content": [] } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp tìm có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về |
id |
string |
Mã lịch hẹn |
rowStatus |
integer |
Trạng thái của lịch hẹn |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
userId |
string |
Mã người dùng đặt lịch |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.phone |
string |
Số điện thoại khách hàng |
customer.address |
string |
Địa chỉ khách hàng |
customer.gender |
string |
Giới tính |
customer.birthday |
string |
Ngày sinh của khách hàng |
string |
Mã đơn vị |
|
string |
Tên đơn vị |
|
unit.code |
string |
Mã code đơn vị |
unit.address |
string |
Địa chỉ của đơn vị |
unit.phone |
string |
Số điện thoại của đơn vị (bắt đầu bằng ký tự +84) |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
string |
Mã nhân viên |
|
employee.firstName |
string |
Tên nhân viên |
employee.email |
string |
Email nhân viên |
employee.phone |
string |
Số điện thoại nhân viên (bắt đầu bằng ký tự +84) |
employee.address |
string |
Địa chỉ nhân viên |
employee.gender |
string |
Giới tính |
employee.birthday |
string |
Ngày sinh |
employee.brief |
string |
Mô tả nhân viên |
employee.yearsOfExperience |
integer |
Số năm kinh nghiệm |
employee.userId |
string |
Mã người dùng liên kết nhân viên |
arrivalDate |
string |
Ngày hẹn |
arrivalTime |
string |
Giờ hẹn |
comment |
string |
Chú thích lịch hẹn |
ticketNumber |
integer |
Số thứ tự phiếu |
approver.autoApprove |
boolean |
Duyệt tự động hay không |
string |
Mã người duyệt |
|
approver.user.firstName |
string |
Tên người duyệt |
approver.user.email |
string |
Email người duyệt |
approver.user.address |
string |
Địa chỉ người duyệt |
approver.user.gender |
string |
Giới tính người duyệt |
approver.user.birthday |
string |
Ngày sinh |
statusLogs.status |
integer |
Trạng thái |
statusLogs.statusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
Trường hợp tìm không có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về. Không có dữ liệu thì trả về rỗng. |
5.2. API tạo lịch hẹn
Input:
- URL:<domain-name>/kong/booking/appointment/appointment?isBookOtherPerson=true
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ |
Trong đó:
Key |
Type |
Mô tả |
arrivalDateFrom |
string |
Ngày bắt đầu đặt lịch |
arrivalTimeFrom |
string |
Giờ bắt đầu đặt lịch |
serviceType |
string |
Hình thức lịch hẹn: 1: Đến nơi tiếp nhận |
customer.firstName |
string |
Tên người đặt hẹn |
customer.birthday | string | Ngày sinh |
customer.gender | string | Giới tính. F: Nam, M: Nữ |
customer.phone | string |
Số điện thoại theo dạng quốc tế (ví dụ: +84987654321) |
unit.id | string | Mã đơn vị đặt lịch |
employee.id | string | Mã người thực hiện/bác sĩ |
string |
Mã dịch vụ |
Output: json
Trường hợp thành công:
|
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
|
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
|
errorMsg |
string |
Thông báo lỗi |
|
data |
string json |
Thông tin kết quả của API |
|
id |
string |
Mã vé tiếp nhận |
|
rowStatus |
integer |
Trạng thái vé tiếp nhận |
|
arrivalDate |
string |
Ngày hẹn (yyyy-MM-dd) |
|
arrivalTime |
string |
Giờ hẹn (hh:mm:ss) |
|
comment |
string |
Chú thích lịch hẹn |
|
ticketNumber |
Number |
Số của vé tiếp nhận |
|
rowStatusTst |
integer |
Thời gian cập nhật |
|
createdAt |
integer |
Thời gian tạo |
|
customer |
string |
Khách hàng |
|
string |
Mã khách hàng |
|
|
customer.firstName |
string |
Tên khách hàng |
|
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
|
customer.phone |
string |
Số điện thoại (bắt đầu bằng ký tự +84) |
|
customer.birthday |
string |
Ngày sinh (yyyy-MM-dd) |
|
unit |
string json |
Đơn vị |
|
string |
Mã đơn vị |
|
|
service |
string json |
Dịch vụ |
|
string |
Mã dịch vụ |
|
|
string |
Tên dịch vụ |
|
|
employee |
string json |
Nhân viên |
|
string |
Mã nhân viên |
|
|
appointmentId |
string |
Mã lịch hẹn |
|
type |
string |
Loại phiếu (0: lấy tại chỗ, 1: đặt lịch trước) |
|
printedAt |
integer |
Thời điểm in vé |
|
ticketCheckedInStatusLogs |
list string json |
Nhật ký trạng thái của vé |
|
ticketCheckedInStatusLogs.status |
integer |
Trạng thái vé |
|
ticketCheckedInStatusLogs. statusTst |
integer |
Thời điểm cập nhật trạng thái vé |
|
plevel |
Number |
Độ ưu tiên của vé + 1: Ưu tiên, VIP + 2: Đặt lịch + 3: Vé thường |
|
remainTicket |
string |
Số vé còn lại để tiếp nhận |
|
estimatedTime |
string |
Thời gian dự kiến tiếp nhận (hh:mm) |
|
averageProcessTime |
string |
Thời gian xử lý trung bình |
|
averageWaitTime |
string |
Thời gian chờ trung bình |
|
Trường hợp không thành công |
|||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
|
errorMsg |
string |
Thông báo lỗi |
|
data |
string |
Thông tin kết quả của API |
|
5.3. API lấy chi tiết lịch hẹn
Input:
- URL: <domain-name>/kong/booking/appointment/appointment/{id}
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
Trường hợp tìm có dữ liệu:
{ "errorCode": 0, "errorMsg": "Success", "data": {
"id": "5f851583aa097e00092df0ea", "rowStatus": 20, "rowStatusTst": 1602557428, "createdAt": 1602557315, "userId": "5f7be484275364000993619a", "customer": { "id": "5f1e752b444b420009ed7273", "firstName": "Thái", "phone": "+84329944542", "address": "123, Xã Minh Thành, Huyện Chơn Thành", "gender": "M", "birthday": "2020-10-01" }, "unit": { "id": "5f30ecafb0f81d0009dd5f1d", "name": "BỆNH VIỆN DEMO", "code": "hhb", "address": "Phường 06, Quận 3, Hồ Chí Minh", "phone": "+84915420212" }, "service": { "id": "5daff3b2685c313b202aa240", "name": "Khoa Nội Thần Kinh" }, "employee": { "id": "5f30f44ab0f81d0009dd5f31", "firstName": "Tuấn Vỹ", "email": "tuanvy.ma88@gmail.com", "phone": "+84773791094", "address": "15 An Bình", "gender": "M", "birthday": "1990-01-01", "brief": "Đã có hơn 8 năm kinh nghiệm.” "yearsOfExperience": 5, "userId": "5f20eaf25e0bf30009a95106" }, "arrivalDate": "2020-10-13", "arrivalTime": "10:00:00", "comment": "test", "ticketNumber": 1, "approver": { "autoApprove": "true", "user": { "id": "5f7be484275364000993619a", "firstName": "Thai", "email": "phthai222@gmail.com", "address": "Huyện Bàu Bàng, Bình Dương", "gender": "M", "birthday": "2020-10-01" } }, "statusLogs": [ { "status": 0, "statusTst": 1602557315 }, { "status": 10, "statusTst": 1602557315 }, { "status": 20, "statusTst": 1602557428, "userId": "5f7be484275364000993619a", "userName": "Thai" } ] } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã lịch hẹn |
rowStatus |
integer |
Trạng thái của lịch hẹn |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
userId |
string |
Mã người dùng đặt lịch |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.phone |
string |
Số điện thoại khách hàng |
customer.address |
string |
Địa chỉ khách hàng |
customer.gender |
string |
Giới tính |
customer.birthday |
string |
Ngày sinh của khách hàng |
string |
Mã đơn vị |
|
string |
Tên đơn vị |
|
unit.code |
string |
Mã code đơn vị |
unit.address |
string |
Địa chỉ của đơn vị |
unit.phone |
string |
Số điện thoại của đơn vị (bắt đầu bằng ký tự +84) |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
string |
Mã nhân viên |
|
employee.firstName |
string |
Tên nhân viên |
employee.email |
string |
Email nhân viên |
employee.phone |
string |
Số điện thoại nhân viên (bắt đầu bằng ký tự +84) |
employee.address |
string |
Địa chỉ nhân viên |
employee.gender |
string |
Giới tính |
employee.birthday |
string |
Ngày sinh |
employee.brief |
string |
Mô tả nhân viên |
employee.yearsOfExperience |
integer |
Số năm kinh nghiệm |
employee.userId |
string |
Mã người dùng liên kết nhân viên |
arrivalDate |
string |
Ngày hẹn |
arrivalTime |
string |
Giờ hẹn |
comment |
string |
Chú thích lịch hẹn |
ticketNumber |
integer |
Số thứ tự phiếu |
approver.autoApprove |
boolean |
Duyệt tự động hay không |
string |
Mã người duyệt |
|
approver.user.firstName |
string |
Tên người duyệt |
approver.user.email |
string |
Email người duyệt |
approver.user.address |
string |
Địa chỉ người duyệt |
approver.user.gender |
string |
Giới tính người duyệt |
approver.user.birthday |
string |
Ngày sinh |
statusLogs.status |
integer |
Trạng thái |
statusLogs.statusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
5.4. API lấy vé tiếp nhận từ lịch hẹn
Input:
- URL: <domain-name>/kong/booking/queue/ticketCheckedIn
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "appointmentId": "60a61290a6764d001d916ff8", "unit": { "id": "5f7bd0c7f0be200009e99a84" }, "service": { "id": "5ebb9380379b59000941b8d9", "name": "Khai bổ sung hồ sơ khai thuế" }, "customer": { "birthday": "2021-05-01", "firstName": "thai", "gender": "M", "phone": "+84329944542" } } |
Trong đó:
Key |
Type |
Mô tả |
appointmentId |
string |
Mã lịch hẹn |
unit |
string json |
Đơn vị |
string |
Mã đơn vị |
|
service |
string json |
Dịch vụ |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
customer |
string |
Khách hàng |
customer.birthday |
string |
Ngày sinh (yyyy-MM-dd) |
customer.firstName |
string |
Tên khách hàng |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
customer.phone |
string |
Số điện thoại (bắt đầu bằng ký tự +84) |
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": { "id": "60a614ee9c568e0015407061", "tags": [ "2000" ], "rowStatus": 20, "arrivalDate": "2021-05-20", "arrivalTime": "15:00:00", "comment": "dfsdf", "ticketNumber": 2000, "rowStatusTst": 1621497070, "createdAt": 1621497070, "customer": { "id": "5f1e752b444b420009ed7273", "firstName": "thai", "phone": "+84329944542", "gender": "M", "birthday": "2021-05-01" }, "unit": { "id": "5f7bd0c7f0be200009e99a84" }, "service": { "id": "5ebb9380379b59000941b8d9", "name": "Khai bổ sung hồ sơ khai thuế" }, "employee": { "id": "6077aaaf58ce802454abd8df" }, "appointmentId": "60a61290a6764d001d916ff8", "type": 1, "printedAt": 1621497070, "ticketCheckedInStatusLogs": [ { "status": 20, "statusTst": 1621497070 } ], "plevel": 2, "remainTicket": "0", "estimatedTime": "14:51", "averageProcessTime": "78", "averageWaitTime": "36" } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
|
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
|
errorMsg |
string |
Thông báo lỗi |
|
data |
string json |
Thông tin kết quả của API |
|
id |
string |
Mã vé tiếp nhận |
|
rowStatus |
integer |
Trạng thái vé tiếp nhận |
|
arrivalDate |
string |
Ngày hẹn (yyyy-MM-dd) |
|
arrivalTime |
string |
Giờ hẹn (hh:mm:ss) |
|
comment |
string |
Chú thích lịch hẹn |
|
ticketNumber |
Number |
Số của vé tiếp nhận |
|
rowStatusTst |
integer |
Thời gian cập nhật |
|
createdAt |
integer |
Thời gian tạo |
|
customer |
string |
Khách hàng |
|
string |
Mã khách hàng |
|
|
customer.firstName |
string |
Tên khách hàng |
|
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
|
customer.phone |
string |
Số điện thoại (bắt đầu bằng ký tự +84) |
|
customer.birthday |
string |
Ngày sinh (yyyy-MM-dd) |
|
unit |
string json |
Đơn vị |
|
string |
Mã đơn vị |
|
|
service |
string json |
Dịch vụ |
|
string |
Mã dịch vụ |
|
|
string |
Tên dịch vụ |
|
|
employee |
string json |
Nhân viên |
|
string |
Mã nhân viên |
|
|
appointmentId |
string |
Mã lịch hẹn |
|
type |
string |
Loại phiếu (0: lấy tại chỗ, 1: đặt lịch trước) |
|
printedAt |
integer |
Thời điểm in vé |
|
ticketCheckedInStatusLogs |
list string json |
Nhật ký trạng thái của vé |
|
ticketCheckedInStatusLogs.status |
integer |
Trạng thái vé |
|
ticketCheckedInStatusLogs. statusTst |
integer |
Thời điểm cập nhật trạng thái vé |
|
plevel |
Number |
Độ ưu tiên của vé + 1: Ưu tiên, VIP + 2: Đặt lịch + 3: Vé hẹn + 9: Vé thường |
|
remainTicket |
string |
Số vé còn lại để tiếp nhận |
|
estimatedTime |
string |
Thời gian dự kiến tiếp nhận (hh:mm) |
|
averageProcessTime |
string |
Thời gian xử lý trung bình |
|
averageWaitTime |
string |
Thời gian chờ trung bình |
|
Trường hợp không thành công |
|||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
|
errorMsg |
string |
Thông báo lỗi |
|
data |
string |
Thông tin kết quả của API |
|
6. Lấy vé tiếp nhận dịch vụ
Vé tiếp nhận dịch vụ được thiết kế cho các nghiệp vụ có thời gian ngắn. Phòng hoặc quầy tiếp nhận có thể cùng lúc tiếp nhận nhiều dịch vụ khác nhau, đồng thời một dịch vụ cũng có thể được tiếp nhận ở nhiều quầy. Hệ thống sẽ tự phân tích vé tiếp nhận để đẩy vào quầy phù hợp sao cho đáp ứng thứ tự trước sau, vé đăt lịch và ưu tiên.
Lưu ý: Mỗi dịch vụ sẽ có một khoảng số khác nhau. Có thể nhảy số giữa mỗi dịch vụ để phục vụ đăt lịch, ưu tiên..
6.1. API tạo vé tiếp nhận
Input:
- URL: <domain-name>/kong/booking/queue/ticketCheckedIn
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "ticketCheckedInId": "5daff3b2685c313b202aa24l", "service": { "id": "5daff3b2685c313b202aa24a", "name": "Khoa Nội Tim Mạch" }, "customer": { "firstName": "Phạm Hồng Thái", "gender": "M", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "healthInsuranceObj": { "code": "TA4727935146795|4e677579e1bb856 "insuranceObject": "TA", "insuranceNumber": "TA47209099945423", "primaryHealthcareUnitId": "79-040", "primaryHealthcareUnitName": "Bệnh viện Đa Khoa Bưu Điện", "validDateFrom": "2019-01-01", "validDateTo": "2023-01-01" } } } |
Trong đó:
Key |
Type |
Mô tả |
ticketCheckedInId |
string |
Mã vé tiếp nhận trước đó. Chú ý: Trường hợp vé mới ticketCheckedInId = null |
appointmentId |
string |
Mã lịch hẹn ( nếu đã đặt hẹn) Chú ý: Trường hợp vé vãng lai appointmentId = null |
service |
string json |
Dịch vụ |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
customer |
string |
Khách hàng |
customer.firstName |
string |
Tên khách hàng |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
customer.email |
string |
Địa chỉ email |
customer.phone |
string |
Số điện thoại (bắt đầu bằng ký tự +84) |
healthInsuranceObj.code |
string |
Mã QR được đọc từ bảo hiểm y tế |
healthInsuranceObj. insuranceObject |
string |
Đối tượng bảo hiểm y tế |
healthInsuranceObj. insuranceNumber |
String |
Mã bảo hiểm y tế |
healthInsuranceObj. primaryHealthcareUnitId |
string |
Mã đơn vị đăng ký khám chữa bệnh |
healthInsuranceObj. primaryHealthcareUnitName |
string |
Tên đơn vị đăng ký khám chữa bệnh |
healthInsuranceObj. validDateFrom |
string |
Ngày bắt đầu hiệu lực của thẻ BHYT |
healthInsuranceObj. validDateTo |
string |
Ngày hết bạn của thẻ BHYT |
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": { "id": "606d630901efc40009f62263", "remainTicket": 10, "estimatedTime": 30, "ticketNumber": 5201, "customer": { "id": "606d6308b1f8400009085b55", "firstName": "Phạm Hồng Thái", "gender": "M", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "birthday": null, "identityCard": null, }, "service": { "id": "5daff3b2685c313b202aa231", "name": "Thu tiền viện phí" }, "plevel": 3, } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
remainTicket |
Number |
Số vé còn lại để tiếp nhận |
estimatedTime |
Number |
Thời gian chờ còn lại (phút) |
ticketNumber |
Number |
Số của vé tiếp nhận |
service |
string json |
Dịch vụ |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
customer |
string |
Khách hàng |
customer.firstName |
string |
Tên khách hàng |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
customer.email |
string |
Địa chỉ email |
customer.phone |
string |
Số điện thoại (bắt đầu bằng ký tự +84) |
plevel |
Number |
Độ ưu tiên của vé + 1: Ưu tiên, VIP + 2: Đặt lịch + 3: Vé thường |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
Mẫu vé tiếp nhận vào quầy:
Tên dịch vụ:service.name
Còn chờ: remainTicket
Thời gian chờ dự kiến: now()+estimatedTime
Số vé: ticketNumber
Loại vé: plevel
Số điện thoại: customer.phone
Thông tin trên QR Code: printTicket::<id>
6.2. API gọi số tiếp nhận
- Gọi số tiếp theo (không truyền trường ticketNumber vào request body)
- Gọi lại số đã được gọi trước đó. (truyền số đã gọi vào trường ticketNumber vào request body)
Input:
- URL: <domain-name>/kong/booking/queue/queueCheckedIn/v2/call
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{
"unitId": "5eba6116584cbf0009bfd017",
"counterId": "5eba6815584cbf0009bfd026",
"ticketNumber": 5001
}
Trong đó:
Key |
Type |
Mô tả |
unitId |
string |
Mã đơn vị |
counterId |
string |
Mã quầy |
ticketNumber |
integer |
Số cần gọi lại. Nếu ticketNumber = null, API sẽ tự động trả về số tiếp theo. |
Output: json
Trường hợp thành công:
{ "code": 0, "msg": "Thành công", "data": { "id": "5f97df481ddde5000955cb63", "rowStatus": 21, "arrivalDate": "2020-10-27", "arrivalTime": "15:30:00", "ticketNumber": 2000, "rowStatusTst": 1603788616, "createdAt": 1603788616, "customer": { "id": "5f97ba8ec3077000096971ea", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "gender": "M" }, "unit": { "id": "5eba6116584cbf0009bfd017", "name": "Bệnh viện Đa Khoa Bưu Điện", "code": "BVDKBD", "address": "Lô B9 Thành Thái, Phường 15, Quận 10, Hồ Chí Minh", "phone": "+842838649834" }, "service": { "id": "5daff3b2685c313b202aa24a", "name": "Khoa Nội Tim Mạch", "description": "Khoa Nội Tim Mạch" }, "employee": { "id": "5ebba699379b59000941b8e7", "firstName": "Bs. Nguyễn Thị Hậu", "phone": "+84945454545", "gender": "M", "birthday": "1990-01-01" }, "counter": { "id": "5eba6815584cbf0009bfd026" }, "appointmentId": "5f97ca53c3077000096971ee", "type": 1, "printedAt": 1603790425, "ticketCheckedInStatusLogs": [ { "status": 20, "statusTst": 1603788616 } ], "plevel": 2 } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé tiếp nhận |
rowStatus |
integer |
Trạng thái của vé tiếp nhận. Ví dụ: 20 : Duyệt |
arrivalDate |
string |
Ngày hẹn (yyyy-MM-dd) |
arrivalTime |
string |
Giờ hẹn (HH:mm:ss) |
ticketNumber |
integer |
Số thứ tự của vé tiếp nhận |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại cua khách hàng (bắt đầu bằng ký tự +84) |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
unit |
string json |
Đơn vị |
string |
Mã đơn vị |
|
string |
Tên đơn vị |
|
unit.code |
string |
Mã code đơn vị |
unit.address |
string |
Địa chỉ đơn vị |
unit.phone |
string |
Số điện thoại đơn vị (bắt đầu bằng ký tự +84) |
service |
string json |
Dịch vụ |
string |
Mã dịch vụ |
|
string |
Tên dịch vụ |
|
service.description |
string |
Mô tả dịch vụ |
employee |
string json |
Nhân viên |
string |
Mã nhân viên |
|
employee.firstName |
string |
Tên nhân viên |
employee.phone |
string |
Số điện thoại nhân viên (bắt đầu bằng ký tự +84) |
employee.gender |
string |
Giới tính (M: nam, F: nữ) |
employee.birthday |
string |
Ngày sinh (yyyy-MM-dd) |
counter |
string json |
Thông tin quầy |
string |
Mã quầy |
|
appointmentId |
string |
Mã lịch hẹn |
type |
string |
Loại vé (0: lấy tại chỗ, 1: đặt trước) |
printedAt |
long |
Thời điểm in vé tiếp nhận (định dạng timestamp) |
ticketCheckedInStatusLogs |
list |
Nhật ký trạng thái của vé tiếp nhận |
ticketCheckedInStatusLogs.status |
integer |
Trạng thái vé tiếp nhận |
ticketCheckedInStatusLogs.statusTst |
long |
Thời điểm thay đổi trạng thái (định dạng timestamp) |
plevel |
integer |
Độ ưu tiên của vé |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
6.3. API gọi số tiếp nhận (HIS L2)
- Gọi số tiếp theo (không truyền trường ticketNumber vào request body)
- Gọi lại số đã được gọi trước đó. (truyền số đã gọi vào trường ticketNumber vào request body)
Input:
- URL: <domain-name>/kong/booking/queue/queueCheckedIn/hisl2/call
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{
"hospitalId": "79023",
" counterHisL2Id": "12345",
"ticketNumber": "5001"
}
Trong đó:
Key |
Type |
Mô tả |
hospitalId |
string |
Mã bệnh viện theo Quyết định 384/QĐ-BYT. Ví dụ: 79023 |
counterHisL2Id |
string |
ID quầy/ phòng trên HIS L2 |
ticketNumber |
string |
Số cần gọi lại. Nếu ticketNumber = null, API sẽ tự động trả về số tiếp theo. |
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Thành công", "data": { "id": "5f97df481ddde5000955cb63", "ticketNumber": 2000, "customer": { "id": "5f97ba8ec3077000096971ea", "idHIS ": "BN123456", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "genderNumber": 1, "birthday": "01/02/1998", "socialInsurance": { "insuranceNumber": "TA4727935146598", "primaryHealthcareUnitId": "79 - 040", "primaryHealthcareUnitName": "Bệnh viện đa khoa bưu điện", "validDateFrom": "2019-01-01", "validDateTo": "2023-01-01", "data": “TA4727935146795|4e677579e1bb856e205669e1bb8774204 }, "addressInfo": { "province": { "provinceId": "89", "name": "An Giang", "idHisL2": "805" } }, "ethnicInfo": { "fullCode": "25", "name": "Kinh", "idHisL2": "25" }, "countriesInfo": { "fullCode": "0", "name": "Việt Nam", "idHisL2": "0" }, "personalCards": [ { "type": "CMND", "isFront": true }, { "type": "CMND", "isFront": false } ] }, "plevel": 2 } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé tiếp nhận |
ticketNumber |
integer |
Số thứ tự của vé tiếp nhận |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng HIS L2 lấy tên này để check BHYT khi có field customer.socialInsurance |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại của khách hàng (bắt đầu bằng ký tự +84) |
customer.genderNumber |
string |
Giới tính (1: Nam, 2: Nữ) |
customer.birthday |
string |
Ngày sinh (dd/MM/yyyy) HIS L2 lấy tên này để check BHYT khi có field customer.socialInsurance |
customer.socialInsurance |
string json |
Thông tin bảo hiểm xã hội |
customer.socialInsurance.data |
string |
Mã QR code quét từ thẻ bảo hiểm Có thể không có khi không quét được, hoặc đặt lịch trên app |
customer.socialInsurance.insuranceObject |
string |
Đối tượng bảo hiểm |
customer.socialInsurance.insuranceNumber |
string |
Số bảo hiểm HIS L2 lấy tên này để check BHYT |
customer.socialInsurance.primaryHealthcareUnitId |
string |
Mã đơn vị KCB |
customer.socialInsurance.primaryHealthcareUnitName |
string |
Tên đơn vị KCB |
customer.socialInsurance.validDateFrom |
string |
Ngày bắt đầu có hiệu lực |
customer.socialInsurance.validDateTo |
string |
Ngày kết thúc hiệu lực |
customer.addressInfo |
string json |
Thông tin địa chỉ |
customer.addressInfo.province |
string json |
Thông tin tỉnh |
customer.addressInfo.province.provinceId |
string |
Mã tỉnh |
string |
Tên tỉnh |
|
customer.addressInfo.province.idHisL2 |
string |
Mã tỉnh His L2 (DIAPHUONGID) |
customer.ethnicInfo |
string json |
Thông tin dân tộc |
customer.ethnicInfo.fullCode |
string |
Mã dân tộc |
string |
Tên dân tộc |
|
customer.ethnicInfo.idHisL2 |
string |
Mã dân tộc His L2 (DANTOCID) |
customer.countriesInfo |
string |
Thông tin quốc tịch |
customer.countriesInfo.fullCode |
string |
Mã quốc tịch |
string |
Tên quốc tịch |
|
customer.countriesInfo.idHisL2 |
string |
Mã quốc tịch His L2 (DIAPHUONGID) |
customer.personalCards |
list string json |
Danh sách ảnh đính kèm |
customer.personalCards.type |
string |
Loại ảnh (CMND, BHYT, …) |
customer.personalCards.url |
string |
Đường dẫn ảnh |
customer.personalCards.isFront |
boolean |
true: Mặt trước, false: Mặt sau |
plevel |
integer |
Độ ưu tiên của vé + 1: Ưu tiên, VIP + 2: Đặt lịch + 3: Vé hẹn + 9: Vé thường |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
6.4. API bắt đầu tiếp nhận
Xác nhận bắt đầu tiếp nhận
Input:
- URL: <domain-name>/kong/booking/queue/ticketCheckedIn/start
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "id": "5f97df481ddde5000955cb63", "hospitalId": "79023", "customer": { "id": "5f97ba8ec3077000096971ea", "idHIS": "BN123456" } } |
Trong đó:
Key |
Type |
Mô tả |
id |
string |
Mã vé tiếp nhận |
string |
Mã khách hàng |
|
customer.idHIS |
string |
Mã khách hàng/Bệnh nhân. Dùng để lấy lại thông tin nếu đã có trong hệ thống HIS L2 |
hospitalId |
string |
Mã bệnh viện theo Quyết định 384/QĐ-BYT. Ví dụ: 79023 |
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Thành công", "data": { "id": "5f97df481ddde5000955cb63", "ticketNumber": 2000, "customer": { "id": "5f97ba8ec3077000096971ea", "idHIS ": "BN123456", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "genderNumber": 1, "birthday": "1998-02-01", "socialInsurance": { "insuranceNumber": "TA4727935146598", "primaryHealthcareUnitId": "79 - 040", "primaryHealthcareUnitName": "Bệnh viện đa khoa bưu điện", "validDateFrom": "2019-01-01", "validDateTo": "2023-01-01", "data": “TA4727935146795|4e677579e1bb856e205669e1bb8774204e68c }, "addressInfo": { "province": { "provinceId": "89", "name": "An Giang", "idHisL2": "805" } }, "ethnicInfo": { "fullCode": "25", "name": "Kinh", "idHisL2": "25" }, "countriesInfo": { "fullCode": "0", "name": "Việt Nam", "idHisL2": "0" }, "personalCards": [ { "type": "CMND", "isFront": true }, { "type": "CMND", "isFront": false } ] }, "plevel": 2 } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé tiếp nhận |
ticketNumber |
integer |
Số thứ tự của vé tiếp nhận |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại của khách hàng (bắt đầu bằng ký tự +84) |
customer.genderNumber |
string |
Giới tính (1: Nam, 2: Nữ) |
customer.birthday |
string |
Ngày sinh (dd/MM/yyyy) |
customer.socialInsurance |
string json |
Thông tin bảo hiểm xã hội |
customer.socialInsurance.data |
string |
Mã QR code quét từ thẻ bảo hiểm Có thể không có khi không quét được, hoặc đặt lịch trên app |
customer.socialInsurance.insuranceObject |
string |
Đối tượng bảo hiểm |
customer.socialInsurance.insuranceNumber |
string |
Số bảo hiểm HIS L2 lấy tên này để check BHYT |
customer.socialInsurance.primaryHealthcareUnitId |
string |
Mã đơn vị KCB |
customer.socialInsurance.primaryHealthcareUnitName |
string |
Tên đơn vị KCB |
customer.socialInsurance.validDateFrom |
string |
Ngày bắt đầu có hiệu lực |
customer.socialInsurance.validDateTo |
string |
Ngày kết thúc hiệu lực |
customer.addressInfo |
string json |
Thông tin địa chỉ |
customer.addressInfo.province |
string json |
Thông tin tỉnh |
customer.addressInfo.province.provinceId |
string |
Mã tỉnh |
string |
Tên tỉnh |
|
customer.addressInfo.province.idHisL2 |
string |
Mã tỉnh His L2 (DIAPHUONGID) |
customer.ethnicInfo |
string json |
Thông tin dân tộc |
customer.ethnicInfo.fullCode |
string |
Mã dân tộc |
string |
Tên dân tộc |
|
customer.ethnicInfo.idHisL2 |
string |
Mã dân tộc His L2 (DANTOCID) |
customer.countriesInfo |
string |
Thông tin quốc tịch |
customer.countriesInfo.fullCode |
string |
Mã quốc tịch |
string |
Tên quốc tịch |
|
customer.countriesInfo.idHisL2 |
string |
Mã quốc tịch His L2 (DIAPHUONGID) |
customer.personalCards |
list string json |
Danh sách ảnh đính kèm |
customer.personalCards.type |
string |
Loại ảnh (CMND, BHYT, …) |
customer.personalCards.url |
string |
Đường dẫn ảnh |
customer.personalCards.isFront |
boolean |
true: Mặt trước, false: Mặt sau |
plevel |
integer |
Độ ưu tiên của vé + 1: Ưu tiên, VIP + 2: Đặt lịch + 3: Vé hẹn + 9: Vé thường |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
6.5. API hoàn thành tiếp nhận
Xác nhận đã hoàn thành vé tiếp nhận
Input:
- URL: <domain-name>/kong/booking/queue/ticketCheckedIn/complete
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "id": "5f97df481ddde5000955cb63", "hospitalId": "79023", "customer": { "id": "5f97ba8ec3077000096971ea", "idHIS ": "BN123456", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "genderNumber": 1, "birthday": "1998-02-01", "socialInsurance": { "insuranceNumber": "TA4727935146598", "primaryHealthcareUnitId": "79 - 040", "primaryHealthcareUnitName": "Bệnh viện đa khoa bưu điện", "validDateFrom": "2019-01-01", "validDateTo": "2023-01-01", "data": “TA4727935146795|4e677579e1bb856e205669e1bb87742 }, "addressInfo": { "province": { "provinceId": "89", "name": "An Giang", "idHisL2": "805" } }, "ethnicInfo": { "fullCode": "25", "name": "Kinh", "idHisL2": "25" }, "countriesInfo": { "fullCode": "0", "name": "Việt Nam", "idHisL2": "0" }, "personalCards": [ { "type": "CMND", "isFront": true }, { "type": "CMND", "isFront": false } ] } } |
Trong đó:
Key |
Type |
Mô tả |
id |
string |
Mã vé tiếp nhận |
hospitalId |
string |
Mã bệnh viện theo Quyết định 384/QĐ-BYT. Ví dụ: 79023 |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại của khách hàng (bắt đầu bằng ký tự +84) |
customer.genderNumber |
string |
Giới tính (1: Nam, 2: Nữ) |
customer.birthday |
string |
Ngày sinh (yyyy-MM-dd) |
customer.socialInsurance |
string json |
Thông tin bảo hiểm xã hội |
customer.socialInsurance.data |
string |
Mã QR code quét từ thẻ bảo hiểm |
customer.socialInsurance.insuranceObject |
string |
Đối tượng bảo hiểm |
customer.socialInsurance.insuranceNumber |
string |
Số bảo hiểm |
customer.socialInsurance.primaryHealthcareUnitId |
string |
Mã đơn vị KCB |
customer.socialInsurance.primaryHealthcareUnitName |
string |
Tên đơn vị KCB |
customer.socialInsurance.validDateFrom |
string |
Ngày bắt đầu có hiệu lực |
customer.socialInsurance.validDateTo |
string |
Ngày kết thúc hiệu lực |
customer.addressInfo |
string json |
Thông tin địa chỉ |
customer.addressInfo.province |
string json |
Thông tin tỉnh |
customer.addressInfo.province.provinceId |
string |
Mã tỉnh |
string |
Tên tỉnh |
|
customer.addressInfo.province.idHisL2 |
string |
Mã tỉnh His L2 (DIAPHUONGID) |
customer.ethnicInfo |
string json |
Thông tin dân tộc |
customer.ethnicInfo.fullCode |
string |
Mã dân tộc |
string |
Tên dân tộc |
|
customer.ethnicInfo.idHisL2 |
string |
Mã dân tộc His L2 (DANTOCID) |
customer.countriesInfo |
string |
Thông tin quốc tịch |
customer.countriesInfo.fullCode |
string |
Mã quốc tịch |
string |
Tên quốc tịch |
|
customer.countriesInfo.idHisL2 |
string |
Mã quốc tịch His L2 (DIAPHUONGID) |
customer.personalCards |
list string json |
Danh sách ảnh đính kèm |
customer.personalCards.type |
string |
Loại ảnh (CMND, BHYT, …) |
customer.personalCards.url |
string |
Đường dẫn ảnh |
customer.personalCards.isFront |
boolean |
true: Mặt trước, false: Mặt sau |
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Thành công", "data": { "id": "5f97df481ddde5000955cb63", "ticketNumber": 2000, "customer": { "id": "5f97ba8ec3077000096971ea", "idHIS ": "BN123456", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "genderNumber": 1, "birthday": "1998-02-01", "socialInsurance": { "insuranceNumber": "TA4727935146598", "primaryHealthcareUnitId": "79 - 040", "primaryHealthcareUnitName": "Bệnh viện đa khoa bưu điện", "validDateFrom": "2019-01-01", "validDateTo": "2023-01-01", "data": “TA4727935146795|4e677579e1bb856e205669e1bb8774204e68 }, "addressInfo": { "province": { "provinceId": "89", "name": "An Giang", "idHisL2": "805" } }, "ethnicInfo": { "fullCode": "25", "name": "Kinh", "idHisL2": "25" }, "countriesInfo": { "fullCode": "0", "name": "Việt Nam", "idHisL2": "0" }, "personalCards": [ { "type": "CMND", "isFront": true }, { "type": "CMND", "isFront": false } ] }, "plevel": 2 } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé tiếp nhận |
ticketNumber |
integer |
Số thứ tự của vé tiếp nhận |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại của khách hàng (bắt đầu bằng ký tự +84) |
customer.genderNumber |
string |
Giới tính (1: Nam, 2: Nữ) |
customer.birthday |
string |
Ngày sinh (dd/MM/yyyy) |
customer.socialInsurance |
string json |
Thông tin bảo hiểm xã hội |
customer.socialInsurance.data |
string |
Mã QR code quét từ thẻ bảo hiểm Có thể không có khi không quét được, hoặc đặt lịch trên app |
customer.socialInsurance.insuranceObject |
string |
Đối tượng bảo hiểm |
customer.socialInsurance.insuranceNumber |
string |
Số bảo hiểm HIS L2 lấy tên này để check BHYT |
customer.socialInsurance.primaryHealthcareUnitId |
string |
Mã đơn vị KCB |
customer.socialInsurance.primaryHealthcareUnitName |
string |
Tên đơn vị KCB |
customer.socialInsurance.validDateFrom |
string |
Ngày bắt đầu có hiệu lực |
customer.socialInsurance.validDateTo |
string |
Ngày kết thúc hiệu lực |
customer.addressInfo |
string json |
Thông tin địa chỉ |
customer.addressInfo.province |
string json |
Thông tin tỉnh |
customer.addressInfo.province.provinceId |
string |
Mã tỉnh |
string |
Tên tỉnh |
|
customer.addressInfo.province.idHisL2 |
string |
Mã tỉnh His L2 (DIAPHUONGID) |
customer.ethnicInfo |
string json |
Thông tin dân tộc |
customer.ethnicInfo.fullCode |
string |
Mã dân tộc |
string |
Tên dân tộc |
|
customer.ethnicInfo.idHisL2 |
string |
Mã dân tộc His L2 (DANTOCID) |
customer.countriesInfo |
string |
Thông tin quốc tịch |
customer.countriesInfo.fullCode |
string |
Mã quốc tịch |
string |
Tên quốc tịch |
|
customer.countriesInfo.idHisL2 |
string |
Mã quốc tịch His L2 (DIAPHUONGID) |
customer.personalCards |
list string json |
Danh sách ảnh đính kèm |
customer.personalCards.type |
string |
Loại ảnh (CMND, BHYT, …) |
customer.personalCards.url |
string |
Đường dẫn ảnh |
customer.personalCards.isFront |
boolean |
true: Mặt trước, false: Mặt sau |
plevel |
integer |
Độ ưu tiên của vé + 1: Ưu tiên, VIP + 2: Đặt lịch + 3: Vé hẹn + 9: Vé thường |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
7. Lấy vé thực hiện tại phòng
Vé thực hiện tại phòng được thiết kế cho các nghiệp vụ có thời gian dài. Vé thực hiện này chỉ đáp ứng thứ tự trước sau (FIFO) để khách hàng/bệnh nhân càm thấy được công bằng khi chờ thực hiện lâu.
Lưu ý: Vé mới hơn có số thứ tự lớn hơn. Một người có thể có nhiều vé thực hiện và các vé này sẽ thông tin đến ứng dụng của người dùng vé gần tới lượt.
7.1. API lấy danh sách phòng tiếp nhận và nhân sự
Input:
- URL: <domain-name>/kong/booking/unit/clinic/getAllWithEmpInfo? type=CLINIC&unitId=5f179eb55bddd900094e8ac3
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 10, "numOfElements": 1, "totalElements": 1, "totalPages": 1, "content": [ { "id": "5f28e0671f3c2d000aa0ac0b", "rowStatus": 1, "rowStatusTst": 1596514407, "createdAt": 1596514407, "type": "CLINIC", "code": "002", "name": "Phòng thực hiện", "description": "Phòng thực hiện", "unitId": "5f179eb55bddd900094e8ac3", "services": [ { "id": "5ed75d329a11790009183bbc", "rowStatus": 1, "rowStatusTst": 1603181284, "createdAt": 1591172402, "name": "Tiếp nhận hồ sơ", "description": "Ủy ban Nhân dân", "area": { "id": "5e7329e36c0444431c1aaeaa", "name": "Hành chính", "areaStatus": 1 } } ], "employees": [ { "id": "5f558ac09bae4d000ab6b1d1", "firstName": "Lưu Hữu Phước", "phone": "+84912341233", "address": "109 Cong Hoa, Tân Bình, HCMC", "gender": "M", "birthday": "1990-01-01" } ] } ] } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về |
id |
string |
Mã phòng |
rowStatus |
integer |
Trạng thái của phòng |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
type |
string |
Loại phòng (COUNTER: Quầy, CLINIC: phòng) |
code |
string |
Mã code phòng |
name |
string |
Tên phòng |
description |
string |
Mô tả phòng |
unitId |
string |
Mã đơn vị |
services |
string json |
Danh sách dịch vụ |
string |
Mã dịch vụ |
|
services.rowStatus |
integer |
Trạng thái phòng |
services.rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
services.createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
string |
Tên dịch vụ |
|
services.description |
string |
Mô tả dịch vụ |
string |
Mã lĩnh vực |
|
string |
Tên lĩnh vực |
|
services.area.areaStatus |
integer |
Trạng thái lĩnh vực |
employees |
string json |
Danh sách nhân viên |
string |
Mã nhân viên |
|
employees.firstName |
string |
Tên nhân viên |
employees.phone |
string |
Số điện thoại nhân viên |
employees.address |
string |
Địa chỉ nhân viên |
employees.gender |
string |
Giới tính nhân viên |
employees.birthday |
string |
Ngày sinh nhân viên |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
7.2. API tạo vé vào phòng
Input:
- URL: <domain-name>/kong/booking/queue/ticket
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "ticketCheckInId": "606d503101efc40009f6225c", "unitId": "5eba6116584cbf0009bfd017", "customer": { "id": "5f97ba8ec3077000096971ea", "idHIS": "BN123456" }, "employeeId": "5f27b92d1f3c2d000aa0abfc", "clinicId": "5f505af96ae1aa00096bc750" } |
Trong đó:
Key |
Type |
Mô tả |
ticketCheckInId |
string |
Mã vé tiếp nhận |
unitId |
string |
Mã đơn vị |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.idHIS |
string |
Mã id HIS |
employeeId |
string |
Mã nhân viên |
clinicId |
string |
Mã phòng |
Output: json
Trường hợp thành công:
{ "code": 0, "msg": "Thành công", "data": { "id": "5f98cbf71ddde5000955cb69", "rowStatus": 40, "arrivalDate": "2020-10-28", "ticketNumber": 1, "rowStatusTst": 1603849207, "createdAt": 1603849207, "customer": { "id": "5f97ba8ec3077000096971ea", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "gender": "M" }, "unitId": "5eba6116584cbf0009bfd017", "serviceId": "5daff3b2685c313b202aa24a", "employeeId": "5ec20b6df46c830009abe503", "clinicId": "5eba682b584cbf0009bfd027", "appointmentId": "5f98cb72c3077000096971f7", "ticketCheckInId": "5f98cb8c1ddde5000955cb66", "ticketStatusLogs": [ { "status": 40, "statusTst": 1603849207 } ] } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé thứ tự |
rowStatus |
integer |
Trạng thái của vé thứ tự. Ví dụ: Chờ thực hiện : 40 |
arrivalDate |
string |
Ngày hẹn (yyyy-MM-dd) |
ticketNumber |
integer |
Số thứ tự của vé thứ tự |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại cua khách hàng (bắt đầu bằng ký tự +84) |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
unitId |
string |
Mã đơn vị |
serviceId |
string |
Mã dịch vụ |
employeeId |
string |
Mã nhân viên |
clinicId |
string |
Mã phòng |
appointmentId |
string |
Mã lịch hẹn |
ticketCheckInId |
string |
Mã vé tiếp nhận |
ticketStatusLogs |
list |
Nhật ký trạng thái của vé thứ tự |
ticketStatusLogs.status |
integer |
Trạng thái vé thứ tự |
ticketStatusLogs.statusTst |
long |
Thời điểm thay đổi trạng thái (định dạng timestamp) |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
7.3. API lấy danh sách vé thực hiện của khách hàng
Input:
- URL: <domain-name>/kong/booking/queue/ticket?arrivalDate=2021-03-08&unitId=5f7bd0c7f0be200009e99a84&customerId=5f72f6c99fe7410009d0b4a
- HTTPs method: GET
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": { "page": 0, "size": 10, "numOfElements": 10, "totalElements": 23467, "totalPages": 2347, "content": [ { "id": "6045960bc8ff73000992c55e", "rowStatus": 70, "arrivalDate": "2021-03-08", "ticketNumber": 1, "rowStatusTst": 1615173796, "createdAt": 1615173131, "customer": { "id": "5f72f6c99fe7410009d0b4ca", "firstName": "Nguyen Hien" "phone": "+84921293400", "gender": "M", "birthday": "2021-02-28" }, "unitId": "5f7bd0c7f0be200009e99a84", "serviceId": "5ebb9380379b59000941b8d9", "employeeId": "5f7bdeb0f0be200009e99aa9", "clinicId": "5f7eb83835239d000a5157ec", "appointmentId": "60457db20c769200091c9ccc", "ticketCheckInId": "60457dedc8ff73000992c559", "ticketStatusLogs": [ { "status": 40, "statusTst": 1615173131 }, { "status": 41, "statusTst": 1615173750 }, { "status": 43, "statusTst": 1615173768 }, { "status": 70, "statusTst": 1615173796 } ], "queueTime": 619, "processTime": 28 } ] } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp tìm có dữ liệu |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
page |
integer |
Trang hiện tại. Bắt đầu từ 0 |
size |
integer |
Số lượng phần tử tối đa của một trang |
numOfElements |
integer |
Số lượng phần tử đang hiển thị của trang |
totalElements |
integer |
Tổng số phần tử |
totalPages |
integer |
Tổng số trang |
content |
list |
List dữ liệu phần tử trả về |
id |
string |
Mã vé thứ tự |
rowStatus |
integer |
Trạng thái của vé thứ tự |
arrivalDate |
string |
Ngày hẹn |
ticketNumber |
integer |
Số vé |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.phone |
string |
Số điện thoại khách hàng |
customer.gender |
string |
Giới tính |
customer.birthday |
string |
Ngày sinh của khách hàng |
unitId |
string |
Mã đơn vị |
serviceId |
string |
Mã dịch vụ |
employeeId |
string |
Mã nhân viên |
clinicId |
string |
Mã phòng |
appointmentId |
string |
Mã lịch hẹn |
ticketCheckInId |
string |
Mã vé tiếp nhận |
ticketStatusLogs.status |
integer |
Trạng thái vé |
ticketStatusLogs.statusTst |
integer |
Thời điểm trạng thái vé (định dạng timestamp) |
queueTime |
integer |
Thời gian xếp hàng |
processTime |
integer |
Thời gian thực hiện |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
7.4. API gọi vé thực hiện tại phòng
Input:
- URL: <domain-name>/kong/booking/queue/queue/v2/call
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "unitId": "5eba6116584cbf0009bfd017", "clinicId": "5eba682b584cbf0009bfd027", "ticketNumber": 1 } |
Trong đó:
Key |
Type |
Mô tả |
unitId |
string |
Mã đơn vị |
clinicId |
string |
Mã phòng |
ticketNumber |
integer |
Số cần gọi lại. Nếu ticketNumber = null, API sẽ tự động trả về số tiếp theo. |
Output: json
Trường hợp thành công:
{ "code": 0, "msg": "Thành công", "data": { "id": "5f98cbf71ddde5000955cb69", "rowStatus": 41, "arrivalDate": "2020-10-28", "ticketNumber": 1, "rowStatusTst": 1603849207, "createdAt": 1603849207, "customer": { "id": "5f97ba8ec3077000096971ea", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "gender": "M" }, "unitId": "5eba6116584cbf0009bfd017", "serviceId": "5daff3b2685c313b202aa24a", "employeeId": "5ec20b6df46c830009abe503", "clinicId": "5eba682b584cbf0009bfd027", "appointmentId": "5f98cb72c3077000096971f7", "ticketCheckInId": "5f98cb8c1ddde5000955cb66", "ticketStatusLogs": [ { "status": 40, "statusTst": 1603849207 } ] } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé thứ tự |
rowStatus |
integer |
Trạng thái của vé thứ tự. Ví dụ: Gọi số thực hiện : 41 |
arrivalDate |
string |
Ngày hẹn (yyyy-MM-dd) |
ticketNumber |
integer |
Số thứ tự của vé thứ tự |
rowStatusTst |
long |
Thời điểm cập nhật trạng thái (định dạng timestamp) |
createdAt |
long |
Thời điểm tạo (định dạng timestamp) |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại cua khách hàng (bắt đầu bằng ký tự +84) |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
unitId |
string |
Mã đơn vị |
serviceId |
string |
Mã dịch vụ |
employeeId |
string |
Mã nhân viên |
clinicId |
string |
Mã phòng |
appointmentId |
string |
Mã lịch hẹn |
ticketCheckInId |
string |
Mã vé tiếp nhận |
ticketStatusLogs |
list |
Nhật ký trạng thái của vé thứ tự |
ticketStatusLogs.status |
integer |
Trạng thái vé thứ tự |
ticketStatusLogs.statusTst |
long |
Thời điểm thay đổi trạng thái (định dạng timestamp) |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
7.5. API xác nhận thực hiện tại phòng
Xác nhận đã bắt đầu thực hiện
Input:
- URL: <domain-name>/kong/booking/queue/ticket/start
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{ "id":"5f98cbf71ddde5000955cb69" } |
Trong đó:
Key |
Type |
Mô tả |
id |
string |
Mã vé thứ tự |
Output: json
Trường hợp thành công:
{ "code": 0, "msg": "Thành công", "data": { "id": "5f98cbf71ddde5000955cb69", "ticketNumber": 1, "customer": { "id": "5f97ba8ec3077000096971ea", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "gender": "M" } } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé thứ tự |
ticketNumber |
integer |
Số thứ tự của vé thứ tự |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại cua khách hàng (bắt đầu bằng ký tự +84) |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
7.6. API hoàn thành thực hiện tại phòng
Xác nhận đã hoàn thành thực hiện
Input:
- URL: <domain-name>/kong/booking/queue/ticket/complete
- HTTPs method: POST
- Header:
Content-Type |
application/json |
apiToken |
${apiToken} |
tokenKey |
${tokenKey} |
secretKey |
${secretKey} |
Body:
{
"id":"5f98cbf71ddde5000955cb69"
}
Trong đó:
Key |
Type |
Mô tả |
id |
string |
Mã vé thứ tự |
Output: json
Trường hợp thành công:
{ "code": 0, "msg": "Thành công", "data": { "id": "5f98cbf71ddde5000955cb69", "ticketNumber": 1, "customer": { "id": "5f97ba8ec3077000096971ea", "firstName": "Phạm Hồng Thái", "email": "phamhongthai@vnpt.vn", "phone": "+84946360211", "gender": "M" } } } |
Trường hợp lỗi:
{
"errorCode": integer,
"errorMsg": string,
"data": null
}
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: Thành công : 0 |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã vé thứ tự |
ticketNumber |
integer |
Số thứ tự của vé thứ tự |
customer |
string json |
Khách hàng |
string |
Mã khách hàng |
|
customer.firstName |
string |
Tên khách hàng |
customer.email |
string |
Địa chỉ email của khách hàng |
customer.phone |
string |
Số điện thoại cua khách hàng (bắt đầu bằng ký tự +84) |
customer.gender |
string |
Giới tính (M: nam, F: nữ) |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. Ví dụ: 4 : mã lỗi không tìm thấy thông tin |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
8. Các API danh mục HIS cung cấp
8.1. API lấy danh sách khoa
- URL: HIS L2 cung cấp
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Query Param:
- hopitalId: Mã bệnh viện
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": { "content": [ { "code": " B9_DVGTNTQ", "codeBYT": "K19", "name": "Đơn vị giảm tải Ngoại tổng quát", "type": 19, }, { "code": "K0004", "name": "Khoa khám bệnh", "description": " Khoa khám bệnh",
} ] } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
code |
string |
Mã code khoa |
codeBYT |
string |
Mã code khoa (BYT) |
name |
string |
Tên khoa |
type |
string |
Loại khoa |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. ( Tham khảo mục 8) |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
Ví dụ giao diện thông tin
8.2. API lấy danh sách quầy phòng
API lấy quầy phòng của khoa
- URL: HIS L2 cung cấp
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Query Param:
- hopitalId: Mã bệnh viện
- departmentId: Mã khoa
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": { "content": [ { "id": " B9NT", "code": " B9VPNT", "name": "(B9) NHÀ THUỐC", "type": 1 "typeName": "Khám bệnh", "departmentId": " B9_DVGTNTQ", }, { "id": " B9NT", "code": " B9VPNT", "name": "(B9) NHÀ THUỐC", "type": 1 "typeName": "Khám bệnh", "departmentId": " B9_DVGTNTQ", }, ] } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
data |
string json |
Thông tin kết quả của API |
id |
string |
Mã phòng |
code |
string |
Số phòng |
name |
string |
Tên phòng |
type |
string |
Loại phòng |
typeName |
string |
Tên loại phòng |
departmentId |
string |
Mã khoa |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. ( Tham khảo mục 8) |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
Nội dung lấy như giao diện
8.3. API lấy danh sách bác sĩ
- URL: HIS L2 cung cấp
- Method: GET
- Header:
- apiToken: Thông tin apiToken lấy từ bước đăng nhập
- Query Param:
- hopitalId: Mã bệnh viện
- departmentId: Mã khoa
Output: json
Trường hợp thành công:
{ "errorCode": 0, "errorMsg": "Success", "data": { "content": [ { "id": "BVBDHCM.BANGTRUNGLAP", "code": "0005734/AG-CCHN", "name": "BS. Bằng Trung Lập", "departmentId": " B9_DVGTNTQ", "roomId": " B9VPNT", "type": 1 "typeName": "Bác sĩ", "position": "Giám đốc", "diplomas": "CKI", }, { "id": "BVBDHCM.BANGTRUNGLAP", "code": "0005734/AG-CCHN", "name": "BS. Bằng Trung Lập", "departmentId": " B9_DVGTNTQ", "roomId": " B9VPNT", "type": 1 "typeName": "Bác sĩ", "position": "Giám đốc", "diplomas": "CKI", } ] } } |
Trong đó:
Key |
Type |
Mô tả |
Trường hợp thành công |
||
errorCode |
integer |
Mã lỗi |
errorMsg |
string |
Thông báo lỗi |
id |
string json |
Mã nhân viên |
code |
string |
Mã bác sĩ |
name |
string |
Tên nhân viên |
departmentId |
string |
Mã khoa |
roomId |
string |
Mã phòng |
type |
string |
Loại nhân viên |
typeName |
string |
Tên loại nhân viên |
Trường hợp không thành công |
||
errorCode |
integer |
Mã lỗi. ( Tham khảo mục 8) |
errorMsg |
string |
Thông báo lỗi |
data |
string |
Thông tin kết quả của API |
Ví dụ giao diện thông tin
9. Thông tin trạng thái và mã lỗi
Mã ErrorCode được sử dụng trên hệ thống:
Mã Lỗi |
Mô tả |
0 |
Thành công |
1 |
ApiToken hết hiệu lực |
2 |
Đã tồn tại dữ liệu |
3 |
Quyền truy cập bị từ chối |
4 |
Không tìm thấy dữ liệu |
5 |
Hết hạn |
6 |
Thông tin Input không hợp lệ, không đúng định dạng |
7 |
Mã OTP không hợp lệ |
8 |
Thông tin username hoặc mật khẩu không đúng |
10 |
Lỗi hệ thống |
Mã Trạng thái lịch hẹn trên hệ thống:
Mã trạng thái |
Mô tả |
0 |
Mới |
10 |
Đã Duyệt |
20 |
Chờ Tiếp Nhận |
21 |
Đang Gọi số khâu Tiếp nhận |
22 |
Nhỡ Tiếp nhận |
23 |
Đang Tiếp nhận |
24 |
Đã Tiếp nhận |
29 |
Hủy Tiếp nhận |
30 |
|
40 |
Chờ Phục vụ |
41 |
Đang Gọi số khâu Phục vụ |
42 |
Nhỡ Phục vụ |
43 |
Đang Phục vụ |
44 |
Hủy Phục vụ |
70 |
Hoàn thành |
80 |
Hệ thống Hủy lịch hẹn |
90 |
Người dùng Hủy lịch hẹn |