/PTIT-Do-An-Tot-Nghiep-API-Document

Phần tài liệu mô tả API của đồ án tốt nghiệp từ một huyền thoại trường PTIT🤘

Đồ án tốt nghiệp - Học viện Công nghệ Bưu chính viễn thông
Tài liệu mô tả API của Ứng dụng Android hỗ trợ bệnh nhân đăng ký khám và điều trị bệnh

Đây là tài liệu mô tả chi tiết từng API được mình - Nguyễn Thành Phong - viết và chuẩn bị trong đồ án. Mình làm cái này để lưu lại cho mục đích liệt kê các chức năng mình đã làm. Đồng thời, đây là đồ án tốt nghiệp của mình nên mình muốn hoàn thiện ở mức đồ tốt nhất có thể.

Để dễ đọc & nhanh chóng hiểu cách dùng API này mình sẽ viết theo thứ tự Controller Timeline ở bên tài liệu Đồ án thực tập

API của mình viết theo chuẩn Restful API, trong đồ án của mình thì mình chỉ sử dụng 5 dạng phương thức quen thuộc sau để xây dựng đồ án:

  • 🟢 GET - Để truy xuất một tài nguyên. Ví dụ: lấy thông tin 1 giao dịch thì dùng phương thức GET

  • 🟡 POST - Để tạo một tài nguyên trên máy chủ. Ví dụ: tạo mới một tài khoản

  • 🔵 PUT - Để thay đổi trạng thái toàn bộ một tài nguyên hoặc để cập nhật nó. Ví dụ: thay đổi mật khẩu, tên hiển thị

  • 🟠 PATCH - Giống PUT nhưng PATCH thường dùng trong trường hợp sửa 1 phần của tài nguyên.

  • 🔴 DELETE - Để huỷ bỏ hoặc xoá một tài nguyên. Ví dụ: xóa hoàn toàn một thể loại, bài viết,...

Hãy để ý một chút tới màu sắc mà mình quy ước bên trên. Mình sẽ sử dụng màu sắc kết hợp với các thông tin khác để mô tả API.

Để xem toàn bộ các điều hướng khi một API được gọi. Hãy mở app/int/routes.inc.php - đây là tệp tin chứa điều hướng & xử lý khi một API được gọi.

Hình ảnh các API được khai báo trong tệp tin routes.inc.php

Giả sử, mình lấy ví dụ một dòng cho dễ hiểu nha 😅

App::addRoute( "GET|POST", "/api/doctors", "Doctors");

Trong này, cấu trúc mặc định câu lệnh là

App::addRoute( "các phương thức hỗ trợ", "tên đường dẫn", "Controller sẽ xử lý yêu cầu");

Vậy thì với ví dụ trên thì

Các mình viết hàm xử lý là đồng nhất và xuyên suốt toàn bộ các controller nên mình sẽ mô tả tóm gọn như sau:

Cấu trúc mặc định của một Controller

Từ hình minh họa bên trên, chúng ta có thể hiểu được cấu trúc một Controller trong đồ án này.

Hàm process đóng vai trò như một Contructor của Controller này. Mọi yêu cầu khi được gọi tới Patient Profile Controller thì hàm process này luôn luôn chạy đầu tiên.

Nhờ vào quy ước đặc biệt này, chúng ta sẽ tiến hành điều hướng tới các hàm xử lý bên dưới.

Dòng 34 lấy ra giá trị Action - giá trị này dùng để gọi tới hàm xử lý tương ứng bên dưới

Rất đơn giản phải không ?😎😋. Để lấy tên phương thức được gọi tới chúng ta dùng hàm Input::method(). Nếu muốn lấy giá trị được gửi lên API này. Trong hình dòng 34, muốn lấy giá trị action thì ta gọi

Input::post("action")

Trong đó:

  • Input là tên của class chứa phương thức

  • post là tên phương thức POST được gọi tới

  • action là key của giá trị được gửi lên

Ví dụ: nếu bạn gửi một biến với key là password lên server với phương thức PUT thì câu lệnh để lấy được giá trị sẽ là

$password = Input::put("password")

Phần này mình sẽ mô tả chi tiết từng API, header cần có những gì, đối số truyền vào là gì và kết quả trả về.

Trong API mình có sử dụng chức năng Variable của POSTMAN để tiết kiệm thời gian viết code. Tên & ý nghĩa của chúng như sau:

Tên Chức năng
ENDPOINT_URL Tên đường dẫn chung của đồ án - http://192.168.1.221:8080/PTIT-Do-An-Tot-Nghiep
ACCESS_TOKEN JWT token của bác sĩ với vai trò ADMIN
ACCESS_TOKEN_MEMBER JWT token của bác sĩ với vai trò MEMBER
ACCESS_TOKEN_SUPPORTER JWT token của bác sĩ với vai trò SUPPORTER
ACCESS_TOKEN_PATIENT JWT token của bệnh nhân

Mục đích chung là phục vụ chức năng đăng nhập & xác thực danh tính người dùng. Bất kì ai cũng có thể sử dụng API này.

Các API trong mục Authentication

  • Purpose: Xử lý yêu cầu đăng nhập của bệnh nhân từ Android gửi tới.

  • Permission: ADMIN - SUPPORTER - MEMBER - PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/login

  • Headers: bỏ trống

  • Body:

    Tên Tùy chọn Ý nghĩa
    Type Bắt buộc chỉ đích danh đối tưởng đang đăng nhập là Bệnh nhân. Điều này giúp phân biệt với yêu cầu đăng nhập từ bác sĩ. Nếu type = null thì yêu cầu đăng nhập là từ bác sĩ.
    Email Bắt buộc Email đăng ký tài khoản
    Password Bắt buộc Mật khẩu tài khoản
  • Respone:

  • Purpose: Xử lý yêu cầu đăng nhập của bác sĩ

  • Permission: ADMIN - SUPPORTER - MEMBER - PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/login

  • Headers: bỏ trống

  • Body:

    Tên Tùy chọn Ý nghĩa
    Type Bắt buộc chỉ đích danh đối tưởng đang đăng nhập là Bệnh nhân. Điều này giúp phân biệt với yêu cầu đăng nhập từ bác sĩ. Nếu type = null thì yêu cầu đăng nhập là từ bác sĩ.
    Email Bắt buộc Email đăng ký tài khoản
    Password Bắt buộc Mật khẩu tài khoản
  • Respone:

  • Purpose: đăng ký tài khoản mới

  • Permission: ADMIN - SUPPORTER - MEMBER - PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/signup

  • Headers:

    Tên Giá Trị
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Email Bắt buộc Email đăng ký tài khoản
    Phone Bắt buộc Số điện thoại liên lạc
    Password Bắt buộc Mật khẩu tài khoản
    Password-confirm Bắt buộc Mật khẩu xác nhận
    Name Bắt buộc Họ tên đầy đủ của bác sĩ
    Description Tùy chọn Mô tả về quá trình công tác
    Price Tùy chọn Chi phí đặt lịch khám bệnh
    Role Tùy chọn Quyền truy cập của bác sĩ này. Có 3 quyền chính: admin, member & supporter
    Avatar Tùy chọn Ảnh đại diện
  • Respone:

  • Email:

  • Purpose: Gửi email để lấy mã xác thực nhằm khôi phục mật khẩu

  • Permission: ADMIN - SUPPORTER - MEMBER - PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/recovery

  • Headers:

    Tên Giá Trị
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Email Bắt buộc Email đăng ký tài khoản
  • Respone:

  • Purpose: Đặt lại mật khẩu mới với mã xác thực nhận từ Email

  • Permission: ADMIN - SUPPORTER - MEMBER - PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/password-reset/12

12 là ID của tài khoản

  • Headers:

    Tên Giá Trị
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Recovery Token Bắt buộc Mã xác thực để đặt lại mật khẩu
    Password Bắt buộc Mật khẩu mới
    PasswordConfirm Bắt buộc Mật khẩu xác thực lại
  • Respone:

Đây là các API dành cho bác sĩ phải có vai trò ADMIN mới có quyền sử dụng

  • Purpose: Đọc thông tin của tất cả bệnh nhân

  • Permission: ADMIN

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/patients

  • Headers:

    Tên Giá Trị
    Authorization ACCESS_TOKEN
    Content-Type application/x-www-form-urlencoded
  • Body:

  • Params:

    Tên Ý nghĩa
    search Từ khóa tìm kiếm
    order[dir] Chiều sắp xếp kết quả. Nhận 2 giá trị asc(tăng dần) & desc(giảm dần)
    order[column] Cột được sử dụng để sắp xếp kết quả. Mặc định là ID
    length Số lượng kết quả trả về. Mặc định là không giới hạn
    start Kết quả tìm kiếm bắt đầu từ vị trí thứ mấy. Ví dụ nhập 1 thì kết quả đầu tiên bị bỏ qua
  • Respone:

  • Purpose: Đọc thông tin của một bệnh nhân cụ thể

  • Permission: ADMIN

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/patients/1

1 là ID của bệnh nhân

  • Headers:

    Tên Giá Trị
    Authorization ACCESS_TOKEN
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Respone:

  • Purpose: Cập nhật thông tin của một bệnh nhân

  • Permission: ADMIN

  • Method: 🔵 PUT

  • URL: {{ENDPOINT_URL}}/api/patients/1

1 là ID của bệnh nhân

  • Headers:

    Tên Giá Trị
    Authorization ACCESS_TOKEN
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Name Bắt buộc Họ tên bệnh nhân
    Phone Bắt buộc Số điện thoại
    Birthday Bắt buộc Ngày sinh
    Gender Bắt buộc Giới tính. Có 2 giá trị được chấp nhận: 0 là nữ & 1 là nam
    Address Tùy chọn Địa chỉ
  • Respone:

  • Purpose: Xóa một người bệnh. Tuy nhiên, xóa thông tin của bệnh nhân là điều không nên làm bởi chúng ta có thể đem thông tin của bệnh nhân để bán cho các bên khác có nhu cầu sử dụng.

  • Permission: ADMIN

  • Method: 🔴 DELETE

1 là ID của bệnh nhân

  • URL: {{ENDPOINT_URL}}/api/patients/1

  • Headers:

    Tên Giá Trị
    Authorization ACCESS_TOKEN
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Respone:

Mục đích chung là giúp bệnh nhân cập nhật thông tin cá nhân, thay đổi hình đại diện và thay đổi mật khẩu. Không có chức năng khôi phục mật khẩu vì bệnh nhân sẽ đăng nhập bằng 1 trong 2 cách sau:

  1. Đăng nhập bằng số điện thoại với mã OTP.

  2. Đăng nhập bằng tài khoản Google.

Các API trong mục Patient Profile

  • Purpose: Giúp bệnh nhân xem thông tin cá nhân của mình

  • Permission: PATIENT

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/patient/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Type Patient
  • Body: bỏ trống

  • Respone:

  • Purpose: Hỗ trợ bệnh nhân cập nhật thông tin cá nhân

  • Permission: PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/patient/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Content-Type application/x-www-form-urlencoded
    Type Patient
  • Body:

    Tên Tùy chọn Ý nghĩa
    Action Bắt buộc Thể hiện yêu cầu gửi tới api này làm gì. Có 3 trạng thái hợp lệ: personal, password & avatar. API sử dụng PERSONAL
    Name Bắt buộc Họ tên bệnh nhân
    Gender Tùy chọn Giới tính. Có 2 giá trị: 0 là nữ & 1 là nam
    Birthday Bắt buộc Ngày tháng năm sinh bệnh nhân
    Address Bắt buộc Địa chỉ bệnh nhân
  • Respone:

  • Purpose: Hỗ trợ bệnh nhân cập nhật ảnh đại diện

  • Permission: PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/patient/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Content-Type application/x-www-form-urlencoded
    Type Patient
  • Body:

    Tên Tùy chọn Ý nghĩa
    Action Bắt buộc Thể hiện yêu cầu gửi tới api này làm gì. Có 3 trạng thái hợp lệ: personal, password & avatar. API sử dụng AVATAR
    File Bắt buộc Ảnh đại diện mà người dùng muốn đăng lên
  • Respone:

  • Purpose: Hỗ trợ bệnh nhân thay đổi mật khẩu

  • Permission: PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/patient/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Content-Type application/x-www-form-urlencoded
    Type Patient
  • Body:

    Tên Tùy chọn Ý nghĩa
    Action Bắt buộc Thể hiện yêu cầu gửi tới api này làm gì. Có 3 trạng thái hợp lệ: personal, password & avatar. API sử dụng PASSWORD
    Current Password Bắt buộc Mật khẩu hiện tại
    New Password Bắt buộc Mật khẩu mới
    Confirm Password Bắt buộc Mật khẩu xác nhận
  • Respone:

Mục đích chính là chức năng đặt lịch khám bệnh cho bệnh nhân

  • Purpose: Hỗ trợ bệnh nhân xem lại lịch sử lịch hẹn của mình

  • Permission: PATIENT

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/patient/booking

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Content-Type application/x-www-form-urlencoded
    Type Patient
  • Body: bỏ trống

  • Params:

    Tên Ý nghĩa
    search Từ khóa tìm kiếm
    order[dir] Chiều sắp xếp kết quả. Nhận 2 giá trị asc(tăng dần) & desc(giảm dần)
    order[column] Cột được sử dụng để sắp xếp kết quả. Mặc định là ID
    length Số lượng kết quả trả về. Mặc định là không giới hạn
    start Kết quả tìm kiếm bắt đầu từ vị trí thứ mấy. Ví dụ nhập 1 thì kết quả đầu tiên bị bỏ qua
  • Respone:

  • Purpose: Xem chi tiết một lịch hẹn khám bệnh

  • Permission: PATIENT

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/patient/booking/19

19 là ID của lịch hẹn

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Content-Type application/x-www-form-urlencoded
    Type Patient
  • Body: bỏ trống

  • Respone:

  • Purpose: Hỗ trợ bệnh nhân tạo mới một lịch hẹn khám bệnh

  • Permission: PATIENT

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/patient/booking

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Content-Type application/x-www-form-urlencoded
    Type Patient
  • Body:

    Tên Tùy chọn Ý nghĩa
    Service_id Bắt buộc ID của loại dịch vụ mà lịch hẹn đăng ký
    Booking_name Bắt buộc Họ tên người đặt lịch hẹn khám bệnh
    Booking_phone Bắt buộc Số điện thoại người đặt lịch hẹn khám bệnh
    Name Bắt buộc Họ tên bệnh nhân
    Gender Tùy chọn Giới tính bệnh nhân
    Birthday Tùy chọn Ngày sinh bệnh nhân
    Address Tùy chọn Địa chỉ bệnh nhân
    Reason Tùy chọn Lý do khám bệnh, mô tả triệu chứng
    Appointment Time Bắt buộc Thời gian hẹn khám
    Status Tùy chọn Trạng thái lịch hẹn. Có 3 trạng thái hợp lệ: processing, verified, cancel. Mặc định lịch hẹn của bệnh nhân là PROCESSING
    Create At Tùy chọn Thời gian tạo ra ra lịch hẹn. Thông tin này do hệ thống tự động tạo
    Update At Tùy chọn Thời gian lần cập nhật gần nhất của lịch hẹn. Thông tin này do hệ thống tự động tạo
  • Respone:

  • Purpose: Hỗ trợ bệnh nhân hủy bỏ lịch hẹn đã tạo trước đó

  • Permission: PATIENT

  • Method: 🔴 DELETE

  • URL: {{ENDPOINT_URL}}/api/patient/booking/19

19 là ID của lịch hẹn

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN_PATIENT}}
    Content-Type application/x-www-form-urlencoded
    Type Patient
  • Body: bỏ trống

  • Respone:

Nếu lịch hẹn này đã ở trạng thái HỦY BỎ

Nếu lịch hẹn này đang ở trạng thái ĐANG XỬ LÝ

Mục đích là để quản lý thông tin của các bác sĩ.

  • Purpose: Xem danh sách bác sĩ với các điều kiện lọc khi cần thiết

  • Method: 🟢 GET

  • Permission: ADMIN - SUPPORTER - DOCTOR

  • URL: {{ENDPOINT_URL}}/api/doctors/

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Params:

    Tên Ý nghĩa
    search Từ khóa tìm kiếm
    order[dir] Chiều sắp xếp kết quả. Nhận 2 giá trị asc(tăng dần) & desc(giảm dần)
    order[column] Cột được sử dụng để sắp xếp kết quả. Mặc định là ID
    length Số lượng kết quả trả về. Mặc định là không giới hạn
    start Kết quả tìm kiếm bắt đầu từ vị trí thứ mấy. Ví dụ nhập 1 thì kết quả đầu tiên bị bỏ qua
    room_id Mã phòng khám mà bác sĩ làm việc
    speciality_id Mã chuyên khoa của bác sĩ
    active Trạng thái tài khoản: 0 là vô hiệu hóa và 1 là đang hoạt động
  • Respone:

  • Purpose: Xem thông tin một bác sĩ

  • Permission: ADMIN

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/doctors/19

19 là ID của bác sĩ

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Respone:

  • Purpose: Tạo tài khoản cho một bác sĩ với mật khẩu là ngẫu nhiên và được gửi tới email được dùng để đăng kí tài khoản

  • Permission: ADMIN

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/doctors

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Email Bắt buộc Email đăng ký tài khoản
    Phone Bắt buộc Số điện thoại liên lạc
    Name Bắt buộc Họ tên đầy đủ của bác sĩ
    Description Tùy chọn Mô tả về quá trình công tác
    Price Tùy chọn Chi phí đặt lịch khám bệnh
    Role Bắt buộc Quyền truy cập của bác sĩ này. Có 3 quyền chính: admin, member & supporter
    Speciality_id Tùy chọn Mã chuyên khoa
    Room_id Bắt buộc Mã phòng nơi bác sĩ sẽ làm việc
  • Respone:

  • Purpose: Cập nhật thông tin cá nhân của bác sĩ

  • Permission: ADMIN

  • Method: 🔵 PUT

  • URL: {{ENDPOINT_URL}}/api/doctors/1

1 là ID của bác sĩ

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Phone Bắt buộc Số điện thoại liên lạc
    Name Bắt buộc Họ tên đầy đủ của bác sĩ
    Description Tùy chọn Mô tả về quá trình công tác
    Price Tùy chọn Chi phí đặt lịch khám bệnh
    Role Bắt buộc Quyền truy cập của bác sĩ này. Có 3 quyền chính: admin, member & supporter
    Speciality_id Tùy chọn Mã chuyên khoa
    Room_id Tùy chọn Mã phòng nơi bác sĩ sẽ làm việc
  • Respone:

  • Purpose: Xóa bác sĩ

  • Permission: ADMIN

  • Method: 🔴 DELETE

  • URL: {{ENDPOINT_URL}}/api/doctors/1

1 là ID của bác sĩ

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

  • Respone:

Trường hợp 1 - bác sĩ bị xóa hoàn toàn do không có dữ liệu gì trong cơ sở dữ liệu

Trường hợp 2 - bác sĩ bị vô hiệu hóa do đã có các dữ liệu khác tồn tại như THỨ TỰ KHÁM, PHÁC ĐỒ ĐIỀU TRỊ hoặc BỆNH ÁN

  • Purpose: Xóa bác sĩ

  • Permission: ADMIN

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/doctors/1

1 là ID của bác sĩ

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Giá Trị
    Action avatar - trường này dùng để phân biệt với yêu cầu cập nhật thông tin cá nhân
    File ảnh đại diện được sử dụng
  • Respone:

Mục đích giúp bác sĩ cập nhật ảnh đại diện & thông tin cá nhân của mình.

  • Purpose: Giúp bác sĩ xem thông tin cá nhân của mình

  • Permission: ADMIN - SUPPORTER - MEMBER

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/doctor/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
  • Body: bỏ trống

  • Respone:

  • Purpose: Bác sĩ tự cập nhật thông tin cá nhân

  • Permission: ADMIN - SUPPORTER - MEMBER

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/doctor/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Action Bắt buộc Thể hiện yêu cầu gửi tới api này làm gì. Có 3 trạng thái hợp lệ: personal, password & avatar. API sử dụng PERSONAL
    Name Bắt buộc Họ tên bệnh nhân
    Phone Bắt buộc Số điện thoại
    Description Tùy chọn Mô tả bản thân
  • Respone:

  • Purpose: Hỗ trợ bác sĩ cập nhật ảnh đại diện

  • Permission: ADMIN - SUPPORTER - MEMBER

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/doctor/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Action Bắt buộc Thể hiện yêu cầu gửi tới api này làm gì. Có 3 trạng thái hợp lệ: personal, password & avatar. API sử dụng AVATAR
    File Bắt buộc Ảnh đại diện mà người dùng muốn đăng lên
  • Respone:

  • Purpose: Hỗ trợ bác sĩ thay đổi mật khẩu

  • Permission: ADMIN - SUPPORTER - MEMBER

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/doctor/profile

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Action Bắt buộc Thể hiện yêu cầu gửi tới api này làm gì. Có 3 trạng thái hợp lệ: personal, password & avatar. API sử dụng PASSWORD
    Current Password Bắt buộc Mật khẩu hiện tại
    New Password Bắt buộc Mật khẩu mới
    Confirm Password Bắt buộc Mật khẩu xác nhận
  • Respone:

Mục đính để quản lý các chuyên khoa của bác sĩ

  • Purpose: Xem danh sách các chuyên khoa

  • Permission: ADMIN

  • Method: 🟢 GET

  • Permission: ADMIN - SUPPORTER - DOCTOR

  • URL: {{ENDPOINT_URL}}/api/specialities/

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Params:

    Tên Ý nghĩa
    search Từ khóa tìm kiếm
    order[dir] Chiều sắp xếp kết quả. Nhận 2 giá trị asc(tăng dần) & desc(giảm dần)
    order[column] Cột được sử dụng để sắp xếp kết quả. Mặc định là ID
    length Số lượng kết quả trả về. Mặc định là không giới hạn
    start Kết quả tìm kiếm bắt đầu từ vị trí thứ mấy. Ví dụ nhập 1 thì kết quả đầu tiên bị bỏ qua
  • Respone:

  • Purpose: Xem thông tin một chuyên khoa

  • Permission: ADMIN

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/specialities/19

19 là ID của chuyên khoa

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Respone:

  • Purpose: Tạo mới chuyên khoa

  • Permission: ADMIN

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/specialites

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Name Bắt buộc Tên chuyên khoa
    Description Bắt buộc Mô tả
  • Respone:

  • Purpose: Cập nhật thông tin chuyên khoa

  • Permission: ADMIN

  • Method: 🔵 PUT

  • URL: {{ENDPOINT_URL}}/api/specialites/10

10 là id của chuyên khoa

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Name Bắt buộc Tên chuyên khoa
    Description Bắc buộc Mô tả
  • Respone:

  • Purpose: Xóa chuyên khoa. Nếu có bác sĩ đang thuộc chuyên khoa bị xóa thì sẽ hiển thị thông báo

  • Permission: ADMIN

  • Method: 🔴 DELETE

  • URL: {{ENDPOINT_URL}}/api/specialites/10

10 là id của chuyên khoa

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

  • Respone:

Trường hợp 1 - chuyên khoa tồn tại bác sĩ đang làm việc

Trường hợp 2 - chuyên khoa không tồn tại bác sĩ nào

Mục đích để quản lý các dịch vụ mà bệnh nhân sẽ lựa chọn để đặt lịch khám.

  • Purpose: Xem danh sách các dịch vụ

  • Permission: ADMIN - SUPPORTER - MEMBER - PATIENT

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/services/

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Params:

    Tên Ý nghĩa
    search Từ khóa tìm kiếm
    order[dir] Chiều sắp xếp kết quả. Nhận 2 giá trị asc(tăng dần) & desc(giảm dần)
    order[column] Cột được sử dụng để sắp xếp kết quả. Mặc định là ID
    length Số lượng kết quả trả về. Mặc định là không giới hạn
    start Kết quả tìm kiếm bắt đầu từ vị trí thứ mấy. Ví dụ nhập 1 thì kết quả đầu tiên bị bỏ qua
  • Respone:

  • Purpose: Xem thông tin một dịch vụ

  • Permission: ADMIN

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/services/19

19 là ID của dịch vụ

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Respone:

  • Purpose: Tạo mới dịch vụ. Nếu tên này đã được sử dụng sẽ hiển thị ra thông báo.

  • Permission: ADMIN

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/services

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Name Bắt buộc Tên dịch vụ
  • Respone:

  • Purpose: Cập nhật thông tin dịch vụ. Nếu tên này đã được sử dụng sẽ hiển thị ra thông báo.

  • Permission: ADMIN

  • Method: 🔵 PUT

  • URL: {{ENDPOINT_URL}}/api/services/10

10 là ID của dịch vụ

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Name Bắt buộc Tên dịch vụ
  • Respone:

  • Purpose: Xóa dịch vụ

  • Permission: ADMIN

  • Method: 🔴 DELETE

  • URL: {{ENDPOINT_URL}}/api/services/10

10 là id của chuyên khoa

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

  • Respone:

Mục đích để quản lý các dịch vụ mà bệnh nhân sẽ lựa chọn để đặt lịch khám.

  • Purpose: Xem danh sách phòng khám nơi mà bác sĩ đang làm việc

  • Permission: ADMIN - SUPPORTER - MEMBER - PATIENT

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/rooms/

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Params:

    Tên Ý nghĩa
    search Từ khóa tìm kiếm
    order[dir] Chiều sắp xếp kết quả. Nhận 2 giá trị asc(tăng dần) & desc(giảm dần)
    order[column] Cột được sử dụng để sắp xếp kết quả. Mặc định là ID
    length Số lượng kết quả trả về. Mặc định là không giới hạn
    start Kết quả tìm kiếm bắt đầu từ vị trí thứ mấy. Ví dụ nhập 1 thì kết quả đầu tiên bị bỏ qua
  • Respone:

  • Purpose: Xem thông tin một phòng khám cụ thể

  • Permission: ADMIN

  • Method: 🟢 GET

  • URL: {{ENDPOINT_URL}}/api/rooms/19

19 là ID của phòng khám

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body: bỏ trống

  • Respone:

  • Purpose: Tạo mới phòng khám. Nếu tên này đã được sử dụng sẽ hiển thị ra thông báo.

  • Permission: ADMIN

  • Method: 🟡 POST

  • URL: {{ENDPOINT_URL}}/api/rooms

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Name Bắt buộc Tên phòng khám
    Location Bắt buộc Vị trí phòng khám
  • Respone:

  • Purpose: Cập nhật phòng khám

  • Permission: ADMIN

  • Method: 🔵 PUT

  • URL: {{ENDPOINT_URL}}/api/rooms/10

10 là ID của phòng khám

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

    Tên Tùy chọn Ý nghĩa
    Name Bắt buộc Tên phòng khám
    Location Bắt buộc Vị trí phòng khám
  • Respone:

  • Purpose: Xóa phòng khám

  • Permission: ADMIN

  • Method: 🔴 DELETE

  • URL: {{ENDPOINT_URL}}/api/rooms/10

10 là id của phòng khám

  • Headers:

    Tên Giá Trị
    Authentication {{ACCESS_TOKEN}}
    Content-Type application/x-www-form-urlencoded
  • Body:

  • Respone:

Trường hợp đặc biệt: có bác sĩ đang làm việc ở phòng khám