Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh khoa học kỹ thuật và công nghệ thông tin phát triển mạnh mẽ, ngành y tế là một trong những lĩnh vực hưởng lợi trực tiếp từ việc số hóa quy trình quản lý và vận hành. Tại Việt Nam, nhiều cơ sở y tế đang từng bước ứng dụng công nghệ thông tin vào công tác nghiên cứu, quản trị bệnh nhân, lưu trữ hồ sơ bệnh án và truy xuất dữ liệu chuyên môn. Tuy nhiên, quy trình đăng ký khám bệnh truyền thống vẫn còn bộc lộ nhiều điểm nghẽn thực tế:
- Bất cập từ việc xếp hàng trực tiếp: Người bệnh hoặc người nhà phải đến sớm để lấy số thứ tự, chờ đợi nhiều giờ gây mệt mỏi; đặc biệt đối với bệnh nhân từ các tỉnh xa, việc đi lại tốn kém thời gian và chi phí mà không đảm bảo được khám đúng khung giờ mong muốn.
- Hạn chế khi đặt lịch qua điện thoại: Các cuộc gọi thường rơi vào tình trạng không có người trực máy ngoài giờ hành chính; người bệnh không nắm bắt được thông tin chi tiết về lịch làm việc của bác sĩ, biểu giá dịch vụ, chính sách bảo hiểm y tế hay sự thay đổi lịch đột xuất. Việc trao đổi qua lại kéo dài dễ dẫn đến việc người bệnh từ bỏ việc đặt hẹn.
Xuất phát từ thực trạng đó, nhóm tác giả thuộc Khoa Công nghệ Thông tin, Học viện Kỹ thuật Mật mã đã thực hiện đồ án môn học Phát triển phần mềm ứng dụng với đề tài: "Xây dựng hệ thống đặt lịch khám bệnh tại các phòng khám, bệnh viện".
Mục tiêu của đề tài:
Xây dựng nền tảng ứng dụng hỗ trợ người bệnh và các bên liên quan tại phòng khám, bệnh viện tối ưu hóa quy trình đăng ký, tiếp nhận và điều phối lịch khám trực tuyến trên nền tảng website và ứng dụng di động.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Hệ thống trang web và giải pháp phần mềm đặt lịch khám bệnh trực tuyến.
- Phạm vi nghiên cứu: Mô hình vận hành tại các cơ sở y tế bao gồm phòng khám và bệnh viện công, tư.
Cơ sở lý thuyết và phương pháp
Đồ án kết hợp đồng thời hai nhóm phương pháp nghiên cứu để phân tích và hiện thực hóa hệ thống phần mềm:
- Phương pháp nghiên cứu lý thuyết:
- Thu thập, nghiên cứu và tổng hợp các tài liệu chuyên ngành về phân tích thiết kế hệ thống thông tin.
- Khảo sát các công nghệ lập trình hiện đại bao gồm kiến trúc ứng dụng web đa tầng, mô hình điều hướng MVC (Model-View-Controller), các thư viện phát triển giao diện phía máy khách (Client-side) và môi trường thực thi phía máy chủ (Server-side).
- Nghiên cứu nguyên lý xử lý bất đồng bộ, thiết kế kiến trúc giao tiếp RESTful API và ngôn ngữ mô hình hóa thống nhất UML (Unified Modeling Language).
- Phương pháp nghiên cứu thực nghiệm:
- Khảo sát nhu cầu nghiệp vụ thực tế của các tác nhân tham gia vào quy trình đặt khám.
- Xây dựng mô hình use case, đặc tả kịch bản ca sử dụng, thiết lập biểu đồ tuần tự (Sequence Diagram) và biểu đồ hoạt động (Activity Diagram).
- Lập trình phát triển ứng dụng, cấu hình cơ sở dữ liệu và triển khai hệ thống lên hạ tầng đám mây.
Nguồn dữ liệu của đề tài được thu thập từ việc khảo sát các website y tế trực tuyến hiện hành, kết hợp dữ liệu mẫu về thông tin bác sĩ, chuyên khoa, dịch vụ y tế và phản hồi tương tác người dùng.
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 (Front-end) và máy chủ dịch vụ (Back-end), kết nối thông qua giao thức truyền dữ liệu REST API.
| Thành phần |
Công nghệ / Nền tảng |
Vai trò và đặc tính kỹ thuật |
| Front-end |
ReactJS, Redux |
Xây dựng giao diện tương tác người dùng (UI) dạng Single Page Application. Redux đóng vai trò lưu trữ và quản lý trạng thái tập trung (single state container) theo kiến trúc Flux, tối ưu việc chia sẻ dữ liệu giữa các component. |
| Giao diện & Styling |
HTML, CSS/SCSS, Bootstrap 5 (reactstrap) |
Định hình cấu trúc, thiết kế giao diện tương thích đa kích thước màn hình (Responsive Design), chuẩn hóa bảng biểu, form nhập liệu và nút bấm. |
| Back-end |
NodeJS, ExpressJS |
Môi trường runtime hướng sự kiện (event-driven) không đồng bộ; framework ExpressJS hỗ trợ kiến trúc MVC, quản lý định tuyến (routes), tích hợp Middleware xử lý yêu cầu và xây dựng các dịch vụ REST API. |
| Cơ sở dữ liệu |
PostgreSQL / MySQL |
Hệ quản trị cơ sở dữ liệu quan hệ, cung cấp khả năng xử lý dữ liệu ổn định, tốc độ cao, hỗ trợ toàn vẹn quan hệ và quản lý thông tin tài khoản, lịch khám, bác sĩ, bệnh viện. |
| Hạ tầng triển khai |
Vercel (Front-end), Render (Back-end) |
Nền tảng lưu trữ và phân phối ứng dụng trực tuyến, đảm bảo khả năng truy cập 24/7 qua môi trường mạng Internet. |
| Mở rộng & Tích hợp |
Facebook Plugins, Chatbot NLP, Email Service |
Tích hợp tiện ích Like, Share, Comment của Facebook; chatbot tự động trả lời qua Facebook Messenger sử dụng xử lý ngôn ngữ tự nhiên (NLP); dịch vụ gửi email xác nhận đặt lịch và hóa đơn. |
Nội dung chính theo từng chương
Chương 1. Tổng quan hệ thống
Chương này tập trung trình bày bối cảnh thực tiễn của công tác đăng ký khám chữa bệnh tại các cơ sở y tế; phân tích những bất cập của phương thức lấy số xếp hàng truyền thống và việc gọi điện đặt lịch thủ công. Tác giả giới thiệu tổng quan hệ sinh thái giải pháp hướng tới 4 nhóm đối tượng người dùng chính: Khách hàng, Bác sĩ, Quản trị hệ thống và Quản trị bệnh viện.
Nội dung chương đi sâu vào cơ sở lý thuyết của các công nghệ được lựa chọn:
- Đặc điểm của ReactJS trong việc quản lý Virtual DOM và xử lý giao diện; vai trò của Redux trong kiểm soát luồng dữ liệu một chiều.
- Framework ExpressJS trên nền tảng NodeJS, cơ chế hoạt động bất đồng bộ giúp xử lý đồng thời nhiều truy vấn của người dùng.
- Các tính năng của hệ quản trị cơ sở dữ liệu PostgreSQL (nguồn gốc từ POSTGRES 4.2, mã nguồn mở, độ tin cậy cao, chi phí vận hành thấp).
- Phương án lưu trữ đám mây gồm Render cho tầng dịch vụ xử lý và Vercel cho tầng hiển thị, cùng các tiện ích tích hợp mạng xã hội và xử lý ngôn ngữ tự nhiên.
Chương 2. Đặc tả yêu cầu, thiết kế hệ thống
Chương 2 trình bày toàn bộ quá trình phân tích nghiệp vụ và mô hình hóa hệ thống bằng chuẩn UML.
1. Yêu cầu hệ thống
- Yêu cầu chức năng: Cho phép khách hàng tìm kiếm thông tin bác sĩ, chuyên khoa, cơ sở y tế; thực hiện đặt lịch khám online; cung cấp phân hệ quản lý thông tin bác sĩ, quản lý kế hoạch khám chữa bệnh theo từng ngày; hệ thống xuất bản cẩm nang sức khỏe và gửi thông báo xác nhận tự động.
- Yêu cầu phi chức năng: Đảm bảo hệ thống hoạt động ổn định trên môi trường hệ điều hành Windows 10; giao diện trực quan, thân thiện; cấu trúc mã nguồn tuân thủ mô hình MVC nhằm phục vụ việc mở rộng, bảo trì và sửa đổi dễ dàng.
2. Phân tích tác nhân hệ thống
- Khách hàng: Tìm kiếm thông tin y tế, đặt lịch khám trực tuyến, theo dõi cẩm nang sức khỏe, tương tác bình luận, gửi tin nhắn tới chatbot và xác nhận lịch hẹn qua liên kết email.
- Bác sĩ: Đăng nhập, quản lý thông tin cá nhân, theo dõi danh sách lịch khám bệnh được đặt trong ngày, xác nhận tình trạng hoàn thành buổi khám và gửi hóa đơn cho người bệnh qua Gmail.
- Quản trị hệ thống (Admin hệ thống): Quản lý trạng thái tài khoản người dùng (thêm, sửa, xóa, khóa/mở, đặt lại mật khẩu); quản trị thông tin danh mục bác sĩ, danh mục bệnh viện; kiểm duyệt bài viết cẩm nang; quản lý các gói dịch vụ và quyết toán đăng ký khám.
- Quản trị bệnh viện (Admin bệnh viện): Quản lý tài khoản điều hành cơ sở; thiết lập và điều chỉnh kế hoạch, khung thời gian khám bệnh chi tiết theo từng ngày của các bác sĩ thuộc đơn vị.
3. Mô tả hệ thống bằng UML và Bảng đặc tả Use Case
Báo cáo xây dựng 9 nhóm biểu đồ ca sử dụng chính, đi kèm 19 bảng đặc tả luồng sự kiện chi tiết:
| Nhóm chức năng |
Tác nhân chính |
Luồng sự kiện cơ bản |
| Xác thực người dùng |
Toàn bộ tác nhân |
Đăng nhập tài khoản, kiểm tra thông tin định danh, phân quyền truy cập theo vai trò; kết thúc phiên làm việc và xóa lịch sử phiên với use case Đăng xuất. |
| Quản lý kế hoạch khám |
Admin bệnh viện |
Chọn danh sách bác sĩ, xem kế hoạch, thiết lập mới hoặc cập nhật các khung giờ khám bệnh khả dụng theo ngày. |
| Đặt và theo dõi lịch khám |
Khách hàng, Bác sĩ |
Khách hàng chọn cơ sở y tế $\rightarrow$ chọn chuyên khoa $\rightarrow$ chọn bác sĩ $\rightarrow$ chọn khung giờ $\rightarrow$ nhập biểu mẫu $\rightarrow$ nhận email và nhấp link kích hoạt xác nhận. Bác sĩ xem danh sách bệnh nhân đã hẹn, xác nhận kết quả và gửi thông tin hóa đơn về hòm thư người dùng. |
| Quản lý danh mục & Nội dung |
Admin hệ thống |
Thực hiện các thao tác Thêm, Sửa, Xóa thông tin bệnh viện; cập nhật hồ sơ bác sĩ; biên tập, cập nhật hoặc xóa bỏ các bài viết cẩm nang y tế. |
| Quản trị người dùng |
Admin hệ thống |
Thêm mới tài khoản người dùng, sửa đổi thông tin định danh, xóa tài khoản hoặc kích hoạt chức năng Reset thông tin tài khoản trong cơ sở dữ liệu. |
Hệ thống được trực quan hóa thông qua danh mục các biểu đồ tuần tự (Sequence Diagram) từ Hình 2.10 đến Hình 2.26 và các biểu đồ hoạt động (Activity Diagram) từ Hình 2.27 đến Hình 2.34, thể hiện tuần tự các thông điệp trao đổi giữa Actor, Giao diện (Boundary), Bộ điều khiển (Controller) và Cơ sở dữ liệu (Database).
Chương 3. Kết quả thực nghiệm
Chương 3 tổng kết việc hiện thực hóa các chức năng được thiết kế từ Chương 2 lên nền tảng website, kiểm chứng quy trình đăng ký lịch khám, luồng xác nhận qua email và khả năng phân quyền chính xác giữa các nhóm người dùng; đồng thời chỉ ra các kết luận chung và định hướng hoàn thiện sản phẩm.
Kết quả và đóng góp
- Kết quả đạt được:
- Xây dựng hoàn chỉnh mô hình phân tích và thiết kế hệ thống đặt lịch khám bệnh trực tuyến, chuẩn hóa 19 kịch bản ca sử dụng đáp ứng 4 nhóm đối tượng tác nhân.
- Thiết kế giao diện web responsive bằng ReactJS kết hợp Redux và Bootstrap 5, cho phép tra cứu thông tin cơ sở y tế, chuyên khoa, bác sĩ và cẩm nang y tế trực quan.
- Hiện thực hóa luồng đặt hẹn khép kín: Khách hàng chọn lịch $\rightarrow$ nhận email xác thực $\rightarrow$ dữ liệu chuyển tới phân hệ quản lý của bác sĩ $\rightarrow$ bác sĩ xác nhận và gửi hóa đơn khám bệnh trực tiếp về hòm thư điện tử của khách hàng.
- Thiết lập máy chủ backend ExpressJS RESTful API và cơ sở dữ liệu PostgreSQL/MySQL, triển khai ứng dụng thực tế trên nền tảng Vercel và Render.
- Giải pháp và đóng góp của đề tài:
- Cung cấp giải pháp kỹ thuật kết nối trực tiếp bệnh nhân với các cơ sở y tế 24/7, loại bỏ khâu xếp hàng chờ đợi và giảm tải các cuộc gọi đặt lịch thủ công ngoài giờ làm việc.
- Hỗ trợ quản trị bệnh viện phân bổ khung giờ làm việc của bác sĩ theo từng ngày một cách linh hoạt, tránh tình trạng quá tải cục bộ tại các chuyên khoa.
- Tích hợp giải pháp trợ lý ảo Chatbot NLP và mạng xã hội, nâng cao khả năng tương tác và hỗ trợ giải đáp thắc mắc y tế ban đầu cho người dùng.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế:
- Các chức năng mới dừng lại ở phiên bản web ứng dụng, phân hệ ứng dụng di động (mobile app) vẫn đang ở mức định hướng phát triển.
- Quy trình quyết toán chi phí khám bệnh và liên kết với bảo hiểm y tế mới ở mức gửi hóa đơn qua email, chưa tích hợp cổng thanh toán trực tuyến tự động chuyên sâu.
- Cơ chế chatbot NLP trên nền tảng Facebook Messenger chủ yếu xử lý các kịch bản hội thoại mẫu, chưa bao quát được toàn bộ các truy vấn y khoa phức tạp.
- Hướng nghiên cứu và phát triển tiếp:
- Phát triển hoàn thiện ứng dụng di động đa nền tảng để người bệnh dễ dàng đặt khám và nhận thông báo nhắc lịch trên điện thoại.
- Bổ sung phân hệ khám bệnh từ xa (telemedicine), tư vấn trực tuyến giữa bác sĩ và bệnh nhân qua cuộc gọi video.
- Tích hợp cổng thanh toán điện tử (thẻ ngân hàng, ví điện tử) và đối soát chi phí tự động khi đặt lịch.
- Nâng cấp mô hình ngôn ngữ tự nhiên của hệ thống Chatbot để hỗ trợ tư vấn chuyên sâu và phân loại bệnh tự động trước khi chỉ định chuyên khoa.
Giá trị tham khảo
Đồ án là tài liệu tham khảo có cấu trúc chuẩn mực dành cho:
- Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin: Tham khảo quy trình phân tích và thiết kế hệ thống thông tin hướng đối tượng; phương pháp lập mô hình UML từ Use Case, Sequence Diagram đến Activity Diagram.
- Người phát triển ứng dụng web Full-stack: Học hỏi cách tổ chức kiến trúc phần mềm kết hợp giữa ReactJS, Redux, NodeJS, ExpressJS và hệ quản trị cơ sở dữ liệu quan hệ; phương án phân quyền đa người dùng (Multi-role Authorization) và quy trình xác thực qua email tự động.
- Nhóm phát triển giải pháp Y tế số (HealthTech): Tham khảo mô hình quy trình nghiệp vụ đặt lịch khám bệnh, luồng điều phối ca khám của bác sĩ và mô hình hóa dữ liệu bệnh viện - chuyên khoa - bác sĩ.
Câu hỏi thường gặp
1. Hệ thống hỗ trợ những nhóm người dùng nào và vai trò của từng nhóm ra sao?
Hệ thống phân quyền cho 4 nhóm tác nhân: Khách hàng (tìm kiếm bác sĩ/cơ sở y tế, đặt lịch, đọc cẩm nang, chat với bot); Bác sĩ (theo dõi lịch khám trong ngày, xác nhận buổi khám và gửi hóa đơn); Quản trị bệnh viện (lập và điều chỉnh kế hoạch, khung giờ khám theo ngày của từng bác sĩ); Quản trị hệ thống (quản lý người dùng, bệnh viện, bác sĩ, cẩm nang và cấu hình hệ thống).
2. Quy trình đặt lịch khám bệnh của khách hàng diễn ra như thế nào?
Khách hàng chọn Bệnh viện $\rightarrow$ chọn Chuyên khoa $\rightarrow$ chọn Bác sĩ $\rightarrow$ chọn khung thời gian khám theo ngày $\rightarrow$ điền biểu mẫu thông tin cá nhân $\rightarrow$ hệ thống gửi email xác nhận $\rightarrow$ khách hàng nhấp vào liên kết trong email để hoàn tất đặt lịch. Ngoài ra, khách hàng có thể chọn nhanh từ danh mục chuyên khoa hoặc bác sĩ nổi bật.
3. Công nghệ nào được sử dụng để xây dựng hệ thống và ứng dụng được triển khai ở đâu?
Hệ thống sử dụng ReactJS kết hợp Redux, SCSS và Bootstrap 5 cho tầng giao diện (Front-end); NodeJS kết hợp framework ExpressJS cho tầng dịch vụ xử lý (Back-end); cơ sở dữ liệu quan hệ PostgreSQL/MySQL. Về hạ tầng, giao diện Front-end được triển khai trên Vercel và hệ thống Back-end được triển khai trên Render.
4. Bác sĩ xác nhận lịch khám và phản hồi kết quả cho bệnh nhân bằng cách nào?
Sau khi đăng nhập và truy cập chức năng "Quản lý lịch khám", bác sĩ xem danh sách các đơn khám được đặt trong ngày. Khi buổi khám hoàn tất, bác sĩ nhấn nút xác nhận, điền thông tin vào biểu mẫu hóa đơn khám bệnh; hệ thống sẽ cập nhật trạng thái đồng thời tự động gửi hóa đơn chi tiết về địa chỉ Gmail của người bệnh.
5. Hệ thống tích hợp những công nghệ mở rộng nào ngoài các chức năng quản lý cốt lõi?
Hệ thống tích hợp các tiện ích plugin của Facebook (Like, Share, Comment) vào các bài viết cẩm nang y tế, xây dựng Chatbot tự động qua Facebook Messenger ứng dụng kỹ thuật Xử lý ngôn ngữ tự nhiên (NLP) và tích hợp dịch vụ gửi thư tự động qua giao thức email.
Kết luận
Đồ án môn học "Xây dựng hệ thống đặt lịch khám bệnh tại các phòng khám, bệnh viện" của nhóm sinh viên Khoa Công nghệ Thông tin, Học viện Kỹ thuật Mật mã đã giải quyết trọn vẹn bài toán số hóa quy trình đăng ký khám bệnh. Bằng việc ứng dụng các công nghệ hiện đại như ReactJS, NodeJS, ExpressJS và PostgreSQL, nhóm tác giả đã thiết kế và xây dựng thành công một nền tảng trực tuyến hỗ trợ 4 nhóm tác nhân vận hành hiệu quả. Đây là tài liệu tham khảo có giá trị cao về mặt phân tích thiết kế hệ thống và xây dựng ứng dụng web quản lý trong lĩnh vực y tế.