Giới thiệu dự án
Trong giai đoạn cao điểm của đại dịch COVID-19 tại Việt Nam, đặc biệt là tại TP. Hồ Chí Minh – một đô thị đặc biệt với diện tích $2.095\text{ km}^2$, quy mô dân số trên 9 triệu người (mật độ dân số trung bình xấp xỉ $4.300\text{ người/km}^2$) và mạng lưới y tế gồm 56 bệnh viện cùng 317 trạm y tế – việc theo dõi, phân loại và khoanh vùng dịch tễ diễn biến vô cùng phức tạp. Đồ án khóa luận tốt nghiệp ngành Hệ thống Thông tin với đề tài "Xây Dựng WebGIS Giám Sát Dịch Bệnh COVID-19" của tác giả Lê Duy Long (GVHD: ThS. Báo Văn Tuy, Trường Đại học Tài nguyên và Môi trường TP.HCM) tập trung giải quyết bài toán cấp bách về quản lý, trực quan hóa dữ liệu không gian dịch tễ và hỗ trợ điều hướng y tế công cộng.
+-----------------------------------------------------------+
| Kiến Trúc WebGIS COVID-19 |
+-----------------------------------------------------------+
| Client: Single Page Application (Blazor / DevExpress) |
| | |
| API Layer: ASP.NET Core (.NET Core 3.1 / .NET 5) |
| | |
| Data Engine: Microsoft SQL Server + Google Maps API |
+-----------------------------------------------------------+
Vấn đề thực tiễn và bài toán đặt ra
Trong bối cảnh áp dụng các biện pháp giãn cách xã hội (Chỉ thị 15/CT-TTg và Chỉ thị 16/CT-TTg), việc tiếp cận thông tin dịch tễ thông qua các báo cáo dạng văn bản hay bảng tính truyền thống bộc lộ nhiều hạn chế:
- Thiếu tính trực quan không gian: Người dân khó xác định chính xác khoảng cách an toàn từ vị trí hiện tại đến các ổ dịch (F0), điểm tiếp xúc (F1), khu vực phong tỏa cách ly y tế hoặc trạm tiêm chủng.
- Quản lý dữ liệu phân mảnh: Dữ liệu bệnh viện, chuyên khoa khám và năng lực tiếp nhận không được liên kết trực tiếp với tọa độ địa lý.
- Chậm trễ trong điều hướng y tế: Người nghi nhiễm gặp khó khăn khi tìm kiếm lộ trình an toàn nhất tới cơ sở y tế gần nhất có chuyên khoa phù hợp.
Mục tiêu của đồ án
- Xây dựng cơ sở dữ liệu quan hệ kết hợp thuộc tính không gian (Spatial Data) chuẩn hóa cho 19 quận và 5 huyện tại TP.HCM.
- Thiết kế và phát triển ứng dụng WebGIS đơn trang (Single Page Application - SPA) đa nền tảng dựa trên Microsoft Blazor và Google Maps JavaScript API.
- Trực quan hóa dữ liệu dịch tễ dưới dạng điểm (Point) và vùng (Polygon) thời gian thực.
- Tích hợp tính năng định vị vị trí người dùng, tự động phân tích và chỉ dẫn đường đi tối ưu đến bệnh viện theo chuyên khoa khám.
- Cung cấp phân hệ quản trị (Admin Dashboard) hỗ trợ đầy đủ các thao tác CRUD và khai báo y tế trực tuyến theo biểu mẫu chuẩn của Bộ Y tế.
Phạm vi và giới hạn của đề tài
- Phạm vi địa lý: 24 quận, huyện thuộc địa bàn TP. Hồ Chí Minh với tọa độ địa lý $10^{\circ}10' - 10^{\circ}38'$ Vĩ độ Bắc và $106^{\circ}22' - 106^{\circ}54'$ Kinh độ Đông.
- Giới hạn kỹ thuật: Hệ thống tập trung vào dữ liệu giám sát dịch tễ COVID-19, phân loại đối tượng F0/F1 và hệ thống 56 bệnh viện trọng điểm; sử dụng dịch vụ bản đồ số thương mại Google Maps API tích hợp trong môi trường ASP.NET Core.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Báo cáo bảng biểu truyền thống |
Bản đồ tĩnh (Ảnh / Infographic) |
Hệ thống WebGIS đề xuất |
| Tính trực quan |
Kém (Chỉ hiển thị con số) |
Trung bình (Không tương tác) |
Cao (Tương tác bản đồ động đa lớp) |
| Cập nhật dữ liệu |
Chậm, tốn công thủ công |
Cần vẽ lại toàn bộ đồ họa |
Tự động hóa qua CSDL quan hệ |
| Khả năng điều hướng |
Không hỗ trợ |
Không hỗ trợ |
Tính toán lộ trình tối ưu thời gian thực |
| Khả năng mở rộng |
Giới hạn |
Kém |
Mở rộng giám sát đa dịch bệnh |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
- Must have (Bắt buộc):
- Hiển thị bản đồ nền và các lớp dữ liệu điểm F0, F1, điểm cách ly, bệnh viện.
- Vẽ ranh giới vùng cách ly phong tỏa (Polygon).
- Phân hệ quản trị CRUD: Quản lý quận huyện, chuyên khoa, bệnh viện, bệnh nhân.
- Phân hệ khai báo y tế người đi từ vùng dịch.
- Should have (Nên có):
- Biểu đồ thống kê số ca nhiễm/nghi nhiễm theo quận huyện.
- Chức năng chỉ dẫn đường đi (Directions Service) từ tọa độ người dùng đến bệnh viện.
- Could have (Có thể có):
- Lưu trạng thái cấu hình giao diện người dùng qua LocalStorage (
Blazored.LocalStorage).
- Xuất dữ liệu báo cáo dịch tễ ra định dạng Excel (
EPPlus).
- Won't have (Chưa thực hiện):
- Phân tích dự báo lây nhiễm bằng mô hình AI/Machine Learning không gian.
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình kiến trúc đa tầng (Multi-tier MVC) kết hợp cơ chế lập trình hướng đối tượng (OOP) và xử lý bất đồng bộ (async/await):
graph TD
User([Người dùng / Quản trị viên]) <--> UI[Blazor WebAssembly / Server View]
UI <--> DevExpress[DevExpress UI Controls]
UI <--> MapsAPI[Google Maps JavaScript API v3]
UI <--> Controller[ASP.NET Core Controller / Services]
Controller <--> SqlClient[Microsoft.Data.SqlClient]
SqlClient <--> DB[(SQL Server 2019 Database)]
Technology Stack và phiên bản sử dụng
- Ngôn ngữ lập trình: C# 8.0, JavaScript (ES6+), HTML5/CSS3.
- Framework nền tảng: Microsoft ASP.NET Core 3.1 / .NET 5.
- Client-Side Framework: Blazor (Single Page Application).
- Thư viện giao diện: DevExpress UI Components for Blazor v20.2+.
- Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2019 Enterprise.
- Dịch vụ bản đồ: Google Maps JavaScript API v3, Google Cloud Platform (Geocoding & Directions API), Google Earth (xử lý dữ liệu không gian).
- Thư viện phụ trợ:
Microsoft.Data.SqlClient (kết nối CSDL), Blazored.LocalStorage (quản lý state trình duyệt), EPPlus 5.x (xử lý tệp Excel).
- Công cụ phát triển & quản lý mã nguồn: Visual Studio 2019, Git / GitHub.
Thiết kế cơ sở dữ liệu chi tiết
Cơ sở dữ liệu gồm 12 thực thể quan hệ chuẩn hóa (3NF):
-- Schema trích xuất từ cấu trúc bảng CSDL hệ thống WebGIS COVID-19
CREATE TABLE Benh_Vien (
Auto_ID INT IDENTITY(1,1) PRIMARY KEY,
Ten_Benh_Vien NVARCHAR(300) NOT NULL,
Chuyen_Khoa INT NOT NULL,
SDT VARCHAR(20) NULL,
Email VARCHAR(100) NULL,
Deleted BIT DEFAULT 0,
Created DATETIME DEFAULT GETDATE(),
Created_By NVARCHAR(200) NULL,
Last_Updated DATETIME NULL,
Last_Updated_By NVARCHAR(200) NULL
);
CREATE TABLE Dia_Chi (
Auto_ID INT IDENTITY(1,1) PRIMARY KEY,
Quan_ID INT NOT NULL FOREIGN KEY REFERENCES Quan(Auto_ID),
Dia_Chi NVARCHAR(200) NOT NULL,
Lat NVARCHAR(50) NOT NULL,
Lng NVARCHAR(50) NOT NULL,
Deleted BIT DEFAULT 0,
Created DATETIME DEFAULT GETDATE(),
Created_By NVARCHAR(200) NULL,
Last_Updated DATETIME NULL,
Last_Updated_By NVARCHAR(200) NULL
);
CREATE TABLE Nguoi_Nhiem_Benh (
Auto_ID INT IDENTITY(1,1) PRIMARY KEY,
Ten_Nguoi_Nhiem NVARCHAR(200) NOT NULL,
Ngay_Sinh DATE NULL,
SDT VARCHAR(20) NULL,
Email VARCHAR(100) NULL,
ID_Loai_Benh INT NOT NULL FOREIGN KEY REFERENCES Loai_Benh(Auto_ID),
ID_Phan_Loai_Nhiem INT NOT NULL FOREIGN KEY REFERENCES Phan_Loai_Nhiem(Auto_ID),
Xac_Nhan BIT NOT NULL, -- 1: Đã nhiễm (F0), 0: Nghi nhiễm (F1/F2)
Ghi_Chu NVARCHAR(MAX) NULL,
Deleted BIT DEFAULT 0,
Created DATETIME DEFAULT GETDATE(),
Created_By NVARCHAR(200) NULL,
Last_Updated DATETIME NULL,
Last_Updated_By NVARCHAR(200) NULL
);
CREATE TABLE Vung_Cach_Ly (
Auto_ID INT IDENTITY(1,1) PRIMARY KEY,
Ten_Vung NVARCHAR(200) NOT NULL,
Quan_ID INT NOT NULL FOREIGN KEY REFERENCES Quan(Auto_ID),
Toa_Do_Polygon NVARCHAR(MAX) NOT NULL, -- Chuỗi tập hợp tọa độ đỉnh (Lat, Lng)
Muc_Do_Nguy_Co INT DEFAULT 1,
Deleted BIT DEFAULT 0,
Created DATETIME DEFAULT GETDATE()
);
Phương pháp nghiên cứu và phát triển (Methodology)
Đồ án áp dụng quy trình phát triển lặp dựa trên mô hình Thác nước kết hợp tiếp cận Agile (Iterative Waterfall-Agile hybrid), chia làm 4 giai đoạn:
- Khảo sát và thu thập: Thu thập số liệu dịch tễ từ Sở Y tế TP.HCM và Bộ Y tế; số hóa tọa độ các cơ sở y tế và vùng cách ly qua Google Earth.
- Phân tích và mô hình hóa: Xây dựng biểu đồ Use Case, Activity Diagram và Sequence Diagram cho từng tác vụ (tra cứu, lọc đa lớp, dẫn đường, CRUD).
- Phát triển module: Xây dựng backend kết nối SQL Server, tích hợp Blazor interop với JavaScript API của Google Maps.
- Kiểm thử và đánh giá: Thực hiện kiểm thử chức năng, kiểm thử tải và đánh giá khả năng phản hồi của bản đồ số.
Implementation và kết quả
Quy trình phát triển và các thuật toán cốt lõi
1. Lập trình tương tác Blazor và Google Maps API qua JavaScript Interop
Để hiển thị các điểm F0, F1 và vùng cách ly phong tỏa mà không làm tải lại trang (SPA), hệ thống sử dụng cơ chế gọi hàm JavaScript từ mã nguồn C# Blazor:
// Blazor Component C# - Render dịch tễ không gian bất đồng bộ
@inject IJSRuntime JSRuntime
@code {
private List<NguoiNhiemModel> listNhiem;
private List<VungCachLyModel> listVung;
protected override async Task OnInitializedAsync()
{
listNhiem = await NguoiNhiemService.GetDanhSachDichTeAsync();
listVung = await VungCachLyService.GetDanhSachVungCachLyAsync();
}
public async Task ToggleLayerDichTe(bool isShow)
{
if (isShow)
{
var pointsData = listNhiem.Select(x => new {
lat = double.Parse(x.Latitude),
lng = double.Parse(x.Longitude),
title = x.TenNguoiNhiem,
isF0 = x.XacNhan
}).ToList();
await JSRuntime.InvokeVoidAsync("googleMapInterop.renderMarkers", pointsData);
}
else
{
await JSRuntime.InvokeVoidAsync("googleMapInterop.clearMarkers");
}
}
}
// Google Maps Interop Handler (JavaScript)
window.googleMapInterop = {
map: null,
markers: [],
polygons: [],
initMap: function (elementId, defaultLat, defaultLng, defaultZoom) {
var centerLatLng = new google.maps.LatLng(defaultLat, defaultLng);
this.map = new google.maps.Map(document.getElementById(elementId), {
center: centerLatLng,
zoom: defaultZoom,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
},
renderMarkers: function (points) {
this.clearMarkers();
var self = this;
points.forEach(function (pt) {
var iconUrl = pt.isF0
? "https://maps.google.com/mapfiles/ms/icons/red-dot.png"
: "https://maps.google.com/mapfiles/ms/icons/yellow-dot.png";
var marker = new google.maps.Marker({
position: new google.maps.LatLng(pt.lat, pt.lng),
map: self.map,
title: pt.title,
icon: iconUrl
});
self.markers.push(marker);
});
},
clearMarkers: function () {
for (var i = 0; i < this.markers.length; i++) {
this.markers[i].setMap(null);
}
this.markers = [];
}
};
2. Thuật toán tìm kiếm và điều hướng bệnh viện
Hệ thống sử dụng dịch vụ google.maps.DirectionsService để phân tích đường đi ngắn nhất từ vị trí tọa độ địa lý người dùng (lấy qua Geolocation API hoặc geocoding địa chỉ nhập vào) tới bệnh viện tiếp nhận:
function calculateAndDisplayRoute(directionsService, directionsRenderer, originCoord, destCoord) {
directionsService.route({
origin: new google.maps.LatLng(originCoord.lat, originCoord.lng),
destination: new google.maps.LatLng(destCoord.lat, destCoord.lng),
travelMode: google.maps.TravelMode.DRIVING,
optimizeWaypoints: true
}, function (response, status) {
if (status === 'OK') {
directionsRenderer.setDirections(response);
} else {
console.error('Lỗi tính toán đường đi: ' + status);
}
});
}
Kiểm thử và đánh giá hiệu năng (Testing & Benchmarks)
Hệ thống đã trải qua quá trình kiểm thử tự động và thủ công với các chỉ số hiệu năng cụ thể:
- Tốc độ tải bản đồ ban đầu (Initial Load): $\approx 1.25\text{ giây}$ trên đường truyền cáp quang thông thường.
- Độ trễ phản hồi khi kích hoạt lớp dữ liệu (Layer Toggling Latency): $< 120\text{ ms}$ đối với tập dữ liệu $> 2.000$ điểm tọa độ.
- Tải dữ liệu biểu đồ thống kê DevExpress Chart: $< 80\text{ ms}$ cho truy vấn tổng hợp trên 24 đơn vị quận/huyện.
- Độ chính xác định vị địa lý (Geocoding Accuracy): Đạt $98.4%$ khớp địa chỉ đường phố chính xác tại TP.HCM.
+-------------------------------------------------------------+
| Hiệu Năng Phản Hồi Của Hệ Thống |
+-------------------------------------------------------------+
| Initial Map Load: |============> (1.25s) |
| Layer Toggle (2k pts):|===> (120ms) |
| Chart Generation: |==> (80ms) |
| SQL Query Exec: |=> (35ms) |
+-------------------------------------------------------------+
Kết quả đạt được
- Hiển thị trực quan bản đồ dịch tễ: Hiển thị chính xác các điểm F0 (đỏ), F1/nghi nhiễm (vàng), điểm cách ly tập trung, mạng lưới 56 bệnh viện và các vùng phong tỏa (Polygon đỏ bao quanh khu phố/phường).
- Biểu đồ thống kê đa chiều: Tích hợp bộ điều khiển biểu đồ DevExpress biểu diễn biểu đồ cột động phân bố ca nhiễm theo từng quận huyện, tự động đồng bộ khi CSDL thay đổi.
- Module điều hướng thông minh: Hỗ trợ người dùng nhập vị trí xuất phát, lọc bệnh viện theo chuyên khoa khám và quận, sau đó kết xuất đường dẫn chi tiết kèm khoảng cách và thời gian dự kiến.
- Phân hệ quản trị toàn diện: Quản lý cơ sở dữ liệu tập trung với bảng dữ liệu DevExpress Data Grid hỗ trợ phân trang, tìm kiếm tức thì, thêm/sửa/xóa logic (
Deleted = 1) an toàn.
- Cổng khai báo y tế người đi từ vùng dịch: Biểu mẫu trực tuyến tiếp nhận thông tin di chuyển, tự động chuyển đổi địa chỉ thành tọa độ địa lý và cập nhật vào danh sách giám sát.
Đổi mới và đóng góp
Điểm mới về mặt kỹ thuật
- Ứng dụng kiến trúc Blazor SPA trong WebGIS: Thay thế mô hình WebGIS truyền thống (thường dựa trên server-rendered HTML hoặc các thư viện GIS desktop cồng kềnh) bằng Microsoft Blazor WebAssembly/Server, giúp giảm $40%$ lượng dữ liệu truyền tải qua mạng khi chuyển đổi giữa các tác vụ quản trị và tra cứu bản đồ.
- Chuẩn hóa quy trình thu thập dữ liệu GIS từ Google Earth: Quy trình trích xuất tọa độ Polygon vùng cách ly thông qua Google Earth và chuyển đổi thành định dạng mảng tọa độ lưu trữ trực tiếp trong CSDL quan hệ SQL Server, loại bỏ sự phụ thuộc vào các máy chủ GIS trung gian tốn kém chi phí bản quyền như ArcGIS Server.
Bảng so sánh với các giải pháp hiện hành
| Đặc tính kỹ thuật |
Bản đồ COVID Bộ Y Tế (Dạng Cổng tin) |
Bản đồ ArcGIS COVID-19 |
Hệ thống WebGIS Blazor của đề tài |
| Công nghệ nền tảng |
PHP / CMS |
ESRI ArcGIS Online / Enterprise |
C# .NET / Blazor + Google Maps API |
| Chi phí bản quyền |
Thấp |
Rất cao (Giấy phép thương mại) |
Tối ưu (Mã nguồn mở + API Cloud) |
| Tính năng chỉ dẫn bệnh viện |
Không có |
Hạn chế |
Tích hợp điều hướng theo chuyên khoa |
| Khả năng tùy biến quản trị |
Cơ bản |
Phụ thuộc hệ sinh thái ESRI |
Rất cao, can thiệp trực tiếp mã nguồn |
| Tốc độ phản hồi giao diện |
Trung bình |
Khá |
Nhanh (Single Page Application) |
Ứng dụng thực tế và triển khai
Tình huống ứng dụng thực tế
- Cơ quan quản lý Y tế & Ban chỉ đạo phòng chống dịch: Giám sát mật độ phân bố ca nhiễm trên bản đồ nhiệt (Heatmap) hoặc cụm điểm (Marker Clustering), đánh giá nhanh mức độ an toàn của từng phân khu để ra quyết định phong tỏa hoặc gỡ phong tỏa.
- Người dân đô thị: Tra cứu nhanh các điểm nóng dịch tễ gần nơi cư trú hoặc trên lộ trình di chuyển, chủ động khai báo y tế khi có tiếp xúc gần và tìm kiếm đường đi an toàn nhất tới cơ sở cấp cứu/khám chữa bệnh.
+-------------------+ +-------------------+ +-------------------+
| Thu thập dịch tễ | ---> | Xử lý WebGIS | ---> | Quyết định y tế |
| (F0, F1, Vùng CL) | | (Bản đồ / Lộ trình| | (Khoanh vùng/Điều |
+-------------------+ +-------------------+ | trị kịp thời) |
+-------------------+
Yêu cầu cấu hình triển khai hệ thống
- Server:
- Hệ điều hành: Windows Server 2016/2019/2022 hoặc Ubuntu Linux 20.04 LTS.
- Runtime: .NET Core 3.1 Runtime / .NET 5 Hosting Bundle.
- CSDL: Microsoft SQL Server 2017+ Standard hoặc Express Edition.
- Web Server: IIS 10.0 (trên Windows) hoặc Nginx/Kestrel reverse proxy (trên Linux).
- Client: Trình duyệt web hiện đại hỗ trợ HTML5, WebAssembly và JavaScript ES6 (Google Chrome, Microsoft Edge, Mozilla Firefox, Safari).
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Hệ thống dựa trên dịch vụ bản đồ thương mại Google Maps API, có thể phát sinh chi phí nếu vượt ngưỡng định mức truy vấn miễn phí (Quota limit).
- Dữ liệu ranh giới vùng cách ly hiện được nhập và số hóa thủ công từ Google Earth, chưa có cơ chế đồng bộ tự động theo thời gian thực từ cơ sở dữ liệu GIS quốc gia.
- Chưa tích hợp thuật toán phân tích không gian nâng cao như vùng đệm (Buffer Analysis) tự động cảnh báo bán kính lây nhiễm.
Hướng phát triển trong tương lai
- Tích hợp bản đồ mã nguồn mở: Nghiên cứu chuyển đổi hoặc bổ sung lớp bản đồ nền mã nguồn mở OpenStreetMap (Leaflet.js hoặc OpenLayers) cùng Geoserver / PostGIS để hoàn toàn tự chủ công nghệ và tối ưu chi phí.
- Phát triển ứng dụng Mobile (PWA / MAUI): Tận dụng mã nguồn C# để xây dựng ứng dụng di động cho phép gửi cảnh báo tức thời (Push Notification) khi người dùng di chuyển vào vùng có nguy cơ dịch tễ cao.
- Tích hợp AI dự báo xu hướng: Áp dụng mô hình dự báo chuỗi thời gian kết hợp phân tích tương quan không gian (Spatio-temporal analysis) để dự báo điểm nóng dịch bệnh tiềm năng.
Đối tượng hưởng lợi
- Sinh viên & Học viên ngành Công nghệ thông tin / Hệ thống thông tin / Viễn thám: Nguồn tài liệu tham khảo thực tế về quy trình tích hợp giữa hệ sinh thái phần mềm Microsoft (.NET, Blazor, SQL Server) với dịch vụ bản đồ số Google Maps API và công cụ GIS.
- Lập trình viên (Developers): Cung cấp mô hình tham khảo hoàn chỉnh về kiến trúc ứng dụng đơn trang (SPA), cơ chế gọi chéo Blazor - JavaScript Interop, và kỹ thuật tổ chức CSDL quan hệ lưu trữ dữ liệu không gian.
- Các tổ chức y tế & Doanh nghiệp: Tài liệu minh chứng về tính khả thi của giải pháp chuyển đổi số công tác quản lý dịch tễ với chi phí hợp lý, thời gian triển khai nhanh chóng.
- Nhà nghiên cứu dịch tễ học: Cung cấp phương pháp trực quan hóa dữ liệu không gian hỗ trợ công tác nghiên cứu mô hình lây lan dịch bệnh tại các đô thị mật độ cao.
Câu hỏi thường gặp
1. Hệ thống cần những yêu cầu kỹ thuật gì để triển khai vận hành thực tế?
Để triển khai hệ thống, máy chủ cần cài đặt .NET Core Hosting Bundle, Microsoft SQL Server 2019, và có tài khoản Google Cloud Platform kích hoạt các API: Maps JavaScript API, Geocoding API, Directions API. Phía máy trạm người dùng chỉ cần trình duyệt web tiêu chuẩn có kết nối Internet.
2. Giới hạn mở rộng (Scalability) của hệ thống là bao nhiêu và giải pháp tối ưu khi số lượng điểm dịch tễ tăng cao?
Khi số lượng điểm dịch tễ tăng lên hàng chục nghìn điểm, việc hiển thị toàn bộ Marker riêng lẻ trên trình duyệt sẽ gây giảm hiệu năng (DOM rendering lag). Giải pháp tối ưu là tích hợp kỹ thuật gom cụm điểm (Marker Clustering) hoặc hiển thị bản đồ nhiệt (Heatmap Layer) ở mức phóng to (zoom level) thấp, và chỉ hiển thị chi tiết khi người dùng phóng to từng phân khu.
3. Hệ thống có khả năng tích hợp với cơ sở dữ liệu y tế hiện có không?
Có. Nhờ xây dựng trên nền tảng chuẩn ASP.NET Core và SQL Server, hệ thống dễ dàng mở rộng các RESTful API endpoints hoặc kết nối qua các dịch vụ trung gian (Webhooks / Message Queue) để đồng bộ dữ liệu bệnh nhân từ các phần mềm quản lý bệnh viện (HIS) hoặc cổng khai báo quốc gia.
4. Chi phí bảo trì và vận hành hệ thống ước tính như thế nào?
Chi phí vận hành chủ yếu bao gồm chi phí thuê máy chủ (VPS/Cloud) và chi phí Google Cloud API (trong đó Google cấp hạn mức $200 tín dụng miễn phí hàng tháng, đáp ứng tốt cho quy mô vừa và nhỏ). Nếu chuyển đổi sang Geoserver và OpenStreetMap, chi phí bản quyền API bản đồ sẽ bằng 0.
5. Dữ liệu vùng phong tỏa (Polygon) được lưu trữ và truy vấn như thế nào trong SQL Server?
Tập hợp tọa độ các đỉnh của đa giác được chuẩn hóa dưới dạng chuỗi JSON hoặc định dạng WKT (Well-Known Text). Khi ứng dụng Blazor khởi tạo, dữ liệu chuỗi này được truyền sang hàm JavaScript để khởi tạo đối tượng google.maps.Polygon tương ứng trên bản đồ.
Kết luận
Đề tài khóa luận tốt nghiệp "Xây Dựng WebGIS Giám Sát Dịch Bệnh COVID-19" của tác giả Lê Duy Long dưới sự hướng dẫn của ThS. Báo Văn Tuy đã giải quyết thành công bài toán thực tiễn trong công tác quản lý và giám sát y tế công cộng tại TP. Hồ Chí Minh. Bằng việc kết hợp hiệu quả giữa công nghệ hiện đại Microsoft Blazor, hệ quản trị SQL Server 2019 và nền tảng bản đồ số Google Maps API, công trình không chỉ mang lại giá trị ứng dụng trực tiếp trong thời kỳ phòng chống dịch COVID-19 mà còn mở ra tiềm năng ứng dụng rộng lớn cho việc giám sát các bệnh truyền nhiễm khác (như sốt xuất huyết, cúm mùa) cũng như công tác quản lý hạ tầng đô thị thông minh.