Hiến máu là cách đơn giản và an toàn để cứu sống một người. Tuy nhiên, việc tìm kiếm người hiến và bệnh nhân có nhóm máu phù hợp vẫn còn nhiều thách thức. Thời gian là yếu tố then chốt trong hiến máu, khiến việc kết nối người hiến với bệnh nhân đúng lúc trở nên cực kỳ quan trọng.
Quy trình càng hiệu quả, càng nhiều mạng người được cứu. Bhanu Korthiwada đã giải quyết bài toán này bằng ứng dụng Zindagi - một giải pháp tuyệt vời giúp đẩy nhanh toàn bộ quy trình hiến máu thông qua việc ghép đôi người hiến với bệnh nhân lý tưởng.
Yêu cầu cốt lõi của ứng dụng là truyền dữ liệu với hiệu suất tối đa để cung cấp cập nhật thời gian thực cho người dùng. Mọi độ trễ hay chậm trễ đều làm giảm trải nghiệm người dùng và không đáp ứng được nhu cầu cấp bách của hiến máu.
Để đáp ứng yêu cầu này, Redis được sử dụng làm cơ sở dữ liệu chính của ứng dụng, mang lại tác động lớn đến hiệu suất. Dữ liệu được truyền tải với hiệu suất tối đa. Người dùng nhận được cập nhật thời gian thực. Và quy trình hiến máu trở nên liền mạch.
Hãy cùng tìm hiểu Bhanu đã xây dựng ứng dụng này như thế nào. Trước khi đi sâu vào chi tiết, chúng tôi muốn giới thiệu thêm nhiều ứng dụng thú vị khác trên Redis Launchpad.
Đừng quên ghé thăm sau khi đọc bài viết này!
Cách xây dựng ứng dụng kết nối người hiến máu với bệnh nhân
- Bạn sẽ xây dựng gì?
- Những gì bạn cần?
- Kiến trúc
- Bắt đầu
- Cách sử dụng ứng dụng
- Nó hoạt động như thế nào?
1. Bạn sẽ xây dựng gì?
Bạn sẽ xây dựng một ứng dụng ghép đôi người hiến máu với bệnh nhân có cùng nhóm máu. Điều này thúc đẩy quy trình hiến máu liền mạch, hiệu quả hơn, tiết kiệm thời gian để cứu sống người.
Dưới đây chúng tôi sẽ đi qua từ A-Z những gì cần thiết để hiện thực hóa ứng dụng, cũng như các thành phần cần thiết. Từ khởi đầu đến hoàn thiện, mọi thứ sẽ được chia thành các bước nhỏ để việc xây dựng trở nên dễ dàng nhất.
Sẵn sàng bắt đầu?
Tuyệt, chúng ta bắt đầu ngay!
2. Những gì bạn cần?
RedisJSON: Triển khai tiêu chuẩn ECMA-404, Chuẩn trao đổi dữ liệu JSON, như kiểu dữ liệu gốc.
RediSearch: Cung cấp truy vấn nâng cao, chỉ mục thứ cấp và tìm kiếm toàn văn bản cho Redis.
Redis Pub/Sub: Dùng cho nhắn tin sự kiện, có thể gửi tin nhắn đến bất kỳ số lượng người đăng ký nào trên một kênh.
Telerik: Cung cấp nhiều công cụ phần mềm cho phát triển web, mobile, desktop và hơn thế nữa.
Blazor: Framework web mã nguồn mở miễn phí cho phép xây dựng ứng dụng web bằng C# và HTML.
.NET Core Runtime – Cung cấp dịch vụ cơ bản cho các ứng dụng kết nối internet.
3. Kiến trúc
4. Bắt đầu
Điều kiện tiên quyết
- .NET Core – v5.0.x (phiên bản bản vá mới nhất)
- Visual Studio 2019 16.9 hoặc Visual Studio Code 1.55
- Docker – v19.03.13 (tùy chọn)
- Auth0:
- Domain
- Client ID
- Client Secret
- SMTP (Tùy chọn): Tính năng tùy chọn. Có nhiều nhà cung cấp SMTP. Chọn dựa trên nhu cầu và giá cả. Một số lựa chọn:
- SendGrid by Twilio
- Amazon SES
- Mail Jet
- Mailgun
- SMS: Chức năng SMS chưa được triển khai. Tuy nhiên, đã lên kế hoạch. Dưới đây là một số nhà cung cấp phổ biến:
- Msg91
- Twilio
Cài đặt cục bộ bằng Docker
Điều kiện tiên quyết
- Docker
- Docker Compose
Bước 1. Clone repository:
git clone https://github.com/redis-developer/rediszindagi
Cập nhật file
.envvới thông tin Auth0 và SMTP
Bước 2. Kiểm tra file Docker Compose
File Compose trên xác định hai dịch vụ cơ bản:
- Redismod
- rediszindagi
Redismod tích hợp sẵn các module như RedisJSON và RediSearch được sử dụng cho dự án này. Bạn cần truyền các biến môi trường Auth0. SMTP vẫn tùy chọn. Để đảm bảo tính bền vững, Docker volumes mount đã được thêm vào và ứng dụng được expose ra cổng 80.
Từ terminal/command prompt chạy
docker-compose up -d
Ứng dụng có thể truy cập qua localhost.
5. Cách dữ liệu được lưu trữ
- Dữ liệu yêu cầu được lưu trữ trong nhiều khóa và nhiều kiểu dữ liệu.
- Đối với mỗi yêu cầu:
- ID:
Guid
dưới dạng chuỗi - Nhóm máu, Loại hiến, Độ ưu tiên, Trạng thái:
C# ENUM
- ID:
- Đối với mỗi yêu cầu:
- Redis JSON
- Khóa hồ sơ người dùng: tiền tố:
USER_PROFILE
hậu tố: Auth0 name identifier - Khóa yêu cầu: tiền tố:
BLOOD_REQUEST
hậu tố: chuỗi Guid
- Khóa hồ sơ người dùng: tiền tố:
- Redis Publish:
- Yêu cầu: Mọi yêu cầu hiến máu mới sẽ publish request id dưới dạng message đến topic
URN:BLOODREQUESTS:NEW
- Yêu cầu: Mọi yêu cầu hiến máu mới sẽ publish request id dưới dạng message đến topic
Cách dữ liệu được truy cập:
- Mẫu Repository C# được sử dụng, mọi lời gọi sẽ tạo instance sử dụng Connection Multiplexer
6. Cách sử dụng ứng dụng
Tạo tài khoản hoặc đăng nhập
Để tận dụng đầy đủ ứng dụng, người hiến máu cần tạo tài khoản. Bạn có thể làm điều này trên trang chủ bằng cách nhấp vào 'Đăng ký ngay'.
Thực hiện hiến máu
Nhấp vào nút hiến máu ở thanh điều hướng trên cùng. Sau đó bạn sẽ điền các trường thông tin để cập nhật nhóm máu và lượng máu muốn hiến vào cơ sở dữ liệu.
Nhận yêu cầu hiến máu
Sau khi tạo tài khoản, bệnh nhân phù hợp với nhóm máu của bạn sẽ được thông báo về sự sẵn sàng của bạn. Họ có thể gửi yêu cầu hiến máu. Để xem danh sách yêu cầu, nhấp vào tab 'Yêu cầu' trên thanh điều hướng. Tại đây bạn sẽ có cái nhìn tổng quan hoàn chỉnh về tất cả yêu cầu bệnh nhân gửi cho lượt hiến máu của bạn.
Kết luận: Cầu nối bệnh nhân với người hiến máu để cứu sống người nhờ Redis
Truy cập máu nhanh chóng là ranh giới giữa sống và chết đối với nhiều bệnh nhân. Việc ghép đôi người hiến với bệnh nhân phù hợp thường tốn nhiều thời gian, mỗi giây trôi qua đều đe dọa tính mạng bệnh nhân. Ứng dụng của Bhanu giúp loại bỏ rào cản này nhờ khả năng truyền dữ liệu giữa các thành phần với tốc độ ánh sáng của Redis.
Việc truyền dữ liệu hiệu quả như vậy cho phép Zindagi nhanh chóng ghép đôi người hiến máu với bệnh nhân phù hợp dựa trên các tiêu chí cho trước. Điều này đẩy nhanh toàn bộ quy trình hiến máu, cho phép người hiến và bệnh nhân tương tác thời gian thực và sắp xếp hiến máu.
Cốt lõi của ứng dụng là khả năng tập hợp tất cả các bên liên quan, cung cấp hướng đi tối ưu. Điều này có nghĩa là nhiều lượt hiến máu hơn, ít thời gian lãng phí hơn, và trải nghiệm hoàn toàn liền mạch cho mọi người.
Để hiểu trực quan hơn về cách ứng dụng hoạt động, hãy xem video YouTube này. Nếu bạn thích bài viết, hãy ghé Redis Launchpad để khám phá nhiều ứng dụng đổi mới đang tác động đến đời sống hàng ngày.
Chúng tôi có ứng dụng theo dõi xe buýt thời gian thực trên bản đồ. Có ứng dụng ngăn ngừa thiếu hụt vật tư tại bệnh viện ở các nước đang phát triển. Và nhiều hơn thế nữa đang chờ bạn khám phá.
Hãy ghé thăm ngay!
Ai đã tạo ứng dụng?
Bhanu Korthiwada
Bhanu là kỹ sư phần mềm giàu kinh nghiệm, hiện đang làm tư vấn viên cấp cao tại ADP. Nếu bạn muốn cập nhật các dự án mới nhất của anh, hãy theo dõi anh trên GitHub.