Hệ thống quản lý dữ liệu điện tim gồm Web dành cho bệnh nhân, ứng dụng WPF dành cho bác sĩ/quản trị viên, API ASP.NET Core Minimal API, SQL Server và chương trình mô phỏng thiết bị IoT ECG.
| Thành phần | Đường dẫn | Vai trò |
|---|---|---|
| API + Web | API/EcgRecordAPI |
Cung cấp REST API, SignalR và giao diện Web bệnh nhân tại http://localhost:5000. |
| WPF HRMonitor | HRMonitor/HRMonitor |
Bác sĩ xem ECG, phản hồi tư vấn; Admin quản lý và điều phối. |
| HardwareSim | HardwareSim |
Mô phỏng thiết bị ECG, gửi tín hiệu, nhịp tim và RMSSD. |
| SQL scripts | Database/SQL_Scripts |
Khởi tạo schema, dữ liệu mẫu, index và chức năng Admin/thiết bị. |
- .NET SDK 10.0
- SQL Server hoặc SQL Server Express
- SQL Server Management Studio (SSMS) hoặc công cụ chạy script SQL tương đương
Mở SSMS và chạy các script theo đúng thứ tự:
01_Create_Database_And_Accounts.sql02_Create_Patients_Doctors.sql03_Create_EcgLogs_Consultations.sql04_Create_Views_Report.sql05_Api_Integration_Indexes.sql06_Admin_Device_Management.sql
Script 06 là bắt buộc với bản hiện tại: bổ sung danh mục thiết bị ECG hợp lệ và các API quản trị.
Chuỗi kết nối nằm trong appsettings.json. Thay Server=localhost\SQLEXPRESS nếu SQL Server của bạn dùng instance khác.
cd API\EcgRecordAPI
dotnet restore
dotnet runMở http://localhost:5000. Web hỗ trợ đăng ký/đăng nhập bệnh nhân, xem chỉ số ECG, gửi yêu cầu tư vấn, đăng xuất và dữ liệu ECG minh họa.
Khởi động API trước, rồi chạy:
cd HRMonitor\HRMonitor
dotnet runBác sĩ xem bệnh nhân được giao, mở bản ghi ECG và phản hồi tư vấn. Admin có dashboard số liệu, danh sách bệnh nhân/bác sĩ, phân công bác sĩ và nút đăng xuất.
- Tài khoản:
admin - Mật khẩu:
admin
Trong WPF, nhấn Đăng nhập Quản trị viên trước khi đăng nhập.
| Bác sĩ | Tài khoản | Mật khẩu | Phụ trách mẫu |
|---|---|---|---|
| BS. Nguyễn Minh An | 1 |
2222 |
Phạm Thị D, Hoàng Văn E |
| BS. Trần Thu Hà | 2 |
1111 |
Nguyễn Văn A, Trần Thị B, Lê Văn C |
| Bệnh nhân | Mật khẩu |
|---|---|
| Nguyen Van A | 8392 |
| Tran Thi B | 1234 |
| Le Van C | 5678 |
| Pham Thi D | 4321 |
| Hoang Van E | 8765 |
GET /api/admin/dashboard: số bệnh nhân, bác sĩ, thiết bị ECG đang hoạt động và trạng thái tư vấn.GET /api/admin/users?role=BENHNHAN&status=ACTIVE: lọc tài khoản theo vai trò/trạng thái.PUT /api/admin/users/{id}/lockvà/unlock: khóa/mở khóa tài khoản.DELETE /api/admin/users/{id}: chỉ xóa khi chưa có hồ sơ ECG hoặc ca tư vấn; tài khoản có hồ sơ y tế phải khóa tạm thời.POST /api/admin/doctors: tạo tài khoản bác sĩ.GET /api/admin/patients/unassignedvàPUT /api/admin/assignments: theo dõi/phân công bệnh nhân, có SignalRAdminAssignedPatient.GET/POST /api/admin/devices,DELETE /api/admin/devices/{macAddress}: khai báo, xem và thu hồi thiết bị.
Trước khi chạy simulator, bảo đảm MAC trong HardwareSim/config.json đã có trong ThietBiEcg. Sau khi chạy script 06, MAC mẫu 00:1A:2B:3C:4D:5E được tự động khai báo.
cd HardwareSim
dotnet runSimulator liên kết thiết bị với PatientId trong config.json, lưu tạm khi mất kết nối và tự tải dữ liệu ECG lên API khi kết nối lại.
Đây là dự án học phần; dữ liệu mẫu dùng mật khẩu dạng plain text để dễ trình diễn. Trước khi triển khai thực tế, cần chuyển sang hash mật khẩu, JWT và policy phân quyền thực sự cho toàn bộ endpoint /api/admin/*.