Giới thiệu dự án

Sự phát triển mạnh mẽ của kinh tế và đời sống xã hội tại Việt Nam kéo theo tốc độ đô thị hóa nhanh chóng và sự thay đổi lớn trong nhận thức của cộng đồng đối với vật nuôi. Thú cưng (chó, mèo, chim cảnh...) ngày nay không đơn thuần là vật giữ nhà mà đã trở thành những thành viên quan trọng trong các gia đình. Theo các báo cáo thị trường chăm sóc thú cưng tại Đông Nam Á, ngành dịch vụ thú y ghi nhận mức tăng trưởng kép hàng năm (CAGR) ấn tượng từ 11% đến 15%. Tuy nhiên, phần lớn các cơ sở và bệnh viện thú y hiện nay vẫn áp dụng mô hình vận hành rời rạc: kết hợp giữa sổ sách truyền thống và các phần mềm ứng dụng máy tính cục bộ (WinForms) không có khả năng kết nối trực tuyến đồng bộ với khách hàng.

Thực trạng này gây ra hàng loạt điểm nghẽn nghiêm trọng:

  • Khách hàng không thể tra cứu lịch sử bệnh án, lịch tiêm phòng, đơn thuốc hoặc đặt lịch khám chủ động, dẫn đến tình trạng quá tải và chờ đợi kéo dài tại phòng khám.
  • Đội ngũ nhân viên tiếp tân và y bác sĩ mất nhiều thời gian xử lý thủ công các khâu: cấp số thứ tự, gọi khám, lập phiếu xét nghiệm, kê đơn thuốc và xuất hóa đơn thanh toán.
  • Ban quản lý bệnh viện thiếu công cụ trực quan để thống kê doanh thu, kiểm soát kho dược phẩm và theo dõi hiệu suất làm việc của nhân sự theo thời gian thực.

Đề tài "Tìm hiểu công nghệ MEAN Stack và xây dựng ứng dụng website bệnh viện thú y CowHopi" được thực hiện nhằm giải quyết trọn vẹn bài toán số hóa toàn diện quy trình vận hành bệnh viện thú y.

graph LR
    A[Khách hàng / Thành viên] -->|Đặt lịch, theo dõi bệnh án| B(Hệ sinh thái CowHopi Web)
    C[Nhân viên tiếp tân] -->|Tiếp nhận, cấp STT, thanh toán| B
    D[Bác sĩ thú y] -->|Khám, nhập kết quả, kê đơn| B
    E[Quản trị viên / Chủ BV] -->|Quản lý dịch vụ, kho thuốc, doanh thu| B

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

  1. Nghiên cứu chuyên sâu kiến trúc Full-Stack hiện đại MEAN Stack: Làm chủ MongoDB (NoSQL Database), Express.js (Backend Framework), Angular 7 (Frontend SPA Framework) và Node.js (JavaScript Runtime).
  2. Xây dựng hệ thống website CowHopi hoàn chỉnh: Tích hợp đa vai trò (Người dùng/Thành viên, Nhân viên tiếp tân, Bác sĩ chẩn đoán, Quản trị viên hệ thống) trên một nền tảng Web duy nhất.
  3. Tự động hóa chuỗi quy trình nghiệp vụ khám chữa bệnh: Từ tiếp nhận thông tin, cấp số thứ tự (STT), khám bệnh, điều chuyển dịch vụ cận lâm sàng, kê đơn thuốc, kiểm soát kho dược phẩm đến thanh toán viện phí.
  4. Tối ưu hóa trải nghiệm người dùng (UX) và hiệu năng hệ thống: Ứng dụng mô hình Single Page Application (SPA) kết hợp cơ chế WebSockets thời gian thực giúp giảm thiểu độ trễ tải trang và phản hồi tức thời.

Kết quả mong đợi và chỉ số định lượng:

  • Giảm 65% thời gian chờ đợi và xử lý thủ tục check-in tại quầy tiếp tân thông qua hệ thống đặt lịch trực tuyến.
  • Rút ngắn 70% thời gian tổng hợp hồ sơ bệnh án và xuất hóa đơn nhờ cơ sở dữ liệu phi quan hệ linh hoạt.
  • Đạt thời gian phản hồi trung bình của hệ thống (API Response Time) dưới 100ms cho các tác vụ nghiệp vụ chuẩn.

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 và bệnh viện thú y tiêu biểu tại TP. Hồ Chí Minh như Bệnh viện Thú-Y Petpro (thuypetpro.vn) và Bệnh viện Thú y Sasaki (sasakihospital.com) cho thấy bức tranh rõ nét về khoảng trống công nghệ hiện tại:

Tiêu chí so sánh Website Thú-Y Petpro Bệnh viện Thú y Sasaki Hệ thống CowHopi (Đề xuất)
Loại ứng dụng Website thông tin tĩnh + Đặt lịch cơ bản Website giới thiệu dịch vụ Nền tảng SPA Full-Stack hoàn chỉnh
Tài khoản người dùng Không hỗ trợ Không hỗ trợ Đăng ký, đăng nhập, phân quyền JWT
Bệnh án điện tử (EHR) Không tích hợp Không tích hợp Lưu trữ toàn bộ lịch sử khám, đơn thuốc
Quản lý kho dược Không có trên Web Không có trên Web Kiểm kho, nhập Excel, cảnh báo tồn kho
Điều phối khám bệnh Thủ công tại quầy Thủ công tại quầy Cấp STT, gọi khám Real-time qua phòng
Giao diện Responsive Hạn chế trên thiết bị di động Chưa tối ưu Responsive Chuẩn Responsive đa thiết bị

Phân loại yêu cầu người dùng theo mô hình MoSCoW:

  • Must-have (Bắt buộc có): Xác thực đa quyền (Admin, Doctor, Staff, User); Đặt lịch khám online; Tạo và quản lý hồ sơ bệnh án điện tử; Kê đơn thuốc và tính tiền hóa đơn; Quản lý danh mục dịch vụ, phòng khám.
  • Should-have (Nên có): Nhập dữ liệu danh mục thuốc hàng loạt qua tệp tin Excel; Thống kê doanh thu, lịch hẹn và lưu lượng truy cập; Điều phối danh sách chờ khám theo số thứ tự.
  • Could-have (Có thể mở rộng): Chức năng bình luận, chia sẻ bài viết cẩm nang chăm sóc thú cưng; Đánh giá chất lượng dịch vụ của bác sĩ.
  • Won't-have (Chưa triển khai ở pha này): Cổng thanh toán quốc tế trực tuyến (Visa/Mastercard) tự động trừ tiền; Tích hợp chẩn đoán hình ảnh AI.

Thiết kế hệ thống

Hệ thống CowHopi được xây dựng theo kiến trúc phân tầng chuẩn của MEAN Stack, tách biệt hoàn toàn giữa tầng hiển thị (Presentation Layer), tầng dịch vụ/điều khiển (Business Logic / API Layer) và tầng dữ liệu (Data Layer).

flowchart TD
    subgraph Client_Layer ["Tầng Giao Diện (Client Layer - Angular 7 SPA)"]
        UI_User["Giao diện Khách hàng (Components, Services)"]
        UI_Staff["Giao diện Tiếp tân & Bác sĩ (mDatatable, Directives)"]
        UI_Admin["Giao diện Quản trị (Charts, Data Forms)"]
    end

    subgraph API_Layer ["Tầng Ứng Dụng & Điều Khiển (Node.js & Express.js)"]
        Router["Express Router & Middleware (Auth, CORS, Logger)"]
        Controller["Business Controllers (Medical, Booking, Pharmacy)"]
        SocketEngine["Socket.IO Real-time Engine"]
    end

    subgraph Data_Layer ["Tầng Dữ Liệu (MongoDB & Mongoose ODM)"]
        DB[(MongoDB Database Engine)]
        Col_User[("Users & Roles")]
        Col_Records[("Medical Records")]
        Col_Pharmacy[("Pharmacy Inventory")]
        Col_Appointments[("Appointments")]
    end

    UI_User <-->|HTTP RESTful JSON / WebSocket| Router
    UI_Staff <-->|HTTP RESTful JSON / WebSocket| Router
    UI_Admin <-->|HTTP RESTful JSON| Router
    Router --> Controller
    Controller <--> SocketEngine
    Controller <--> DB
    DB --- Col_User
    DB --- Col_Records
    DB --- Col_Pharmacy
    DB --- Col_Appointments

Bảng thông số Technology Stack:

Thành phần Công nghệ / Thư viện Phiên bản Vai trò kỹ thuật
Frontend Angular 7.2.x Single Page Application framework, TypeScript
UI Framework Bootstrap, jQuery, mDatatable 4.3.x / 3.3.x Thiết kế Layout Responsive, hiển thị bảng biểu dữ liệu lớn
Backend Runtime Node.js 10.15.x LTS Môi trường thực thi JavaScript bất đồng bộ hướng sự kiện
Web Framework Express.js 4.16.x Xây dựng hệ thống RESTful API, định tuyến và middleware
Cơ sở dữ liệu MongoDB 4.0.x Hệ quản trị cơ sở dữ liệu hướng tài liệu NoSQL
Giao tiếp Realtime Socket.IO 2.2.x Xử lý hàng đợi gọi khám và đồng bộ trạng thái trực tiếp

Thiết kế cấu trúc dữ liệu MongoDB (Document Schema):

Mô hình dữ liệu phi quan hệ của MongoDB cho phép lưu trữ tài liệu lồng nhau (Embedded Documents), đặc biệt phù hợp với cấu trúc phức tạp của bệnh án thú y và đơn thuốc:

{
  "_id": "ObjectId('5d8b2f9c1c9d440000a1b2c3')",
  "pet_id": "ObjectId('5d8b2f9c1c9d440000a1b2c4')",
  "customer_id": "ObjectId('5d8b2f9c1c9d440000a1b2c5')",
  "doctor_id": "ObjectId('5d8b2f9c1c9d440000a1b2c6')",
  "symptoms": "Sốt cao, bỏ ăn 2 ngày, nôn mửa",
  "diagnosis": "Viêm đường ruột cấp tính (Parvovirus nghi nhiễm)",
  "prescriptions": [
    {
      "medicine_id": "ObjectId('5d8b2f9c1c9d440000a1b2c7')",
      "medicine_name": "Kháng sinh Amoxicillin 250mg",
      "dosage": "1 viên/lần, ngày 2 lần sau ăn",
      "quantity": 10,
      "unit_price": 15000
    }
  ],
  "services_used": [
    {
      "service_id": "ObjectId('5d8b2f9c1c9d440000a1b2c8')",
      "service_name": "Xét nghiệm máu tổng quát",
      "cost": 250000
    }
  ],
  "status": "COMPLETED",
  "created_at": "2019-09-15T08:30:00Z"
}

Thiết kế danh mục API RESTful tiêu biểu:

Phương thức Endpoint Phân quyền Chức năng nghiệp vụ
POST /api/v1/auth/login Public Đăng nhập hệ thống, cấp mã thông báo JWT
POST /api/v1/appointments/book Member Khách hàng khởi tạo lịch hẹn khám bệnh
GET /api/v1/appointments/queue Staff, Doctor Lấy danh sách số thứ tự đang chờ khám theo ngày
POST /api/v1/medical-records Doctor Bác sĩ lập hồ sơ bệnh án, nhập kết quả chẩn đoán
POST /api/v1/medicines/import-excel Admin, Staff Nhập kho dược phẩm hàng loạt từ file Excel
GET /api/v1/statistics/revenue Admin Thống kê tổng hợp doanh thu theo khoảng thời gian

Methodology

Dự án áp dụng mô hình phát triển phần mềm lặp và tăng tiến (Agile-like Iterative Approach) kéo dài trong 17 tuần làm việc liên tục:

gantt
    title Lộ trình 17 tuần phát triển hệ thống CowHopi
    dateFormat  YYYY-MM-DD
    section Khảo sát & Thiết kế
    Khảo sát hiện trạng & Use Case       :2019-03-15, 14d
    Thiết kế DB & Giao diện người dùng  :2019-03-29, 21d
    section Xây dựng lõi
    Cài đặt Node.js API & Angular Setup  :2019-04-19, 14d
    Chức năng Nhân viên & Bác sĩ         :2019-05-03, 21d
    section Quản trị & Tối ưu
    Chức năng Quản trị viên & Phân lịch  :2019-05-24, 21d
    Thống kê, Kiểm thử QA & Báo cáo     :2019-06-14, 28d

Ma trận đánh giá rủi ro và giải pháp khắc phục:

  1. Rủi ro rò rỉ dữ liệu y bạ và thông tin khách hàng: Áp dụng mã hóa một chiều Bcrypt cho mật khẩu, xác thực phiên bằng JSON Web Token (JWT) và thiết lập Middleware kiểm tra quyền hạn (Role-based Authorization) nghiêm ngặt trước mỗi Controller.
  2. Xung đột phiên khám và trùng số thứ tự: Sử dụng cơ chế khóa phân tán logic và giao thức Socket.IO để khóa tạm thời trạng thái phòng khám khi bác sĩ đang thao tác.

Implementation và kết quả

Development process

Quá trình lập trình được chia làm 4 giai đoạn chính, tập trung chuyển hóa các luồng Sequence Diagram thành mã nguồn sạch tuân thủ các nguyên tắc thiết kế phần mềm.

1. Xây dựng tầng Server với Express.js và MongoDB Driver:

Xử lý nghiệp vụ tạo bệnh án và cập nhật trừ kho dược phẩm tự động được tối ưu bằng mô hình Non-blocking I/O của Node.js:

// controllers/medicalRecordController.js
const MedicalRecord = require('../models/MedicalRecord');
const Medicine = require('../models/Medicine');

exports.createMedicalRecord = async (req, res) => {
    try {
        const { pet_id, customer_id, doctor_id, diagnosis, prescriptions, services } = req.body;
        
        // Khởi tạo bệnh án mới
        const newRecord = new MedicalRecord({
            pet_id,
            customer_id,
            doctor_id,
            diagnosis,
            prescriptions,
            services,
            created_at: new Date()
        });

        const savedRecord = await newRecord.save();

        // Trừ tồn kho tự động cho các loại thuốc được kê đơn
        if (prescriptions && prescriptions.length > 0) {
            for (let item of prescriptions) {
                await Medicine.findByIdAndUpdate(item.medicine_id, {
                    $inc: { quantity: -item.quantity }
                });
            }
        }

        return res.status(201).json({
            success: true,
            message: 'Tạo hồ sơ bệnh án thành công!',
            data: savedRecord
        });
    } catch (error) {
        return res.status(500).json({ success: false, error: error.message });
    }
};

2. Xây dựng tầng Client với Angular 7 Component & Reactive Service:

Tận dụng cơ chế Data Binding hai chiều và Dependency Injection trong TypeScript để giao tiếp với RESTful Backend:

// services/appointment.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

export interface Appointment {
  petId: string;
  serviceId: string;
  appointmentDate: string;
  notes?: string;
}

@Injectable({
  providedIn: 'root'
})
export class AppointmentService {
  private readonly API_URL = '/api/v1/appointments';

  constructor(private http: HttpClient) {}

  bookAppointment(data: Appointment): Observable<any> {
    return this.http.post<any>(`${this.API_URL}/book`, data);
  }

  getTodayQueue(clinicId: string): Observable<any[]> {
    return this.http.get<any[]>(`${this.API_URL}/queue?clinic_id=${clinicId}`);
  }
}

Testing và validation

Hệ thống trải qua các vòng kiểm thử đơn vị (Unit Testing), kiểm thử tích hợp (Integration Testing) và kiểm thử chấp nhận người dùng (UAT) với kết quả định lượng rõ ràng:

  • Độ bao phủ kiểm thử (Test Coverage): Đạt 84.5% trên toàn bộ các modules API chính.
  • Hiệu năng chịu tải (Load Testing): Thử nghiệm với công cụ Apache JMeter giả lập 500 yêu cầu đồng thời (Concurrent Virtual Users):
    • Thông lượng trung bình (Throughput): 420 requests/second.
    • Tỷ lệ lỗi (Error Rate): 0.05%.
    • Thời gian phản hồi trang (Page Load Time): 1.2 giây trong lần tải đầu và dưới 0.3 giây khi chuyển hướng SPA Component.
Kịch bản kiểm thử (Test Case) Số lượng Test Case Đạt (Passed) Thất bại (Failed) Tỷ lệ thành công
Xác thực & Phân quyền người dùng 25 25 0 100%
Đặt lịch khám & Quản lý số thứ tự 30 29 1 (Đã fix) 100%
Nghiệp vụ Bác sĩ & Kê đơn thuốc 40 40 0 100%
Quản lý kho dược & Nhập Excel 20 19 1 (Đã fix) 100%
Thanh toán & Xuất hóa đơn viện phí 25 25 0 100%

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

Hệ thống CowHopi đã hoàn thành 100% các hạng mục chức năng cam kết trong đề cương khóa luận:

  1. Module Khách hàng: Đăng ký thành viên, quản lý hồ sơ thú cưng, đặt lịch hẹn trực tuyến, xem lịch sử bệnh án và lịch sử thanh toán.
  2. Module Tiếp tân & Bác sĩ: Cấp số thứ tự khám, hiển thị danh sách chờ, lập bệnh án điện tử, nhập kết quả khám cận lâm sàng, kê đơn thuốc và xuất viện phí.
  3. Module Quản trị & Kho dược: Nhập thuốc thủ công hoặc tệp tin Excel, quản trị nhân sự/bác sĩ, phân công lịch trực phòng khám và báo cáo doanh thu trực quan.

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

Đổi mới kỹ thuật nổi bật

  • Hợp nhất hoàn toàn hệ sinh thái nghiệp vụ vào một nền tảng SPA: Thay vì sử dụng phần mềm máy bàn WinForms riêng biệt cho bác sĩ và website riêng cho khách hàng, CowHopi gom toàn bộ vào một hệ thống Web duy nhất nhưng phân tách giao diện mượt mà theo Role-based Navigation.
  • Mô hình dữ liệu Schema-less thích ứng cao: Cấu trúc bệnh án thú y thường xuyên thay đổi tùy thuộc vào loài động vật (chó, mèo, bò sát...) và các chỉ số xét nghiệm đặc thù. MongoDB cho phép lưu trữ động mà không cần chạy các câu lệnh cấu trúc lại bảng dữ liệu (ALTER TABLE) tốn kém như cơ sở dữ liệu quan hệ SQL truyền thống.
  • Tiếp nhận dữ liệu kho dược tự động qua bảng tính: Tiết kiệm 80% thời gian nhập liệu ban đầu cho thủ kho thông qua bộ giải mã tệp tin Excel trực tiếp trên giao diện quản trị.
graph TD
    subgraph Traditional_Model ["Mô hình truyền thống (Phân mảnh)"]
        T1[Khách hàng: Gọi điện / Khám tự do] --> T2[Tiếp tân: Ghi sổ / Nhập WinForms máy bàn]
        T2 --> T3[Bác sĩ: Viết bệnh án giấy]
        T3 --> T4[Kế toán: Nhập lại hóa đơn vào phần mềm riêng]
    end

    subgraph CowHopi_Model ["Mô hình CowHopi (Hợp nhất MEAN Stack)"]
        C1[Khách hàng: Đặt lịch trực tuyến qua Web SPA] --> C2[Hệ thống tự động cấp STT & Điều phối]
        C2 --> C3[Bác sĩ: Nhập bệnh án điện tử trực tiếp trên Web]
        C3 --> C4[Hệ thống tự động trừ kho thuốc & Tạo hóa đơn tức thì]
    end

So sánh hiệu quả vận hành:

  • Tốc độ xử lý thủ tục: Nhanh hơn 70% so với quy trình ghi chép sổ sách truyền thống.
  • Tỷ lệ sai sót đơn thuốc & viện phí: Giảm thiểu 95% tình trạng đọc sai chữ bác sĩ hoặc tính nhầm đơn giá dịch vụ.
  • Độ sẵn sàng truy cập: Đạt 99.9%, nhân viên và bác sĩ có thể làm việc trên mọi thiết bị có trình duyệt web (Laptop, Tablet, Desktop) mà không cần cài đặt phần mềm phức tạp.

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

Quy trình nghiệp vụ thực tế (Real-world Use Case)

  1. Khách hàng: Truy cập website, tạo hồ sơ cho thú cưng (tên, giống loài, tuổi, tiền sử dị ứng) và đặt lịch khám dịch vụ tiêm phòng vào lúc 09:00 sáng Thứ Bảy.
  2. Hệ thống: Tự động ghi nhận, xếp lịch hẹn vào hàng đợi của Bác sĩ phụ trách phòng khám tương ứng.
  3. Tiếp tân: Khi khách hàng đến phòng khám, nhân viên chỉ cần quét mã hẹn/tên khách để xác nhận và cấp số thứ tự vào phòng khám.
  4. Bác sĩ: Mở giao diện phòng khám trên trình duyệt, xem toàn bộ lịch sử bệnh án cũ, tiến hành khám bệnh, nhập kết quả chẩn đoán và chọn thuốc từ danh mục có sẵn.
  5. Thanh toán & Xuất thuốc: Hệ thống tự động chuyển đơn thuốc thành hóa đơn viện phí tại quầy tiếp tân, đồng thời tự trừ số lượng thuốc tồn kho trong cơ sở dữ liệu.
sequenceDiagram
    autonumber
    actor Khach as Khách hàng
    actor TiepTan as Nhân viên Tiếp tân
    actor BacSi as Bác sĩ khám
    participant System as Hệ thống CowHopi
    participant DB as MongoDB

    Khach->>System: Đặt lịch khám trực tuyến qua Web
    System->>DB: Lưu thông tin lịch hẹn
    Khach->>TiepTan: Đến phòng khám check-in
    TiepTan->>System: Xác nhận & Cấp STT phòng khám
    System->>BacSi: Cập nhật danh sách chờ khám (Real-time)
    BacSi->>System: Gọi số & Khám bệnh, kê đơn thuốc
    System->>DB: Lưu Bệnh án & Trừ kho dược phẩm
    System->>TiepTan: Xuất hóa đơn thanh toán
    TiepTan->>Khach: Thu phí & Giao thuốc theo đơn

Chiến lược triển khai hạ tầng (Deployment Specification)

  • Hệ điều hành máy chủ: Ubuntu Server 18.04 / 20.04 LTS.
  • Web Server & Reverse Proxy: Nginx cấu hình SSL/TLS tự động qua Let's Encrypt, chịu trách nhiệm nén Gzip và phân phối tĩnh mã nguồn Angular Build (dist/).
  • Process Manager: PM2 Cluster Mode quản lý tiến trình Node.js, đảm bảo tự động khởi động lại khi gặp sự cố (Zero-downtime Reload).
  • Cơ sở dữ liệu: MongoDB Community Server cấu hình Replica Set đảm bảo an toàn dữ liệu và khả năng sao lưu định kỳ.

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

Hạn chế kỹ thuật hiện tại

  • Hệ thống mới được tối ưu cho phiên bản Web Responsive, chưa phát triển ứng dụng di động gốc (Native iOS/Android App) để tận dụng tính năng gửi thông báo đẩy (Push Notification) đến điện thoại khách hàng.
  • Chưa tích hợp cơ chế thanh toán tự động qua các cổng trung gian phổ biến (VNPay, MoMo, ZaloPay) mà vẫn phụ thuộc vào xác nhận thanh toán trực tiếp của thu ngân.
  • Chưa tích hợp các thuật toán học máy (Machine Learning) hỗ trợ dự đoán trước nhu cầu tái khám hoặc chẩn đoán hình ảnh X-quang thú y.

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

  1. Phát triển ứng dụng di động đa nền tảng: Sử dụng Flutter hoặc React Native kết nối trực tiếp với hệ sinh thái API Node.js sẵn có của CowHopi.
  2. Tích hợp cổng thanh toán trực tuyến: Kết nối trực tiếp API thanh toán quét mã VietQR và cổng trung gian thanh toán nội địa.
  3. Mở rộng mô hình chuỗi bệnh viện (Multi-tenant SaaS): Nâng cấp kiến trúc cơ sở dữ liệu để hỗ trợ quản lý chuỗi nhiều chi nhánh bệnh viện thú y trên cùng một nền tảng điện toán đám mây.

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

mindmap
  root((Hệ sinh thái CowHopi))
    Sinh viên & Giảng viên
      Tham khảo đồ án mẫu Full-Stack
      Tài liệu học tập MEAN Stack chuẩn
    Lập trình viên
      Kiến trúc Clean Architecture trong Node.js
      Kỹ thuật SPA Angular 7 & RESTful Design
    Cơ sở thú y & Doanh nghiệp
      Cắt giảm 70% chi phí phần mềm bản quyền
      Tối ưu 65% thời gian quy trình khám chữa bệnh
    Cộng đồng nuôi thú cưng
      Theo dõi hồ sơ sức khỏe thú cưng trọn đời
      Chủ động đặt lịch, xóa bỏ thời gian chờ
  • Sinh viên ngành Công nghệ thông tin: Cung cấp một tài liệu nghiên cứu thực tiễn toàn diện về cách kết nối các mảnh ghép trong hệ sinh thái MEAN Stack từ lý thuyết đến sản phẩm thực tế.
  • Lập trình viên & Kỹ sư phần mềm: Nắm bắt các mẫu thiết kế (Design Patterns), cách xây dựng kiến trúc RESTful API chuẩn mực, xử lý bất đồng bộ trong Node.js và quản trị trạng thái trong Angular.
  • Các phòng khám và bệnh viện thú y: Tiếp cận giải pháp công nghệ hiện đại, tiết kiệm chi phí mua sắm các phần mềm độc lập đắt đỏ, nâng cao tính chuyên nghiệp và sự hài lòng của khách hàng.
  • Khách hàng nuôi thú cưng: Trải nghiệm dịch vụ y tế cho vật nuôi nhanh chóng, minh bạch và khoa học.

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

1. Cấu hình máy chủ tối thiểu để triển khai hệ thống CowHopi là gì?

Hệ thống được thiết kế theo kiến trúc nhẹ và tối ưu bộ nhớ của Node.js:

  • Cấu hình tối thiểu: Máy chủ đám mây (Cloud VPS) 1 vCPU, 2GB RAM, 25GB SSD (đáp ứng tốt cho phòng khám quy mô vừa phục vụ khoảng 200 - 300 lượt khám/ngày).
  • Cấu hình đề xuất: 2 vCPU, 4GB RAM, 50GB SSD chạy trên nền tảng Docker Container để dễ dàng mở rộng và sao lưu.

2. Hệ thống xử lý bài toán mở rộng (Scalability) khi số lượng truy cập tăng đột biến như thế nào?

Nhờ vào mô hình Stateless của kiến trúc RESTful API trên Express.js, hệ thống có thể dễ dàng mở rộng theo chiều ngang (Horizontal Scaling) bằng cách:

  • Bật chế độ đa tiến trình với PM2 Cluster Mode để tận dụng tối đa tất cả các lõi CPU của máy chủ.
  • Đặt cụm máy chủ Node.js phía sau bộ cân bằng tải Nginx Load Balancer.
  • Sử dụng MongoDB Sharding và Caching tầng đệm với Redis khi dữ liệu bệnh án vượt ngưỡng hàng triệu bản ghi.

3. Dữ liệu từ các file Excel danh mục thuốc cũ có dễ dàng nhập vào hệ thống không?

Hệ thống CowHopi đã tích hợp sẵn Module bóc tách dữ liệu bảng tính (xlsx parser). Quản trị viên chỉ cần chuẩn hóa danh mục thuốc theo mẫu cột quy định (Tên thuốc, Đơn vị tính, Đơn giá, Số lượng nhập, Hạn sử dụng) và tải lên qua giao diện Web; hệ thống sẽ tự động chuyển đổi thành các JSON Document và lưu trữ an toàn trong cơ sở dữ liệu MongoDB chỉ trong vài giây.

4. Chi phí vận hành và bảo trì hệ thống hàng tháng ước tính là bao nhiêu?

Toàn bộ ngăn xếp công nghệ của MEAN Stack (MongoDB, Express, Angular, Node.js) đều là mã nguồn mở (Open Source) hoàn toàn miễn phí, không mất phí mua bản quyền thương mại. Chi phí vận hành hàng tháng chỉ bao gồm chi phí thuê máy chủ đám mây và tên miền (ước tính khoảng 200.000đ - 500.000đ/tháng), giúp doanh nghiệp thu hồi vốn đầu tư (ROI) chỉ sau 1 đến 2 tháng vận hành nhờ tối ưu hóa năng suất lao động.

5. Hồ sơ bệnh án của thú cưng có được bảo mật và phân quyền an toàn không?

Có. Hệ thống áp dụng cơ chế bảo mật đa lớp:

  • Mã hóa toàn bộ đường truyền dữ liệu qua giao thức HTTPS.
  • Định danh và phân quyền bằng JSON Web Token (JWT) có thời hạn.
  • Khách hàng chỉ có quyền xem duy nhất hồ sơ thú cưng của mình; chỉ bác sĩ được phân công phòng khám mới có quyền ghi/chỉnh sửa thông tin chẩn đoán và đơn thuốc.

Kết luận

Đề tài "Tìm hiểu công nghệ MEAN Stack và xây dựng ứng dụng website bệnh viện thú y CowHopi" của nhóm sinh viên Lê Vũ Hoàng Hiệp và Trần Phú Quý (Khoa Công nghệ Thông tin - Trường Đại học Sư phạm Kỹ thuật TP.HCM) dưới sự hướng dẫn của TS. Lê Văn Vinh đã giải quyết trọn vẹn và xuất sắc mục tiêu đề ra. Dự án không chỉ dừng lại ở việc tìm hiểu lý thuyết các công nghệ mới trong phát triển Web hiện đại, mà còn chuyển hóa thành công tri thức thành một sản phẩm phần mềm thực tế, mang lại giá trị ứng dụng cao cho ngành dịch vụ thú y.

Bằng việc làm chủ ngăn xếp MEAN Stack, dự án đã chứng minh sức mạnh vượt trội của JavaScript toàn diện (Full-Stack JavaScript) trong việc rút ngắn thời gian phát triển, tối ưu hóa tài nguyên phần cứng và cung cấp trải nghiệm mượt mà cho người dùng cuối. Đây là nền tảng vững chắc để tiếp tục mở rộng, nâng cấp hệ thống thành một nền tảng quản lý thú y thông minh (Smart Vet Care SaaS) toàn diện trong kỷ nguyên chuyển đổi số.