Giới thiệu dự án

Chuyển đổi số trong lĩnh vực y tế (Digital Health) đang là trọng tâm chiến lược quốc gia nhằm giảm tải cho các cơ sở y tế và nâng cao chất lượng phục vụ người dân. Theo thống kê từ Bộ Y tế và Tổ chức Y tế Thế giới (WHO), tại các phòng khám và bệnh viện công lập/tư nhân quy mô vừa và nhỏ, thời gian chờ đợi tiếp đón, làm thủ tục hành chính và nhận kết quả khám bệnh chiếm tới 60% - 70% tổng thời gian người bệnh có mặt tại cơ sở y tế. Tình trạng bệnh nhân phải xếp hàng lấy số thứ tự từ sáng sớm, hồ sơ bệnh án giấy dễ thất lạc, sai sót trong kê đơn thuốc viết tay và khó khăn trong việc tra cứu lịch sử khám bệnh là những vấn đề nan giải kéo dài.

Đồ án tốt nghiệp đại học ngành Hệ thống Thông tin (Khoa Công nghệ Thông tin 1, Học viện Công nghệ Bưu chính Viễn thông) với đề tài "Xây dựng hệ thống quản lý khám chữa bệnh và đăng ký khám bệnh từ xa cho bệnh viện/phòng khám" được thực hiện nhằm giải quyết triệt để các bài toán nghiệp vụ trên thông qua giải pháp phần mềm chuyên biệt.

+-----------------------------------------------------------------------------------+
|                              CÁC PAIN POINTS NGHIỆP VỤ                            |
+-----------------------------------------------------------------------------------+
| 1. Quá tải quầy tiếp đón do thủ tục nhập thông tin hành chính thủ công            |
| 2. Phân tán thông tin bệnh án, kết quả xét nghiệm và lịch sử dùng thuốc           |
| 3. Xung đột lịch hẹn khám giữa bệnh nhân đặt trước và bệnh nhân đến trực tiếp      |
| 4. Sai sót, thất thoát trong kê đơn thuốc và quản lý viện phí/thanh toán          |
+-----------------------------------------------------------------------------------+

Mục tiêu của dự án

  1. Số hóa 100% quy trình tiếp đón và phân luồng: Tự động hóa khâu tạo ca khám, phân bổ bệnh nhân vào 08 phòng khám chuyên khoa (Nội tổng quát, Nhi, Ngoại, Tai Mũi Họng, Mắt...) theo số thứ tự (STT) và mức độ ưu tiên.
  2. Xây dựng cổng đăng ký khám bệnh từ xa: Cung cấp kênh đặt lịch trực tuyến theo khung giờ và bác sĩ chỉ định, hạn chế tình trạng dồn ứ giờ cao điểm.
  3. Chuẩn hóa hồ sơ bệnh án điện tử (EMR - Electronic Medical Record): Lưu trữ tập trung các chỉ số sinh tồn (huyết áp, nhịp tim, nhiệt độ, chiều cao, cân nặng), chẩn đoán ICD, chỉ định cận lâm sàng (CLS) và đơn thuốc.
  4. Quản lý kho dược và viện phí tự động: Tự động tính toán tổng chi phí dịch vụ khám, chi phí xét nghiệm cận lâm sàng và giá thuốc theo danh mục kê khai.
  5. Kiến trúc hệ thống phân tầng an toàn, mở rộng: Tách biệt hoàn toàn tầng Client (Single Page Application) và Server (RESTful API), đảm bảo kiểm soát truy cập theo vai trò (Role-Based Access Control - RBAC).

Phương pháp tiếp cận và kết quả kỳ vọng

Hệ thống được thiết kế theo kiến trúc hướng dịch vụ Client-Server với giao thức truyền thông HTTP/HTTPS và định dạng trao đổi dữ liệu tiêu chuẩn JSON.

  • Phạm vi áp dụng: Triển khai thử nghiệm tại các Trung tâm Y tế (TTYT) và Phòng khám Đa khoa tư nhân quy mô vừa và nhỏ (cơ cấu 1 Trưởng khoa, 1 Điều dưỡng trưởng, 8 phòng khám chuyên khoa, đội ngũ điều dưỡng tiếp đón, tư vấn và phòng khám).
  • Chỉ số đo lường hiệu quả (KPIs):
    • Giảm 65% thời gian chờ đợi làm thủ tục tiếp đón tại quầy.
    • Giảm 80% thời gian tra cứu hồ sơ bệnh án cũ của bác sĩ.
    • Tối ưu hóa 100% quy trình kiểm tra trùng lặp lịch khám của bác sĩ theo khung giờ.
    • Thời gian phản hồi API trung bình dưới 200ms với tải đồng thời 200 người dùng.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thực tế tại các phòng khám cơ sở cho thấy nhiều đơn vị vẫn áp dụng sổ khám bệnh truyền thống hoặc sử dụng các phần mềm rời rạc không có phân hệ đặt lịch từ xa dành riêng cho người bệnh.

Tiêu chí đánh giá Sổ khám giấy truyền thống Phần mềm đóng gói cục bộ Hệ thống Đề tài xây dựng
Đặt lịch từ xa Không hỗ trợ Phụ thuộc tổng đài/Ghi chép thủ công Đặt lịch trực tuyến 24/7 qua Web Portal
Kiểm soát xung đột lịch Không có (xếp hàng tự do) Nhân viên đối soát thủ công Thuật toán kiểm tra Slot thời gian thực
Tra cứu bệnh án Rất chậm (5 - 15 phút tìm hồ sơ) Cục bộ tại máy trạm phòng khám Truy vấn tập trung qua API (< 1 giây)
Đơn thuốc & Cận lâm sàng Chữ viết tay, dễ nhầm lẫn Có hỗ trợ gõ text đơn giản Tích hợp Master Data thuốc & Dịch vụ CLS
Khả năng mở rộng & Chi phí Không tốn license, chi phí vận hành cao Chi phí bản quyền cao, khó tùy biến Mã nguồn mở, kiến trúc Micro-ready, tối ưu chi phí

Ma trận yêu cầu hệ thống (MoSCoW)

  • Must Have (Bắt buộc): Xác thực tài khoản đa phân quyền (Admin, Doctor, Nursing, Patient); Quản lý đặt lịch khám trực tuyến; Quản lý hồ sơ ca khám; Chỉ định CLS và Kê đơn thuốc; Thanh toán và In hóa đơn.
  • Should Have (Nên có): Kiểm tra xung đột lịch làm việc của Bác sĩ; Theo dõi lịch sử sinh hiệu bệnh nhân; Quản lý kho dược (hoạt chất, hàm lượng, quy cách đóng gói).
  • Could Have (Có thể có): Gửi SMS/Email thông báo lịch hẹn; Bộ lọc tìm kiếm nhanh theo chuyên khoa và bác sĩ chuyên môn.
  • Won't Have (Chưa triển khai): Thanh toán trực tuyến qua cổng thẻ quốc tế; Tích hợp hệ thống lưu trữ hình ảnh y khoa chuẩn PACS/DICOM.

Thiết kế hệ thống

Hệ thống được tổ chức theo mô hình 3-Tier Architecture kết hợp nguyên lý thiết kế Clean Architecture, phân tách rõ ràng giữa tầng hiển thị giao diện, tầng xử lý logic nghiệp vụ và tầng lưu trữ dữ liệu.

graph TD
    Client[Client: Web Browser / Mobile Browser] -->|HTTPS / JSON REST API| Nginx[Reverse Proxy / Nginx Web Server]
    Nginx -->|Proxy Pass| AngularFE[Frontend: Angular 16 Single Page App]
    AngularFE -->|HTTP Client Requests| SpringBE[Backend: Spring Boot 3.x REST API]
    
    subgraph Spring Boot Architecture
        Controller[REST Controllers] --> Service[Service Layer: Business Logic]
        Service --> Security[Spring Security & JWT Filter]
        Service --> Repository[Spring Data JPA Repositories]
    end
    
    Repository -->|Hibernate ORM / JDBC| MySQL[(Database: MySQL 8.0 Server)]

Technology Stack

  • Backend Framework: Java 17, Spring Boot 3.1.x (Spring Web, Spring Data JPA, Spring Security, Hibernate ORM).
  • Frontend Framework: Angular 16.x (TypeScript, RxJS, Angular Material, Bootstrap 5).
  • Database Management System: MySQL 8.0 với engine InnoDB đảm bảo tính toàn vẹn giao dịch ACID.
  • API Documentation: Swagger / OpenAPI 3.0 UI phục vụ kiểm thử và tài liệu hóa endpoint.
  • Build Tools & Environment: Maven 3.8+, Node.js 18 LTS, IntelliJ IDEA, VS Code.

Thiết kế Cơ sở dữ liệu (Data Schema Design)

Mô hình dữ liệu hướng đối tượng sử dụng chiến lược kế thừa Joined Table Inheritance hoặc cấu trúc liên kết chuẩn 3NF:

-- Bảng cơ sở định danh người dùng
CREATE TABLE member (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    full_name VARCHAR(100) NOT NULL,
    phone_number VARCHAR(15) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    address VARCHAR(255),
    role ENUM('ROLE_ADMIN', 'ROLE_DOCTOR', 'ROLE_NURSING', 'ROLE_PATIENT') NOT NULL
);

-- Phân hệ Nhân viên y tế kế thừa từ Member
CREATE TABLE staff (
    id BIGINT PRIMARY KEY,
    position_id INT,
    expertise_id INT,
    FOREIGN KEY (id) REFERENCES member(id) ON DELETE CASCADE
);

-- Phân hệ Ca khám bệnh
CREATE TABLE medical_record (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    created_time DATETIME NOT NULL,
    status ENUM('PENDING', 'IN_EXAMINATION', 'TESTING', 'COMPLETED', 'CANCELLED') NOT NULL,
    payment_status ENUM('UNPAID', 'PAID') DEFAULT 'UNPAID',
    patient_id BIGINT NOT NULL,
    doctor_id BIGINT NOT NULL,
    FOREIGN KEY (patient_id) REFERENCES member(id),
    FOREIGN KEY (doctor_id) REFERENCES staff(id)
);

-- Chi tiết thông tin khám và chỉ số sinh tồn
CREATE TABLE medical_record_information (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    medical_record_id BIGINT UNIQUE NOT NULL,
    height DECIMAL(5,2),
    weight DECIMAL(5,2),
    blood_pressure VARCHAR(20),
    heart_beat INT,
    body_temperature DECIMAL(4,2),
    diagnose TEXT NOT NULL,
    detail TEXT,
    solution TEXT,
    FOREIGN KEY (medical_record_id) REFERENCES medical_record(id)
);

Thiết kế RESTful API Endpoints

Phương thức Endpoint URI Phân quyền (RBAC) Mô tả chức năng
POST /api/v1/auth/login Public Xác thực người dùng, trả về JWT Token
POST /api/v1/appointments Patient, Nursing Đăng ký lịch hẹn khám mới
GET /api/v1/appointments/doctor/{id} Doctor, Nursing Lấy danh sách lịch hẹn của bác sĩ theo ngày
POST /api/v1/medical-records Nursing Tiếp đón, khởi tạo ca khám bệnh mới
PUT /api/v1/medical-records/{id}/info Doctor Cập nhật chẩn đoán, sinh hiệu ca khám
POST /api/v1/prescriptions Doctor Tạo đơn thuốc điện tử cho ca khám
POST /api/v1/invoices/{id}/pay Nursing, Admin Xác nhận thanh toán viện phí và in hóa đơn

Methodology

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum kết hợp quy chuẩn mô hình hóa hướng đối tượng UML (Unified Modeling Language), chia thành 5 Sprint trong thời gian 12 tuần:

[Sprint 1: Phân tích nghiệp vụ & Khảo sát] (Tuần 1-2) ➔ Thiết lập DFD Mức 0/1, Use Case, Lược đồ ERD
[Sprint 2: Xây dựng Core Backend & CSDL]   (Tuần 3-5) ➔ Spring Boot JPA Entities, CRUD Repositories, Security
[Sprint 3: Xây dựng Phân hệ Nghiệp vụ Y tế](Tuần 6-8) ➔ API Đặt lịch, Quản lý Ca khám, Kê đơn & Kho thuốc
[Sprint 4: Xây dựng Giao diện Frontend]    (Tuần 9-10)➔ Angular Components, Reactive Forms, Route Guards
[Sprint 5: Tích hợp, Testing & Đóng gói]   (Tuần 11-12)➔ Swagger Testing, UAT, Tối ưu hóa hiệu năng & Báo cáo

Implementation và kết quả

Development process

Quá trình lập trình Backend tập trung giải quyết bài toán cốt lõi: Xử lý giao dịch nguyên tử khi đặt lịch và kiểm tra xung đột thời gian biểu của bác sĩ.

Đoạn mã xử lý logic kiểm tra xung đột lịch hẹn trong AppointmentScheduleServiceImpl.java:

@Service
@Transactional
public class AppointmentScheduleServiceImpl implements AppointmentScheduleService {

    @Autowired
    private AppointmentScheduleRepository appointmentRepo;

    @Override
    public AppointmentResponseDTO createAppointment(AppointmentRequestDTO request) {
        // Kiểm tra bác sĩ có bị trùng lịch trong khung giờ (TimeFrame) của ngày đã chọn hay không
        boolean isConflict = appointmentRepo.existsByDoctorIdAndDateAndTimeFrameAndStatusNot(
                request.getDoctorId(),
                request.getDate(),
                request.getTimeFrame(),
                AppointmentStatus.CANCELLED
        );

        if (isConflict) {
            throw new ResourceConflictException("Bác sĩ đã có lịch hẹn trong khung giờ: " + request.getTimeFrame());
        }

        AppointmentSchedule appointment = new AppointmentSchedule();
        appointment.setDate(request.getDate());
        appointment.setTimeFrame(request.getTimeFrame());
        appointment.setStatus(AppointmentStatus.CONFIRMED);
        appointment.setPatient(new Patient(request.getPatientId()));
        appointment.setDoctor(new Doctor(request.getDoctorId()));

        AppointmentSchedule saved = appointmentRepo.save(appointment);
        return mapToDTO(saved);
    }
}

Tại tầng Frontend (Angular), việc xử lý bất đồng bộ khi tải danh mục dịch vụ cận lâm sàng và kê đơn thuốc được thực hiện bằng RxJS Observables kết hợp Reactive Forms:

@Component({
  selector: 'app-doctor-examination',
  templateUrl: './doctor-examination.component.html'
})
export class DoctorExaminationComponent implements OnInit {
  examForm!: FormGroup;
  availableMedicines: Medicine[] = [];
  selectedPrescriptionItems: PrescriptionItem[] = [];

  constructor(
    private fb: FormBuilder,
    private medicalService: MedicalService,
    private toastr: ToastrService
  ) {}

  ngOnInit(): void {
    this.initForm();
    this.loadMedicines();
  }

  submitExamination(recordId: number): void {
    if (this.examForm.invalid) return;

    const payload: ExaminationPayload = {
      ...this.examForm.value,
      prescriptions: this.selectedPrescriptionItems
    };

    this.medicalService.saveExaminationInfo(recordId, payload).subscribe({
      next: (res) => this.toastr.success('Lưu thông tin ca khám và đơn thuốc thành công'),
      error: (err) => this.toastr.error('Lỗi khi lưu ca khám: ' + err.message)
    });
  }
}

Testing và validation

Hệ thống được kiểm thử đa tầng bao gồm: Unit Test (JUnit 5, Mockito), Integration Test cho REST API qua Postman/Swagger, và User Acceptance Testing (UAT) với các kịch bản nghiệp vụ giả lập.

+-------------------------------------------------------------------------------+
|                            KẾT QUẢ KIỂM THỬ HỆ THỐNG                          |
+-------------------------------------------------------------------------------+
| * Backend Unit Test Coverage:                                                 |
|   - Class Coverage: 92.3%                                                     |
|   - Method Coverage: 86.8%                                                    |
|   - Line Coverage: 84.5%                                                      |
|                                                                               |
| * Stress Test Benchmark (Apache JMeter - 200 Virtual Users concurrent):        |
|   - Throughput (Throughput): 380 requests/sec                                 |
|   - Average Response Time: 142 ms                                             |
|   - Error Rate (HTTP 5xx): 0.00%                                              |
+-------------------------------------------------------------------------------+

Kết quả đạt được

Module chức năng Tình trạng kế hoạch Tình trạng thực tế Mức độ hoàn thành
Xác thực & Phân quyền Login/Logout/RBAC 4 nhóm tác nhân Hoạt động chính xác với JWT Filter 100%
Đặt lịch trực tuyến Bệnh nhân đặt lịch, chọn BS, khung giờ Đã có thuật toán chặn trùng lịch 100%
Tiếp đón & Quản lý ca khám Tiếp nhận STT, mở hồ sơ ca khám Tự động chuyển luồng phòng khám 100%
Chẩn đoán & Kê đơn thuốc Nhập sinh hiệu, kê đơn, chỉ định CLS Tự động tính giá và in đơn thuốc 100%
Thanh toán & Hóa đơn Tính tổng viện phí, in hóa đơn VAT In hóa đơn trực tiếp từ giao diện Web 100%
Quản lý danh mục & Kho Quản lý thuốc, nhân viên, dịch vụ Quản trị viên cập nhật trực tiếp 100%

Đổi mới và đóng góp

  1. Thuật toán giải quyết xung đột lịch khám thời gian thực (Time-Slot Collision Prevention): Thay vì đặt lịch thụ động dạng gửi form chờ phản hồi, hệ thống kiểm tra trực tiếp trạng thái rảnh/bận của bác sĩ theo ngày và khung giờ (timeFrame), ngăn chặn triệt để tình trạng đặt trùng lặp (Double Booking).
  2. Chuẩn hóa luồng luân chuyển dữ liệu ca khám khép kín (Seamless Patient Flow): Thiết lập cơ chế chuyển trạng thái dữ liệu tuần tự theo vòng đời: $$\text{PENDING (Tiếp đón)} \longrightarrow \text{IN_EXAMINATION (Khám)} \longrightarrow \text{TESTING (Chỉ định CLS)} \longrightarrow \text{COMPLETED (Kê đơn & Đóng ca)}$$ Hạn chế sai lệch thông tin và thất thoát hóa đơn khám bệnh.
  3. Mô hình kế thừa phân cấp thực thể người dùng hiệu quả: Thiết kế lớp Member cơ sở cho phép mở rộng linh hoạt thêm nhiều vai trò mới (như Dược sĩ, Kỹ thuật viên xét nghiệm) mà không phá vỡ cấu trúc bảng cơ sở dữ liệu hiện hữu.
  4. Cải thiện năng suất vận hành đo lường được:
    • Thời gian hoàn thành thủ tục đăng ký khám giảm từ 10 phút xuống còn 1.5 phút (giảm 85%).
    • Thời gian kê đơn và in phiếu chỉ định của Bác sĩ giảm từ 6 phút xuống 2 phút (giảm 66.7%).

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

Hệ thống được thiết kế phù hợp để vận hành tại Phòng khám Đa khoa quy mô từ 8 - 15 phòng khám chuyên khoa:

  • Bệnh nhân: Truy cập website trên thiết bị di động, đăng ký khám bệnh chuyên khoa Mắt với Bác sĩ A vào lúc 09:00 - 09:30 ngày mai. Nhận mã lịch hẹn tức thì.
  • Điều dưỡng tiếp đón: Khi bệnh nhân đến, nhập số điện thoại hoặc mã hẹn để xác nhận, hệ thống tự động đưa bệnh nhân vào hàng đợi của Phòng khám Mắt.
  • Bác sĩ: Mở danh sách ca khám trên máy tính phòng khám, ghi nhận thị lực, huyết áp, nhập chẩn đoán và chọn đơn thuốc có sẵn trong danh mục.
  • Thu ngân / Lễ tân: Xác nhận thanh toán toàn bộ chi phí khám + thuốc chỉ với 1 cú click chuột và in hóa đơn thanh toán cho bệnh nhân.
[Bệnh nhân đặt lịch Web] ➔ [Lễ tân xác nhận & Đẩy ca khám] ➔ [Bác sĩ khám/CLS/Kê đơn] ➔ [Thanh toán & Nhận thuốc]

Chiến lược triển khai kỹ thuật (Deployment Strategy)

  • Phần cứng máy chủ đề xuất: 4 Cores CPU, 8GB RAM, 80GB SSD Storage.
  • Cấu hình môi trường: Ubuntu Server 22.04 LTS, Docker & Docker Compose để container hóa backend Spring Boot và cơ sở dữ liệu MySQL.
  • Web Server & Reverse Proxy: Nginx cấu hình SSL/TLS (HTTPS) và nén tĩnh Gzip cho gói build Angular.
  • Phân tích hiệu quả kinh tế (ROI): Tiết kiệm 40% chi phí in ấn văn phòng phẩm (giấy khám, sổ khám, phiếu kê tay) và tinh gọn 30% nhân sự trực quầy tiếp đón trong 6 tháng vận hành đầu tiên.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Hệ thống hiện tại vận hành chủ yếu theo cơ chế Request-Response qua REST API; chưa ứng dụng WebSockets để cập nhật tức thời số thứ tự đang khám lên màn hình tivi tại sảnh chờ.
  • Chưa hỗ trợ thanh toán trực tuyến tự động qua cổng thanh toán số (VNPay, MoMo, ZaloPay).
  • Chưa liên thông chuẩn bệnh án quốc tế HL7/FHIR để kết nối dữ liệu liên viện.

Hướng phát triển trong tương lai

  1. Tích hợp hội chẩn từ xa (Telemedicine Video Call): Xây dựng tính năng gọi video trực tuyến giữa Bác sĩ và Bệnh nhân thông qua giao thức WebRTC.
  2. Module AI hỗ trợ cảnh báo tương tác thuốc (Drug Interaction Alert): Tự động phát hiện và cảnh báo khi bác sĩ kê các loại thuốc có hoạt chất xung đột hoặc tương tác tiêu cực với tiền sử dị ứng của người bệnh.
  3. Phát triển ứng dụng di động đa nền tảng (Mobile App): Xây dựng ứng dụng Flutter/React Native cho bệnh nhân để theo dõi nhắc lịch uống thuốc và nhận thông báo đẩy (Push Notification).

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành HTTT/CNTT: Tài liệu tham khảo toàn diện về cách phân tích thiết kế hệ thống theo chuẩn UML (Use Case, DFD 3 mức, Sequence Diagram) và phương pháp xây dựng Clean Architecture với Spring Boot + Angular.
  • Lập trình viên (Developers): Nắm bắt mô hình tổ chức source code chuẩn mực, cách xử lý phân quyền RBAC đa tác nhân, và giải pháp mapping kế thừa dữ liệu phức tạp trong Hibernate/JPA.
  • Nhà quản lý cơ sở y tế / Chủ phòng khám: Có được giải pháp phần mềm hoàn chỉnh, tối ưu chi phí đầu tư ban đầu, sẵn sàng số hóa toàn diện quy trình vận hành và nâng cao trải nghiệm người bệnh.
  • Nhà nghiên cứu (Researchers): Dữ liệu mẫu và phương pháp luận khảo sát thực nghiệm về luồng chuyển đổi bệnh nhân trong các cơ sở y tế bán công và tư nhân.

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

1. Yêu cầu cấu hình tối thiểu để cài đặt và triển khai hệ thống là gì?

  • Phía Server: Hệ điều hành Linux (Ubuntu 20.04/22.04) hoặc Windows Server, tối thiểu 2 Core CPU, 4GB RAM, cài đặt sẵn Java Runtime Environment (JRE 17+), Node.js 18+ và MySQL Server 8.0.
  • Phía Client: Mọi thiết bị (PC, Laptop, Tablet, Smartphone) có trình duyệt web hiện đại (Google Chrome, Firefox, Safari, Edge) hỗ trợ JavaScript và chuẩn HTML5.

2. Hệ thống xử lý thế nào khi có nhiều bệnh nhân cùng đặt lịch vào một bác sĩ tại cùng một thời điểm?

Hệ thống sử dụng cơ chế kiểm tra khóa logic tại tầng Service (AppointmentScheduleService) kết hợp Transaction Isolation trong Spring Data JPA. Khi một giao dịch đặt lịch thành công được ghi nhận vào cơ sở dữ liệu, mọi yêu cầu tiếp theo cùng khung giờ (timeFrame) và cùng doctorId sẽ lập tức bị từ chối và thông báo khung giờ đã kín.

3. Hệ thống có thể tích hợp với các phần mềm quản lý xét nghiệm (LIS) có sẵn không?

Hệ thống được thiết kế theo chuẩn RESTful API với định dạng JSON tiêu chuẩn, cho phép các hệ thống ngoài (như máy xét nghiệm, phần mềm LIS/RIS) dễ dàng gửi dữ liệu kết quả cận lâm sàng thông qua các Secure Webhook hoặc REST API endpoint được phân quyền bảo mật.

4. Chi phí duy trì và bảo trì hệ thống hàng năm ước tính ra sao?

Do hệ thống được phát triển trên nền tảng công nghệ mã nguồn mở (Java Spring Boot, Angular, MySQL Community), phòng khám hoàn toàn không mất chi phí bản quyền phần mềm hàng năm. Chi phí duy nhất bao gồm phí thuê máy chủ đám mây (Cloud VPS) khoảng 150.000 - 300.000 VNĐ/tháng và tên miền.

5. Khả năng bảo mật thông tin hồ sơ bệnh án được bảo đảm như thế nào?

Mọi mật khẩu người dùng đều được băm bằng thuật toán an toàn trước khi lưu trữ. Giao tiếp giữa Client và Server được bảo vệ qua lớp chứng thực Token JWT có thời hạn và mã hóa HTTPS, ngăn ngừa các cuộc tấn công đánh cắp phiên làm việc và nghe lén dữ liệu (Man-in-the-middle).


Kết luận

Đồ án tốt nghiệp đại học "Xây dựng hệ thống quản lý khám chữa bệnh và đăng ký khám bệnh từ xa cho bệnh viện/phòng khám" của sinh viên Nguyễn Huy Hoàng (GVHD: PGS. Nguyễn Trọng Khánh) đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng thực tiễn đặt ra. Bằng việc kết hợp chặt chẽ giữa quy trình khảo sát nghiệp vụ thực tế tại khoa khám bệnh với kiến trúc công nghệ hiện đại Spring Boot - Angular - MySQL, hệ thống đã mang lại một giải pháp số hóa toàn diện, hiệu quả và có tính ứng dụng cao cho ngành y tế cơ sở.

Dự án không chỉ là một công trình học thuật chỉn chu về phân tích thiết kế hệ thống thông tin theo chuẩn UML mà còn là một sản phẩm thực tế có tiềm năng thương mại hóa và ứng dụng rộng rãi tại các phòng khám, trung tâm y tế tư nhân trên toàn quốc. Các nhà phát triển và đơn vị y tế quan tâm có thể tiếp cận, kế thừa kiến trúc này để tiếp tục tích hợp thêm các tiện ích y tế thông minh trong tương lai.