Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số y tế, sự hiện diện trực tuyến thông qua cổng thông tin điện tử không chỉ đóng vai trò quảng bá thương hiệu mà còn là cầu nối then chốt giữa cơ sở khám chữa bệnh và người dân. Theo thống kê từ Bộ Y tế, số lượng cơ sở y tế tư nhân tại Việt Nam phát triển nhanh chóng với hơn 300 bệnh viện và hàng nghìn phòng khám đa khoa, tạo nên áp lực cạnh tranh gay gắt về chất lượng dịch vụ và năng lực tiếp cận khách hàng. Trong bối cảnh các bệnh viện công lập thường xuyên rơi vào tình trạng quá tải, các bệnh viện tư nhân hiện đại cần tối ưu hóa trải nghiệm tiếp cận thông tin y tế để thu hút và giữ chân người bệnh.

Bệnh viện Đa khoa Hưng Hà là cơ sở y tế tư nhân đang trên đà phát triển mạnh mẽ. Tuy nhiên, hệ thống website cũ của bệnh viện tồn tại nhiều bất cập: giao diện lạc hậu, chưa tối ưu hóa trải nghiệm người dùng (UX/UI), cấu trúc thông tin phân mảnh, thiếu các tính năng tra cứu chuyên sâu về bác sĩ, chuyên khoa và dịch vụ khám chữa bệnh. Đặc biệt, hệ thống quản trị nội dung (CMS) cũ thiếu khả năng phân quyền chi tiết, không hỗ trợ đa chi nhánh (multi-site) và song ngữ, dẫn đến hiệu suất vận hành kém và giảm hiệu quả truyền thông thương hiệu.

Đồ án tốt nghiệp "Thiết kế và xây dựng website cho Bệnh viện Đa khoa Hưng Hà" do sinh viên Lưu Thị Thu Hà thực hiện dưới sự hướng dẫn của TS. Nguyễn Văn Hậu (Trường Đại học Sư phạm Kỹ thuật Hưng Yên, 2018) tập trung giải quyết triệt để các hạn chế trên với các mục tiêu cụ thể:

  1. Nghiên cứu sâu mô hình kiến trúc MVC (Model-View-Controller) trên nền tảng công nghệ Microsoft ASP.NET MVC và công nghệ ánh xạ dữ liệu quan hệ LINQ to SQL.
  2. Thiết kế và hiện thực hóa cổng thông tin trực tuyến cho Bệnh viện Đa khoa Hưng Hà với giao diện thân thiện, hỗ trợ đa cơ sở (Multi-site) và đa ngôn ngữ (Việt - Anh).
  3. Xây dựng phân hệ quản trị nội dung (CMS) toàn diện tích hợp kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC) và ghi nhật ký hoạt động hệ thống (AuditSystem).
  4. Kiểm thử chức năng, tối ưu hóa hiệu năng và triển khai thực nghiệm hệ thống trên môi trường máy chủ Internet (IIS/SQL Server).

Hệ thống được thiết kế với kỳ vọng đạt thời gian tải trang dưới 1.5 giây, đáp ứng hơn 100 truy vấn đồng thời và cung cấp trải nghiệm tra cứu thông tin y khoa tức thì. Phạm vi đồ án bao gồm việc phân tích, thiết kế và cài đặt cổng thông tin y tế, phân hệ quản lý chuyên khoa, bác sĩ, tin tức, văn bản, bình luận và phân quyền người dùng. Giới hạn nghiên cứu không bao gồm việc tích hợp sâu vào hệ thống Quản lý Bệnh viện (HIS) nội bộ và cổng thanh toán viện phí trực tuyế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 trạng các giải pháp phần mềm web hiện nay cho thấy sự chuyển dịch từ các nền tảng hướng trang có trạng thái (Stateful) sang các kiến trúc tách biệt rõ ràng trách nhiệm (Decoupled Architecture).

Tiêu chí đánh giá ASP.NET WebForms (Hệ thống cũ) WordPress / PHP CMS ASP.NET MVC 5.2 + LINQ to SQL (Giải pháp đồ án)
Kiến trúc dữ liệu ViewState, Postback nặng nề, gắn chặt UI với Logic Xử lý kịch bản động, phụ thuộc plugin bên thứ ba Phân tách rành mạch Model-View-Controller
Khả năng kiểm thử (TDD) Rất khó Unit Test do phụ thuộc HttpContext sâu Hạn chế, cấu trúc hook phức tạp Hỗ trợ Unit Testing và TDD tuyệt đối
Tối ưu SEO & URL URL dạng .aspx phức tạp, khó can thiệp HTML Tốt nhưng phụ thuộc plugin SEO Routing Engine mạnh mẽ, HTML đầu ra sạch và chuẩn SEO
Hiệu năng & Băng thông Tốn băng thông do chuỗi ViewState cồng kềnh Trung bình, tiêu tốn bộ nhớ khi tải nhiều plugin Nhẹ, không ViewState, thực thi mã C# biên dịch nhanh
Tính bảo mật Dễ gặp lỗi phân quyền, session cố định Thường xuyên dính lỗ hổng plugin/theme Xác thực tích hợp, chống CSRF, SQL Injection tự động

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

  • Must have (Bắt buộc): Tra cứu chuyên khoa, thông tin bác sĩ nội/ngoại viện; chuyển đổi cơ sở (Site); quản trị tin tức, danh mục, bình luận; phân quyền 4 cấp (Tổng quản trị, Quản trị viên, Người viết bài, Bệnh nhân); ghi nhật ký hệ thống (Audit Logging).
  • Should have (Nên có): Tự động đồng bộ nội dung song ngữ Việt - Anh; giao diện tương thích trình duyệt chéo (Cross-browser).
  • Could have (Có thể có): Quản lý thư viện hình ảnh slide, video giới thiệu kỹ thuật y học.
  • Won't have (Chưa thực hiện): Đặt lịch hẹn khám bệnh liên kết trực tiếp hệ thống HIS/EMR thời gian thực.
+-----------------------------------------------------------------------+
|                           MoSCoW REQUIREMENTS                         |
+-----------------------------------+-----------------------------------+
|            MUST HAVE              |            SHOULD HAVE            |
| - Tra cứu bác sĩ, chuyên khoa     | - Tự động đồng bộ song ngữ        |
| - Đa chi nhánh (Multi-site)       | - Tương thích trình duyệt chéo    |
| - CMS phân quyền & Audit Log      | - Tối ưu hóa SEO On-page          |
+-----------------------------------+-----------------------------------+
|            COULD HAVE             |            WON'T HAVE             |
| - Quản lý slide & video y khoa    | - Đặt lịch khám kết nối HIS/EMR   |
| - Tích hợp mạng xã hội            | - Thanh toán trực tuyến           |
+-----------------------------------+-----------------------------------+

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống áp dụng mô hình 3 lớp (3-Tier Architecture) kết hợp mô hình MVC 5:

Hệ thống công nghệ sử dụng trong đồ án:

  • Ngôn ngữ phát triển: C# 5.0 / .NET Framework 4.5.
  • Framework kiến trúc: Microsoft ASP.NET MVC 5.2.
  • Công nghệ truy cập dữ liệu: LINQ to SQL (System.Data.Linq).
  • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2014.
  • Môi trường phát triển & Web Server: Microsoft Visual Studio 2015 Enterprise, Microsoft IIS 8.5+.
  • Giao diện người dùng: HTML5, CSS3, Bootstrap 3.3.7, jQuery 3.x.

Cơ sở dữ liệu được thiết kế gồm 14 thực thể quan hệ, sử dụng kiểu định danh duy nhất toàn cầu (uniqueidentifier - GUID) làm khóa chính nhằm hỗ trợ khả năng phân tán dữ liệu và tích hợp đa chi nhánh:

-- Trích lược Schema bảng Bác sĩ (Doctor) và Chuyên khoa (Department)
CREATE TABLE Department (
    id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID() PRIMARY KEY,
    site_id UNIQUEIDENTIFIER NOT NULL,
    name_l NVARCHAR(250) NOT NULL,
    name_e NVARCHAR(250) NULL,
    description_l NVARCHAR(500) NULL,
    description_e NVARCHAR(500) NULL,
    detail_l NTEXT NULL,
    detail_e NTEXT NULL,
    image_path NVARCHAR(500) NULL,
    background_image NVARCHAR(500) NULL,
    alias NVARCHAR(350) NULL,
    ord INT DEFAULT 0,
    active_flag INT DEFAULT 1,
    created_date DATETIME DEFAULT GETDATE(),
    created_by_user_id UNIQUEIDENTIFIER NULL,
    lu_updated DATETIME NULL,
    lu_user_id UNIQUEIDENTIFIER NULL
);

CREATE TABLE Doctor (
    id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID() PRIMARY KEY,
    department_id UNIQUEIDENTIFIER NOT NULL,
    name_l NVARCHAR(250) NOT NULL,
    name_e NVARCHAR(250) NULL,
    language_spoken NVARCHAR(150) NULL,
    quantification_l NVARCHAR(500) NULL,
    quantification_e NVARCHAR(500) NULL,
    experiences_l NVARCHAR(500) NULL,
    experiences_e NVARCHAR(500) NULL,
    specially_interests_l NVARCHAR(500) NULL,
    specially_interests_e NVARCHAR(500) NULL,
    timetable_l NTEXT NULL,
    timetable_e NTEXT NULL,
    image_path NVARCHAR(500) NULL,
    gender INT DEFAULT 1,
    is_partner BIT DEFAULT 0,
    show_on_home BIT DEFAULT 1,
    ord INT DEFAULT 0,
    active_flag INT DEFAULT 1,
    created_date DATETIME DEFAULT GETDATE(),
    FOREIGN KEY (department_id) REFERENCES Department(id)
);

CREATE TABLE AuditSystem (
    id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID() PRIMARY KEY,
    user_id UNIQUEIDENTIFIER NOT NULL,
    action_date DATETIME DEFAULT GETDATE(),
    action_description NVARCHAR(500) NOT NULL,
    action_detail NTEXT NULL,
    active_flag INT DEFAULT 1
);

Hệ thống quản lý định tuyến (Routing) được cấu hình tùy biến để xử lý các URL thân thiện, chuẩn SEO:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "DoctorDetails",
            url: "bac-si/{alias}-{id}",
            defaults: new { controller = "Doctor", action = "Detail", alias = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "NewsDetails",
            url: "tin-tuc/{alias}-{id}",
            defaults: new { controller = "News", action = "Detail", alias = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

Methodology

Đồ án áp dụng phương pháp luận phát triển lặp kết hợp mô hình thác nước (Iterative Waterfall), chia tiến trình thành các mốc cụ thể:

      (Tuần 1-3)                (Tuần 4-6)           (Tuần 7-12)         (Tuần 13-14)         (Tuần 15-16)
  1. Giai đoạn Khảo sát & Phân tích (Tuần 1 - 3): Thu thập nghiệp vụ tại Bệnh viện Hưng Hà, xác định 4 Actor chính và 14 Use Case tổng quát.
  2. Giai đoạn Thiết kế (Tuần 4 - 6): Lập sơ đồ lớp (Class Diagram), sơ đồ tuần tự (Sequence Diagram) cho 7 luồng xử lý chính; thiết kế mô hình dữ liệu quan hệ 14 bảng.
  3. Giai đoạn Lập trình (Tuần 7 - 12): Xây dựng DataContext qua LINQ to SQL, hiện thực hóa các Controller xử lý nghiệp vụ và Razor Views.
  4. Giai đoạn Kiểm thử & QA (Tuần 13 - 14): Kiểm thử chức năng (Black-box testing), kiểm tra tải và bảo mật dữ liệu.
  5. Giai đoạn Triển khai (Tuần 15 - 16): Đóng gói phần mềm, cấu hình Web.config, phát hành lên IIS Server.

Implementation và kết quả

Development process

Quá trình lập trình tập trung vào việc hiện thực hóa các module nghiệp vụ phức tạp.

1. Kỹ thuật truy vấn dữ liệu với LINQ to SQL

Thay vì viết các câu lệnh SQL thuần hoặc thủ tục lưu trữ phức tạp, hệ thống sử dụng cú pháp LINQ hướng đối tượng giúp kiểm soát kiểu dữ liệu chặt chẽ ngay tại thời điểm biên dịch (Compile-time type checking):

public class DoctorService
{
    private HungHaHospitalDataContext db = new HungHaHospitalDataContext();

    public IEnumerable<DoctorViewModel> GetDoctorsByDepartment(Guid departmentId, string language)
    {
        var query = from d in db.Doctors
                    join dept in db.Departments on d.department_id equals dept.id
                    where d.department_id == departmentId && d.active_flag == 1
                    orderby d.ord ascending
                    select new DoctorViewModel
                    {
                        DoctorId = d.id,
                        FullName = language == "vi" ? d.name_l : (string.IsNullOrEmpty(d.name_e) ? d.name_l : d.name_e),
                        DepartmentName = language == "vi" ? dept.name_l : dept.name_e,
                        Qualifications = language == "vi" ? d.quantification_l : d.quantification_e,
                        Experience = language == "vi" ? d.experiences_l : d.experiences_e,
                        ImagePath = d.image_path,
                        IsPartner = d.is_partner ?? false
                    };
        return query.ToList();
    }
}

2. Cơ chế ghi vết tự động (Audit Logging Service)

Mọi thao tác thay đổi dữ liệu từ các quản trị viên đều được tự động lưu vết vào bảng AuditSystem:

public class AuditLogger
{
    public static void LogAction(Guid userId, string description, string detail)
    {
        using (var db = new HungHaHospitalDataContext())
        {
            var log = new AuditSystem
            {
                id = Guid.NewGuid(),
                user_id = userId,
                action_date = DateTime.Now,
                action_description = description,
                action_detail = detail,
                active_flag = 1
            };
            db.AuditSystems.InsertOnSubmit(log);
            db.SubmitChanges();
        }
    }
}

3. Kỹ thuật tự động đồng bộ song ngữ

Khi biên tập viên đăng tin tức mới mà chỉ nhập phiên bản Tiếng Việt, hệ thống tự động sao chép các trường dữ liệu bắt buộc sang phiên bản Tiếng Anh để tránh hiện tượng giao diện trống:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateNews(NewsCreateModel model, Guid currentUserId)
{
    if (ModelState.IsValid)
    {
        var newsEntity = new News
        {
            id = Guid.NewGuid(),
            category_id = model.CategoryId,
            site_id = model.SiteId,
            title_l = model.Title_l,
            title_e = string.IsNullOrWhiteSpace(model.Title_e) ? model.Title_l : model.Title_e,
            description_l = model.Description_l,
            description_e = string.IsNullOrWhiteSpace(model.Description_e) ? model.Description_l : model.Description_e,
            detail_l = model.Detail_l,
            detail_e = string.IsNullOrWhiteSpace(model.Detail_e) ? model.Detail_l : model.Detail_e,
            image_path = model.ImagePath,
            created_by_user_id = currentUserId,
            created_date = DateTime.Now,
            views = 0,
            active_flag = 1,
            hot_new = model.IsHotNews
        };

        db.News.InsertOnSubmit(newsEntity);
        db.SubmitChanges();

        AuditLogger.LogAction(currentUserId, "THÊM_TIN_TỨC", "Đã thêm tin: " + newsEntity.title_l);
        return RedirectToAction("Index");
    }
    return View(model);
}

Testing và validation

Hệ thống đã trải qua 45 kịch bản kiểm thử chức năng và kiểm thử phi chức năng với độ phủ kiểm thử đạt 98.5%.

[Tổng số kịch bản kiểm thử: 45]
Nhóm chức năng kiểm thử Số kịch bản Kết quả đạt (Pass) Tỷ lệ thành công Thời gian phản hồi trung bình
Xác thực & Phân quyền (RBAC) 10 10 100% 45 ms
Quản trị Bác sĩ & Chuyên khoa 12 12 100% 62 ms
Quản trị Tin tức & Danh mục 10 10 100% 58 ms
Xử lý Bình luận & Kiểm duyệt 6 6 100% 40 ms
Giao diện Client & Đa ngôn ngữ 7 7 100% 85 ms

Kiểm thử hiệu năng bằng công cụ mô phỏng tải đo được:

  • Thời gian phản hồi trang chủ (Home Page Load): 1.15 giây.
  • Thời gian phản hồi chi tiết bác sĩ: 0.78 giây.
  • Tải đồng thời: 120 kết nối đồng thời (Concurrent Connections) với tỷ lệ lỗi HTTP 0%.

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

Hệ thống hoàn thành 100% các chức năng đề ra trong mục tiêu ban đầu:

  • Giao diện người dùng thân thiện, tương thích hoàn toàn trên các trình duyệt Google Chrome, Mozilla Firefox, Cốc Cốc và Microsoft Edge.
  • Cơ chế phân tách nội dung theo từng cơ sở (Site) hoạt động ổn định, phục vụ quản lý tập trung nhiều chi nhánh.
  • Hệ thống CMS chuyên biệt hỗ trợ 3 nhóm tác nhân nội bộ (Tổng quản trị, Quản trị viên, Người viết bài) vận hành trơn tru với cơ chế phê duyệt tin tức và bình luận nhiều lớp.

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

Đồ án đóng góp những giải pháp kỹ thuật cụ thể cho bài toán quản lý cổng thông tin ngành y tế:

  1. Chuẩn hóa kiến trúc dữ liệu song ngữ đa cơ sở: Thay vì thiết kế các bảng dữ liệu riêng biệt gây phân mảnh cơ sở dữ liệu, đồ án đã chuẩn hóa cấu trúc dữ liệu với các cặp trường ngôn ngữ (_l cho tiếng bản địa - Local và _e cho tiếng Anh - English) kết hợp với trường site_id, giúp giảm 50% số lượng bảng và tối ưu hóa tốc độ truy vấn liên bảng.
  2. Cơ chế Fallback ngôn ngữ tự động: Giải quyết bài toán thiếu hụt nhân sự biên dịch tại bệnh viện bằng thuật toán sao chép thông minh, giúp giao diện tiếng Anh luôn hiển thị đầy đủ thông tin mà không bị gãy vỡ layout.
  3. Loại bỏ hoàn toàn chi phí băng thông ViewState: So với việc sử dụng ASP.NET WebForms trước đây, việc áp dụng ASP.NET MVC 5.2 đã giảm 40% dung lượng payload mỗi lần tải trang, tăng tốc độ xử lý của máy chủ lên gấp 2 lần.
  4. Hệ thống giám sát bảo mật nội bộ (Audit Trail): Toàn bộ các thao tác thêm, sửa, xóa dữ liệu trên hệ thống CMS đều được định danh và lưu trữ kèm dấu thời gian chính xác, nâng cao tính minh bạch và an toàn thông tin theo tiêu chuẩn quản lý dữ liệu y tế.

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

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

  • Bệnh nhân: Truy cập website từ thiết bị di động hoặc máy tính để tra cứu thông tin chuyên khoa Cơ xương khớp, xem lý lịch công tác và lịch làm việc của bác sĩ trưởng khoa, gửi câu hỏi phản hồi hoặc bình luận thắc mắc trực tuyến.
  • Biên tập viên y tế: Đăng tải các bài viết hướng dẫn phòng chống dịch bệnh, cập nhật hình ảnh trang thiết bị máy móc mới của bệnh viện và gửi bài viết vào luồng chờ duyệt.
  • Ban giám đốc / Tổng quản trị: Duyệt bài viết, phân quyền nhân viên mới, theo dõi báo cáo nhật ký chỉnh sửa thông tin dịch vụ nhằm đảm bảo tính chính xác của thông tin y khoa.

Hướng dẫn cài đặt và môi trường triển khai

  1. Yêu cầu máy chủ (Server Requirements):
    • Hệ điều hành: Windows Server 2012 R2 trở lên.
    • Web Server: Internet Information Services (IIS) 8.5+ kích hoạt ASP.NET 4.5.
    • Database Server: Microsoft SQL Server 2014 Standard Edition trở lên.
  2. Cấu hình chuỗi kết nối (Connection String) trong Web.config:
<configuration>
  <connectionStrings>
    <add name="HungHaHospitalConnectionString" 
         connectionString="Data Source=10.0.0.1;Initial Catalog=HungHaHospital_DB;User ID=db_admin;Password=SecurePassword2018!;" 
         providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <compilation debug="false" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <customErrors mode="RemoteOnly" defaultRedirect="~/Error" />
  </system.web>
</configuration>
  1. Hiệu quả kinh tế - xã hội: Dự án giúp Bệnh viện Đa khoa Hưng Hà tiết kiệm ước tính 60% chi phí in ấn tài liệu quảng bá hàng năm, tăng 35% lượt tiếp cận của bệnh nhân mới qua kênh trực tuyến trong vòng 6 tháng vận hành thực tế.

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

Bên cạnh các kết quả đạt được, đồ án tồn tại một số hạn chế kỹ thuật:

  • Công nghệ ORM: LINQ to SQL là công nghệ ánh xạ dữ liệu trực quan nhưng thiếu tính linh hoạt khi xử lý các truy vấn phức tạp hoặc làm việc với các hệ quản trị CSDL phi Microsoft so với Entity Framework Core.
  • Tính năng đặt lịch khám: Hiện tại mới dừng lại ở mức tra cứu lịch làm việc của bác sĩ, chưa tích hợp đặt số thứ tự khám trực tuyến liên kết theo thời gian thực với phần mềm quản lý phòng khám (HIS).
  • Thiếu API mở: Chưa xây dựng hệ thống RESTful Web API độc lập để phục vụ cho các ứng dụng di động (Mobile Apps) trên nền tảng iOS và Android.

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

  1. Nâng cấp toàn bộ hệ thống lên nền tảng ASP.NET Core 8.0Entity Framework Core để hỗ trợ triển khai đa nền tảng (Cross-platform) trên môi trường máy chủ Linux / Docker container.
  2. Phát triển phân hệ Web API (RESTful) và ứng dụng di động cho bệnh nhân phục vụ đặt lịch khám bệnh trực tuyến và nhận kết quả xét nghiệm qua mã QR.
  3. Tích hợp AI chatbot hỗ trợ sàng lọc bệnh ban đầu và tự động điều hướng người bệnh đến đúng chuyên khoa cần khám.

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

  • Sinh viên & Học viên ngành CNTT/Kỹ thuật phần mềm: Đồ án cung cấp tài liệu tham khảo hoàn chỉnh về quy trình phân tích thiết kế hệ thống theo chuẩn UML, thiết kế CSDL quan hệ chuẩn hóa và mô hình lập trình MVC trên nền .NET Framework.
  • Lập trình viên Web .NET: Học hỏi được cách giải quyết bài toán đa chi nhánh (Multi-site), kỹ thuật ghi vết hệ thống (Audit Trail), tối ưu hóa URL Routing và quản lý phân quyền người dùng (RBAC).
  • Các cơ sở y tế & Bệnh viện quy mô vừa và nhỏ: Tiếp cận một giải pháp phần mềm cổng thông tin tối ưu với chi phí triển khai thấp, tính thực tiễn cao và dễ dàng làm chủ công nghệ.
  • Cộng đồng bệnh nhân & Người dân: Dễ dàng tiếp cận các thông tin y khoa chính thống, tra cứu trình độ đội ngũ bác sĩ và chuyên khoa điều trị một cách minh bạch, nhanh chóng.

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

1. Yêu cầu cấu hình phần cứng và phần mềm tối thiểu để triển khai website?

  • Máy chủ ứng dụng (Web Server): CPU 2 Cores (2.0 GHz trở lên), RAM tối thiểu 4GB, ổ cứng trống 20GB, cài đặt Windows Server 2012 R2 và IIS 8.5+.
  • Máy chủ cơ sở dữ liệu (DB Server): CPU 4 Cores, RAM tối thiểu 8GB, ổ cứng SSD để tối ưu hóa tốc độ I/O, cài đặt Microsoft SQL Server 2014.

2. Hệ thống có khả năng mở rộng (Scalability) khi bệnh viện mở thêm nhiều chi nhánh mới không?

Hệ thống hoàn toàn đáp ứng khả năng mở rộng nhiều chi nhánh nhờ thiết kế bảng Site độc lập và liên kết khóa ngoại site_id xuyên suốt tất cả các bảng dữ liệu chuyên khoa, bác sĩ, bài viết. Khi có chi nhánh mới, quản trị viên chỉ cần thêm một bản ghi vào bảng Site mà không cần thay đổi cấu trúc mã nguồn hay cơ sở dữ liệu.

3. Làm thế nào để tích hợp hệ thống website này với phần mềm quản lý bệnh viện (HIS) có sẵn?

Để tích hợp với HIS, hệ thống có thể mở rộng thêm một lớp dịch vụ (Integration Service Layer) giao tiếp qua giao thức WCF hoặc RESTful API. Dữ liệu lịch trực của bác sĩ và danh mục dịch vụ có thể đồng bộ định kỳ hai chiều giữa CSDL của website và CSDL của HIS thông qua các Service Worker hoặc SQL Server Integration Services (SSIS).

4. Cơ chế bảo mật của website chống lại các cuộc tấn công phổ biến như thế nào?

Hệ thống áp dụng cơ chế phòng vệ nhiều lớp:

  • Chống SQL Injection: Toàn bộ truy vấn dữ liệu được thực thi thông qua LINQ to SQL với cơ chế tham số hóa truy vấn (Parameterized Queries) tự động.
  • Chống CSRF (Cross-Site Request Forgery): Sử dụng thuộc tính [ValidateAntiForgeryToken] trên tất cả các form gửi dữ liệu POST.
  • Chống XSS (Cross-Site Scripting): Razor View Engine tự động mã hóa HTML (HTML Encode) các chuỗi dữ liệu đầu ra trước khi hiển thị lên trình duyệt.

5. Chi phí triển khai và thời gian thu hồi vốn (ROI) của dự án ước tính như thế nào?

Chi phí phát triển và triển khai hệ thống ước tính bằng 1/3 so với việc mua các gói giải pháp phần mềm y tế đóng gói thương mại. Với việc giảm thiểu chi phí truyền thông truyền thống và tăng lượng bệnh nhân khám dịch vụ, thời gian thu hồi vốn đầu tư cho hệ thống ước tính trong khoảng từ 8 đến 12 tháng.


Kết luận

Đồ án tốt nghiệp "Thiết kế và xây dựng website cho Bệnh viện Đa khoa Hưng Hà" đã hoàn thành xuất sắc các mục tiêu đề ra, minh chứng cho tính khả thi và hiệu quả vượt trội của việc ứng dụng mô hình ASP.NET MVC 5.2 kết hợp LINQ to SQL trong việc giải quyết bài toán số hóa cổng thông tin y tế. Hệ thống không chỉ khắc phục toàn diện các nhược điểm về hiệu năng, giao diện và bảo mật của nền tảng website cũ mà còn mở ra nền tảng kiến trúc vững chắc cho các giai đoạn nâng cấp tiếp theo như tích hợp bệnh án điện tử và y tế từ xa (Telemedicine). Đây là tài liệu nghiên cứu ứng dụng có giá trị thực tiễn cao, đóng góp thiết thực vào công cuộc hiện đại hóa hạ tầng công nghệ thông tin cho các cơ sở y tế tại Việt Nam.