Bối cảnh và vấn đề nghiên cứu
Đại dịch COVID-19 diễn biến phức tạp, tác động sâu sắc đến tình hình kinh tế - xã hội tại Việt Nam và trên toàn thế giới. Trong công tác phòng chống và khoanh vùng dập dịch, việc khai báo y tế và giám sát dịch tễ tại các khu dân cư đóng vai trò đặc biệt quan trọng. Tuy nhiên, tại các trạm y tế cơ sở tuyến phường/xã, quy trình khai báo y tế chủ yếu vẫn được thực hiện thủ công bằng giấy tờ.
Thực trạng khảo sát tại Trạm y tế phường Thanh Xuân cho thấy các đặc điểm hoạt động sau:
- Quy mô cơ sở: Diện tích mặt bằng 300m².
- Nhân sự vận hành: 20 cán bộ, nhân viên y tế thay phiên trực 24/24 giờ và 3 cán bộ quản lý trạm.
- Khó khăn thực tế: Người dân đến khai báo phải tập trung đông người, xếp hàng chờ đợi, làm tăng nguy cơ lây nhiễm chéo giữa người dân và cán bộ y tế; nhân lực tiếp dân luôn trong tình trạng quá tải; toàn bộ thông tin dịch tễ lưu trữ trên sổ sách giấy tờ, gây khó khăn lớn cho công tác tra cứu, truy vết và liên hệ với các trường hợp có nguy cơ cao (F0, F1).
Xuất phát từ thực tiễn trên, đề tài "Xây dựng phần mềm quản lý khai báo y tế" được tác giả Phí Thành Long thực hiện nhằm giải quyết các nhiệm vụ và mục tiêu cụ thể:
- Xây dựng phần mềm hoàn chỉnh đáp ứng nghiệp vụ khai báo y tế và quản lý thông tin dịch tễ, phù hợp với mô hình hoạt động của trạm y tế phường/xã.
- Cung cấp giải pháp khai báo y tế nhanh chóng cho người dân qua số điện thoại, hỗ trợ 3 loại hình khai báo: khai báo toàn dân, khai báo di chuyển nội địa, khai báo người nhập cảnh và tính năng khai báo khẩn cấp khi tiếp xúc gần với F0/F1; tự động cấp mã QR phục vụ các lần khai báo tiếp theo.
- Hỗ trợ cán bộ quản lý trạm y tế nắm bắt tình hình dịch tễ, tra cứu, truy vết người có nguy cơ cao, kiểm soát tình trạng tiêm chủng mà không cần tiếp xúc trực tiếp, giảm thiểu nguy cơ lây nhiễm.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình nghiệp vụ khai báo y tế, tiếp nhận, quản lý dữ liệu dịch tễ của người dân và người di chuyển qua địa bàn.
- Phạm vi khảo sát: Khảo sát thực tế tại Trạm y tế phường Thanh Xuân (và dữ liệu hình ảnh trạm y tế phường Phú Đô) tại Hà Nội; thời gian triển khai và hoàn thành báo cáo vào tháng 08/2021 (nghiệm thu ngày 19/09/2021).
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình tiếp cận
Đồ án áp dụng quy trình công nghệ phần mềm tiêu chuẩn cho toàn bộ vòng đời phát triển hệ thống, bao gồm các giai đoạn: khảo sát, quản lý dự án, phân tích yêu cầu, thiết kế kiến trúc/giao diện/cơ sở dữ liệu, lập trình, kiểm thử và đóng gói, bảo trì.
- Ngôn ngữ mô hình hóa thống nhất (UML) được sử dụng để phân tích và đặc tả hệ thống thông qua các sơ đồ: Biểu đồ trường hợp sử dụng (Use Case Diagram), Biểu đồ hoạt động (Activity Diagram), Biểu đồ trình tự (Sequence Diagram) và Biểu đồ quan hệ cơ sở dữ liệu (Database Diagram).
- Cơ sở lý thuyết về bảo trì phần mềm được tham chiếu theo chuẩn IEEE (1993), phân loại bảo trì thành 4 dạng: Sửa lại cho đúng (Corrective), Thích ứng (Adaptive), Hoàn thiện (Perfective), và Bảo vệ (Preventive).
Phương pháp nghiên cứu và nguồn dữ liệu
- Phương pháp thu thập dữ liệu: Khảo sát thực tế, quan sát trực tiếp quy trình tiếp dân tại trạm y tế và phỏng vấn 3 nhóm đối tượng: Ban quản lý trạm y tế, cán bộ y tế phụ trách tiếp dân, và người dân đến làm thủ tục khai báo.
- Phương pháp phân tích - thiết kế: Phân tích quy trình nghiệp vụ thực tế, trích xuất yêu cầu chức năng/phi chức năng, mô hình hóa hệ thống bằng công cụ
draw.io.
- Nguồn dữ liệu: Dữ liệu biểu mẫu tờ khai y tế thực tế tại trạm y tế cơ sở và các mẫu khai báo tiêu chuẩn (toàn dân, nội địa, nhập cảnh).
Nội dung chính theo từng chương
Chương 1: Giới thiệu dự án phần mềm
Chương này trình bày kết quả khảo sát hiện trạng tại Trạm y tế phường Thanh Xuân, xác định bài toán cần giải quyết, mục tiêu dự án và đặc tả các yêu cầu hệ thống.
- Yêu cầu chức năng: Hệ thống hỗ trợ đăng nhập/đăng xuất bằng số điện thoại; thực hiện khai báo y tế (thời gian hoàn thành dưới 1 phút); quản lý thông tin dịch tễ trong khu dân cư (tìm kiếm, truy vết F0); quản lý thông tin người từ nơi khác đến (lịch trình, thời gian cư trú); quản lý thông tin người nhập cảnh (hình thức nhập cảnh, tình trạng sức khỏe).
- Yêu cầu phi chức năng:
- Bảo mật: Bảo vệ mật khẩu và thông tin cá nhân của người dùng.
- Sao lưu: Dữ liệu lưu thông tự động 24/24 qua hệ thống song hành tránh mất mát; hỗ trợ kết xuất ra thiết bị lưu trữ ngoài và khôi phục khi cần.
- Tính năng sử dụng: Giao diện thân thiện, dễ thao tác cho mọi lứa tuổi, tốc độ xử lý nhanh.
- Ràng buộc thiết kế & Hệ thống: Chuẩn hóa phân tích UML, cơ sở dữ liệu MySQL / Microsoft SQL Server.
- Phần cứng tối thiểu: Máy tính vi xử lý Intel Core i3, RAM 1GB, kết nối Internet, hệ điều hành Windows 7 trở lên.
Chương 2: Quản lý dự án
Nội dung chương tập trung vào công tác ước lượng tài nguyên và lập kế hoạch thực hiện dự án do 01 nhân sự (sinh viên Phí Thành Long) đảm nhiệm.
| Giai đoạn |
Công việc chính |
Mô tả công việc |
Chi phí ước lượng (VNĐ) |
Thời gian ước lượng |
| Quản lý dự án |
Khảo sát yêu cầu dự án |
Thu thập các dữ liệu cần thiết về dự án |
50.000 |
1 ngày |
|
Triển khai và thiết lập project |
Bắt đầu dự án |
150.000 |
1 ngày |
|
Lập kế hoạch phạm vi dự án |
Lập kế hoạch chi tiết cho phạm vi làm việc |
100.000 |
1 ngày |
|
Viết báo cáo tổng kết dự án |
Tổng kết lại toàn bộ quá trình quản lý dự án |
50.000 |
1 ngày |
| Phân tích và thiết kế hệ thống |
Đặc tả chi tiết yêu cầu của khách hàng |
Mô tả chi tiết những yêu cầu, chức năng cần có |
300.000 |
1 ngày |
|
Xây dựng sơ đồ usecase và trình tự |
Mô tả hệ thống thông qua sơ đồ bằng draw.io |
200.000 |
5 ngày |
|
Thiết kế cơ sở dữ liệu |
Xây dựng các trường dữ liệu cần thiết |
500.000 |
1 ngày |
|
Thiết kế giao diện |
Xây dựng các chức năng chính cho phần mềm |
1.000 |
10 ngày |
|
Viết báo cáo phân tích thiết kế |
Viết bài phân tích chi tiết về hệ thống |
200.000 |
1 ngày |
| Module chức năng |
Phân tích yêu cầu cụ thể module |
Xây dựng chi tiết nhiệm vụ chính của hệ thống |
250.000 |
2 ngày |
|
Thiết kế các module |
Xây dựng chức năng cùng các sự kiện |
250.000 |
3 ngày |
|
Xây dựng code |
Xử lý các tính năng khi thao tác |
1.000 |
5 ngày |
|
Demo module khi xây dựng xong |
Cài đặt các module |
400.000 |
1 ngày |
|
Kiểm thử cho module |
Kiểm tra giao diện, độ chính xác và tìm lỗi |
300.000 |
1 ngày |
|
Viết báo cáo hoàn thiện module |
Trình bày báo cáo chi tiết khi thiết kế module |
100.000 |
1 ngày |
| Tích hợp và hoàn thiện |
Tích hợp các module đã thiết kế |
Lắp ghép các module lại với nhau |
200.000 |
1 ngày |
|
Kiểm thử phần mềm |
Test lại toàn bộ hệ thống đã xây dựng |
300.000 |
1 ngày |
|
Fix code |
Tìm kiếm các lỗi phát sinh trong thực thi |
200.000 |
2 ngày |
| Đóng gói phần mềm |
Viết báo cáo hướng dẫn sử dụng |
Viết bản hướng dẫn sử dụng phần mềm |
20.000 |
1 ngày |
|
Lên kế hoạch bảo trì phần mềm |
Đề ra kế hoạch bảo trì phần mềm |
0 |
1 ngày |
|
Kết thúc dự án |
Tổng kết lại quá trình làm ra dự án |
0 |
1 ngày |
Lịch trình theo dõi dự án: Khảo sát thực tế và phân tích yêu cầu bắt đầu từ ngày 18/08/2021 đến ngày 23/08/2021, sau đó tuần tự thực hiện các bước thiết kế, lập trình, kiểm thử và nghiệm thu.
Chương 3: Phân tích hệ thống
Chương 3 xác định 2 tác nhân chính (Actor) và các luồng nghiệp vụ tương ứng:
- Người dùng (Người dân): Thực hiện các chức năng Đăng nhập, Đăng ký tài khoản, và Khai báo y tế (chọn mẫu tờ khai, nhập thông tin theo cấu trúc chuẩn, lưu dữ liệu và nhận mã QR).
- Người quản lý (Admin): Thực hiện Đăng nhập, Phân quyền truy cập hệ thống, Quản lý người dùng (thêm mới, sửa thông tin, xóa người dùng có xác nhận), và Quản lý tờ khai y tế (tra cứu, tìm kiếm tờ khai theo phân loại toàn dân, nội địa, nhập cảnh).
Hệ thống được mô tả chi tiết qua từng bước của luồng sự kiện chính, kèm theo các biểu đồ Use Case, biểu đồ hoạt động (Activity Diagram) và biểu đồ trình tự (Sequence Diagram) cho từng chức năng.
Chương 4: Thiết kế
Trình bày thiết kế giao diện đăng nhập, giao diện chính của hệ thống và thiết kế lưu trữ thông qua biểu đồ thực thể quan hệ cơ sở dữ liệu (Database Diagram), đảm bảo liên kết dữ liệu giữa thông tin người dùng, quyền truy cập và các bản ghi tờ khai y tế.
Chương 5: Lập trình
- Ngôn ngữ lập trình: Java. Lý do lựa chọn được tác giả nêu rõ là do đã qua đào tạo cơ bản về lập trình Java tại Trường Đại học Điện Lực.
- Môi trường phát triển tích hợp (IDE): NetBeans.
- Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server Management Studio.
- Giao diện đã xây dựng: Giao diện đăng nhập, giao diện đăng ký, menu chính, giao diện khai báo y tế tổng hợp, khai báo toàn dân, khai báo di chuyển nội địa, khai báo người nhập cảnh, quản lý người dùng, quản lý tờ khai y tế (phân loại toàn dân, nội địa, nhập cảnh) và giao diện hiển thị mã QR.
Chương 6: Kiểm thử phần mềm
Tác giả tiến hành kiểm thử hộp đen (Black-box testing) trên form Đăng nhập (form login) với bộ dữ liệu gồm 18 ca kiểm thử (Test Case) đánh giá giao diện, tính hợp lệ của dữ liệu đầu vào, xử lý ngoại lệ và phân quyền người dùng.
Chương 7: Đóng gói và bảo trì phần mềm
- Quy trình đóng gói: Hướng dẫn 7 bước đóng gói phần mềm thành gói phân phối thực thi (
dist folder) bằng công cụ NetBeans IDE.
- Kế hoạch bảo trì: Hệ thống hóa lý thuyết bảo trì theo 4 nhóm chức năng (Corrective, Adaptive, Perfective, Preventive) và đề xuất chu kỳ bảo trì phần mềm định kỳ tối thiểu 1 lần/năm nhằm phát hiện lỗi sớm và tối ưu chi phí vận hành.
Thiết kế và triển khai
Hệ thống được triển khai trên nền tảng ứng dụng Desktop Java kết nối cơ sở dữ liệu quan hệ, phục vụ hai đối tượng người dùng với các màn hình chức năng và luồng xử lý riêng biệt.
Môi trường và công nghệ triển khai
- Ngôn ngữ & Nền tảng: Java SE.
- IDE: NetBeans.
- Cơ sở dữ liệu: Microsoft SQL Server Management Studio (kết hợp phân tích tương thích MySQL).
- Yêu cầu hạ tầng: Hệ điều hành Windows 7+, CPU Core i3, RAM 1GB, kết nối mạng LAN/Internet.
Kết quả kiểm thử chức năng Đăng nhập (Form Login)
Dưới đây là bảng tổng hợp chi tiết 18 ca kiểm thử chức năng đăng nhập được trích xuất từ văn bản:
| Mã kiểm thử (ID_TEST) |
Tiền điều kiện (Pre-condition) |
Thao tác kiểm thử (Test operation) |
Kết quả mong muốn (Expected result) |
Kết quả thực tế (Actual result) |
Trạng thái |
| Login_01 |
Kiểm tra giao diện |
Double click vào file N&M.exe |
Hiển thị form đăng nhập |
Hiển thị đúng form |
Pass (P) |
| Login_02 |
Kiểm tra giao diện |
Ấn nút Tab trên bàn phím |
Nhảy focus đúng thứ tự trên xuống dưới, trái qua phải |
Chuyển tab chính xác |
Pass (P) |
| Login_03 |
Vị trí form |
Khởi động form |
Form hiển thị chính giữa màn hình |
Hiển thị giữa màn hình |
Pass (P) |
| Login_04 |
Khả năng resize form |
Thao tác kéo mép form |
Form không thể resize |
Không thay đổi kích thước |
Pass (P) |
| Login_05 |
Khả năng di chuyển |
Giữ chuột kéo thanh tiêu đề |
Form di chuyển được trên màn hình |
Di chuyển bình thường |
Pass (P) |
| Login_06 |
Kiểm tra trạng thái |
Quan sát nút bấm |
Trạng thái button Đăng nhập, Đăng ký hoạt động |
Hoạt động tốt |
Pass (P) |
| Login_07 |
Kiểm tra trường form |
Quan sát cấu trúc giao diện |
Label và button đúng kích thước, vị trí, màu sắc (Số điện thoại, Mật khẩu, 2 nút Đăng nhập, Thoát) |
Đúng thiết kế |
Pass (P) |
| Login_08 |
Hiển thị mật khẩu |
Nhập thông tin vào ô mật khẩu |
Hiển thị ký tự dấu * |
Hiển thị dấu * |
Pass (P) |
| Login_09 |
Textbox mặc định |
Mở form đăng nhập |
Ô Số điện thoại, Mật khẩu khả dụng và để trống |
Đúng trạng thái |
Pass (P) |
| Login_10 |
Đăng nhập đúng |
Nhập đúng tất cả các trường và click Đăng nhập |
Không hiển thị thông báo lỗi, chuyển thẳng vào form main |
Vào thẳng form main |
Pass (P) |
| Login_11 |
Kiểm tra số điện thoại |
Để trống dữ liệu, click Đăng nhập |
Hiển thị thông báo: "Số điện thoại và mật khẩu không được để trống" |
Yêu cầu hiển thị: "Hãy nhập tài khoản, mật khẩu" |
Fail (F) |
| Login_12 |
Kiểm tra số điện thoại |
Nhập sai dữ liệu số điện thoại, click Đăng nhập |
Hiển thị thông báo: "Số điện thoại hoặc mật khẩu không đúng" |
Báo đúng thông báo lỗi |
Pass (P) |
| Login_13 |
Kiểm tra mật khẩu |
Để trống dữ liệu mật khẩu, click Đăng nhập |
Hiển thị thông báo: "Số điện thoại và mật khẩu không được để trống" |
Yêu cầu hiển thị: "Hãy nhập tài khoản, mật khẩu" |
Fail (F) |
| Login_14 |
Kiểm tra mật khẩu |
Nhập sai mật khẩu, click Đăng nhập |
Hiển thị thông báo: "Số điện thoại hoặc mật khẩu không đúng" |
Báo đúng thông báo lỗi |
Pass (P) |
| Login_15 |
Kiểm tra vai trò |
Nhập đúng dữ liệu tài khoản người dùng |
Hiển thị: "Đăng nhập với vai trò người dùng thành công" |
Thông báo thành công |
Pass (P) |
| Login_16 |
Kiểm tra vai trò user |
Nhập đúng dữ liệu, role = user |
Hiển thị: "Đăng nhập với vai trò người dùng thành công" |
Điều hướng giao diện user |
Pass (P) |
| Login_17 |
Kiểm tra vai trò admin |
Nhập đúng dữ liệu, role = admin |
Hiển thị: "Đăng nhập với vai trò người quản lý thành công" |
Điều hướng giao diện admin |
Pass (P) |
| Login_18 |
Kiểm tra nút Thoát |
Click button Thoát |
Đóng form đăng nhập |
Đóng form thành công |
Pass (P) |
Ghi chú từ kết quả kiểm thử: Có 16 ca kiểm thử đạt (Pass) và 02 ca kiểm thử chưa đạt (Fail ở Login_11 và Login_13) do câu chữ thông báo phản hồi khi để trống trường nhập liệu chưa hoàn toàn khớp với đặc tả yêu cầu ban đầu.
Kết quả và đóng góp
- Kết quả thực nghiệm: Đề tài đã hoàn thành toàn bộ khối lượng nghiên cứu theo đề cương học phần Công nghệ phần mềm. Xây dựng thành công ứng dụng phần mềm hoàn chỉnh, giao diện đơn giản, tốc độ xử lý nhanh và phù hợp với mô hình hoạt động của trạm y tế phường/xã.
- Giải pháp đóng góp:
- Tin học hóa hoàn toàn quy trình khai báo y tế tại trạm y tế cơ sở, rút ngắn thời gian hoàn thành tờ khai xuống dưới 1 phút cho mỗi người dân.
- Tích hợp tính năng tự động tạo mã QR sau khi khai báo, hỗ trợ người dân tái sử dụng dữ liệu nhanh chóng trong các lần khai báo sau.
- Cung cấp công cụ quản lý, tìm kiếm và truy vết dịch tễ tập trung cho cán bộ y tế, phân loại rõ ràng 3 diện khai báo (toàn dân, nội địa, nhập cảnh) và tiếp nhận cảnh báo tiếp xúc F0/F1 khẩn cấp.
- Giảm thiểu tiếp xúc trực tiếp giữa nhân viên y tế và người dân, góp phần hạn chế nguy cơ lây nhiễm chéo tại cơ sở y tế.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên nội dung kiểm thử và phạm vi triển khai của báo cáo:
- Hạn chế: Hệ thống còn một số thông báo phản hồi giao diện chưa đồng nhất với đặc tả (như ghi nhận tại ca kiểm thử Login_11 và Login_13); hệ thống đang được thiết kế dạng ứng dụng desktop hướng đến trạm y tế cơ sở cụ thể (quy mô khảo sát tại trạm y tế 300m² với 20 cán bộ trực).
- Hướng phát triển: Tiếp tục hoàn thiện xử lý giao diện, bổ sung các ràng buộc dữ liệu, thực hiện kiểm thử tự động toàn diện cho các module tờ khai và quản lý người dùng, sẵn sàng mở rộng và thích ứng theo các thay đổi nghiệp vụ y tế phát sinh trong tương lai.
Giá trị tham khảo
Báo cáo học phần là tài liệu tham khảo hữu ích cho:
- Sinh viên chuyên ngành Công nghệ phần mềm, Công nghệ thông tin đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp về xây dựng ứng dụng quản lý trên nền tảng Java/SQL.
- Người làm đề tài nghiên cứu tham khảo quy trình phân tích thiết kế hệ thống theo chuẩn UML (Use Case, Activity, Sequence Diagram), cách lập kế hoạch quản lý chi phí/thời gian dự án và xây dựng bảng test case kiểm thử phần mềm chi tiết.
Câu hỏi thường gặp
1. Cơ sở y tế nào được lựa chọn để khảo sát hiện trạng trong đề tài?
Hệ thống được khảo sát thực tế tại Trạm y tế phường Thanh Xuân (có diện tích 300m², nhân lực gồm 20 nhân viên thay phiên trực 24/24 giờ và 3 cán bộ quản lý trạm). Ngoài ra, tài liệu còn ghi nhận hình ảnh cơ sở khảo sát tại Trạm y tế phường Phú Đô.
2. Phần mềm hỗ trợ những loại hình khai báo y tế cụ thể nào?
Phần mềm hỗ trợ 3 loại hình khai báo chính gồm: Khai báo toàn dân, Khai báo khi di chuyển nội địa, và Khai báo cho người mới nhập cảnh. Bên cạnh đó, hệ thống có tính năng khai báo khẩn cấp khi người dân tiếp xúc gần với F0, F1.
3. Công nghệ và công cụ nào được sử dụng để phát triển phần mềm?
Hệ thống được lập trình bằng ngôn ngữ Java trên môi trường NetBeans IDE, hệ quản trị cơ sở dữ liệu Microsoft SQL Server Management Studio (kết hợp phân tích MySQL), và công cụ draw.io để thiết kế các biểu đồ UML.
4. Kết quả kiểm thử form Đăng nhập ghi nhận bao nhiêu ca thành công và lỗi ở điểm nào?
Trong tổng số 18 ca kiểm thử form Login, có 16 ca đạt yêu cầu (Pass) và 2 ca chưa đạt (Fail ở ca Login_11 và Login_13) do thông báo hiển thị khi để trống số điện thoại/mật khẩu thực tế trả về "Hãy nhập tài khoản, mật khẩu" thay vì câu thông báo dự kiến "Số điện thoại và mật khẩu không được để trống".
5. Tác giả áp dụng tiêu chuẩn nào để phân loại các dạng bảo trì phần mềm?
Tác giả dẫn chiếu theo định nghĩa của IEEE (1993) để chia bảo trì phần mềm thành 4 loại: Sửa lại cho đúng (Corrective), Thích ứng (Adaptive), Hoàn thiện (Perfective), và Bảo vệ (Preventive), đồng thời đề xuất duy trì bảo trì định kỳ tối thiểu 1 lần/năm.
Kết luận
Báo cáo học phần môn Công nghệ phần mềm của sinh viên Phí Thành Long đã hoàn thành việc khảo sát, phân tích, thiết kế và xây dựng thành công phần mềm Quản lý khai báo y tế phục vụ trạm y tế phường/xã. Ứng dụng đã giải quyết được các bất cập của hình thức khai báo giấy truyền thống thông qua việc số hóa 3 loại tờ khai, cấp mã QR tự động và hỗ trợ cán bộ y tế quản lý, truy vết dịch tễ hiệu quả. Hệ thống được kiểm thử thực tế và đóng gói hoàn chỉnh bằng Java/NetBeans, đáp ứng đầy đủ mục tiêu chuyên đề môn học đặt ra.