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

Chuyển đổi số trong lĩnh vực y tế tại Việt Nam đã có những bước tiến đáng kể từ năm 2018, đặc biệt là sự phổ biến của các dịch vụ đặt lịch khám và tư vấn sức khỏe trực tuyến. Tuy nhiên, mảng quản lý nguồn máu và điều phối người hiến máu sống vẫn chưa nhận được sự quan tâm đồng bộ so với các phân hệ y tế khác. Thực tế cho thấy, hoạt động vận động và kêu gọi hiến máu—đặc biệt trong các tình huống cấp cứu cần nguồn máu sống tức thời—phần lớn vẫn phụ thuộc vào các kênh trung gian như mạng xã hội. Phương thức này bộc lộ hạn chế lớn: mạng xã hội được thiết kế phục vụ giao tiếp cá nhân hơn là quản trị dữ liệu tập trung, dẫn đến khó khăn trong việc xác thực thông tin, quản lý hồ sơ sức khỏe và kết nối kịp thời giữa cơ sở y tế với cộng đồng người hiến.

Trước thực trạng đó, đồ án môn học Dự án Công nghệ phần mềm (PBL3) do nhóm sinh viên Khoa Công nghệ Thông tin, Trường Đại học Bách khoa – Đại học Đà Nẵng thực hiện đã đặt ra mục tiêu xây dựng một nền tảng web chuyên dụng. Đề tài tập trung giải quyết 03 mục tiêu cụ thể:

  1. Xây dựng công cụ quản lý tập trung danh sách và hồ sơ các nguồn máu sống đăng ký cho phía bệnh viện.
  2. Thiết lập môi trường giao tiếp trung gian nhằm chia sẻ, công bố thông tin và thông báo các đợt hiến máu từ bệnh viện đến người hiến.
  3. Cung cấp môi trường tra cứu giúp người cần máu tìm kiếm nguồn máu tương thích trong các trường hợp khẩn cấp.

Đối tượng và phạm vi nghiên cứu của đề tài:

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ tiếp nhận, quản lý thông tin người hiến máu, quy trình xác thực cơ sở y tế và tổ chức sự kiện hiến máu.
  • Phạm vi áp dụng: Hệ thống được triển khai thử nghiệm phục vụ tương tác hai chiều giữa các cơ sở y tế (bệnh viện) và lực lượng người hiến máu.
  • Phạm vi công nghệ: Ứng dụng nền tảng web kết hợp hệ quản trị cơ sở dữ liệu quan hệ cho phép truy cập và quản lý từ xa.

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

Đồ án ứng dụng phương pháp phân tích và thiết kế hệ thống hướng đối tượng thông qua ngôn ngữ mô hình hóa thống nhất (UML), kết hợp với kỹ thuật mô hình hóa cơ sở dữ liệu quan hệ (ERD).

Quy trình phát triển phần mềm được chia thành 5 giai đoạn rõ ràng với tiến độ thực hiện cụ thể:

Giai đoạn Khung thời gian Nội dung công việc chính
Giai đoạn 1 14/02/2023 – 21/02/2023 Phân tích yêu cầu hệ thống, mô tả và lập danh sách các chức năng.
Giai đoạn 2 22/02/2023 – 07/03/2023 Lập sơ đồ ca sử dụng (use-case), thiết kế cơ sở dữ liệu.
Giai đoạn 3 08/03/2023 – 16/04/2023 Thiết kế giao diện người dùng (UI) trên Figma, phát triển FrontEnd.
Giai đoạn 4 17/04/2023 – 01/06/2023 Viết mã nguồn BackEnd, tích hợp và điều chỉnh giao diện - chức năng.
Giai đoạn 5 22/05/2023 – 11/06/2023 Kiểm thử toàn diện hệ thống, hiệu chỉnh sai sót và hoàn thiện báo cáo.

Nguồn dữ liệu và công cụ hỗ trợ triển khai dự án gồm:

  • Quản lý mã nguồn & phối hợp: GitHub (kho lưu trữ mã nguồn tại hviiet/PBL3-BloodDono) và Facebook Messenger phục vụ trao đổi nội bộ.
  • Thiết kế mẫu giao diện (UI/UX): Nền tảng Figma.
  • Môi trường lập trình và cơ sở dữ liệu: Visual Studio Code, Postman (kiểm thử API/giao thức), MySQL (hệ quản trị cơ sở dữ liệu quan hệ).

Phân công nhiệm vụ các thành viên:

STT Thành viên Điểm mạnh chuyên môn Trách nhiệm chính trong dự án
1 Nguyễn Hữu Thành Lập trình FrontEnd, thiết kế giao diện Viết mã nguồn giao diện, xây dựng sơ đồ Use-case
2 Trần Thanh Tùng Triển khai CSDL, viết báo cáo Thiết kế CSDL, vẽ sơ đồ Use-case, Lớp, Tuần tự, Hoạt động, viết báo cáo
3 Nguyễn Hoàng Việt Lập trình BackEnd Viết mã nguồn BackEnd, lập kế hoạch, kiểm thử và chỉnh sửa lỗi

Thiết kế và triển khai hệ thống

1. Phân tích tác nhân và kiến trúc chức năng

Hệ thống xác định 04 nhóm tác nhân tham gia tương tác:

  • Người cần máu: Người dùng có nhu cầu tìm nguồn máu tương thích trong trường hợp khẩn cấp, yêu cầu sở hữu tài khoản trên hệ thống.
  • Người hiến máu: Người dùng sở hữu tài khoản cá nhân đã được xác minh thông tin y tế từ phía bệnh viện. Tài khoản người hiến máu và người cần máu có tính linh hoạt hai chiều: một người dùng có thể đóng vai trò người hiến hoặc người tìm kiếm máu trên cùng một tài khoản cá nhân.
  • Đội ngũ bệnh viện: Cán bộ y tế đại diện cho bệnh viện, có quyền kiểm soát hoạt động kêu gọi, tổ chức đợt hiến máu và xác nhận hồ sơ người hiến.
  • Quản trị viên (Admin): Kiểm duyệt tính hợp lệ của tài khoản bệnh viện và quản trị hoạt động vận hành chung của toàn hệ thống.

2. Các ca sử dụng cốt lõi (Core Use-Cases)

Hệ thống xây dựng và đặc tả chi tiết 3 use-case phân rã trung tâm:

  • UC01 - Quản lý thông tin cá nhân: Cho phép người hiến xem thông tin, cập nhật thông tin cá nhân, thay đổi mật khẩu và tra cứu lịch sử các lần hiến máu trước đó.
  • UC02 - Tìm kiếm nguồn hiến: Hỗ trợ người cần máu thực hiện lọc danh sách người hiến đủ điều kiện theo các tiêu chí nhóm máu và khu vực địa lý lân cận.
  • UC03 - Tổ chức đợt hiến máu: Dành cho cán bộ bệnh viện đã được kiểm duyệt, cho phép khởi tạo chiến dịch hiến máu, thiết lập chỉ tiêu tiếp nhận và theo dõi thống kê số liệu theo thời gian thực.

3. Thiết kế cơ sở dữ liệu quan hệ

Mô hình thực thể quan hệ (ERD) được xây dựng trên MySQL xoay quanh 03 thực thể trung tâm: NGƯỜI HIẾN, BỆNH VIỆN và SỰ KIỆN HIẾN MÁU. Cấu trúc chi tiết các bảng dữ liệu chính gồm:

Tên bảng Khóa chính / Trường tiêu biểu Mô tả chức năng dữ liệu
Account_Information AccountID (char 8), Username, Password, Role Lưu trữ tài khoản đăng nhập, mật khẩu được băm (hash) và phân quyền hệ thống.
Donor_Information DonorID (char 8), AccountID, DonorName, DonorBirth, DonorGender, DonorBloodType Quản lý thông tin chi tiết của người hiến máu (chiều cao, cân nặng, nhóm máu, liên lạc).
Illness_Reference IllnessID (char 8), IllnessName (nchar 50) Danh mục bảng tra cứu các loại bệnh lý.
Medical_History DonorID, IllnessID, MedicalRecordStatus (bit) Lưu trữ thông tin tiền sử bệnh án của từng người hiến máu.
Donation_Records DonationRecordID (char 8), DonorID, DonationRecordDate, DonationRecordVolume Ghi nhận lịch sử hiến máu (ngày hiến và lượng máu tiếp nhận).
Address, Ward_Information, District_Information, Province_Information AddressID, WardsID, DistrictID, ProvinceID Chuẩn hóa thông tin địa chỉ hành chính theo 3 cấp: Xã/Phường, Quận/Huyện, Tỉnh/Thành phố.
Hospital_Information HospitalID (char 8), AccountID, HospitalName, HospitalIsVerified (bit) Quản lý thông tin cơ sở bệnh viện và trạng thái phê duyệt của quản trị viên.
Event_Information EventID (char 8), HospitalID, EventName, EventStart, EventEnd Quản lý thông tin các sự kiện, chiến dịch hiến máu do bệnh viện tổ chức.

4. Yêu cầu phi chức năng

  • Bảo mật: Mật khẩu người dùng được xử lý băm (hash) trước khi lưu trữ trong bảng Account_Information, không lưu dạng văn bản thuần (plain-text).
  • Tính toàn vẹn dữ liệu: Dữ liệu địa chỉ phân cấp chuẩn hóa đảm bảo khả năng lọc theo khu vực địa lý chính xác.
  • Quy trình xác thực: Tài khoản bệnh viện sau khi đăng ký mới phải trải qua trạng thái chờ (HospitalIsVerified = 0) cho đến khi được quản trị viên xét duyệt.

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

1. Quá trình triển khai và phân công nhiệm vụ

Chương này tổng kết phương thức quản lý dự án thông qua GitHub và Figma, phân định rõ ràng 5 giai đoạn thực hiện từ 14/02/2023 đến 11/06/2023. Báo cáo làm rõ cơ chế phối hợp giữa các thành viên phụ trách mảng giao diện (FrontEnd) và mảng xử lý logic - dữ liệu (BackEnd).

2. Mục đích, phạm vi và phân tích nghiệp vụ hệ thống

Tài liệu đặc tả chi tiết 02 quy trình nghiệp vụ cơ bản:

  • Quy trình đăng ký tài khoản người hiến: Yêu cầu các trường dữ liệu bắt buộc gồm tên đăng nhập, mật khẩu, xác nhận mật khẩu, họ tên, giới tính, ngày sinh, số nhà/tên đường, địa chỉ phân cấp 3 cấp, nhóm máu và tiền sử bệnh án.
  • Quy trình đăng ký tài khoản bệnh viện: Yêu cầu thông tin tên bệnh viện, email, số điện thoại, địa chỉ trụ sở. Tài khoản sau khi khởi tạo sẽ ở trạng thái chờ kích hoạt cho đến khi quản trị viên xét duyệt hồ sơ thực tế.

3. Phân tích thiết kế hệ thống

Nội dung chương 3 chiếm tỷ trọng lớn trong đồ án với hệ thống mô hình hóa UML toàn diện:

  • Mô hình Use-case: Sơ đồ tổng quan và các sơ đồ phân rã cho ca sử dụng Quản lý thông tin cá nhân, Tìm kiếm nguồn hiến, Tổ chức đợt hiến máu.
  • Biểu đồ hoạt động (Activity Diagrams): Chi tiết hóa luồng xử lý của 12 ca sử dụng, bao gồm Đăng nhập, Đăng ký (người hiến / bệnh viện), Tham gia đợt hiến máu, Tìm kiếm nơi hiến, Xét duyệt bệnh viện, Ghi nhận người hiến máu, và Thiết đặt chỉ tiêu đợt hiến máu.
  • Biểu đồ tuần tự (Sequence Diagrams): Mô tả tương tác giữa các đối tượng trong hệ thống cho từng ca sử dụng và các phân rã chức năng (Xem thông tin cá nhân, Cập nhật thông tin, Đổi mật khẩu, Xem lịch sử hiến máu, v.v.).
  • Biểu đồ lớp (Class Diagram): Phản ánh cấu trúc tĩnh và quan hệ giữa các đối tượng phần mềm trong toàn bộ hệ thống.

4. Cơ sở dữ liệu và mô tả chức năng hệ thống

Chương 4 trình bày thiết kế vật lý của cơ sở dữ liệu trên MySQL với 13 bảng cấu trúc, định nghĩa rõ kiểu dữ liệu, kích thước và ràng buộc khóa. Song song với đó là đặc tả thiết kế giao diện người dùng (UI) từ khung thiết kế Figma tương ứng với 18 biểu mẫu giao diện (Đăng nhập, Đăng ký, Quản lý hồ sơ cá nhân, Tìm kiếm nguồn hiến, Xét duyệt bệnh viện, Tạo đợt hiến máu, Ghi nhận người hiến máu, v.v.).

5. Yêu cầu phi chức năng, kết luận và hướng phát triển

Đặc tả các yêu cầu kỹ thuật về công nghệ web, mã hóa thông tin bảo mật, ngôn ngữ thiết kế giao diện và tổ chức cấu trúc mã nguồn. Đồng thời, chương này tổng kết những kết quả đạt được và định hướng nâng cấp hệ thống trong tương lai.

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

  • Kết quả kỹ thuật: Đồ án hoàn thiện bản thiết kế hệ thống toàn diện cho ứng dụng web quản lý hiến máu, bao gồm 33 biểu đồ UML (Use-case, Activity, Sequence, Class), mô hình thực thể quan hệ ERD, cấu trúc dữ liệu MySQL chi tiết và hệ thống mẫu giao diện người dùng trên Figma.
  • Giải pháp nghiệp vụ: Đề xuất một giải pháp quản lý tập trung hóa cho công tác tiếp nhận và điều phối nguồn máu sống. Hệ thống kết nối trực tiếp bệnh viện và người hiến máu mà không cần phụ thuộc vào các bài đăng rời rạc trên mạng xã hội.
  • Hỗ trợ khẩn cấp: Thiết lập cơ chế lọc và tìm kiếm người hiến máu theo nhóm máu tương thích và vị trí địa lý, giúp rút ngắn thời gian tiếp cận nguồn máu sống khi có ca cấp cứu.

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

  • Hạn chế: Hệ thống mới dừng lại ở phạm vi thử nghiệm mô hình kết nối giữa bệnh viện và người hiến máu trên nền tảng web cá nhân, chưa được triển khai tích hợp trực tiếp vào hệ thống thông tin quản lý bệnh viện (HIS) thực tế tại các cơ sở y tế.
  • Hướng phát triển: Tiếp tục mở rộng các chức năng theo dõi thống kê số liệu hiến máu chuyên sâu, tối ưu hóa thuật toán đề xuất nguồn hiến theo bán kính di chuyển thực tế và nâng cao cơ chế xác thực danh tính cho cả cơ sở y tế lẫn người hiến máu.

Giá trị tham khả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, Kỹ thuật Phần mềm và Hệ thống Thông tin khi thực hiện các học phần Đồ án Công nghệ phần mềm (PBL), Đồ án chuyên ngành hoặc Khóa luận tốt nghiệp:

  • Cung cấp tài liệu mẫu hoàn chỉnh về quy trình phân tích và thiết kế phần mềm từ yêu cầu nghiệp vụ thực tế đến mô hình hóa UML (Use-case, Activity, Sequence, Class Diagram).
  • Tham khảo thiết kế cơ sở dữ liệu quan hệ chuẩn hóa cho bài toán quản lý y tế cộng đồng, xử lý dữ liệu địa giới hành chính nhiều cấp và quản lý hồ sơ sức khỏe người dùng.

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

1. Các nhóm tác nhân chính tương tác với hệ thống gồm những ai?
Hệ thống gồm 04 nhóm tác nhân: Người cần máu, Người hiến máu, Đội ngũ bệnh viện và Quản trị viên. Trong đó, Người hiến máu và Người cần máu có thể dùng chung một tài khoản người dùng cá nhân để thực hiện cả hai vai trò.

2. Điểm khác biệt trong quy trình đăng ký tài khoản bệnh viện so với tài khoản người hiến là gì?
Tài khoản người hiến máu sau khi điền đầy đủ thông tin cá nhân, nhóm máu và tiền sử bệnh án sẽ được lưu trực tiếp vào hệ thống. Trong khi đó, tài khoản bệnh viện sau khi đăng ký sẽ ở trạng thái chưa xác thực (HospitalIsVerified = 0) và cần được Quản trị viên hệ thống kiểm duyệt, phê duyệt trước khi được cấp quyền sử dụng các chức năng quản lý.

3. Cơ sở dữ liệu lưu trữ thông tin tiền sử bệnh án và lịch sử hiến máu như thế nào?
Hệ thống sử dụng bảng Illness_Reference để lưu danh mục tên bệnh và bảng Medical_History để liên kết mã người hiến (DonorID) với mã bệnh (IllnessID) kèm trạng thái bệnh án. Lịch sử các lần hiến máu được lưu riêng tại bảng Donation_Records, ghi nhận cụ thể ngày hiến (DonationRecordDate) và thể tích máu hiến (DonationRecordVolume).

4. Nhóm phát triển đã sử dụng những công cụ nào để quản lý và xây dựng đồ án?
Nhóm sử dụng Visual Studio Code để lập trình, Postman để kiểm thử giao thức/API, MySQL để quản trị cơ sở dữ liệu, Figma để thiết kế giao diện UI/UX, GitHub để quản lý phiên bản mã nguồn (hviiet/PBL3-BloodDono), và Facebook Messenger để trao đổi công việc nội bộ.

5. Luồng xử lý của ca sử dụng "Tìm kiếm nguồn hiến" (UC02) diễn ra như thế nào?
Người cần máu sau khi đăng nhập sẽ truy cập chức năng tìm kiếm nguồn hiến, chọn bộ lọc gồm nhóm máu cần tìm và khu vực địa lý mong muốn. Hệ thống sẽ truy vấn cơ sở dữ liệu và hiển thị danh sách những người hiến máu đủ điều kiện và phù hợp với tiêu chí lọc đã nhập.

Kết luận

Đồ án "Website Quản lý Hiến máu" của nhóm sinh viên Trường Đại học Bách khoa – Đại học Đà Nẵng đã hoàn thành việc phân tích, thiết kế và xây dựng giải pháp phần mềm trung gian kết nối giữa cơ sở y tế và cộng đồng người hiến máu. Báo cáo thể hiện một quy trình phát triển phần mềm chặt chẽ với hệ thống sơ đồ UML, mô hình ERD và thiết kế giao diện trực quan. Đề tài đóng góp một giải pháp thực tiễn hỗ trợ giải quyết bài toán quản trị nguồn máu sống và tìm kiếm máu khẩn cấp phục vụ công tác y tế.