Hệ thống quản lý tiêm chủng thông minh Trick or Chet được xây dựng trên nền tảng Django (Python) và MySQL, triển khai đầy đủ quy trình từ đăng ký, khám sàng lọc, tiêm chủng cho đến theo dõi phản ứng sau tiêm và thanh toán hóa đơn.
- Backend: Python 3.10 – 3.14+, Django 4.2 (Kiến trúc MTV).
- Database: MySQL 8.0+ (CSDL quan hệ).
- Frontend: HTML5, CSS3 (Vanilla CSS, custom layout Flexbox/Grid), Bootstrap 5 (tích hợp qua
crispy-forms), Bootstrap Icons, Google Fonts (Outfit & Cormorant Garamond). - Tiện ích:
python-docx(Xuất báo cáo CSDL dạng Word),Mermaid(Vẽ sơ đồ quan hệ trực quan).
vaccinems/
├── config/ # Cấu hình dự án Django
│ ├── settings.py # Cấu hình Database, Apps, Middleware
│ └── urls.py # Định tuyến URL toàn hệ thống
├── apps/ # Các ứng dụng thành phần (Apps)
│ ├── accounts/ # Xác thực, phân quyền & Custom User Model
│ ├── candidates/ # Quản lý hồ sơ người tiêm
│ ├── appointments/ # Lịch hẹn tiêm chủng & Trung tâm tiêm
│ ├── vaccines/ # Danh mục vaccine, kho hàng, lượt tiêm thực tế
│ ├── staff/ # Phân hệ nhân sự (Bác sĩ, Y tá, Lễ tân)
│ ├── records/ # Quản lý hồ sơ y tế của bệnh nhân
│ └── sales/ # Quản lý hóa đơn & thanh toán
├── templates/ # Chứa giao diện HTML mẫu
├── static/ # CSS, JS, hình ảnh tĩnh của hệ thống
├── requirements.txt # Danh sách các thư viện Python cần thiết
└── manage.py # Công cụ dòng lệnh quản trị Django
Khi clone hoặc pull dự án về máy, hãy thực hiện tuần tự các bước sau để thiết lập môi trường và chạy chương trình:
Mở terminal tại thư mục gốc của dự án và chạy các lệnh sau:
# Tạo môi trường ảo
python -m venv .venv
# Kích hoạt môi trường ảo
# Trên Windows (PowerShell):
.venv\Scripts\Activate.ps1
# Trên Windows (CMD):
.venv\Scripts\activate.bat
# Trên Linux/macOS:
source .venv/bin/activatepip install -r requirements.txt- Đăng nhập vào MySQL Server của bạn (qua MySQL CLI hoặc các công cụ giao diện như DBeaver, phpMyAdmin, MySQL Workbench) và chạy lệnh SQL sau để tạo cơ sở dữ liệu mới:
CREATE DATABASE vaccinems_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Mở tệp tin config/settings.py và cập nhật thông tin kết nối CSDL tại cấu hình
DATABASEScho khớp với tài khoản MySQL cục bộ của bạn:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'vaccinems_db', 'USER': 'root', # User đăng nhập MySQL của bạn 'PASSWORD': 'your_password', # Mật khẩu MySQL của bạn 'HOST': 'localhost', 'PORT': '3306', } }
Chạy lệnh sau để Django sinh toàn bộ cấu trúc bảng dữ liệu trong cơ sở dữ liệu MySQL của bạn:
python manage.py migrateĐể có tài khoản đăng nhập vào trang quản trị Django Admin mặc định (/admin), hãy tạo một tài khoản Superuser bằng lệnh:
python manage.py createsuperuserHệ thống sẽ yêu cầu bạn nhập:
- Username (Tên đăng nhập)
- Email address (Email liên hệ)
- Password và Password (again) (Mật khẩu - lưu ý mật khẩu nhập vào sẽ không hiện ký tự trên terminal, chỉ cần nhập chính xác và nhấn Enter)
Dự án được xây dựng kèm một tệp kịch bản populate.py giúp tự động tạo sẵn các cơ sở dữ liệu chạy thử (trung tâm tiêm chủng, danh sách vaccine, nhân viên y tế, hồ sơ người tiêm mẫu, lịch hẹn tiêm, lịch sử lần tiêm, hóa đơn bán hàng, v.v.). Bạn bắt buộc phải chạy lệnh này để hệ thống hoạt động bình thường:
python populate.pyLưu ý: Kịch bản seeding này cũng tự động tạo một tài khoản quản trị viên tối cao mặc định là: admin / mật khẩu: admin (nếu tài khoản này chưa tồn tại trong hệ thống).
Khởi động server phát triển bằng lệnh:
python manage.py runserverSau đó truy cập ứng dụng thông qua trình duyệt web tại địa chỉ: http://127.0.0.1:8000/
Sau khi chạy xong kịch bản dữ liệu mẫu populate.py, các tài khoản dưới đây sẽ sẵn sàng để bạn đăng nhập thử nghiệm theo từng phân hệ chức năng:
| Phân hệ (Role) | Tên đăng nhập | Mật khẩu | Chức năng thử nghiệm chính |
|---|---|---|---|
| Quản trị viên (Admin) | admin |
admin |
Xem báo cáo doanh thu, thống kê, quản lý toàn bộ hệ thống |
| Lễ tân (Receptionist) | le_tan_1 |
123456 |
Tiếp đón, xác nhận lịch hẹn, chuyển trạng thái "Đang chờ khám" |
| Bác sĩ (Doctor) | bac_si_1 |
123456 |
Khám sàng lọc, chỉ định vaccine, chuyển trạng thái "Đang chờ tiêm" |
| Y tá (Nurse) | y_ta_1 |
123456 |
Thực hiện tiêm, theo dõi phản ứng sau tiêm, chuyển trạng thái "Chờ thanh toán" |
| Người tiêm (Candidate) | candidate_1 |
123456 |
Xem dashboard cá nhân, đặt lịch hẹn, xem lịch sử tiêm, xem hóa đơn |