GIỚI THIỆU TỔNG QUAN
Giới thiệu đề tài
Hiện nay mạng lưới cấp cứu ngoại viện đã phát triển mạnh về số lượng, bao gồm
Hệ thống cấp cứu ngoại viện tại thành phố bao gồm 1 trung tâm và 33 trạm cấp cứu vệ tinh, phục vụ 24 quận huyện, đã nâng cao khả năng đáp ứng nhu cầu y tế khẩn cấp với số lượt cấp cứu tăng từ hơn 8,000 vào năm 2015 lên hơn 25,000 vào năm 2019 Tuy nhiên, hệ thống vẫn chưa đáp ứng đủ nhu cầu của người dân, do việc tiếp nhận thông tin và điều phối lực lượng cấp cứu còn thô sơ, chủ yếu dựa vào ghi chép thủ công và điện thoại bàn, dẫn đến kéo dài thời gian cấp cứu Trong bối cảnh xây dựng đô thị thông minh, việc phát triển hạ tầng dữ liệu y tế, đặc biệt là dữ liệu liên quan đến cấp cứu như tai nạn giao thông và đột quỵ, là rất cần thiết để nâng cao hiệu quả quản lý và đáp ứng nhu cầu phát triển của thành phố.
Mặc dù Trung tâm cấp cứu 115 TpHCM đã áp dụng công nghệ thông tin trong quá trình cấp cứu ngoại viện, nhưng hiệu quả vẫn chưa được tối đa hóa Các trạm cấp cứu và nhân viên y tế đã chuyên nghiệp hóa, nhưng chưa có công cụ hỗ trợ từ xa cho người dân Vấn đề lớn nhất hiện nay là sự kết nối giữa bệnh nhân và tổ cấp cứu còn rời rạc, với phương pháp liên lạc duy nhất qua số điện thoại của bệnh nhân, gây phiền phức và tốn kém cho cả hai bên.
Mạng lưới cấp cứu ngoại viện hiện chưa đáp ứng đầy đủ nhu cầu của người dân, với hoạt động các trạm vệ tinh chưa đồng đều và thiếu hụt xe cứu thương cũng như nguồn nhân lực Hơn nữa, các trạm vệ tinh hoạt động chủ yếu dựa vào sự tự nguyện, dẫn đến bệnh viện phải chịu thiệt hại về doanh thu.
Khi đến nơi mà không có bệnh nhân hoặc bệnh nhân đã tự di chuyển do chờ lâu, trung tâm cấp cứu 115 không thể thu phí Ngoài ra, trung tâm còn gặp khó khăn trong việc kết nối và trao đổi với các trạm vệ sinh và bệnh viện để điều phối, hỗ trợ chuyên môn và vận chuyển bệnh nhân.
Xây dựng hệ thống điều hành mạng lưới cấp cứu thông minh là cần thiết để kết nối trung tâm với người dân và kíp xe cứu thương, từ đó giúp điều phối hiệu quả hơn trong việc hỗ trợ cấp cứu và theo dõi tình trạng bệnh nhân Hệ thống cũng cần kết nối với các bệnh viện để cập nhật thông tin về tình trạng bệnh nhân và nhận biết bệnh viện nào đang quá tải, nhằm tối ưu hóa quy trình điều phối Hơn nữa, việc phát triển phần mềm phản hồi đánh giá và số hóa dữ liệu sẽ giúp phân tích định kỳ, nâng cao hiệu quả hoạt động của mạng lưới cấp cứu Dữ liệu cần được cập nhật thường xuyên trên nền tảng dùng chung để đảm bảo tính chính xác và kịp thời.
TP Qua đó phối hợp liên ngành và kịp thời báo cáo cho Sở Y tế những trường hợp khẩn cấp.
Mục tiêu và phạm vi
Mục tiêu tổng quát: Xây dựng hệ thống điều hành cấp cứu tại Trung tâm cấp cứu
Ứng dụng công nghệ thông tin và phương thức quản lý hiệu quả là yếu tố then chốt để đáp ứng nhu cầu điều hành mạng lưới cấp cứu ngoại viện phục vụ người dân Việc tích hợp công nghệ hiện đại sẽ nâng cao khả năng phản ứng nhanh và chính xác trong các tình huống khẩn cấp, đảm bảo an toàn sức khỏe cộng đồng.
- Tìm hiểu các hoạt động, các quy trình nghiệp vụ chuyên môn trong công tác cấp cứu y tế ngoại viện
Xây dựng ứng dụng web cho trung tâm điều hành nhằm tiếp nhận và điều phối cấp cứu, đồng thời quản lý thông tin liên lạc giữa các trạm cấp cứu, tổ cấp cứu, bệnh viện và bệnh nhân Ứng dụng này sẽ tối ưu hóa quy trình xử lý tình huống khẩn cấp, đảm bảo thông tin được truyền đạt nhanh chóng và chính xác.
- Xây dựng ứng dụng di động (Android) cho bệnh nhân có thể gọi và theo dõi quá trình cấp cứu chuyên môn của trung tâm cấp cứu
- Xây dựng ứng dụng di động (Android) hỗ trợ tổ cấp cứu theo dõi thông tin bệnh nhân, thực hiện các nghiệp vụ cấp cứu chuyên môn
- Hệ thống phải đáp ứng được mục tiêu thông tin liên lạc và kết nối giữa các bên tham gia vào hệ thống
- Hiển thị bản đồ trực quan và thông tin liên quan lên bản đồ
- Thiết kế UX/UI theo ngôn ngữ thiết kế Material Design
- Phạm vi địa lý: khu vực địa phận Thành phố Hồ Chí Minh
- Phạm vi người dùng: mọi lứa tuổi và mọi giới tính
Hệ thống quản lý thông tin cho trung tâm cấp cứu bao gồm các chức năng chính như tiếp nhận, theo dõi, điều phối và xử lý chuyên môn cho YCCC Nó cho phép tạo YCCC và theo dõi thông tin quá trình cấp cứu của bệnh nhân, đồng thời cung cấp khả năng xem thông tin trên bản đồ trực quan theo thời gian thực Ngoài ra, hệ thống cũng hỗ trợ nhận thông báo và liên lạc theo thời gian thực, giúp nâng cao hiệu quả trong công tác cấp cứu.
Nền tảng triển khai bao gồm ứng dụng di động dành cho bệnh nhân và nhân viên y tế, những người cần di chuyển liên tục, cùng với ứng dụng web sử dụng Angular và ASP.NET phục vụ cho trung tâm điều hành và bệnh viện, nhằm hỗ trợ công tác quản lý và điều phối hiệu quả.
Ý nghĩa thực tiễn
Năng cao chất lượng đảm bảo sức khỏe cho người bệnh:
Bệnh nhân cấp cứu được đảm bảo phục vụ nhanh chóng với các phương tiện và công cụ cần thiết để tiếp cận dịch vụ cấp cứu Họ có khả năng chủ động nắm bắt thông tin về tình trạng cấp cứu hiện tại của bản thân và người thân.
- Bảo vệ sự sống và an toàn của con người
- Cải thiện chất lượng cuộc sống (Thành phố an toàn – thành phố thông minh) và điều kiện xã hội tốt hơn cho người dân
- Giúp giảm hoặc ngăn ngừa tổn thất kinh tế (Đảm bảo và duy trì cuộc sống cũng như hoạt động của người dân)
Nâng cao hiệu quả công tác quản lý, điều hành, cấp cứu:
- Nâng cao năng lực điều hành của Trung tâm cấp cứu, giúp nhà quản lý ra quyết định nhanh, chính xác và hiệu quả gần như tức thì
Lãnh đạo bệnh viện liên kết với trạm cấp cứu ngoại viện cần nâng cao chỉ đạo cấp cứu trong khu vực quản lý, đảm bảo thực hiện quy trình cấp cứu đúng chuyên môn Việc này sẽ giúp lực lượng cấp cứu ngoài viện hoạt động hiệu quả hơn và nâng cao chất lượng dịch vụ y tế.
Kết quả dự kiến
- Tìm hiểu các hoạt động, các quy trình nghiệp vụ chuyên môn trong công tác cấp cứu y tế ngoại viện
- Nâng cao khả năng cứu chữa cho bệnh nhân so với quy trình hiện tại là kết quả mong muốn nhất của đề tài và hệ thống
- Bệnh nhân không còn phải thực hiện các bước YCCC phức tạp, mất thời gian như trước
- Nhận được tín hiệu cấp cứu ngày lập tức đến từ Bệnh nhân, mang lại khả năng ứng phó kịp thời trong những tình huống cấp thiết
- Thông tin liên lạc giữa các bên được kết nối liên tục và nhanh chóng với độ chính xác thời gian thực
- Lưu trữ và quản lý các thông tin, áp dụng quy trình nghiệp vụ chuyên môn dễ dàng hơn cho Trung tâm và các Nhân viên
- Hoàn thành các mục tiêu đã đề ra
CÔNG NGHỆ SỬ DỤNG
Ứng dụng di động trên hệ điều hành Android
2.1.1 Cơ bản về ứng dụng Android
Android là một hệ điều hành di động mã nguồn mở, dựa trên một phiên bản tùy chỉnh của Kernel Linux, thiết kế để hoạt động trên các thiết bị cảm ứng như smartphone và tablet Ứng dụng Android được phát triển chủ yếu bằng các ngôn ngữ lập trình như Kotlin, Java và C++, cũng như các công nghệ Cross-platform như ReactNative và Flutter Để phát triển ứng dụng Android, lập trình viên sử dụng Android SDK và Android Studio, bộ công cụ giúp biên dịch mã nguồn và tài nguyên thành Android package (.apk) File APK chứa toàn bộ nội dung của ứng dụng và được sử dụng để cài đặt trên các thiết bị chạy Android.
Hệ thống Android hoạt động theo nguyên tắc quyền hạn tối thiểu, cho phép mỗi ứng dụng chỉ truy cập vào các thành phần cần thiết để thực hiện chức năng của mình Điều này tạo ra một môi trường an toàn, ngăn chặn các ứng dụng truy cập vào các phần khác của hệ thống mà không có quyền Tuy nhiên, vẫn tồn tại một số phương pháp để chia sẻ dữ liệu và sử dụng các thành phần của hệ thống.
2.1.1.1 Các thành phần ứng dụng (App Components)
Thành phần ứng dụng (App Components) là các khối xây dựng cơ bản của ứng dụng Android, cho phép hệ thống hoặc người dùng truy cập vào ứng dụng Các loại components trong ứng dụng Android bao gồm nhiều thành phần khác nhau, mỗi thành phần đóng vai trò quan trọng trong việc khởi động và vận hành ứng dụng.
- Activities: Là một điểm bắt đầu cho một hoạt động tương tác với phía người dùng Nó đại diện cho một màn hình với các giao diện người dùng
- Services: Là một điểm bắt đầu cho mục đích muốn giữ cho ứng dụng được hoạt động ngầm (background) hoặc thông báo (foreground / notifications)
- Broadcast receivers: Là một thành phần chuyên dùng để phân phối và phản hồi các sự kiện có phạm vi toàn hệ thống
- Content providers: Là một thành phần cho phép chia sẽ dữ liệu trong ứng dụng, dữ liệu SQLite, dữ liệu trển dĩa, cho các ứng dụng khác
In Android development, three of the four component types—activities, services, and broadcast receivers—can be triggered by an asynchronous call known as an Intent Intents serve to connect these components during runtime, issuing requests for actions and specifying which components are active within the application.
Trước khi khởi động một thành phần của ứng dụng trên hệ thống Android, hệ thống cần nhận diện các thành phần này thông qua việc đọc tệp tin manifest của ứng dụng Tệp tin manifest có định dạng XML và chứa các thông tin quan trọng về ứng dụng.
The primary role of the manifest is to declare essential information about the application's components, including for activities, for services, for broadcast receivers, and for content providers.
- Xác định các quyền của người dùng mà ứng dụng yêu cầu như là: truy cập thông tin vị trí GPS, truy cập internet,
- Khai báo API Level nhỏ nhất (phiên bản tối thiểu) của hệ điều hành để có thể sử dụng
- Khai báo các tính năng phần mềm, phần cứng cho ứng dụng như camera, bluetooth,
- Khai báo các thư viện API liên quan như Google Maps library
Lớp Activity là một thành phần quan trọng trong ứng dụng Android, khác với mô hình lập trình truyền thống khởi động từ hàm main Hệ thống Android khởi tạo một thể hiện của Activity và gọi các hàm callback tương ứng với từng trạng thái trong chu trình sống của activity Hầu hết các ứng dụng đều có nhiều màn hình, tức là nhiều activities, trong đó một activity thường được chọn làm activity chính, hiển thị đầu tiên khi người dùng khởi động ứng dụng Mỗi activity có khả năng khởi động các activity khác tùy thuộc vào mục đích cụ thể của thao tác.
Khi người dùng tương tác với ứng dụng, Activity sẽ chuyển đổi giữa các trạng thái trong lifecycle, với lớp Activity cung cấp các hàm callback để theo dõi sự thay đổi trạng thái như creating, resuming và destroying Các hàm callback như onCreate(), onStart(), onResume(), onPause(), onStop() và onDestroy() cho phép chúng ta định nghĩa hành vi của Activity tương ứng với các thao tác của người dùng khi khởi động, rời khỏi hoặc quay lại ứng dụng Hệ thống sẽ tự động gọi các hàm callback này khi Activity chuyển sang trạng thái mới.
9 Hình 2-1: Lifecycle của Activities trong Android Java
Fragment là một thành phần tái sử dụng trong giao diện ứng dụng, với layout và lifecycle riêng Nó có khả năng xử lý sự kiện đầu vào thông qua các hàm callback, tương tự như activity Tuy nhiên, fragment không thể hoạt động độc lập mà cần phải gắn liền với lifecycle của activity hoặc một fragment khác.
Fragment giúp module hóa và tái sử dụng giao diện người dùng (UI) của activity bằng cách chia nhỏ UI thành các thành phần riêng lẻ Trong khi các activity thường chứa các thành phần giao diện toàn cục như thanh điều hướng, fragment lại phù hợp hơn để định nghĩa và quản lý UI cho một màn hình hoặc một phần của màn hình.
Mỗi fragment đều có vòng đời riêng, và khi người dùng thực hiện các thao tác điều hướng, trạng thái của fragment sẽ được chuyển đổi tương tự như activities Khi trạng thái thay đổi, fragment sẽ gọi các hàm callback như onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() cùng một số hàm callback khác.
Service là thành phần cơ bản trong ứng dụng, hỗ trợ thực hiện các tác vụ dài hạn với hai dạng hoạt động: foreground và background Trong dạng background, service không có giao diện người dùng, trong khi đó, foreground chỉ hiển thị thông báo trên thanh trạng thái Khi được khởi động, service có thể tiếp tục hoạt động ngay cả khi người dùng chuyển sang ứng dụng khác Hiện tại, có ba loại service: foreground, background và bound.
Khi khởi động một service, hệ thống mặc định coi đó là một background service, hoạt động ngầm mà người dùng không nhận biết Ngược lại, foreground service là loại dịch vụ mà người dùng có thể thấy và tương tác trực tiếp, thường yêu cầu sự chú ý và hiển thị thông tin rõ ràng trên giao diện.
Foreground service là loại dịch vụ hoạt động để thực hiện một tác vụ mà người dùng cần biết, chẳng hạn như các ứng dụng nghe nhạc hiển thị trình điều khiển player Dịch vụ này phải hiển thị thông báo trên thanh trạng thái và sẽ tiếp tục hoạt động ngay cả khi người dùng không tương tác với ứng dụng Thông báo này chỉ có thể bị loại bỏ khi ứng dụng dừng lại.
Like activities and fragments, a service has its own lifecycle that spans from its initialization to its termination Callback methods such as onStartCommand(), onBind(), onCreate(), and onDestroy() are invoked, similar to those in activities and fragments.
2.1.3 Sử dụng vị trí người dùng
Dịch vụ Google Maps Platform
2.2.1 Giới thiệu về Google Maps Platform
GMP là bộ công cụ bao gồm các APIs và SDKs cho phép lập trình viên tích hợp Google Maps vào ứng dụng di động và trang web, cũng như truy xuất dữ liệu từ Google Maps Nó cung cấp nhiều dịch vụ hữu ích liên quan đến hệ thống thông tin địa lý, cho phép người dùng lựa chọn sử dụng một hoặc kết hợp nhiều APIs và SDKs tùy theo nhu cầu.
Bản đồ cho phép hiển thị dưới dạng hình ảnh hoặc tương tác, với khả năng tùy chỉnh thông qua các markers, lines, màu sắc, polygons và hình ảnh Có nhiều APIs và SDKs hỗ trợ, bao gồm: Maps JavaScript API, Maps SDK for Android, Maps SDK for iOS, Maps Static API và Maps URLs.
Routes giúp người dùng tìm ra lộ trình tối ưu từ điểm A đến Z với dữ liệu và thông tin giao thông theo thời gian thực Các tính năng chính bao gồm Directions, cung cấp chỉ đường cho phương tiện công cộng, xe đạp, ô tô và đi bộ, với thời gian di chuyển được tính toán dựa trên tình hình giao thông hiện tại Bên cạnh đó, Distance Matrix cung cấp thông tin về thời gian và khoảng cách di chuyển cho một hoặc nhiều địa điểm, giúp người dùng lập kế hoạch di chuyển hiệu quả hơn.
Places giúp người dùng khám phá thông tin chi tiết về hơn 200 triệu địa điểm thú vị trên bản đồ Google Maps Các tính năng liên quan đến Places bao gồm tìm kiếm, xem thông tin chi tiết, hình ảnh và tự động điền thông tin, mang đến trải nghiệm thuận tiện và phong phú cho người dùng.
Trong phạm vi của ứng dụng, ở đây chúng ta sẽ sử dụng hai dịch vụ của GMP là Maps và Routes
2.2.2 Một số ứng dụng có thể xây dựng
Dựa vào các dịch vụ mà GMP cung cấp, chúng ta có thể phát triển nhiều ứng dụng hữu ích, mang lại lợi thế vượt trội so với các ứng dụng cạnh tranh khác.
Chia sẻ phương tiện di chuyển như Grab, GoViet và Be là những ứng dụng "xe ôm công nghệ" tiên tiến Việc tích hợp Google Maps vào các ứng dụng này giúp tài xế dễ dàng điều hướng, từ đó giảm thiểu thời gian chờ đợi cho khách hàng.
Gaming: Tạo ra các trò chơi nhập vai thế giới thực với hàng triệu mô hình 3D thực tế, sử dụng dữ liệu được cập nhật liên tục từ bản đồ thế giới thực, giúp việc tích hợp trở nên mượt mà hơn với Unity Một ví dụ điển hình là Pokemon Go.
Cải thiện hiệu quả kinh doanh bằng cách theo dõi hàng hóa theo thời gian thực, giúp định vị phương tiện và trực quan hóa vị trí của hàng hóa trong các chuyến hàng phức tạp.
Nhiều ứng dụng đã được phát triển dựa trên dịch vụ của Google Maps, mang lại lợi ích cho cả ba bên: Google cung cấp dịch vụ, nhà phát triển ứng dụng và người dùng Việc áp dụng hiệu quả các ứng dụng này có thể tạo ra lợi ích kinh tế đáng kể trong thực tế.
2.2.3 Cách sử dụng và phát triển
2.2.3.1 Bắt đầu sử dụng Google Maps Platform
GMP là dịch vụ con của GCP, do đó cần đăng ký GCP để sử dụng Để đăng ký, người dùng có thể sử dụng tài khoản Google, nhưng để sử dụng các dịch vụ tính phí như GMP, cần tạo tài khoản thanh toán Các loại thẻ thanh toán quốc tế như thẻ Debit hoặc Credit của Visa hoặc MasterCard được chấp nhận.
Về phần chi phí sử dụng các API của GMP như sau:
- Miễn phí Map SDK for Android
- Đối với Maps Javascript API có giá mỗi 1000 request là $7
- Directions và Directions Advanced của Routes lần lượt là $5 và $10 mỗi 1000 request
- Geocoding của Places là $5 mỗi 1000 request
GMP cung cấp cho chúng ta $200 miễn phí mỗi tháng để sử dụng các dịch vụ Điều này có nghĩa là nếu chúng ta sử dụng các dịch vụ tính phí nhưng vẫn nằm trong giới hạn $200 miễn phí của GMP, thì chúng ta sẽ không phải trả thêm bất kỳ khoản phí nào.
Sau khi tạo tài khoản thanh toán thành công, bước tiếp theo là tạo một project trong Google Cloud Platform (GCP) Project này là đơn vị cơ bản để quản lý dịch vụ tài nguyên, chi phí, cũng như các API và SDK được sử dụng Tất cả chi phí phát sinh trong quá trình sử dụng project sẽ được tính vào tài khoản thanh toán đã liên kết.
Next, we need to activate the APIs and SDKs of Google Mobile Platform (GMP) within the project After that, we will create an API key to utilize GMP in our applications To generate the API key, navigate to the Google Cloud Console of the project, go to the APIs & Services section, and select Credentials to add a new credential.
2.2.3.2 Tổng quan về Map SDK for Android và Map Javascript API
Với Maps SDK for Android, bạn có thể tích hợp bản đồ Google Map vào ứng dụng Android được phát triển bằng Android Studio API sẽ tự động quản lý việc truy cập và tải dữ liệu từ máy chủ Google Map, hiển thị bản đồ và xử lý các thao tác của người dùng Bên cạnh đó, bạn có thể sử dụng API để thêm các marker, hình vẽ và điều chỉnh góc nhìn của người dùng trong một khu vực cụ thể.
Tổng quan về các bước để có thể thêm một bản đồ vào trong ứng dụng Android:
2 Cài đặt và cấu hình Google Play Service SDK, nó bao gồm Maps SDK cho Android
3 Thêm những cài đặt bắt buộc dành cho ứng dụng vào trong tập tin manifest
4 Thêm các dependency của Map vào trong tập tin build.gradle
2.2.3.3 Tổng quan về Routes và Places
Direction API là dịch vụ tính toán lộ trình giữa hai hoặc nhiều địa điểm thông qua giao thức HTTP Với Direction API, người dùng có thể dễ dàng xác định đường đi và tối ưu hóa lộ trình di chuyển.
- Tìm kiếm chỉ đường theo nhiều loại phương tiện di chuyển như phương tiện công cộng, xe hơi, xe máy hoặc đi bộ
- Kết quả trả về là một chuỗi các bước di chuyển từ đến các địa điểm cần thiết
Google Firebase Cloud
Firebase, nền tảng phát triển phần mềm do Firebase Inc phát triển và được Google cung cấp từ năm 2014, là giải pháp Backend-as-a-Service cho ứng dụng di động và web Nền tảng này bao gồm các dịch vụ hỗ trợ xây dựng, kiểm thử và quản lý ứng dụng hiệu quả.
BaaS là giải pháp giúp loại bỏ việc tự quản lý cơ sở dữ liệu backend và phần cứng liên quan Firebase được ưa chuộng vì hỗ trợ các nhà phát triển xây dựng hệ thống Client-Server nhanh chóng, tiết kiệm công sức và giảm chi phí cho máy chủ.
2.3.2 Tính năng và lợi ích khi sử dụng Firebase
2.3.2.1 Các chức năng chính của Firebase a) Firebase Authentication
Hầu hết các ứng dụng yêu cầu định danh người dùng để bảo mật dữ liệu và cá nhân hóa trải nghiệm trên tất cả thiết bị Việc này không chỉ giúp bảo vệ thông tin cá nhân mà còn nâng cao sự tương tác của người dùng với ứng dụng.
Firebase Authentication offers backend services that simplify account authentication through easy-to-use SDKs and UI libraries It supports various authentication methods, including passwords, phone numbers, and third-party providers like Google, Facebook, and Twitter Additionally, Firebase Realtime Database enables real-time data synchronization, enhancing the app development experience.
Firebase Realtime Database là một dịch vụ cơ sở dữ liệu đám mây, nơi dữ liệu được lưu trữ dưới dạng JSON và đồng bộ theo thời gian thực khi các client kết nối Khi phát triển ứng dụng đa nền tảng cho iOS, Android và Javascript, tất cả các client sẽ chia sẻ một thể hiện duy nhất của Realtime Database và tự động nhận cập nhật khi có dữ liệu mới.
Cloud Firestore là một cơ sở dữ liệu linh hoạt và mở rộng, lý tưởng cho phát triển ứng dụng di động, web và server Nó đồng bộ dữ liệu theo thời gian thực với các ứng dụng client thông qua listener, tương tự như Realtime Database Firestore cũng hỗ trợ tình huống offline, đảm bảo ứng dụng vẫn phản hồi ngay cả khi kết nối mạng bị chậm hoặc không có.
Using Firebase Cloud Messaging, we can send notifications to client applications, similar to receiving a new email notification or an update on data.
Chúng ta có thể sử dụng tin nhắn thông báo để tăng cường sự tham gia và giữ chân người dùng Người dùng sẽ được phép gửi tin nhắn miễn phí ngay lập tức với dung lượng tối đa lên đến 4KB.
2.3.2.2 Lợi ích của Google Firebase a) Xây dựng ứng dụng nhanh chóng
Firebase giúp lập trình viên tiết kiệm thời gian trong việc phát triển ứng dụng phía client mà không cần lo lắng về việc quản lý hệ thống backend Nó hỗ trợ xây dựng ứng dụng đa nền tảng, bao gồm mobile, web và game, đồng thời cung cấp một số tính năng miễn phí.
Firebase bắt đầu với chính sách miễn phí, không yêu cầu thẻ thanh toán Hầu hết các dịch vụ của Firebase đều miễn phí hoặc có giới hạn sử dụng rất lớn Khi người dùng cần thêm dung lượng hoặc muốn sử dụng dịch vụ đặc biệt, chỉ cần thanh toán cho những gì họ sử dụng, theo mô hình "Pay as you go" Điều này mang lại tính linh hoạt và khả năng mở rộng cao cho người dùng.
Nhà phát triển có thể tùy chỉnh và kết hợp các dịch vụ của Firebase để xây dựng server riêng, bên cạnh việc sử dụng trực tiếp các dịch vụ này Firebase hỗ trợ tích hợp với nhiều công nghệ backend như Node.JS, Java và Python, mang đến sự linh hoạt trong việc phát triển ứng dụng.
Go và C# để tùy biến việc quản lý backend d) Tài liệu hướng dẫn đầy đủ
Tài liệu hướng dẫn sử dụng dịch vụ và SDK của Firebase rất chi tiết, cung cấp thông tin cần thiết để tích hợp các công nghệ hỗ trợ Ngoài ra, kênh YouTube của Firebase còn có video hướng dẫn giúp người dùng dễ dàng nắm bắt kiến thức.
2.3.3 Cách sử dụng và phát triển
Similar to the Google Map Platform, using Firebase requires creating a project in the Firebase Console for your application After that, you need to register the application you want to add to Firebase, which can be Android, iOS, or Web, with Firebase providing guidance on the registration steps For Android, to set up Firebase dependencies, you must add the google-services.json file (downloaded from Firebase) to the app directory of your Android project Additionally, configure and include the necessary Firebase dependencies in the build.gradle files located in both the root and app directories of the project.
NGHIÊN CỨU THỰC NGHIỆM
Phân tích, làm rõ, đặc tả yêu cầu
3.1.1 Xác định yêu cầu hệ thống
Theo khảo sát và tài liệu, Trung tâm cấp cứu 115 Thành phố Hồ Chí Minh không chỉ quản lý danh sách nhân viên, bệnh viện và trạm cấp cứu mà còn thực hiện quy trình nghiệp vụ đặc thù cho công tác y tế khẩn cấp phục vụ người dân.
Bảng 3-1: Mô tả quy trình cấp cứu ngoại viện hiện tại
Trách nhiệm Các bước thực hiện Mô tả / tài liệu liên quan
Bộ phận điều hành Tiếp nhận thông tin
Tiếp nhận thông tin thông tin YCCC: địa điểm, khoa phòng, số người cần cấp cứu, tình trạng hiện tại,
- Bác sĩ trực cấp cứu
Ra lệnh cấp cứu ngoại viện
Thông báo lệnh điều động Tổ cấp cứu ngoại viện
TCCNV Tiếp nhận lệnh và sẵn sàng lên đường
Tổ trưởng TCCNV đã thông báo và khẩn trương tập hợp tất cả các thành viên Điều dưỡng tiến hành kiểm tra danh mục thuốc men và trang thiết bị cấp cứu, nhằm đảm bảo mọi thứ sẵn sàng cho việc cấp cứu.
Xe cấp cứu ngoại viện thường trực 24/24 giờ ở vị trí quy định
Sẵn sàng mọi điều kiện trong vòng 5 phút
Tùy trường hợp cấp cứu, Tổ trưởng TCCNV điều động bác sĩ Nội/Ngoại Bác sĩ Nội/Ngoại có mặt ở TCCNV trong vòng
TCCNV Cấp cứu tại hiện trường
Khẩn trương triển khai cấp cứu: phân loại và sơ cứu, ra y lệnh xử trí kịp thời
Sau khi đánh giá tình trạng bệnh nhân, nếu bệnh nhân nhẹ và ổn định, có thể chăm sóc tại nhà; trong trường hợp bệnh nhân nặng, cần vận chuyển ngay đến trạm cấp cứu hoặc bệnh viện phù hợp Trong quá trình vận chuyển, cần liên tục cập nhật thông tin cho bệnh viện tiếp nhận để đảm bảo sự chuẩn bị kịp thời.
Ghi vào phiếu chuyển viện và sổ cấp cứu ngoại viện đầy đủ nội dung theo quy định
TCCNV Báo cáo và lưu hồ sơ Trong và sau khi hoàn thành cấp cứ phải báo cáo với Trung tâm và ghi sổ báo cáo
22 Hình 3-1: Sơ đồ BPMN quy trình cấp cứu ngoại viện hiện tại
Qua quá trình khảo sát và nghiên cứu các tài liệu liên quan, Trung tâm cấp cứu đã triển khai một hệ thống nhằm giải quyết các vấn đề đã nêu Hệ thống này được phân chia thành các nhóm chức năng tương ứng với các phân loại người dùng khác nhau.
Nhóm người dùng quản trị viên bao gồm các chức năng quan trọng như quản lý bệnh viện, quản lý trạm cấp cứu, quản lý tổ cấp cứu, quản lý tài khoản, và quản lý vật tư, thiết bị y tế.
Nhóm người dùng cấp cứu viên có vai trò quan trọng trong việc quản lý vật tư và thiết bị y tế, cũng như xem và cập nhật thông tin cấp cứu Họ thực hiện tiếp nhận cấp cứu, sơ cứu và xử trí ban đầu, di chuyển bệnh nhân về trạm, yêu cầu chuyển viện khi cần thiết, và nhập viện hoặc nhập trạm Cuối cùng, họ lập báo cáo và kết thúc quá trình cấp cứu để đảm bảo mọi thông tin được ghi nhận đầy đủ và chính xác.
- Nhóm người dùng bệnh viện: o Xem và cập nhật thông tin cấp cứu o Tiếp nhận chuyển viện
- Nhóm người dùng điều phối viên: o Xem và cập nhật thông tin cấp cứu o Tiếp nhận cấp cứu
- Nhóm người dùng bệnh nhân: o Tạo YCCC o Xem và cập nhật thông tin cấp cứu
3.1.2 Phân tích yêu cầu hệ thống
3.1.2.1 Phần ứng dụng di động Android (Bệnh nhân) Đăng ký: Ứng dụng dành cho Bệnh nhân cần phải gửi thông tin đến cho các người dùng khác trong hệ thống Vì thể cần phải có tài khoản để xác định đúng định danh của người đang thực hiện yêu cầu Bệnh nhân có thể đăng ký tài khoản mới theo kiểu truyền thống (email và password) Nhưng trong một số tình huống khẩn cấp, bệnh nhân có thể đăng ký nhanh để tiết kiệm thời gian Sau đó hoàn toàn có thể chuyển đổi sang tài khoản chính thức Đăng nhập: Bệnh nhân sử dụng tài khoản đã đăng ký để xác thực định danh và phân quyền trong ứng dụng Khi đăng nhập vào ứng dụng, bệnh nhân có thể sử dụng các chức năng dành cho họ
Chức năng chính của YCCC là cho phép bệnh nhân tạo một YCCC và gửi ngay đến trung tâm Thông tin có sẵn trong tài khoản bệnh nhân sẽ được tự động tích hợp vào YCCC, giúp tiết kiệm thời gian trong việc gọi cấp cứu.
Trong quá trình cấp cứu, bệnh nhân có thể xem và cập nhật thông tin của mình để đảm bảo tính chính xác Thông tin này sẽ được cập nhật liên tục mỗi khi có sự thay đổi, giúp bệnh nhân theo dõi tình trạng của mình một cách hiệu quả.
3.1.2.2 Phần ứng dụng di động Android (Cấp cứu viên) Đăng nhập: Cấp cứu viên sử dụng tài khoản đã cấp để xác thực định danh và phân quyền trong ứng dụng Khi đăng nhập vào ứng dụng, cấp cứu viên có thể sử dụng các chức năng dành cho họ
Cập nhật thông tin YCCC trong suốt quá trình cấp cứu là rất quan trọng Cấp cứu viên có thể xem và điều chỉnh thông tin để đảm bảo tính chính xác Mỗi khi có sự thay đổi, thông tin sẽ được cập nhật liên tục, giúp cấp cứu viên theo dõi tình hình một cách hiệu quả Chức năng cập nhật thông tin được thiết kế phù hợp với từng nghiệp vụ cụ thể.
Cấp cứu viên sẽ trực tiếp tiếp nhận YCCC của bệnh nhân mà không cần thông qua Điều phối viên, tùy thuộc vào tình hình hiện tại Sau khi tiếp nhận, thông tin và trạng thái của YCCC sẽ được cập nhật kịp thời.
Cấp cứu viên sẽ tiến hành sơ cứu và xử trí bệnh nhân ngay khi đến nơi, đồng thời cập nhật thông tin và tình trạng của YCCC trong suốt quá trình này.
Trong trường hợp cần quyết định xem bệnh nhân có thể ở nhà tự chăm sóc hay cần được đưa về trạm y tế, các cấp cứu viên sẽ bắt đầu di chuyển về trạm Trong quá trình này, thông tin và tình trạng của bệnh nhân sẽ được cập nhật liên tục.
Trong trường hợp cần chuyển bệnh nhân đến bệnh viện phù hợp để cấp cứu, cấp cứu viên sẽ lập phiếu chuyển viện và gửi đến bệnh viện tiếp nhận Sau khi hoàn tất phiếu chuyển viện, thông tin YCCC sẽ được cập nhật và phiếu chuyển viện sẽ được gửi đến bệnh viện.
Phân tích và thiết kế hệ thống
3.2.1 Thiết kế kiến trúc hệ thống
Hệ thống được chia thành hai thành phần chính: Android App và Web App Android App được phát triển bằng công nghệ Java thuần cho nền tảng Android, trong khi Web App sử dụng ASP.NET cho backend và Angular làm framework frontend, dựa trên Open Source AspNet Boilerplate.
- View: bao gồm các Activity, Fragment chứa mã nguồn xml và java
The ViewModel serves as a bridge between the View and Repository, managing UI logic effectively It facilitates data exchange with the View through Binding and Observation, while also retrieving data or making API calls from the Repository.
Repository là một thành phần quan trọng trong việc tương tác với server backend, bao gồm các công nghệ như ASP.NET và Firebase Nó sử dụng API để thực hiện các thao tác nghiệp vụ, cho phép người dùng lấy và cập nhật dữ liệu một cách hiệu quả.
- MSSQL: là hệ quả trị cơ sở dữ liệu dùng cho việc lưu trữ toàn bộ thông tin của hệ thống
ASP.NET là nền tảng backend server, cung cấp các API cho phép tương tác toàn diện với hệ thống, bao gồm xác thực danh tính, quản lý dữ liệu và chuyển đổi dữ liệu từ Firebase.
Angular là một thành phần frontend server, tương tác trực tiếp với người dùng trên nền tảng web Nó cũng thực hiện các cuộc gọi API tương tự như ứng dụng Android để thực hiện các thao tác nghiệp vụ.
Firebase là một nền tảng cung cấp nhiều dịch vụ đám mây, giúp lập trình viên phát triển ứng dụng nhanh chóng trên các nền tảng như Android, iOS và Web Trong ứng dụng này, tôi đã sử dụng Firebase như một dịch vụ hỗ trợ.
Firebase Authentication là công cụ hỗ trợ xác thực người dùng và đăng ký tài khoản mới Thông tin tài khoản được sao lưu an toàn trên máy chủ chính, thay vì lưu trữ trực tiếp trên Firebase.
- Firebase Realtime Database: dùng như một cached database hỗ trợ trong việc cập nhật thông tin YCCC theo thời gian thực
- Firebase Cloud Messaging: nhằm gửi nhận thông báo, nhắn tin cho người dùng
Google Map API: là các API do dịch vụ GMP cung cấp Có rất nhiều API được sử dụng cho cả phiên bản web và ứng dụng di động:
- Static Map, Dynamic Map: hiển thị bản đồ trong Web App và Android App
- Direction Advanced: chỉ dẫn đường đi cho các loại phương tiện, tính toán thời gian di chuyển dựa trên giao thông hiện tại
- Geocoding: chuyển đổi địa chỉ thành các thông tin tọa độ dùng trong bản đồ
Thiết kế trải nghiệm, giao diện người dùng
3.3.1 Nhóm màn hình xác thực người dùng
Hình 3-9: Giao diện nhóm màn hình xác thực người dùng
Danh sách màn hình (từ trái sang phải):
1 Màn hình Khởi đầu (đăng nhập hoặc tình huống khẩn cấp)
1 Điều hướng sang màn hình Đăng nhập
2 Điều hướng sang màn hình Đăng ký
3 Điều hướng sang màn hình Khởi đầu
4 Điều hướng sang màn hình chính sau khi đã xác thực định danh
3.3.2 Nhóm màn hình chính cho người dùng Bệnh nhân
Hình 3-10: Giao diện nhóm màn hình chính cho người dùng Bệnh nhân
Danh sách màn hình (từ trái sang phải):
1 Màn hình Cấp cứu (gọi cấp cứu)
2 Màn hình Bản đồ (theo dõi vị trí đội cấp cứu)
3 Màn hình Lịch sử (danh sách các lần cấp cứu)
4 Màn hình Tin nhắn (nhắn tin với đội cấp cứu)
5 Màn hình Cài đặt (cập nhật thông tin cá nhân)
1 Nút gọi cấp cứu (giữ trong vòng 3 giây để thực hiện chức năng
2 Nhấp vào một item trong danh sách để sang màn hình Chi tiết cấp cứu
3 Nhấp vào một item trong danh sách để sang màn hình Nhắn tin
4 Nhấp vào để tải lại thông tin tài khoản
5 Nhấp vào để cập nhật thông tin tài khoản lên hệ thống
6 Nhấp vào để đăng xuất vào điều hướng về màn hình Khởi đầu
3.3.3 Nhóm màn hình chính cho người dùng Bác sĩ
Hình 3-11: Giao diện nhóm màn hình chính cho người dùng Bác sĩ
Danh sách màn hình (từ trái sang phải):
1 Màn hình Cấp cứu (danh sách các yêu cầu cấp cứu hiện tại)
2 Màn hình Bản đồ (theo dõi vị trí của các bệnh nhân)
3 Màn hình Lịch sử (danh sách các lần cấp cứu)
4 Màn hình Tin nhắn (nhắn tin với bệnh nhân)
5 Màn hình Cài đặt (cập nhật thông tin cá nhân)
1 Nhấp vào để thực hiện nghiệp vụ tiếp theo cho yêu cầu cấp cứu
2 Nhấp vào để sang màn hình Chi tiết cấp cứu
3 Nhấp vào một item để điều hướng sang màn hình Bản đồ
4 Nhấp vào một item trong danh sách để sang màn hình Chi tiết cấp cứu
5 Nhấp vào một item trong danh sách để sang màn hình Nhắn tin
6 Nhấp vào để tải lại thông tin tài khoản
7 Nhấp vào để cập nhật thông tin tài khoản lên hệ thống
8 Nhấp vào để đăng xuất vào điều hướng về màn hình Khởi đầu
3.3.4 Nhóm màn hình bổ trợ
Hình 3-12: Giao diện nhóm màn hình bổ trợ
Danh sách màn hình (từ trái sang phải):
2 Màn hình Chi tiết Cấp cứu – thông tin nạn nhân
3 Màn hình Chi tiết Cấp cứu – thông tin bệnh án
4 Màn hình Chi tiết Cấp cứu – thông tin chuyển viện
1 Nhấp vào để điều hướng về màn hình chính
2 Nhấp vào để cập nhật thông tin chi tiết cấp cứu
3 Nhấp vào để thực hiện nghiệp vụ tiếp theo cho yêu cầu cấp cứu
4 Nhấp vào để thực hiện nghiệp vụ lập báo cáo
5 Nhấp vào để thực hiện nghiệp vụ yêu cầu chuyển viện