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

Trong bối cảnh công nghệ thông tin và hạ tầng viễn thông phát triển nhanh chóng, việc ứng dụng các nền tảng trực tuyến vào đời sống xã hội ngày càng trở nên phổ biến. Tại Việt Nam, sự gia tăng dân số kéo theo nhu cầu khám chữa bệnh tăng cao, dẫn đến tình trạng quá tải và kéo dài thời gian chờ đợi hoàn tất các thủ tục đăng ký trực tiếp tại cơ sở y tế. Mặc dù mô hình dịch vụ y tế trực tuyến đã được áp dụng rộng rãi tại các quốc gia phát triển, việc triển khai tại Việt Nam vẫn còn gặp một số rào cản về hạ tầng kỹ thuật và giải pháp tích hợp tiện ích cho người bệnh. Nhiều cơ sở y tế chưa xây dựng hệ thống đặt hẹn trực tuyến, hoặc các hệ thống hiện hữu chưa đáp ứng đầy đủ nhu cầu tìm kiếm, chọn lọc thông tin của người dùng.

Đề tài tốt nghiệp "Xây dựng website hỗ trợ đặt lịch khám bệnh" do sinh viên Phạm Đắc Trường (MSSV: 19110307) và Nguyễn Thiện Nghĩa (MSSV: 19110247) thực hiện dưới sự hướng dẫn của TS. Lê Văn Vinh tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, chuyên ngành Công nghệ Thông tin. Đề tài hướng tới việc giải quyết bài toán tối ưu hóa quy trình tiếp cận dịch vụ y tế thông qua môi trường web.

Mục tiêu cụ thể của đề tài được xác định gồm 4 nội dung chính:

  1. Xây dựng giao diện web thân thiện, dễ sử dụng, cho phép người dùng tra cứu thông tin bác sĩ, phòng khám và lựa chọn lịch khám phù hợp một cách thuận tiện.
  2. Thiết lập hệ thống quản trị dành cho bác sĩ nhằm cập nhật lịch trình làm việc, tra cứu, xác nhận cuộc hẹn khám và quản lý danh sách bệnh nhân.
  3. Hoàn thiện tính năng cho phép bệnh nhân lựa chọn bác sĩ, phòng khám, ngày giờ khám nhanh chóng thông qua hệ thống trực tuyến.
  4. Tích hợp tính năng nhắc nhở và gửi thông báo xác nhận lịch hẹn tự động qua email cho người dùng khi hoàn tất đăng ký.

Đối tượng nghiên cứu của đề tài bao gồm hai cấu phần:

  • Quy trình nghiệp vụ thực tiễn trong quản lý và vận hành hệ thống y tế: Quản lý người dùng, thiết lập lịch trình khám bệnh, quy trình xử lý đơn đặt lịch hẹn và tương tác giao tiếp với bệnh nhân.
  • Công nghệ phần mềm: Nghiên cứu áp dụng kiến trúc RESTful API, thư viện ReactJS, nền tảng Node.js, hệ quản trị cơ sở dữ liệu quan hệ MySQL cùng các thư viện bổ trợ như Redux.

Phạm vi nghiên cứu của đề tài tập trung vào việc hiện thực hóa các tác vụ nghiệp vụ cơ bản của một hệ thống web đặt lịch khám bệnh: tra cứu thông tin và hồ sơ chi tiết của bác sĩ, chuyên khoa, phòng khám và thực hiện quy trình đăng ký đặt lịch trực tuyến. Thời gian thực hiện đề tài kéo dài trong 15 tuần (từ ngày 13/02/2023 đến ngày 29/05/2023). Về mặt phân công nhân sự, sinh viên Phạm Đắc Trường phụ trách 100% phần lập trình Back-end và 50% báo cáo; sinh viên Nguyễn Thiện Nghĩa phụ trách 100% phần lập trình Front-end và 50% báo cáo.

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

Khóa luận xây dựng trên nền tảng kiến trúc ứng dụng web hiện đại, kết hợp giữa mô hình xử lý dữ liệu hướng máy chủ (Server-side) và xây dựng giao diện người dùng tương tác phía máy khách (Client-side). Các công nghệ chủ chốt được phân tích và ứng dụng bao gồm:

  • ReactJS: Thư viện JavaScript mã nguồn mở do Facebook phát triển, phục vụ việc xây dựng giao diện người dùng thông qua cơ chế phân rã thành phần (Component-based architecture). Thư viện sử dụng cơ chế Virtual DOM (mô hình DOM ảo) để so sánh các thay đổi và chỉ cập nhật những phần tử thực sự biến đổi trên DOM thực, giúp tối ưu hóa hiệu năng kết xuất đồ họa và duy trì trạng thái mượt mà cho ứng dụng web.
  • Node.js: Môi trường thực thi mã JavaScript phía máy chủ chạy trên nền tảng Chrome V8 JavaScript Engine. Node.js vận hành dựa trên mô hình bất đồng bộ (asynchronous) và hướng sự kiện (event-driven), cho phép xử lý đồng thời lượng lớn kết nối mạng mà không gây tắc nghẽn luồng xử lý (non-blocking I/O). Hệ thống tận dụng hệ sinh thái thư viện thông qua trình quản lý gói npm (Node Package Manager) để phát triển hệ thống API.
  • MySQL: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở do Oracle quản lý, sử dụng ngôn ngữ truy vấn có cấu trúc SQL. Hệ thống cung cấp cơ chế phân quyền, mã hóa dữ liệu, đảm bảo tính toàn vẹn và hỗ trợ các kỹ thuật mở rộng như phân vùng (partitioning) và sao chép dữ liệu (replication).
  • Redux: Thư viện quản lý trạng thái tập trung (State Management) cho ứng dụng JavaScript/ReactJS. Toàn bộ trạng thái của ứng dụng được quản lý trong một kho lưu trữ duy nhất (single store) dưới dạng cây đối tượng bất biến (immutable object tree), các thay đổi trạng thái được kiểm soát thông qua luồng hành động (actions) và các hàm biến đổi trạng thái thuần túy (reducers), kết hợp với middleware để xử lý các tác vụ bất đồng bộ.

Phương pháp nghiên cứu được nhóm tác giả áp dụng bao gồm:

  • Phương pháp khảo sát hiện trạng thực tế: Thu thập, phân tích và đánh giá các hệ thống đặt lịch khám bệnh đang vận hành tại Việt Nam nhằm đúc kết yêu cầu chức năng và trải nghiệm người dùng.
  • Phương pháp phân tích và thiết kế hệ thống hướng đối tượng: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng hệ thống biểu đồ ca sử dụng (Use Case Diagram), biểu đồ tuần tự (Sequence Diagram) và bảng đặc tả chi tiết cho từng nghiệp vụ.
  • Phương pháp thiết kế và phát triển phần mềm: Xây dựng hệ thống giao diện Front-end tách biệt và kết nối với Back-end thông qua các điểm cuối RESTful API.

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

Chương 1: Cơ sở lý thuyết

Chương 1 trình bày chi tiết về định nghĩa, nguyên lý hoạt động và ưu điểm kỹ thuật của từng công nghệ được lựa chọn trong đề tài:

  • Trình bày cấu trúc và nguyên lý làm việc của Virtual DOM trong ReactJS, phương thức quản lý luồng dữ liệu hai chiều khi kết hợp với các thư viện trạng thái.
  • Phân tích ưu thế của Node.js trong việc xử lý các tác vụ bất đồng bộ đa kết nối, khả năng vận hành đa nền tảng (Windows, macOS, Linux).
  • Đánh giá tính năng bảo mật, phân quyền người dùng và khả năng tích hợp cơ sở dữ liệu MySQL với các ngôn ngữ lập trình thông qua API.
  • Phân tích mô hình kiến trúc lưu trữ trạng thái tập trung của Redux, việc ứng dụng middleware để ghi nhật ký, kiểm tra điều kiện và thực hiện các tác vụ bất đồng bộ độc lập với giao diện.

Chương 2: Khảo sát hiện trạng

Chương 2 tập trung khảo sát thực trạng các hệ sinh thái web y tế tại Việt Nam thông qua các bộ từ khóa tìm kiếm chuyên ngành. Nhóm tác giả thực hiện phân tích chi tiết 4 hệ thống tiêu biểu:

Hệ thống khảo sát Chức năng tiêu biểu Ưu điểm ghi nhận Hạn chế ghi nhận
Bệnh viện Việt Pháp Đặt lịch trực tuyến, tìm kiếm bác sĩ theo chuyên khoa, tư vấn y tế trực tuyến Giao diện thân thiện, dễ tra cứu bác sĩ và bệnh viện Chưa hỗ trợ tính năng bình luận, đánh giá của người dùng
Hello Bác sĩ Đăng ký tư vấn sức khỏe, đăng nhập qua Facebook/Email, lọc bác sĩ theo chuyên khoa và thành phố, thanh toán trực tuyến Bố cục phân chia hợp lý, phân loại chuyên mục bệnh rõ ràng Chưa tích hợp tính năng bình luận tương tác
Bệnh viện Đa khoa Tâm Anh Đặt lịch chọn khung giờ/bác sĩ/chi nhánh, tích hợp chatbot tư vấn, dịch vụ VIP, đánh giá bác sĩ Giao diện chuẩn mực, phân cấp chuyên khoa chi tiết Khung giờ làm việc thực tế và bác sĩ có thể khám còn hạn chế khi đặt lịch
Bệnh viện Nhân dân 115 Đăng ký khám nhanh, tư vấn bằng chatbot, hỏi đáp miễn phí với bác sĩ Bố cục đơn giản, hỗ trợ tốt cho người cao tuổi, có tính năng tư vấn trước khi đặt hẹn Tính năng đánh giá chỉ dừng lại ở mức chọn số sao, không cho phép viết bình luận

Từ kết quả khảo sát, chương 2 tổng hợp các thành phần cốt lõi cần xây dựng cho website đề tài, bao gồm cấu trúc bố cục trang (Header, Menu, Body, Footer), danh mục tin tức y tế, phân loại chuyên khoa và quy trình tương tác đặt hẹn.

Chương 3: Phân tích hệ thống

Chương 3 xây dựng bản phân tích yêu cầu nghiệp vụ và mô hình hóa chức năng hệ thống cho 3 nhóm tác nhân (Guest, Doctor, Admin):

  • Yêu cầu chức năng nghiệp vụ:
    • Khách hàng (Guest): Tra cứu mô tả bác sĩ, phòng khám, chuyên khoa và thực hiện đặt lịch khám kèm thông tin địa chỉ cá nhân.
    • Bác sĩ (Doctor): Đăng nhập hệ thống bằng email và mật khẩu; tạo lập kế hoạch khám bệnh; tra cứu và quản lý danh sách lịch khám theo ngày đặt; xác nhận lịch hẹn của bệnh nhân.
    • Quản trị viên (Admin): Quản lý thông tin chi tiết bác sĩ; quản lý tài khoản người dùng và bác sĩ (thêm, sửa, xóa); quản trị danh mục chuyên khoa và danh mục cơ sở phòng khám (thêm, sửa, xóa).
  • Yêu cầu phi chức năng và chất lượng:
    • Tính tiện dụng: Giao diện đơn giản, tối ưu hóa thao tác người dùng.
    • Tính nâng cấp: Cấu trúc mã nguồn dễ dàng mở rộng và tích hợp tính năng mới.
    • Tính hiệu quả: Đảm bảo tốc độ tải trang nhanh dưới 2 giây.
    • Tính bảo mật: Xác thực thông tin truy cập và phân quyền chặt chẽ theo 3 cấp độ (Guest, Doctor, Admin).
  • Đặc tả Use Case và Lược đồ tuần tự: Hệ thống xây dựng 24 ca sử dụng (Use Case) kèm bảng đặc tả chi tiết (gồm Điều kiện tiên quyết, Điều kiện sau khi thực hiện, Luồng sự kiện chính, Luồng sự kiện phụ và Luồng ngoại lệ) cùng 19 lược đồ tuần tự (Sequence Diagram) mô tả chi tiết tương tác thông điệp giữa các lớp đối tượng.

Chương 4: Thiết kế giao diện

Chương 4 hiện thực hóa thiết kế đồ họa và cấu trúc tương tác của hệ thống, phân chia theo 3 không gian làm việc:

  • Phân hệ người dùng (User/Guest): Thiết kế trang chủ tích hợp danh mục chuyên khoa phổ biến, cơ sở y tế nổi bật, bác sĩ nổi bật trong tuần; trang thông tin chi tiết chuyên khoa; danh sách bác sĩ theo chuyên khoa; trang chi tiết thông tin bác sĩ và biểu mẫu đặt lịch khám bệnh.
  • Phân hệ quản trị (Admin): Giao diện đăng nhập bảo mật; trang quản lý danh sách tài khoản bác sĩ và phân quyền quản trị; trang tạo lập và cập nhật hồ sơ chuyên môn bác sĩ; trang quản lý, chỉnh sửa, xóa thông tin phòng khám và chuyên khoa.
  • Phân hệ bác sĩ (Doctor): Giao diện thiết lập kế hoạch và khung giờ khám bệnh theo ngày; giao diện quản lý hồ sơ bệnh nhân đặt khám; bảng điều khiển xác nhận và gửi thông tin xác nhận lịch hẹn.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình tách biệt giữa giao diện phía máy khách (Client-side) và dịch vụ phía máy chủ (Server-side), giao tiếp thông qua giao thức HTTP/HTTPS với định dạng dữ liệu chuẩn JSON.

[Client: ReactJS + Redux] <---> [RESTful API Engine] <---> [Server: Node.js / Express] <---> [Database: MySQL]
  • Kiến trúc dữ liệu và điều phối trạng thái: Phía máy khách sử dụng ReactJS kết hợp Redux để duy trì luồng dữ liệu đơn hướng. Mọi thay đổi dữ liệu từ giao diện đều kích hoạt Action tương ứng, chuyển qua Reducer để tính toán và lưu trữ trạng thái mới trong Store tập trung.
  • Phân quyền và bảo mật hệ thống: Cơ chế kiểm soát truy cập dựa trên vai trò (Role-Based Access Control) phân lập rõ quyền hạn của 3 nhóm đối tượng: Guest (chỉ đọc thông tin và gửi yêu cầu đặt lịch), Doctor (quản lý lịch làm việc cá nhân và xử lý hồ sơ khám), Admin (toàn quyền can thiệp hệ thống dữ liệu, tài khoản và danh mục).
  • Cơ chế xử lý thông báo tự động: Hệ thống tích hợp dịch vụ gửi thư điện tử. Khi khách hàng hoàn tất biểu mẫu đăng ký lịch khám, hệ thống máy chủ Node.js tiếp nhận dữ liệu, ghi nhận trạng thái vào cơ sở dữ liệu MySQL và kích hoạt tác vụ gửi email thông báo xác nhận tự động đến địa chỉ hòm thư của người dùng.
  • Kiểm soát chất lượng vận hành: Đảm bảo thời gian đáp ứng tải trang đạt chuẩn dưới 2 giây đối với các tác vụ truy vấn danh mục và thao tác nhập liệu biểu mẫu.

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

Khóa luận đã hoàn thành các mục tiêu nghiên cứu và phát triển phần mềm đề ra, đạt được các kết quả cụ thể:

  • Xây dựng hoàn chỉnh website hỗ trợ đặt lịch khám bệnh trực tuyến với đầy đủ các phân hệ chức năng cho Khách hàng, Bác sĩ và Quản trị viên.
  • Số hóa và chuẩn hóa 24 ca sử dụng nghiệp vụ y tế, hoàn thiện hệ thống biểu đồ phân tích kiến trúc gồm 21 biểu đồ Use Case và 19 biểu đồ tuần tự (Sequence Diagram).
  • Hiện thực hóa tính năng kết nối thông tin tự động thông qua việc gửi email xác nhận ngay sau khi bệnh nhân đặt lịch thành công.
  • Đóng góp giải pháp công nghệ giúp tối ưu hóa thời gian lựa chọn bác sĩ, giảm bớt áp lực thủ tục hành chính trực tiếp tại cơ sở y tế cho người bệnh và đội ngũ nhân viên y tế.

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

Dựa trên phạm vi và nội dung trình bày trong văn bản khóa luận, đề tài còn một số mặt hạn chế:

  • Phạm vi triển khai mới dừng lại ở mức xử lý các tác vụ cơ bản của quy trình đặt lịch trực tuyến; chưa tích hợp module thanh toán điện tử trực tiếp trên website.
  • Hệ thống chưa hỗ trợ cơ chế phản hồi, bình luận và đánh giá đa chiều chi tiết từ phía bệnh nhân sau khi hoàn thành quá trình khám bệnh.

Hướng phát triển tiếp theo được nhóm tác giả đề xuất:

  • Nghiên cứu tích hợp cổng thanh toán trực tuyến nhằm hoàn thiện chu trình dịch vụ khép kín.
  • Bổ sung tính năng cho phép bệnh nhân gửi đánh giá, phản hồi chi tiết về chất lượng dịch vụ của bác sĩ và cơ sở y tế.
  • Tối ưu hóa cấu trúc cơ sở dữ liệu để nâng cao khả năng quản lý dữ liệu lớn và nâng cấp các cơ chế bảo mật cho toàn hệ thống.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo phù hợp cho sinh viên chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và các nhà phát triển hệ thống web ứng dụng ngăn xếp công nghệ ReactJS – Node.js – MySQL.

Tài liệu có giá trị tham khảo rõ nét ở các nội dung:

  • Quy trình khảo sát và phân tích hiện trạng các hệ thống thực tế trên thị trường y tế số tại Việt Nam.
  • Phương pháp xây dựng tài liệu phân tích hệ thống hướng đối tượng chuẩn mực với hệ thống bảng đặc tả Use Case chi tiết (phân tách rõ ràng Luồng chính, Luồng phụ, Luồng ngoại lệ) và hệ thống biểu đồ tuần tự.
  • Cấu trúc phân quyền và phân tách giao diện người dùng theo nhiều vai trò tác nhân nghiệp vụ trong một ứng dụng quản lý y tế.

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

Hệ thống phân chia quyền hạn truy cập cho những nhóm người dùng nào?
Hệ thống phân quyền thành 3 nhóm tác nhân: Guest (khách vãng lai xem thông tin chuyên khoa, phòng khám, bác sĩ và thực hiện đặt lịch), Doctor (bác sĩ đăng nhập, tạo kế hoạch khám, xem lịch và xác nhận lịch hẹn của bệnh nhân) và Admin (quản trị viên quản lý tài khoản bác sĩ, hồ sơ bác sĩ, danh mục chuyên khoa và cơ sở phòng khám).

Đề tài sử dụng giải pháp kỹ thuật nào để tối ưu hiệu năng kết xuất giao diện?
Đề tài sử dụng thư viện ReactJS với cơ chế Virtual DOM. Khi trạng thái ứng dụng thay đổi, hệ thống so sánh DOM ảo mới với phiên bản trước đó và chỉ cập nhật các phần tử thực sự biến đổi lên DOM thực tế của trình duyệt, giúp giảm thiểu chi phí tái kết xuất và nâng cao tốc độ phản hồi.

Quy trình thông báo xác nhận khi bệnh nhân đặt lịch thành công được xử lý như thế nào?
Khi người dùng hoàn tất việc nhập thông tin và gửi biểu mẫu đặt lịch khám trên website, hệ thống sẽ tự động gửi một email thông báo xác nhận cuộc hẹn tới địa chỉ email mà người dùng đã đăng ký.

Những điểm hạn chế phổ biến của các website y tế hiện hành được nhóm tác giả phát hiện qua khảo sát là gì?
Qua khảo sát 4 hệ thống (BV Việt Pháp, Hello Bác sĩ, BV Tâm Anh, BV 115), nhóm tác giả nhận thấy hạn chế chung là hầu hết các trang chưa hỗ trợ tính năng bình luận tương tác chi tiết của người dùng, chức năng đánh giá còn đơn giản (chỉ chọn số sao) hoặc khung giờ khám thực tế của bác sĩ còn bị giới hạn khi thao tác đặt hẹn.

Yêu cầu phi chức năng về hiệu năng và thời gian tải trang của website được quy định ra sao?
Hệ thống đặt ra tiêu chuẩn phi chức năng về tính hiệu quả với yêu cầu tốc độ tải trang web (load time) phải nhanh và duy trì ở mức dưới 2 giây cho các thao tác truy cập và xử lý dữ liệu.

Kết luận

Đồ án tốt nghiệp "Xây dựng website hỗ trợ đặt lịch khám bệnh" của sinh viên Phạm Đắc Trường và Nguyễn Thiện Nghĩa đã hoàn thành việc nghiên cứu, phân tích và hiện thực hóa một hệ thống đặt lịch y tế trực tuyến dựa trên nền tảng ReactJS, Node.js và MySQL. Công trình cung cấp đầy đủ các tài liệu phân tích yêu cầu nghiệp vụ, hệ thống biểu đồ ca sử dụng, biểu đồ tuần tự cùng các giao diện quản trị phân quyền cho người dùng, bác sĩ và quản trị viên. Mặc dù còn hạn chế về khả năng thanh toán trực tuyến và chức năng đánh giá tương tác, đề tài đã mang lại một giải pháp kỹ thuật có tính ứng dụng thực tiễn trong việc giảm tải thủ tục hành chính và tối ưu hóa thời gian khám chữa bệnh.