Bối cảnh và vấn đề nghiên cứu

Khám chữa bệnh là nhu cầu thiết yếu trong đời sống xã hội. Tuy nhiên, thực trạng vận hành tại nhiều cơ sở y tế và bệnh viện công lập hiện nay vẫn còn tồn tại nhiều thủ tục hành chính thủ công, rườm rà. Bệnh nhân thường phải trực tiếp đến bệnh viện từ sáng sớm (thậm chí từ 4 giờ sáng) để xếp hàng lấy số, nộp thông tin cá nhân, khai báo triệu chứng ban đầu và chờ đợi hàng giờ đồng hồ tại chỗ mới đến lượt vào phòng khám. Quy trình này dẫn đến tình trạng quá tải cục bộ tại các khu vực chờ, gây lãng phí thời gian, công sức của người bệnh, đồng thời phát sinh rủi ro khi số lượng bệnh nhân vượt quá công suất tiếp nhận trong ngày hoặc khi bác sĩ chuyên khoa có lịch công tác đột xuất khiến bệnh nhân phải ra về mà không được khám.

Trước thực trạng đó, đồ án tốt nghiệp đại học chuyên ngành Công nghệ phần mềm của sinh viên Nguyễn Thành Phong (người hướng dẫn: ThS. Nguyễn Anh Hào, Học viện Công nghệ Bưu chính Viễn thông Cơ sở tại TP. Hồ Chí Minh, năm 2023) đã lựa chọn đề tài "Xây dựng ứng dụng Android hỗ trợ bệnh nhân đăng ký khám và điều trị bệnh".

Mục tiêu và nhiệm vụ nghiên cứu của đồ án được xác định rõ:

  1. Mục tiêu 1: Xây dựng giải pháp công nghệ trên thiết bị di động Android cho phép bệnh nhân đăng ký lịch hẹn khám bệnh từ xa với bác sĩ mà không cần phải đến trực tiếp cơ sở y tế làm thủ tục ban đầu.
  2. Mục tiêu 2: Cung cấp cơ chế theo dõi số thứ tự khám bệnh theo thời gian thực và nhắc nhở bệnh nhân lịch trình thăm khám trong ngày, giảm thiểu tình trạng tập trung đông người và chờ đợi thụ động tại cơ sở y tế.
  3. Mục tiêu 3: Xây dựng hệ thống ứng dụng Website quản trị dành cho nhân viên y tế (hỗ trợ viên, quản trị viên) và bác sĩ nhằm tiếp nhận yêu cầu, điều phối lịch hẹn, sắp xếp thứ tự khám, lập phác đồ điều trị và lưu trữ bệnh án điện tử.

Đối tượng nghiên cứu của đề tài là quy trình đăng ký, điều phối lượt khám chữa bệnh ngoại trú và quản lý phác đồ điều trị. Phạm vi nghiên cứu tập trung vào việc thiết kế, xây dựng một hệ thống hoàn chỉnh gồm ứng dụng di động nền tảng Android cho người bệnh, ứng dụng Web quản lý cho cơ sở y tế và hệ thống máy chủ dịch vụ trung gian sử dụng giao thức RESTful API.


Cơ sở lý thuyết và phương pháp

Đề tài thuộc loại hình nghiên cứu ứng dụng và kỹ thuật phần mềm, kết hợp giữa khảo sát quy trình nghiệp vụ y tế thực tế và phương pháp phân tích, thiết kế hệ thống hướng đối tượng (OOAD).

  • Khung lý thuyết và mô hình kỹ thuật: Đề tài áp dụng mô hình kiến trúc phân tầng Client - Server kết hợp kiến trúc dịch vụ RESTful API (hỗ trợ các phương thức chuẩn HTTP như GET, POST, PUT, DELETE, PATCH). Quy trình nghiệp vụ được mô hình hóa bằng ngôn ngữ UML thông qua hệ thống sơ đồ Use-case tổng quát, sơ đồ Use-case chi tiết và sơ đồ cộng tác (Collaboration Diagrams) cho từng luồng thao tác.
  • Cơ chế quản lý hàng đợi và điều phối luồng bệnh nhân: Hệ thống thiết lập mô hình quản lý bệnh nhân chia làm hai nhóm đối tượng:
    • NORMAL: Bệnh nhân đến trực tiếp bệnh viện để lấy số thứ tự.
    • BOOKING: Bệnh nhân đăng ký lịch hẹn khám trước thông qua ứng dụng di động. Cơ chế điều phối sử dụng hai chỉ số trạng thái độc lập gồm numerical_order (số thứ tự tiếp nhận tổng thể trong ngày, tăng tự động) và position (vị trí/thứ tự khám thực tế tại phòng khám/chuyên khoa cụ thể sau khi được nhân viên y tế điều phối).
  • Cơ chế xác thực và bảo mật: Ứng dụng triển khai cơ chế xác thực người dùng dựa trên chuỗi mã hóa JSON Web Token (JWT), lưu trữ tại cookie/phiên làm việc để kiểm soát phân quyền theo từng tác nhân trong hệ thống.
  • Phương pháp thu thập và nguồn dữ liệu: Khảo sát quy trình tiếp nhận bệnh nhân thực tế tại các bệnh viện công; nghiên cứu tài liệu kỹ thuật về phát triển ứng dụng di động Android, ngôn ngữ lập trình PHP và hệ quản trị cơ sở dữ liệu quan hệ MySQL.

Thiết kế và triển khai

Hệ thống được thiết kế hoàn chỉnh với 4 thành phần vật lý chính kết nối qua môi trường mạng:

[Điện thoại Android (Bệnh nhân)] <--- RESTful API ---> [Máy chủ Server (PHP Backend & MySQL)]
                                                                  ^
                                                                  | (HTTP / RESTful API)
                                                                  v
                                              [Website Quản trị (Admin, Hỗ trợ viên, Bác sĩ)]
Thành phần hệ thống Công nghệ / Nền tảng Vai trò và chức năng chính
Ứng dụng di động (Client) Android SDK, Java/Kotlin, UI Dialog, Notification Manager, Tích hợp ứng dụng Đồng hồ hệ thống Cung cấp giao diện cho bệnh nhân: đặt lịch hẹn khám, theo dõi số thứ tự, xem bệnh án, danh sách phác đồ điều trị, thiết lập chuông báo thức và nhắc nhở uống thuốc theo đơn.
Ứng dụng Website (Client) Web Form, HTML/CSS/JavaScript Cung cấp giao diện quản lý trên máy tính cho Quản trị viên (Admin), Hỗ trợ viên (Supporter) và Bác sĩ: điều phối lượt khám, quản lý chuyên khoa, phòng khám, dịch vụ, tài khoản và lập phác đồ điều trị.
Tầng trung gian (API) RESTful API (GET, POST, PUT, DELETE, PATCH) Đóng gói yêu cầu nghiệp vụ, xác thực danh tính qua chuỗi JWT token, tiếp nhận và điều phối dữ liệu giữa máy chủ và các ứng dụng đầu cuối.
Máy chủ & Cơ sở dữ liệu Web Server PHP, Hệ quản trị CSDL quan hệ MySQL Lưu trữ dữ liệu tập trung, thực thi truy vấn nghiệp vụ, duy trì tính toàn vẹn quan hệ giữa 11 bảng dữ liệu cốt lõi.

Hệ thống cơ sở dữ liệu được chuẩn hóa bao gồm 11 bảng dữ liệu chính:

  1. Specialities: Quản lý danh mục các chuyên khoa khám bệnh.
  2. Rooms: Quản lý danh sách phòng khám thuộc các chuyên khoa.
  3. Services: Quản lý danh mục các gói dịch vụ y tế cung cấp.
  4. Patients: Lưu trữ hồ sơ, thông tin định danh của bệnh nhân.
  5. Doctor: Lưu trữ thông tin cá nhân, chuyên khoa, tài khoản của bác sĩ.
  6. Doctor And Service: Bảng liên kết trung gian giữa bác sĩ và dịch vụ y tế đảm nhiệm.
  7. Booking: Quản lý các yêu cầu đặt lịch hẹn trực tuyến từ ứng dụng di động.
  8. Appointments: Quản lý danh sách lịch khám chính thức đã được điều phối.
  9. Treatments: Lưu trữ chi tiết phác đồ điều trị, đơn thuốc và hướng dẫn chuyên khoa.
  10. Appointment Records: Quản lý lịch sử hồ sơ khám bệnh tổng hợp của từng lượt khám.
  11. notification: Quản lý hàng đợi thông báo hệ thống gửi tới người dùng.

Nội dung chính theo từng chương

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI

Chương 1 phân tích sự cần thiết của việc số hóa quy trình đăng ký y tế nhằm khắc phục tình trạng quá tải bệnh viện. Tác giả xác định rõ mục tiêu xây dựng ứng dụng di động cho bệnh nhân kết hợp trang web quản trị cho cơ sở y tế. Kết quả cần đạt gồm hai sản phẩm phần mềm độc lập tương tác trên cùng một hệ thống dữ liệu phục vụ hai nhóm đối tượng chính: Bệnh nhân (đặt lịch, xem lịch sử) và Bác sĩ/Bệnh viện (quản lý, lên lịch khám bệnh theo ngày).

CHƯƠNG 2: KHẢO SÁT HỆ THỐNG

Chương 2 xác định các mục tiêu thương mại (giao diện thân thiện, tương thích đa dạng kích thước màn hình, dòng máy và phiên bản hệ điều hành) và mục tiêu kỹ thuật của hệ thống. Tác giả thiết lập danh mục chức năng chi tiết:

  • Đối với Bệnh nhân: (1) Đặt lịch khám bệnh, (2) Theo dõi số thứ tự khám, (3) Xem lại lịch sử khám bệnh, (4) Xem phác đồ điều trị - đơn thuốc và hướng dẫn chuyên khoa, (5) Chỉnh sửa thông tin cá nhân.
  • Đối với Bác sĩ/Bệnh viện: (1) Quản lý thứ tự khám bệnh, (2) Quản lý lịch hẹn, (3) Thay đổi thứ tự khám bệnh, (4) Quản lý thông tin chuyên khoa, (5) Quản lý tài khoản bác sĩ, (6) Quản lý phòng bệnh, (7) Quản lý dịch vụ cung cấp, (8) Quản lý thông tin bệnh nhân, (9) Chỉnh sửa thông tin cá nhân.

CHƯƠNG 3: NỘI DUNG THỰC HIỆN

Chương 3 trình bày chi tiết hiện trạng thực tế, tính chất hệ thống và phân tích 4 nhóm tác nhân (Admin, Hỗ trợ viên, Bác sĩ, Bệnh nhân). Nội dung trọng tâm bao gồm:

  • Quy trình đặt lịch khám (7 bước): Bệnh nhân gửi yêu cầu qua Android $\rightarrow$ API gửi lên server $\rightarrow$ Cộng tác viên tiếp nhận và lựa chọn bác sĩ, khung giờ phù hợp $\rightarrow$ Hệ thống cập nhật cho bác sĩ $\rightarrow$ Bắn thông báo về điện thoại bệnh nhân $\rightarrow$ Bệnh nhân theo dõi thông tin lượt khám.
  • Quy trình lập phác đồ điều trị (9 bước): Bác sĩ chọn hồ sơ bệnh nhân trên website $\rightarrow$ Soạn phác đồ/bệnh án $\rightarrow$ Lưu vào cơ sở dữ liệu $\rightarrow$ Gửi thông báo đến ứng dụng Android $\rightarrow$ Bệnh nhân truy vấn và xem phác đồ chi tiết.
  • Quy tắc nghiệp vụ: Bệnh nhân chỉ được cấp số thứ tự chính thức khi có mặt tại bệnh viện; mỗi thời điểm một bệnh nhân chỉ có duy nhất một lượt khám đang hoạt động với một bác sĩ.
  • Đặc tả Use-case: Xây dựng chi tiết 34 bảng đặc tả use-case kèm theo chuỗi sự kiện, tiền điều kiện, hậu điều kiện và luồng ngoại lệ cho các module đăng nhập/đăng ký, đặt lịch, xem phác đồ, cập nhật thông tin cá nhân, lập phác đồ điều trị, quản lý thứ tự khám, quản lý lịch hẹn, quản lý tài khoản, quản lý chuyên khoa và quản lý phòng khám.

CHƯƠNG 4: TỔ CHỨC DỮ LIỆU

Chương 4 thiết kế cấu trúc chi tiết cho 11 bảng dữ liệu quan hệ, định nghĩa rõ các trường khóa chính, khóa ngoại, kiểu dữ liệu và mô tả ràng buộc nghiệp vụ (điển hình như bảng Doctor And Service, Appointment Records, Booking, Appointments, Treatments, notification). Toàn bộ quan hệ thực thể được tổng hợp thông qua sơ đồ cơ sở dữ liệu quan hệ hoàn chỉnh.

CHƯƠNG 5: THIẾT KẾ PHẦN MỀM WEBSITE

Chương 5 mô tả chi tiết các màn hình giao diện web form dành cho nhân viên y tế (Đăng nhập, đăng ký, khôi phục mật khẩu, cập nhật thông tin cá nhân, Dashboard tổng quan, Danh sách thứ tự lượt khám, Sắp xếp lượt khám, Lịch hẹn, Quản lý bác sĩ). Đồng thời, chương này đặc tả luồng xử lý API backend bằng ngôn ngữ PHP, cơ chế tương tác dữ liệu với MySQL và quy cách phản hồi dữ liệu JSON cho các tác vụ đọc thông tin bác sĩ, tạo lượt khám và xác thực danh tính.

CHƯƠNG 6: THIẾT KẾ PHẦN MỀM ANDROID

Chương 6 trình bày cấu trúc cây thư mục mã nguồn và giao diện người dùng trên ứng dụng di động Android:

  • Giao diện đăng nhập, màn hình chính, màn hình đặt lịch khám, màn hình tìm kiếm, hướng dẫn đi khám và màn hình soạn email liên hệ.
  • Hệ thống thông báo đẩy kèm nhạc chuông cảnh báo khi sắp tới lượt khám của bệnh nhân.
  • Màn hình hiển thị danh sách lượt khám hiện tại, bệnh án và chi tiết phác đồ điều trị.
  • Chức năng đặt thời gian và nhắc nhở thực hiện phác đồ điều trị: tích hợp tương tác với ứng dụng đồng hồ hệ thống (hỗ trợ các giao diện tùy biến như Xiaomi, Google Pixel) để tự động tạo lịch nhắc uống thuốc đúng giờ theo đơn bác sĩ.
  • Chức năng cá nhân hóa giao diện người dùng và quản lý hồ sơ cá nhân.

CHƯƠNG 7: KẾT LUẬN

Chương 7 tổng kết những kiến thức lý thuyết và thực tiễn thu nhận được trong suốt quá trình hoàn thành đồ án, bao gồm kỹ năng phân tích thiết kế hệ thống y tế, lập trình ứng dụng di động Android, xây dựng dịch vụ RESTful API và quản trị cơ sở dữ liệu quan hệ. Chương này cũng nêu lên các mặt hạn chế còn tồn tại và gửi lời tri ân tới giảng viên hướng dẫn và nhà trường.


Kết quả và đóng góp

  • Kết quả triển khai kỹ thuật:
    • Xây dựng thành công ứng dụng di động Android đáp ứng đầy đủ các chức năng: đăng ký lịch khám bệnh từ xa, nhận thông báo đẩy kèm chuông khi sắp tới lượt khám, theo dõi số thứ tự thực tế, xem hồ sơ bệnh án và danh mục phác đồ điều trị.
    • Tích hợp thành công tính năng liên kết từ phác đồ điều trị sang ứng dụng đồng hồ/báo thức trên các dòng máy Android khác nhau để tạo nhắc nhở uống thuốc tự động.
    • Xây dựng hoàn chỉnh ứng dụng Web quản trị phân quyền đa cấp (Admin, Hỗ trợ viên, Bác sĩ) phục vụ công tác điều phối hàng đợi khám bệnh, quản lý danh mục chuyên khoa, phòng khám, dịch vụ và nhập liệu phác đồ điều trị.
    • Thiết kế và triển khai 11 bảng cơ sở dữ liệu quan hệ trên MySQL cùng hệ thống RESTful API bằng PHP đảm bảo đồng bộ dữ liệu thời gian thực giữa ứng dụng Web và ứng dụng Di động.
  • Giải pháp quy trình đề xuất: Đồ án đã giải quyết bài toán phân luồng bệnh nhân thông qua việc tách bạch hai trạng thái numerical_order (tiếp nhận) và position (khám chuyên khoa), đồng thời chuẩn hóa quy trình tiếp nhận gồm 7 bước và quy trình quản lý phác đồ điều trị gồm 9 bước rõ ràng.
  • Đóng góp của đồ án: Đồ án cung cấp một mô hình giải pháp phần mềm y tế khép kín từ khâu đăng ký tiếp nhận, điều phối hàng đợi trực tiếp tại chỗ đến khâu chăm sóc, nhắc nhở điều trị sau khám cho bệnh nhân ngoại trú.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế:
    • Hệ thống được nghiên cứu, phát triển và thử nghiệm trong phạm vi đồ án tốt nghiệp đại học, kinh nghiệm thực tế của sinh viên còn hạn chế nên chưa thể tích hợp đầy đủ các kịch bản phức tạp của các bệnh viện đa khoa quy mô lớn.
    • Ứng dụng di động mới chỉ triển khai trên nền tảng Android, chưa hỗ trợ nền tảng iOS.
    • Quy trình phân luồng vẫn phụ thuộc vào thao tác xác nhận thủ công của hỗ trợ viên tại bước lựa chọn bác sĩ và khung giờ.
  • Hướng nghiên cứu tiếp:
    • Mở rộng ứng dụng trên nền tảng iOS và các nền tảng đa thiết bị.
    • Tích hợp cơ chế tự động phân bổ phòng khám và bác sĩ dựa trên thuật toán tối ưu hóa tải thay vì phân bổ thủ công.
    • Bổ sung cổng thanh toán viện phí trực tuyến và liên kết hồ sơ bệnh án điện tử liên viện.

Giá trị tham khảo

Tài liệu đồ án này có giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ thông tin, Công nghệ phần mềm, Hệ thống thông tin: Làm tài liệu tham khảo mẫu về quy trình phân tích thiết kế hệ thống hướng đối tượng (OOAD), cách viết đặc tả use-case chi tiết (tiền điều kiện, đảm bảo tối thiểu/thành công, luồng ngoại lệ) và phương pháp xây dựng hệ thống Client - Server đa nền tảng.
  • Lập trình viên phát triển giải pháp HealthTech: Tham khảo mô hình phân luồng bệnh nhân (NORMAL và BOOKING), cấu trúc cơ sở dữ liệu quản lý phòng khám - chuyên khoa - phác đồ điều trị, cùng giải pháp tích hợp thông báo đẩy và đồng bộ báo thức uống thuốc trên thiết bị di động.
  • Phần đáng tham khảo nhất: Chương 3 (hệ thống 34 bảng đặc tả Use-case và sơ đồ cộng tác nghiệp vụ) và Chương 4 (mô hình tổ chức 11 bảng cơ sở dữ liệu quan hệ).

Câu hỏi thường gặp

1. Cơ chế phân biệt giữa bệnh nhân NORMAL và bệnh nhân BOOKING trong hệ thống được thiết lập như thế nào?
Trong hệ thống, bệnh nhân NORMAL là đối tượng không đặt lịch khám trước qua điện thoại mà đến trực tiếp bệnh viện để lấy số thứ tự tại quầy tiếp nhận. Bệnh nhân BOOKING là đối tượng đã thực hiện tạo lịch hẹn trước thông qua ứng dụng di động Android. Cả hai nhóm đối tượng đều được cấp số thứ tự tiếp nhận khi có mặt tại bệnh viện.

2. Hai chỉ số numerical_order và position mang ý nghĩa và vai trò gì trong việc điều phối lượt khám?
numerical_order là số thứ tự thể hiện số lượng bệnh nhân được tiếp nhận trong ngày (hoặc số thứ tự tổng quát cấp tại quầy tiếp đón, tự động tăng 1 đơn vị mỗi khi có bệnh nhân tới, bất kể là NORMAL hay BOOKING). Trong khi đó, position là chỉ số thể hiện thứ tự khám thực tế của bệnh nhân khi xếp hàng chờ trước phòng khám của một bác sĩ hoặc chuyên khoa cụ thể sau khi đã được phân bổ.

3. Ràng buộc nghiệp vụ đối với bác sĩ khi tạo mới, cập nhật hoặc xóa phác đồ điều trị là gì?
Bác sĩ phải đăng nhập tài khoản hợp lệ (vai trò MEMBER hoặc ADMIN). Bác sĩ có vai trò MEMBER chỉ được phép xem, tạo mới hoặc chỉnh sửa phác đồ điều trị cho các lịch hẹn được chỉ định trực tiếp cho mình. Đặc biệt, trạng thái của lịch hẹn bắt buộc phải đang ở trạng thái PROCESSING. Nếu lịch hẹn đã chuyển sang HOÀN TẤT hoặc HỦY BỎ, hệ thống sẽ từ chối thao tác và hiển thị cảnh báo.

4. Hệ thống tương tác và xử lý dữ liệu giữa ứng dụng Android và máy chủ qua những thành phần nào?
Hệ thống gồm 4 thành phần chính: Điện thoại Android (client của bệnh nhân), Ứng dụng Web (client của bác sĩ/nhân viên trên PC), Máy chủ Web/DB Server (chạy mã nguồn PHP và CSDL MySQL) và Tầng dịch vụ RESTful API. Mọi yêu cầu từ ứng dụng di động hoặc web đều được đóng gói và gửi qua RESTful API (hỗ trợ các phương thức GET, POST, PUT, DELETE, PATCH) kèm theo chuỗi mã xác thực JWT để xử lý và phản hồi dữ liệu.

5. Chức năng nhắc nhở thực hiện phác đồ điều trị trên Android được triển khai như thế nào?
Sau khi bác sĩ kê đơn và lập phác đồ trên website, hệ thống gửi thông báo về ứng dụng Android. Bệnh nhân mở chi tiết phác đồ và có thể sử dụng chức năng đặt thời gian nhắc nhở. Ứng dụng Android sẽ gọi intent liên kết trực tiếp với ứng dụng đồng hồ hệ thống trên thiết bị di động (tương thích các giao diện như Xiaomi, Google Pixel) để người bệnh thiết lập lịch báo thức uống thuốc định kỳ.


Kết luận

Đồ án tốt nghiệp của sinh viên Nguyễn Thành Phong đã giải quyết trọn vẹn bài toán xây dựng hệ thống phần mềm hỗ trợ bệnh nhân đăng ký khám và điều trị bệnh, kết hợp chặt chẽ giữa ứng dụng di động Android và trang web quản trị. Công trình thể hiện năng lực phân tích nghiệp vụ y tế bài bản thông qua hệ thống đặc tả use-case chi tiết, thiết kế cơ sở dữ liệu quan hệ chuẩn hóa 11 bảng và triển khai đầy đủ các luồng tương tác thời gian thực qua RESTful API. Đây là tài liệu kỹ thuật có tính ứng dụng thực tiễn cao, đóng góp một giải pháp khả thi giúp giảm thiểu thời gian chờ đợi của bệnh nhân và nâng cao hiệu quả vận hành tại các cơ sở y tế.