Bối cảnh và vấn đề nghiên cứu
Đề tài "Hệ thống chăm sóc sức khỏe, liên kết bác sĩ với bệnh nhân" được thực hiện trong bối cảnh các dịch vụ y tế truyền thống tại bệnh viện và phòng khám bộc lộ nhiều bất cập về thời gian chờ đợi và thủ tục di chuyển phức tạp. Sau giai đoạn bùng phát của dịch bệnh COVID-19, thói quen sinh hoạt và tiếp cận dịch vụ trực tuyến tại nhà của người dân ngày càng gia tăng. Tuy nhiên, phần lớn các hệ thống y tế số hiện hành tại Việt Nam chủ yếu đóng vai trò quảng bá dịch vụ hoặc bắt buộc bệnh nhân phải đến trực tiếp cơ sở y tế dù chỉ mắc các triệu chứng nhẹ có thể xử lý và điều trị tại nhà. Xuất phát từ nhu cầu thực tiễn đó, nhóm tác giả định hướng xây dựng một nền tảng trực tuyến hỗ trợ kết nối trực tiếp, cho phép bệnh nhân đặt lịch hẹn để bác sĩ đến thăm khám tận nơi, đồng thời thiết lập một không gian trao đổi, tư vấn y khoa đáng tin cậy.
Văn bản đồ án xác định rõ 7 nhiệm vụ nghiên cứu chính bao gồm:
- Mô tả khái quát về hệ thống khóa luận tốt nghiệp của nhóm.
- Phân tích quan điểm và đánh giá về các hệ thống khám bệnh tương tự đang có tại Việt Nam.
- Mô tả chính xác tất cả chức năng và hướng dẫn sử dụng các chức năng đó trên hệ thống.
- Mô tả kiến trúc và các công nghệ, phần mềm thứ ba được sử dụng trong hệ thống.
- Cung cấp cái nhìn tổng thể về hệ thống theo quan điểm và trải nghiệm của các nhóm người dùng (khách vãng lai, bệnh nhân, bác sĩ).
- Định hướng mở rộng dự án với tiềm năng phát triển theo nhiều hướng, liên kết với các đơn vị thanh toán, bảo hiểm, nhà thuốc và phòng khám ngoại vi.
- Giải quyết các vấn đề hiện hữu trong công tác khám chữa bệnh: đơn giản hóa quy trình, giảm thiểu bước trung gian, loại bỏ việc chờ đợi di chuyển và xây dựng cộng đồng bác sĩ sẵn sàng tư vấn sau mỗi lần thăm khám.
Về đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình tương tác và quản lý dữ liệu giữa 4 nhóm người dùng trong hệ thống: Khách vãng lai (Guest), Bệnh nhân (Patient), Bác sĩ đối tác (Doctor) và Quản trị viên (Admin).
- Phạm vi nghiên cứu: Hệ thống phần mềm dạng ứng dụng web phục vụ người dùng tại Việt Nam, sử dụng giao diện ngôn ngữ tiếng Việt, tập trung triển khai thực nghiệm cho khu vực các thành phố lớn. Đồ án được thực hiện trong thời gian từ ngày 01/03/2024 đến ngày 25/06/2024 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.
Cơ sở lý thuyết và phương pháp
Khóa luận áp dụng mô hình phát triển phần mềm dựa trên nền tảng web hiện đại, kết hợp mô hình kiến trúc ba tầng (3-tier architecture) và quy trình phát triển song song hai chiều: tiếp cận từ ngoài vào trong (thiết kế giao diện Front-end) song song với từ trong ra ngoài (xây dựng các giao diện lập trình ứng dụng RESTful API ở Back-end).
Hệ thống công nghệ và khung kỹ thuật được lựa chọn bao gồm:
- Tầng hiển thị (Front-end): Thư viện ReactJS với cú pháp JSX và kiến trúc hướng thành phần (component-based), kết hợp hai thư viện giao diện là Tailwind CSS (tiện ích định kiểu cấp thấp) và Ant Design (bộ component UI chuẩn hóa).
- Tầng ứng dụng (Back-end): Nền tảng thực thi JavaScript Node.js chạy trên V8 JavaScript Engine kết hợp framework ExpressJS để xây dựng hệ thống RESTful API tiếp nhận và xử lý các yêu cầu từ phía máy khách.
- Tầng dữ liệu (Database): Hệ quản trị cơ sở dữ liệu quan hệ MySQL, sử dụng các bảng quan hệ, kết hợp việc thiết lập các View, Stored Procedure và Trigger nhằm tối ưu hóa truy xuất và tự động hóa các thao tác xử lý nghiệp vụ.
- Hạ tầng và dịch vụ đám mây bên thứ ba: Google Firebase Authentication (xác thực đăng nhập tài khoản Google), Google Cloud, Cloudinary (lưu trữ và xử lý tài nguyên hình ảnh), AWS Lightsail và Hostinger (hạ tầng lưu trữ và triển khai hệ thống).
Phương pháp nghiên cứu thực tế bao gồm:
- Phương pháp phân tích - tổng hợp và so sánh hệ thống: Khảo sát, đánh giá chức năng và giao diện của các nền tảng y tế số đang hoạt động tại Việt Nam (Hello Bacsi, Jiohealth, Docosan) để xác định điểm tương đồng, điểm khác biệt và các hạn chế cần khắc phục.
- Phương pháp mô hình hóa hướng đối tượng và phân tích thiết kế hệ thống: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng Sơ đồ ca sử dụng (Use Case Diagram), Mô hình dữ liệu khái niệm (Conceptual Data Model), Sơ đồ lớp (Class Diagram), cùng hệ thống 5 loại biểu đồ chi tiết cho từng ca sử dụng: Biểu đồ hoạt động (Activity Diagram), Biểu đồ tuần tự (Sequence Diagram), Biểu đồ trạng thái (State Diagram) và Biểu đồ cộng tác (Collaboration Diagram).
Thiết kế và triển khai
Hệ thống được thiết kế theo cấu trúc phân tầng phân tách rõ ràng trách nhiệm giữa việc biểu diễn giao diện, xử lý nghiệp vụ và lưu trữ dữ liệu thông qua giao tiếp RESTful API:
| Thành phần kiến trúc |
Công nghệ sử dụng |
Chức năng chính |
| Tầng hiển thị (Front-end) |
ReactJS, Tailwind CSS, Ant Design |
Tiếp nhận tương tác, điều hướng giao diện, gửi yêu cầu HTTP Request và kết xuất dữ liệu phản hồi cho người dùng |
| Tầng ứng dụng (Back-end) |
Node.js, ExpressJS |
Xác thực yêu cầu, xử lý logic nghiệp vụ, điều phối dữ liệu và cung cấp các điểm cuối RESTful API |
| Tầng cơ sở dữ liệu |
MySQL |
Lưu trữ dữ liệu quan hệ, thực thi toàn vẹn dữ liệu qua khóa chính, khóa ngoại, Trigger và Stored Procedure |
| Dịch vụ tích hợp ngoài |
Firebase Auth, Cloudinary, AWS, Google Cloud |
Xác thực đa nền tảng, lưu trữ tài nguyên đa phương tiện và hạ tầng vận hành máy chủ |
Hệ thống thiết lập cơ chế phân quyền chặt chẽ với 4 phân hệ người dùng:
- Guest: Tìm kiếm thông tin bác sĩ, tra cứu dịch vụ khám bệnh, đọc các bài viết y khoa trên chuyên mục blog sức khỏe.
- Patient: Thực hiện đặt lịch khám bệnh tại nhà, quản lý hồ sơ cá nhân, theo dõi trạng thái cuộc hẹn (chờ duyệt, đã chấp nhận, đã hoàn thành, đã hủy), gửi bình luận và đánh giá bác sĩ.
- Doctor: Quản lý lịch khám cá nhân, tiếp nhận hoặc từ chối yêu cầu hẹn khám từ bệnh nhân, theo dõi lịch sử khám, ghi nhận dặn dò và hẹn tái khám, bổ sung bệnh án, đóng góp bài viết chuyên môn trên blog.
- Admin: Quản trị toàn bộ danh mục tài khoản (tạo mới, cập nhật, xóa), kiểm duyệt nội dung bài viết trước khi xuất bản, ẩn bài viết vi phạm. Hệ thống áp dụng quy tắc bảo mật: Admin không được quyền xem mật khẩu chưa mã hóa của người dùng, không được can thiệp lịch trình riêng của bác sĩ và chỉ được xem thông tin khu vực địa chỉ bệnh nhân từ cấp Quận/Huyện trở lên (bảo mật địa chỉ nhà chi tiết).
Quá trình triển khai và kiểm thử được thực hiện qua 10 giai đoạn từ ngày 01/03/2024 đến 25/06/2024:
- 01/03 – 15/03: Nghiên cứu khảo sát hệ thống y tế thực tế, so sánh tính năng và phác thảo giao diện.
- 15/03 – 30/03: Thiết kế kiến trúc tổng thể, khởi tạo dự án ReactJS và ExpressJS, thiết kế cơ sở dữ liệu MySQL và phân chia mã nguồn qua GitHub.
- 01/04 – 10/04: Xây dựng module xác thực Đăng nhập/Đăng ký, tích hợp Firebase Authentication, Cloudinary, AWS Lightsail, Hostinger.
- 11/04 – 25/04: Xây dựng RESTful API cho module tìm kiếm bác sĩ, dịch vụ, quản lý bài viết và lập trình Trigger, Procedure, View trong cơ sở dữ liệu.
- 26/04 – 10/05: Phát triển chức năng đặt lịch khám tại nhà cho Patient, module thông báo và theo dõi trạng thái cuộc hẹn.
- 11/05 – 20/05: Xây dựng tính năng tiếp nhận/từ chối lịch khám dành cho Doctor, chức năng dặn dò sau khám và hẹn tái khám.
- 21/05 – 31/05: Xây dựng module quản trị Admin (quản lý người dùng, kiểm duyệt bài viết, ẩn bài viết).
- 01/06 – 10/06: Hoàn thiện các tính năng mở rộng: bình luận/thích bài viết, thêm hồ sơ bệnh án và đánh giá bác sĩ.
- 11/06 – 20/06: Kiểm tra thời gian đáp ứng của hệ thống API, kiểm tra tính tương thích Responsive của giao diện trên nhiều thiết bị và trình duyệt.
- 21/06 – 25/06: Tinh chỉnh, khắc phục lỗi phát sinh và hoàn thiện hệ thống để sẵn sàng đưa vào vận hành.
Nội dung chính theo từng chương
Phần 1: Mở đầu
Trình bày tính cấp thiết của đề tài trong bối cảnh chuyển đổi số y tế sau đại dịch, xác định mục tiêu xây dựng website kết nối bác sĩ khám bệnh tại nhà, đối tượng và phạm vi nghiên cứu. Chương này tập trung phân tích các hệ thống y tế đang hoạt động tại Việt Nam, chỉ ra điểm tương đồng về mặt quản lý tài khoản và tìm kiếm chuyên khoa, đồng thời chỉ ra các hạn chế của các hệ thống hiện hữu như: giao diện rối mắt hoặc chứa nhiều quảng cáo (Jiohealth), quy trình xác nhận thủ công qua điện thoại (Docosan) và thiếu tính năng đặt lịch khám tận nơi có gợi ý chi phí rõ ràng.
Phần 2: Nội dung
Bao gồm ba chương trọng tâm giải quyết bài toán phân tích, thiết kế và đặc tả kỹ thuật:
Chương 1: Kiến trúc chung của hệ thống
Trình bày chi tiết mô hình kiến trúc 3 tầng và cơ chế trao đổi dữ liệu qua giao thức RESTful API giữa giao diện Front-end (ReactJS) và máy chủ dịch vụ Back-end (Node.js/ExpressJS) với hệ quản trị cơ sở dữ liệu MySQL. Chương này phân tích cơ sở lý thuyết của ReactJS (cú pháp JSX, cấu trúc component tái sử dụng), các thư viện hỗ trợ giao diện gồm Tailwind CSS và Ant Design, đặc tính thực thi hiệu năng cao của Node.js dựa trên Google V8 Engine, và các tiêu chuẩn bảo mật, tính toàn vẹn dữ liệu trong MySQL.
Chương 2: Thiết kế hệ thống
Xây dựng khung mô hình tổng thể của dự án thông qua Sơ đồ ca sử dụng (Use Case Diagram), Mô hình dữ liệu khái niệm (Conceptual Data Model) và Sơ đồ lớp (Class Diagram). Mô hình dữ liệu định hình các thực thể chính, cấu trúc quan hệ giữa người dùng, bác sĩ, bệnh nhân, lịch hẹn, hồ sơ bệnh án, chuyên mục và bài viết blog y khoa.
Chương 3: Đặc tả use case hệ thống
Đặc tả chi tiết các ca sử dụng của hệ thống thông qua các bảng biểu mẫu chuẩn hóa (mô tả mục đích, tác nhân, điều kiện tiên quyết, kết quả sau thực hiện, luồng sự kiện chính, luồng thay thế và luồng ngoại lệ), kèm theo bộ sơ đồ UML minh họa (Activity, Sequence, State, Collaboration Diagrams):
| STT |
Tên Ca sử dụng (Use Case) |
Tác nhân chính (Actors) |
Mô tả tóm tắt luồng nghiệp vụ |
| 1 |
Login |
Guest, Patient, Doctor, Admin |
Đăng nhập bằng tài khoản hệ thống hoặc xác thực qua Gmail (Firebase), chuyển hướng theo phân quyền |
| 2 |
Register |
Guest |
Đăng ký tài khoản người dùng mới với các trường Email, Mật khẩu và lưu thông tin vào cơ sở dữ liệu |
| 3 |
Search Doctor or Service |
Guest, Patient, Doctor |
Nhập từ khóa để tra cứu danh sách bác sĩ hoặc các gói dịch vụ y tế tương ứng |
| 4 |
Search Post |
Guest, Patient, Doctor |
Tìm kiếm các bài viết chia sẻ kiến thức y học theo từ khóa trên hệ thống blog |
| 5 |
Booking An Appointment |
Patient |
Bệnh nhân lựa chọn bác sĩ, thời gian và địa điểm để tạo yêu cầu hẹn khám tại nhà |
| 6 |
View Appointment Status |
Patient, Doctor |
Theo dõi và cập nhật tiến trình của cuộc hẹn (chờ duyệt, đã nhận, đã khám, hủy hẹn) |
| 7 |
Accept / Cancel Appointment |
Doctor |
Bác sĩ đối tác phê duyệt hoặc từ chối lịch hẹn từ bệnh nhân |
| 8 |
Post Management |
Doctor, Admin |
Bác sĩ tạo và cập nhật bài viết; Admin thực hiện kiểm duyệt, phê duyệt xuất bản hoặc ẩn bài viết |
| 9 |
Account Management |
Admin |
Xem toàn bộ danh sách, tạo mới, chỉnh sửa thông tin hoặc xóa tài khoản trong hệ thống |
| 10 |
Profile & Password |
Patient, Doctor, Admin |
Cập nhật hồ sơ cá nhân, đổi mật khẩu và khôi phục mật khẩu (Forgot Password) |
Phần 3: Kết luận
Đánh giá mức độ hoàn thành nhiệm vụ theo mục tiêu đề ra, tổng kết các nhược điểm còn tồn đọng trong quá trình xây dựng phần mềm và vạch ra các phương hướng mở rộng nâng cấp hệ thống trong giai đoạn tiếp theo.
Kết quả và đóng góp
Đồ án đã đạt được các kết quả kỹ thuật và đóng góp thực tiễn cụ thể:
- Hoàn thiện hệ thống website chăm sóc sức khỏe trực tuyến với đầy đủ các phân hệ chức năng cho 4 nhóm người dùng, tích hợp các công nghệ Front-end (ReactJS, Tailwind CSS, Ant Design), Back-end (Node.js, ExpressJS) và cơ sở dữ liệu quan hệ MySQL.
- Hiện thực hóa mô hình đặt lịch khám bệnh tại nhà ("Home care booking"), rút ngắn thời gian và đơn giản hóa quy trình đăng ký khám chữa bệnh đối với các trường hợp bệnh nhẹ, giảm thiểu áp lực quá tải cho các bệnh viện tuyến trên.
- Thiết lập kênh thông tin kiến thức y khoa có kiểm duyệt, kết nối bác sĩ với cộng đồng bệnh nhân nhằm nâng cao nhận thức chăm sóc sức khỏe.
So sánh tính năng giữa hệ thống của đề tài và các hệ thống y tế hiện có tại Việt Nam:
| Tiêu chí so sánh |
Các hệ thống y tế hiện hành (Hello Bacsi, Jiohealth, Docosan) |
Hệ thống của đề tài |
| Phạm vi khám bệnh |
Yêu cầu bệnh nhân đến khám trực tiếp tại cơ sở y tế / phòng khám cố định |
Hỗ trợ đặt lịch hẹn để bác sĩ đến thăm khám tận nhà |
| Quy trình đặt hẹn |
Một số hệ thống yêu cầu để lại số điện thoại để nhân viên gọi xác nhận thủ công (Docosan) |
Quy trình đặt hẹn tự động, bác sĩ trực tiếp nhận/từ chối trên giao diện hệ thống |
| Giao diện người dùng |
Một số trang chứa banner quảng cáo gây rối tầm nhìn (Jiohealth) |
Giao diện tối giản, tập trung vào chức năng tìm kiếm, đặt lịch và tra cứu kiến thức |
| Phân quyền & Bảo mật |
Quản lý thông tin tập trung |
Áp dụng mã hóa mật khẩu, bảo vệ địa chỉ chi tiết của bệnh nhân và lịch trình riêng của bác sĩ đối với tài khoản Admin |
Hạn chế và hướng nghiên cứu tiếp
Các hạn chế được văn bản đề cập bao gồm:
- Thời gian nghiên cứu và thực hiện bị rút ngắn so với kế hoạch ban đầu; sự phối hợp giữa hai thành viên nhóm còn hạn chế trong việc lập kế hoạch và kinh nghiệm triển khai dự án phần mềm thực tế.
- Hệ thống chưa tích hợp cổng thanh toán trực tuyến tự động, chưa liên kết với các đơn vị bảo hiểm y tế.
- Chưa kết nối dữ liệu liên thông với các chuỗi nhà thuốc ngoài hệ thống và các phòng khám ngoại vi.
Hướng phát triển tiếp theo của đề tài:
- Tích hợp cổng thanh toán điện tử trực tuyến và liên kết hệ thống thanh toán bảo hiểm y tế.
- Mở rộng liên kết với các nhà thuốc để hỗ trợ kê đơn và giao thuốc tận nhà sau khi hoàn thành buổi khám.
- Kết nối các phòng khám, bệnh viện ngoài hệ thống để mở rộng mạng lưới bác sĩ đối tác và phạm vi phục vụ ra ngoài các thành phố lớn.
Giá trị tham khảo
Báo cáo đồ án là tài liệu tham khảo hữu ích cho sinh viên ngành Công nghệ thông tin, Công nghệ phần mềm và Kỹ thuật phần mềm đang thực hiện đồ án tốt nghiệp hoặc các dự án phát triển ứng dụng web liên quan đến y tế số (e-Health), hệ thống đặt lịch trực tuyến. Các phần có giá trị tham khảo cao gồm:
- Chương 1 và Chương 2: Cung cấp phương pháp thiết kế kiến trúc hệ thống 3 tầng kết hợp cơ sở dữ liệu MySQL và bộ tài liệu mô hình hóa UML đầy đủ.
- Chương 3: Cung cấp cấu trúc đặc tả ca sử dụng chi tiết, bao gồm đầy đủ các bảng mô tả luồng sự kiện cùng hệ thống biểu đồ Activity, Sequence, State và Collaboration Diagram chuẩn mực cho từng chức năng.
Câu hỏi thường gặp
1. Hệ thống của đề tài giải quyết vấn đề gì khác biệt so với các nền tảng y tế như Docosan hay Jiohealth?
Các nền tảng hiện tại phần lớn yêu cầu bệnh nhân phải di chuyển đến phòng khám cố định hoặc sử dụng quy trình xác nhận lịch thủ công qua điện thoại. Hệ thống của đề tài cho phép bệnh nhân đặt lịch hẹn bác sĩ đến thăm khám trực tiếp tại nhà một cách tự động, minh bạch thông tin dịch vụ và không chứa quảng cáo gây cản trở trải nghiệm.
2. Công nghệ nào được sử dụng để xây dựng tầng ứng dụng và cơ sở dữ liệu của hệ thống?
Hệ thống sử dụng Node.js chạy trên V8 JavaScript Engine kết hợp framework ExpressJS để xây dựng tầng Back-end RESTful API, và hệ quản trị cơ sở dữ liệu quan hệ MySQL để quản lý, lưu trữ dữ liệu.
3. Cơ chế bảo mật thông tin đối với tài khoản Quản trị viên (Admin) được quy định như thế nào?
Admin có toàn quyền quản trị hệ thống nhưng bị giới hạn: mật khẩu người dùng bị mã hóa thành chuỗi ký tự vô nghĩa; Admin không được quyền can thiệp lịch trình làm việc riêng của bác sĩ và chỉ được xem thông tin khu vực địa chỉ bệnh nhân từ cấp Quận/Huyện trở lên mà không xem được địa chỉ nhà chi tiết.
4. Bác sĩ trong hệ thống có những quyền hạn và trách nhiệm gì?
Bác sĩ được cấp tài khoản riêng để theo dõi lịch làm việc, toàn quyền chấp nhận hoặc từ chối các cuộc hẹn khám, xem lịch sử khám thành công, viết và quản lý bài viết y khoa trên blog, ghi nhận dặn dò và hẹn tái khám cho bệnh nhân.
5. Các dịch vụ đám mây bên thứ ba nào đã được tích hợp vào hệ thống?
Dự án tích hợp Google Firebase Authentication phục vụ đăng nhập bằng tài khoản Google, Cloudinary dùng để lưu trữ hình ảnh, cùng Google Cloud, AWS Lightsail và Hostinger phục vụ triển khai hạ tầng.
Kết luận
Khóa luận tốt nghiệp "Hệ thống chăm sóc sức khỏe, liên kết bác sĩ với bệnh nhân" của sinh viên Nguyễn Xuân Nam và Nguyễn Dương Quốc Anh (Trường ĐH Sư phạm Kỹ thuật TP.HCM) đã hoàn thành việc thiết kế và xây dựng một giải pháp web kết nối y tế tại nhà. Hệ thống được phát triển hoàn chỉnh trên nền tảng ReactJS, Node.js, ExpressJS và MySQL với quy trình phân tích ca sử dụng và mô hình hóa UML chặt chẽ. Đề tài mở ra tiềm năng ứng dụng thực tế trong việc giảm tải áp lực cho các cơ sở y tế và cung cấp cơ sở kỹ thuật để tiếp tục mở rộng liên kết thanh toán, bảo hiểm và phân phối dược phẩm trong tương lai.