Giới thiệu dự án
Trong bối cảnh chuyển đổi số y tế đang diễn ra mạnh mẽ tại Việt Nam, nhu cầu tiếp cận dịch vụ khám chữa bệnh trực tuyến của người dân tăng trưởng với tốc độ bình quân hơn 15%/năm. Theo thống kê y tế số, hơn 75% người bệnh có thói quen tra cứu thông tin chuyên khoa, trình độ đội ngũ bác sĩ và cơ sở vật chất trước khi quyết định đến thăm khám trực tiếp. Đối với các bệnh viện ngoài công lập như Bệnh viện Đa khoa Hưng Hà, việc sở hữu một cổng thông tin trực tuyến chuẩn mực không chỉ phục vụ công tác truyền thông thương hiệu mà còn là cầu nối trực tiếp để tối ưu hóa quy trình tư vấn và nâng cao trải nghiệm bệnh nhân.
Hệ thống thông tin cũ của bệnh viện gặp phải các điểm nghẽn nghiêm trọng: giao diện lạc hậu, cấu trúc dữ liệu phân tán, không hỗ trợ tra cứu đa cơ sở (multi-site), thiếu cơ chế đồng bộ ngôn ngữ và quản trị phân quyền yếu kém. Để giải quyết dứt điểm các hạn chế này, đồ án tốt nghiệp ngành Công nghệ Thông tin, chuyên ngành Kỹ thuật Phần mềm (Trường Đại học Sư phạm Kỹ thuật Hưng Yên) đã thực hiện đề tài: "Thiết kế và xây dựng website cho Bệnh viện Đa khoa Hưng Hà" dưới sự hướng dẫn của TS. Nguyễn Văn Hậu.
[Bệnh nhân / Khách hàng] ─── HTTP / HTTPS ───► [ASP.NET MVC 5 Routing Engine]
│
┌─────────────────────────────────────────────┴─────────────────────────────────────────────┐
▼ ▼
[Frontend Portal: Razor Views / jQuery] [Backend CMS: RBAC / Audit Trail]
│ │
└─────────────────────────────────────┬─────────────────────────────────────────────────────┘
▼
[Application Controllers]
│
[LINQ to SQL DataContext]
│
[SQL Server 2014 RDBMS]
Mục tiêu của dự án
- Nghiên cứu và làm chủ công nghệ: Áp dụng kiến trúc Model-View-Controller (MVC) trên nền tảng ASP.NET MVC 5 kết hợp với công nghệ truy vấn dữ liệu tích hợp ngôn ngữ (Language Integrated Query - LINQ to SQL).
- Xây dựng Cổng thông tin y tế hoàn chỉnh: Phát triển hệ thống giao diện công khai trực quan, cho phép người bệnh tra cứu danh mục chuyên khoa, lịch biểu/hồ sơ bác sĩ nội - ngoại viện, cơ sở vật chất, bài viết chuyên môn và tin tức y khoa đa chi nhánh.
- Phát triển Hệ quản trị nội dung (CMS) chuyên sâu: Thiết kế trung tâm điều hành hỗ trợ biên tập bài viết, duyệt bình luận hai lớp, quản lý tư liệu đa phương tiện (hình ảnh, video, văn bản) và lưu vết toàn bộ nhật ký hệ thống (System Audit Log).
- Phân quyền bảo mật đa cấp: Thiết lập mô hình kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC) cho 4 nhóm tác nhân chính: Tổng quản trị, Quản trị viên, Người viết bài và Bệnh nhân.
- Triển khai và kiểm thử thực nghiệm: Đóng gói, cấu hình môi trường máy chủ web IIS (Internet Information Services) và cơ sở dữ liệu SQL Server 2014 đảm bảo khả năng chịu tải ổn định.
| Hạng mục mục tiêu |
Chỉ số đo lường ban đầu |
Kết quả kỳ vọng đạt được |
| Thời gian tải trang (TTFB) |
> 4.5 giây (hệ thống cũ) |
< 1.5 giây trên mạng 3G/4G/ADSL |
| Dung lượng Payload HTTP |
350 - 600 KB/request (ViewState) |
Giảm 60 - 75% nhờ loại bỏ ViewState |
| Mức độ kiểm thử Controller |
0% (khó test trên WebForms) |
> 85% Code Coverage qua Unit Test |
| Độ khả dụng hệ thống (Uptime) |
95.0% |
99.5% trên hạ tầng máy chủ Windows Server |
Phạm vi đề tài tập trung vào việc giải quyết bài toán quản trị nội dung, điều hướng thông tin y tế, hồ sơ bác sĩ và ghi nhận phản hồi người bệnh. Đề tài chưa bao gồm các phân hệ thanh toán viện phí trực tuyến chuyên sâu hoặc đồng bộ hóa trực tiếp chuẩn HL7/FHIR với hệ thống quản lý bệnh viện nội bộ (HIS).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và khoảng trống công nghệ
Trước khi bước vào giai đoạn thiết kế, việc đánh giá các giải pháp công nghệ hiện hành là yếu tố tiên quyết nhằm chọn lựa kiến trúc tối ưu nhất cho bài toán cổng thông tin y tế.
| Tiêu chí kỹ thuật |
ASP.NET WebForms (Kỷ nguyên 2002) |
Mã nguồn mở PHP (WordPress/Joomla) |
ASP.NET MVC 5 + LINQ to SQL (Lựa chọn) |
| Kiến trúc phân tầng |
Hướng sự kiện, gắn chặt UI & Code |
Monolithic, plugin phân tán |
Tách bạch rõ ràng 3 lớp (Decoupled MVC) |
| Quản lý trạng thái |
ViewState nặng nề, tốn băng thông |
Session/Cookie phía máy chủ |
Stateless theo chuẩn HTTP, tối ưu hóa payload |
| Kiểm soát HTML/CSS |
Tự sinh thẻ control, khó tùy biến SEO |
Phụ thuộc template/theme có sẵn |
Kiểm soát 100% mã nguồn HTML5/CSS3 sạch |
| Khả năng Unit Test |
Rất khó do ràng buộc HttpContext |
Phức tạp, phụ thuộc database |
Hỗ trợ xuất sắc TDD, dễ dàng mock đối tượng |
| Hiệu năng truy vấn |
ADO.NET thủ công hoặc DataAdapter |
MySQL Query thuần / ORM nhẹ |
ORM LINQ to SQL định kiểu tĩnh (Type-safe) |
Phân loại yêu cầu người dùng theo mô hình MoSCoW
- Must have (Bắt buộc có):
- Phân hệ xác thực tài khoản và cơ chế phân quyền RBAC đa cấp.
- Phân hệ quản lý và tra cứu thông tin theo từng chi nhánh bệnh viện (Multi-site).
- Danh bạ bác sĩ phân loại theo Bác sĩ nội viện và Bác sĩ ngoại viện.
- Phân hệ quản trị tin tức, danh mục chuyên khoa và truyền thông y tế.
- Phân hệ kiểm duyệt bình luận và lưu nhật ký hoạt động người dùng.
- Should have (Nên có):
- Tự động nhân bản nội dung bài viết sang giao diện Tiếng Anh khi chưa có bản dịch chính thức.
- Quản lý kho tư liệu đa phương tiện (Video giới thiệu kỹ thuật mổ, thư viện ảnh hoạt động, văn bản y tế).
- Tối ưu hóa cấu trúc đường dẫn thân thiện với công cụ tìm kiếm (
/{Controller}/{Action}/{id}).
- Could have (Có thể có):
- Bộ lọc nâng cao tìm kiếm bác sĩ theo học vị, chuyên khoa và lịch trực.
- Tích hợp widget bản đồ tương tác định vị cơ sở bệnh viện.
- Won't have (Chưa thực hiện trong giai đoạn này):
- Cổng thanh toán hóa đơn viện phí trực tuyến qua ngân hàng/ví điện tử.
- Module tư vấn khám bệnh thời gian thực qua WebRTC.
Thiết kế kiến trúc và mô hình dữ liệu
Hệ thống được tổ chức thành 3 tầng chức năng độc lập:
- Tầng Giao diện (Presentation Layer - View): Sử dụng Razor View Engine, Bootstrap Framework, jQuery và CSS3. Tầng này chịu trách nhiệm hiển thị dữ liệu từ ViewModel và gửi các tương tác người dùng về Controller.
- Tầng Điều khiển và Nghiệp vụ (Controller & Business Logic Layer): Các Controller tiếp nhận yêu cầu HTTP, xử lý xác thực, kiểm tra quyền truy cập thông qua các ActionFilter, gọi tầng dữ liệu và trả về View hoặc JSON.
- Tầng Truy cập Dữ liệu (Data Access Layer - Model via LINQ to SQL): Sử dụng đối tượng
DataContext ánh xạ trực tiếp từ cơ sở dữ liệu quan hệ SQL Server 2014 sang các lớp đối tượng C#.
+-------------------------------------------------------------------------------+
| CƠ SỞ DỮ LIỆU SQL SERVER 2014 |
+-------------------------------------------------------------------------------+
│ │ │
▼ ▼ ▼
+──────────────+ +──────────────+ +─────────────────+
| BenhVien | 1 n | BacSy | n 1 | ChuyenKhoa |
|--------------|──────────────|--------------|──────────────|-----------------|
| ID_BenhVien |◄──────────── | ID_BacSy | ────────────►| ID_ChuyenKhoa |
| TenBenhVien | | TenBacSy | | TenChuyenKhoa |
| DiaChi | | HocVi | | MoTa |
| Hotline | | ID_BenhVien | | AnhDaiDien |
| Email | | ID_ChuyenKhoa| +─────────────────+
+──────────────+ | LoaiBacSy |
+──────────────+
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
+──────────────+ +──────────────+ +─────────────────+
| TinTuc | n 1 | DanhMucTin | 1 n | BinhLuan |
|--------------|──────────────|--------------|──────────────|-----------------|
| ID_TinTuc | ────────────►| ID_DanhMuc | ◄────────────| ID_BinhLuan |
| TieuDe | | TenDanhMuc | | ID_TinTuc |
| TomTat | | ThuTu | | HoTen |
| NoiDung | +──────────────+ | Email |
| NgayDang | | NoiDung |
| LuotXem | | DaDuyet (bit) |
| ID_DanhMuc | +─────────────────+
| ID_BenhVien |
+──────────────+
│
▼
+─────────────────────────────────────────────────────────────────────────────+
| NhatKyHeThong (ID_Log, ID_NguoiDung, HanhDong, ThoiGian, IPAddress, ChiTiet)|
+─────────────────────────────────────────────────────────────────────────────+
Thiết kế bảo mật và chất lượng hệ thống
- Chống tấn công CSRF (Cross-Site Request Forgery): Tích hợp
@Html.AntiForgeryToken() trong mọi biểu mẫu Form và gán thuộc tính [ValidateAntiForgeryToken] tại các phương thức HttpPost.
- Ngăn chặn SQL Injection: Tận dụng cơ chế biên dịch câu truy vấn tham số hóa (Parameterized Queries) tự động của LINQ to SQL
DataContext.
- Phòng chống XSS (Cross-Site Scripting): Cơ chế Razor Engine tự động mã hóa chuỗi HTML (HtmlEncode) trước khi hiển thị; sử dụng thư viện kiểm duyệt mã độc đối với các trình soạn thảo HTML đa chức năng (CKEditor).
- Phân quyền RBAC: Xây dựng Custom Action Filter
[CustomAuthorize(Roles = "TongQuanTri, QuanTriVien")] để kiểm tra quyền truy cập tài nguyên trước khi Controller thực thi Action.
Implementation và kết quả
Quy trình phát triển và hiện thực hóa mã nguồn
Hệ thống được phát triển theo mô hình lặp kết hợp kiểm thử thành phần. Dưới đây là các kỹ thuật lập trình then chốt được trích xuất trực tiếp từ kiến trúc mã nguồn của đồ án.
1. Xử lý truy vấn dữ liệu nâng cao bằng LINQ to SQL
Tại Controller hiển thị danh sách bác sĩ, hệ thống cần thực hiện lọc đồng thời theo chuyên khoa, theo site bệnh viện và phân loại bác sĩ nội viện/ngoại viện với cú pháp LINQ tối ưu:
public class DoctorController : Controller
{
private HospitalDataContext db = new HospitalDataContext();
// GET: Doctor/GetDoctorsByFilter
public ActionResult GetDoctorsByFilter(int? hospitalId, int? departmentId, int doctorType)
{
var query = from doc in db.BacSies
join dept in db.ChuyenKhoas on doc.ID_ChuyenKhoa equals dept.ID_ChuyenKhoa
join hosp in db.BenhViens on doc.ID_BenhVien equals hosp.ID_BenhVien
where (!hospitalId.HasValue || doc.ID_BenhVien == hospitalId.Value)
&& (!departmentId.HasValue || doc.ID_ChuyenKhoa == departmentId.Value)
&& (doc.LoaiBacSy == doctorType)
&& (doc.TrangThai == true)
orderby doc.ThuTuHienThi ascending, doc.TenBacSy ascending
select new DoctorViewModel
{
DoctorId = doc.ID_BacSy,
FullName = doc.TenBacSy,
AcademicTitle = doc.HocVi,
DepartmentName = dept.TenChuyenKhoa,
HospitalName = hosp.TenBenhVien,
AvatarUrl = doc.AnhDaiDien,
Biography = doc.TieuSu
};
return PartialView("_DoctorListPartial", query.ToList());
}
}
2. Kỹ thuật tự động đồng bộ hóa ngôn ngữ và ghi vết Audit Log
Để đảm bảo tính liên tục của nội dung đa ngôn ngữ khi biên tập viên chỉ nhập dữ liệu Tiếng Việt, hệ thống tự động xử lý sao chép nội dung dự phòng (Fallback Engine), đồng thời ghi lại vết hành động vào bảng nhật ký hệ thống:
[HttpPost]
[ValidateAntiForgeryToken]
[CustomAuthorize(Roles = "TongQuanTri, QuanTriVien, NguoiVietBai")]
public ActionResult CreateArticle(ArticleInputModel model)
{
if (ModelState.IsValid)
{
using (var dbContext = new HospitalDataContext())
{
TinTuc article = new TinTuc();
article.TieuDe_VI = model.Title_VI;
article.TomTat_VI = model.Summary_VI;
article.NoiDung_VI = model.Content_VI;
// Xử lý tự động sao chép sang phiên bản Tiếng Anh nếu để trống
article.TieuDe_EN = string.IsNullOrWhiteSpace(model.Title_EN) ? model.Title_VI : model.Title_EN;
article.TomTat_EN = string.IsNullOrWhiteSpace(model.Summary_EN) ? model.Summary_VI : model.Summary_EN;
article.NoiDung_EN = string.IsNullOrWhiteSpace(model.Content_EN) ? model.Content_VI : model.Content_EN;
article.NgayDang = DateTime.Now;
article.ID_BenhVien = model.HospitalId;
article.ID_DanhMuc = model.CategoryId;
article.TrangThaiDuyet = User.IsInRole("TongQuanTri") ? 1 : 0; // Chờ duyệt nếu là biên tập viên
dbContext.TinTucs.InsertOnSubmit(article);
dbContext.SubmitChanges();
// Ghi nhật ký hệ thống (System Audit Trail)
LogAction(dbContext, "THEM_TIN_TUC", $"Thêm bài viết ID: {article.ID_TinTuc} - Tiêu đề: {article.TieuDe_VI}");
return RedirectToAction("Index", "NewsManagement");
}
}
return View(model);
}
private void LogAction(HospitalDataContext db, string actionType, string description)
{
NhatKyHeThong log = new NhatKyHeThong
{
ID_NguoiDung = (int)Session["UserId"],
HanhDong = actionType,
ChiTiet = description,
ThoiGian = DateTime.Now,
IPAddress = Request.UserHostAddress
};
db.NhatKyHeThongs.InsertOnSubmit(log);
db.SubmitChanges();
}
Kết quả kiểm thử và hiệu năng hệ thống
Quá trình kiểm thử được triển khai toàn diện bao gồm: Kiểm thử đơn vị (Unit Testing) trên các Controller, Kiểm thử tích hợp (Integration Testing) trên các luồng nghiệp vụ CMS, và Kiểm thử hiệu năng (Stress & Load Testing) giả lập môi trường người dùng truy cập đồng thời.
| Kịch bản kiểm thử |
Công cụ thực hiện |
Quy mô dữ liệu / Tải giả lập |
Kết quả thu được |
Trạng thái |
| Xác thực & Phân quyền RBAC |
NUnit & Moq Framework |
48 Test Cases bao quát 4 nhóm quyền |
100% Passed, chặn hoàn toàn truy cập trái phép |
Đạt chuẩn |
| Kiểm tra tính toàn vẹn CSDL |
SQL Server Profiler |
500 bản ghi đồng thời trên DataContext |
0 phát hiện Deadlock, Transaction an toàn |
Đạt chuẩn |
| Tải trang đồng thời (Stress Test) |
Apache JMeter 3.3 |
500 người dùng ảo (Concurrent Users) |
Thời gian phản hồi trung bình 280ms, 0% lỗi gói tin |
Đạt chuẩn |
| Tương thích trình duyệt chéo |
BrowserStack |
Chrome, Cốc Cốc, Firefox, IE 11, Safari |
Giao diện hiển thị đồng nhất, phản hồi Responsive chuẩn |
Đạt chuẩn |
Tốc độ phản hồi HTTP (ms) theo tải người dùng đồng thời:
[100 Users] ████ 120ms
[300 Users] ████████ 210ms
[500 Users] ████████████ 280ms
[1000 Users] ████████████████████ 460ms (Ổn định trên IIS 8.5)
Đổi mới và đóng góp
Đề tài mang lại nhiều giá trị cải tiến vượt bậc về mặt kỹ thuật công nghệ cũng như khả năng ứng dụng thực tiễn trong bài toán quản lý y tế tại địa phương:
- Triệt tiêu gánh nặng ViewState và chuẩn hóa kiến trúc MVC: Khác với nền tảng ASP.NET WebForms truyền thống vốn chèn hàng trăm kilobytes mã ViewState ẩn vào tài liệu HTML khiến tốc độ truyền tải chậm chạp, giải pháp ASP.NET MVC 5 mang lại cấu trúc HTML hoàn toàn sạch, giảm kích thước payload mạng tới 68%, tăng tốc độ tải trang lên hơn 3 lần.
- Cơ chế ORM định kiểu mạnh với LINQ to SQL: Thay thế việc viết các câu lệnh SQL chuỗi (Raw SQL String) dễ gây lỗi cú pháp và nguy cơ SQL Injection bằng việc sử dụng các thực thể ánh xạ từ
DataContext. Toàn bộ thao tác CRUD (Create, Read, Update, Delete) được kiểm tra kiểu tĩnh ngay trong quá trình biên dịch (Compile-time checking), giảm thiểu 90% lỗi thời gian chạy (Runtime errors).
- Mô hình cổng thông tin y tế đa cơ sở kết hợp điều phối nội dung: Thiết kế linh hoạt cho phép Bệnh viện Đa khoa Hưng Hà mở rộng quản lý nhiều phân viện, nhiều chuyên khoa độc lập nhưng vẫn duy trì sự quản trị tập trung. Cơ chế Fallback ngôn ngữ tự động đảm bảo hình ảnh chuyên nghiệp của bệnh viện đối với khách hàng quốc tế.
- Kiểm soát an ninh thông tin bệnh viện qua Audit Trail: Mọi thao tác biên tập, duyệt bài, chỉnh sửa danh bạ y bác sĩ hoặc xóa dữ liệu đều được ghi lại với đầy đủ định danh người dùng, thời gian và địa chỉ IP, đáp ứng các tiêu chuẩn khắt khe về an toàn thông tin ngành y tế.
| Đặc tính giải pháp |
Giải pháp cũ của Bệnh viện |
Website Đồ án (ASP.NET MVC 5 + LINQ) |
Mức độ cải thiện |
| Tốc độ xử lý yêu cầu |
~ 4.2 giây / tương tác |
~ 0.28 giây / tương tác |
Nhanh hơn 15 lần |
| Quản trị đa cơ sở (Multi-site) |
Không hỗ trợ, phải làm web riêng |
Tích hợp trong cùng một hệ thống |
Tiết kiệm 100% chi phí vận hành mới |
| Cấu trúc URL phục vụ SEO |
Dạng tham số ?id=12&cat=5 |
Thân thiện /{chuyen-khoa}/{ten-bai} |
Tối ưu chỉ mục tìm kiếm Google |
| Kiểm soát nội dung phản hồi |
Bình luận tự do, không kiểm duyệt |
Kiểm duyệt 2 cấp trước khi xuất bản |
Ngăn chặn 100% spam độc hại |
Ứng dụng thực tế và triển khai
Hệ thống đã được đóng gói hoàn chỉnh và sẵn sàng vận hành trên môi trường thực tế của Bệnh viện Đa khoa Hưng Hà với lộ trình kỹ thuật cụ thể:
Yêu cầu cấu hình triển khai hạ tầng
- Máy chủ Web (Web Server):
- Hệ điều hành: Windows Server 2012 R2 hoặc Windows Server 2016.
- Web Server: IIS 8.5 trở lên, kích hoạt ASP.NET 4.5 module.
- Phần cứng tối thiểu: 4 vCPU, 8GB RAM, 100GB SSD lưu trữ media.
- Máy chủ Cơ sở dữ liệu (Database Server):
- RDBMS: Microsoft SQL Server 2014 Standard/Enterprise Edition.
- Cấu hình sao lưu: Thiết lập chính sách Full Backup hàng ngày và Transaction Log Backup mỗi 6 giờ.
Phân tích hiệu quả kinh tế và khả năng mở rộng
- Hiệu quả chi phí (Cost-Benefit Analysis): Việc tự chủ xây dựng cổng thông tin trên công nghệ Microsoft .NET giúp bệnh viện tiết kiệm khoảng 80 - 120 triệu đồng chi phí thuê dịch vụ ngoài mỗi năm, đồng thời giảm 50% khối lượng công việc cho bộ phận tư vấn viên nhờ các module tra cứu khoa phòng, bác sĩ trực quan.
- Khả năng mở rộng (Scalability): Kiến trúc phân tầng độc lập cho phép hệ thống mở rộng linh hoạt:
- Nâng cấp lên cụm máy chủ Web Farm cân bằng tải (NLB) khi số lượng truy cập vượt quá 500,000 lượt/tháng.
- Tách riêng hệ thống lưu trữ media sang dịch vụ lưu trữ đám mây (Cloud Blob Storage) khi dung lượng video/hình ảnh tăng cao.
Lộ trình triển khai hệ thống (Implementation Roadmap):
[Tuần 1 - 4] Phân tích yêu cầu ──► Thiết kế CSDL & Prototype giao diện
[Tuần 5 - 10] Lập trình phân hệ Core MVC ──► LINQ to SQL Data Access
[Tuần 11 - 13] Phát triển phân hệ CMS ──► Phân quyền RBAC & Audit Log
[Tuần 14 - 15] Kiểm thử chịu tải JMeter ──► Đóng gói & Cấu hình IIS
[Tuần 16] Chuyển giao công nghệ ──► Đưa vào vận hành chính thức (Go-Live)
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Công nghệ ORM thế hệ đầu: LINQ to SQL có tính trực quan cao và dễ cấu hình, tuy nhiên khả năng tối ưu hóa các quan hệ thực thể phức tạp (Many-to-Many nâng cao) và hỗ trợ đa nền tảng cơ sở dữ liệu chưa linh hoạt bằng Entity Framework Core.
- Chưa tích hợp API mở: Phân hệ dữ liệu bác sĩ và lịch khám chưa được đóng gói thành các chuẩn RESTful API để kết nối trực tiếp với ứng dụng di động (Mobile App) của bệnh nhân.
- Phụ thuộc môi trường Windows: Hệ thống gắn liền với hệ sinh thái .NET Framework truyền thống trên nền tảng Windows Server và IIS, chưa tối ưu hóa để chạy trên môi trường Container (Docker/Linux).
Hướng phát triển nâng cao
- Nâng cấp nền tảng: Tái cấu trúc mã nguồn sang ASP.NET Core 8.0 / .NET 8, chuyển đổi tầng truy cập dữ liệu sang Entity Framework Core để chạy đa nền tảng (Cross-platform) trên các cụm máy chủ Linux/Kubernetes với chi phí bản quyền tối ưu.
- Tích hợp cổng đặt lịch khám bệnh thông minh: Bổ sung module cho phép bệnh nhân chọn ngày giờ, chọn bác sĩ khám và nhận mã số phiếu khám điện tử qua SMS/Email.
- Phát triển Mobile App y tế: Xây dựng hệ thống Web API (ASP.NET Web API 2 / Minimal API) cung cấp dịch vụ dữ liệu cho ứng dụng di động trên nền tảng Flutter/React Native.
- Tích hợp Trí tuệ nhân tạo (AI Chatbot): Ứng dụng trợ lý ảo AI hỗ trợ giải đáp sơ bộ các triệu chứng bệnh lý thường gặp và điều hướng người bệnh đến đúng chuyên khoa phù hợp 24/7.
Đối tượng hưởng lợi
Hệ thống mang lại giá trị thực tiễn cho nhiều nhóm đối tượng:
- Sinh viên và Học viên Công nghệ Thông tin:
- Cung cấp tài liệu mẫu mực về quy trình phân tích và thiết kế hệ thống thông tin theo chuẩn UML (Use Case, Sequence Diagram, Class Diagram).
- Cung cấp mã nguồn thực tế áp dụng kiến trúc MVC và LINQ to SQL hoàn chỉnh, dễ hiểu và dễ tiếp cận.
- Lập trình viên và Kỹ sư phần mềm:
- Nắm vững phương pháp giải quyết các bài toán thực tế: phân quyền RBAC đa cấp, xử lý dữ liệu đa ngôn ngữ dự phòng (Fallback content) và ghi log kiểm toán hệ thống.
- Tham khảo giải pháp cấu trúc mã nguồn tầng điều khiển (Controller) và ánh xạ dữ liệu (ORM) chuẩn chỉ.
- Ban quản trị Bệnh viện Đa khoa Hưng Hà và các đơn vị y tế:
- Sở hữu nền tảng số hiện đại giúp gia tăng 40% nhận diện thương hiệu trực tuyến.
- Tối ưu hóa quy trình truyền thông y tế, giảm áp lực giải đáp thông tin tại bàn tiếp đón.
- Người bệnh và Khách hàng:
- Tra cứu thông tin khám chữa bệnh chính xác, minh bạch về trình độ bác sĩ, danh mục dịch vụ và sơ đồ khoa phòng chỉ với vài thao tác đơn giản trên máy tính hoặc điện thoại.
Câu hỏi thường gặp
1. Hệ thống có yêu cầu phần cứng máy chủ đặc thù nào để cài đặt và vận hành không?
Hệ thống được tối ưu hóa trên nền tảng .NET Framework và SQL Server 2014 nên không đòi hỏi phần cứng đắt đỏ. Chỉ cần một máy chủ vật lý hoặc máy chủ ảo (VPS) chạy Windows Server có từ 4GB RAM, 2 Core CPU và dung lượng ổ cứng 50GB trở lên là có thể phục vụ ổn định cho khoảng 10,000 - 20,000 lượt truy cập mỗi ngày.
2. Sự khác biệt căn bản giữa LINQ to SQL và Entity Framework trong dự án này là gì?
LINQ to SQL là công cụ ORM gọn nhẹ nhắm trực tiếp vào hệ quản trị cơ sở dữ liệu Microsoft SQL Server, cho phép ánh xạ 1-1 nhanh chóng và trực quan thông qua công cụ kéo thả LINQ to SQL Designer của Visual Studio. Entity Framework là giải pháp toàn diện hơn hỗ trợ đa hệ CSDL và quan hệ phức tạp. Với quy mô website của Bệnh viện Hưng Hà, LINQ to SQL đáp ứng hoàn hảo về tốc độ thực thi, cú pháp gọn gàng và thời gian triển khai nhanh chóng.
3. Làm thế nào để hệ thống ngăn chặn bình luận rác và thông tin sai lệch trên trang tin y tế?
Hệ thống áp dụng quy trình kiểm duyệt bình luận 2 lớp (Two-step moderation):
- Khi người dùng gửi bình luận, trạng thái mặc định trong CSDL là
DaDuyet = 0 (Chưa duyệt).
- Bình luận chỉ xuất hiện công khai trên giao diện người dùng sau khi Quản trị viên kiểm tra nội dung trong trang CMS và chuyển trạng thái sang
DaDuyet = 1.
4. Cơ chế tự động sao chép ngôn ngữ Tiếng Việt sang Tiếng Anh hoạt động như thế nào?
Trong quá trình thêm mới hoặc sửa bài viết, nếu người biên tập không nhập tiêu đề, tóm tắt hoặc nội dung bằng Tiếng Anh, tầng Controller sẽ tự động gán dữ liệu từ các trường Tiếng Việt tương ứng sang các trường Tiếng Anh (TieuDe_EN = TieuDe_VI). Cơ chế này đảm bảo giao diện phiên bản Tiếng Anh không bao giờ bị lỗi hiển thị khoảng trắng hoặc vỡ bố cục giao diện.
5. Chi phí duy trì và bảo trì hệ thống website hàng năm ước tính khoảng bao nhiêu?
Chi phí vận hành định kỳ bao gồm:
- Tên miền thương hiệu (.vn / .com.vn): khoảng 500,000 - 800,000 VNĐ/năm.
- Thuê máy chủ đám mây (Cloud VPS Windows): khoảng 3,600,000 - 6,000,000 VNĐ/năm.
- Chi phí bảo trì kỹ thuật và sao lưu dữ liệu định kỳ: khoảng 2,000,000 - 4,000,000 VNĐ/năm.
Tổng chi phí duy trì hàng năm chỉ dao động từ 6 đến 10 triệu đồng, mang lại tỷ suất hoàn vốn (ROI) vượt trội so với hiệu quả truyền thông mang lại.
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à" của tác giả Lưu Thị Thu Hà đã hoàn thành xuất sắc các mục tiêu đặt ra: từ việc nghiên cứu thấu đáo cơ sở lý thuyết mô hình MVC, công nghệ LINQ to SQL, cho đến việc hiện thực hóa một cổng thông tin y tế hoàn chỉnh, hiện đại và bảo mật.
Hệ thống giải quyết triệt để các bài toán thực tiễn của bệnh viện: tối ưu tốc độ phân tải, nâng cao trải nghiệm tra cứu danh bạ y bác sĩ, phân cấp quyền hạn biên tập nội dung chặt chẽ và ghi nhận nhật ký hệ thống minh bạch. Đây không chỉ là một công trình nghiên cứu ứng dụng có giá trị học thuật cao trong ngành Kỹ thuật Phần mềm mà còn là một sản phẩm phần mềm hoàn thiện, sẵn sàng chuyển giao và đóng góp thiết thực vào công cuộc tin học hóa y tế tại địa phương.