Ứng dụng này sẽ giúp người dùng tiếp cận được với các thông tin về sức khỏe một cách nhanh chóng và chính xác, đồng thời có thể giải đáp các thắc mắc của người dùng về nhiều vấn đề sức k
GIỚI THIỆU CHUNG
Đặt vấn đề
Sức khỏe là tài sản quý giá nhất của con người Tuy nhiên, trong thời đại hiện nay, khi nhịp sống ngày càng bận rộn, áp lực công việc và học tập tăng cao, thì việc chăm sóc sức khỏe đang trở thành một vấn đề nan giải Nhiều người thường xuyên gặp phải các vấn đề về sức khỏe như mệt mỏi, căng thẳng, đau đầu, nhưng lại không có thời gian hoặc không biết cách để tự chăm sóc sức khỏe bản thân Bên cạnh đó, việc tiếp cận với thông tin y tế chính thống cũng gặp nhiều khó khăn Điều này dẫn đến tình trạng nhiều người bệnh tự ý mua thuốc, điều trị sai cách, gây ra những hậu quả nghiêm trọng.
Lý do chọn đề tài
Dựa trên những vấn đề trên, với mong muốn góp phần nâng cao nhận thức và ý thức chăm sóc sức khỏe, em đã lựa chọn đề tài xây dựng một ứng dụng tư vấn sức khỏe cho cộng đồng Ứng dụng này sẽ giúp người dùng tiếp cận được với các thông tin về sức khỏe một cách nhanh chóng và chính xác, đồng thời có thể giải đáp các thắc mắc của người dùng về nhiều vấn đề sức khỏe khác nhau cũng như cung cấp hướng giải quyết các vấn đề đó, từ đó người dùng có thể tự theo dõi và chăm sóc sức khỏe bản thân một cách hiệu quả và nhanh chóng.
Mục tiêu đề tài
• Nghiên cứu công cụ DialogFlow, nền tảng chatbot của Google cung cấp khả năng hiểu ngôn ngữ tự nhiên (NLU) và tạo phản hồi tự động để tạo ra chatbot tư vấn sức khỏe người dùng Chatbot sẽ được đào tạo trên một bộ dữ liệu lớn về các câu hỏi và câu trả lời liên quan đến sức khỏe và các thông tin y tế để phục vụ người dùng
• Nghiên cứu các vấn đề xoay quanh sức khỏe để xây dựng một ứng dụng tư vấn sức khỏe hiệu quả, chính xác, chẳng hạn như các bệnh lý thường gặp, các biện pháp phòng bệnh, Kết quả nghiên cứu sẽ được ứng dụng trong việc xây dựng các tính năng của ứng dụng
• Xây dựng và phát triển ứng dụng trên nền tảng di động, với giao diện thân thiện và dễ sử dụng, đáp ứng nhu cầu tư vấn sức khỏe hay tra cứu thông tin y tế của người dùng ở bất cứ đâu, bất kể thời gian nào
Đối tượng nghiên cứu
Đồ án này hướng đến nghiên cứu các đối tượng sau:
• Người có nhu cầu chăm sóc sức khỏe
• Người có nhu cầu tìm kiếm các thông tin y tế.
Phạm vi nghiên cứu
❖ Phạm vi môi trường: Application
❖ Phạm vi chức năng: Người dùng có thể sử dụng chatbot để tư vấn sức khỏe; tra cứu thư viện sức khỏe về các loại bệnh, thư viện video; biết được tình trạng sức khỏe của bản thân, đặt nhắc nhở và thông báo cho các hoạt động sức khỏe, tạo ghi chú về các vấn đề sức khỏe.
Phương pháp thực hiện
• Phân tích nhu cầu sử dụng của đối tượng người dùng
• Nghiên cứu các tài liệu sức khỏe có liên quan
• Tìm hiểu Firebase để lưu trữ và thao tác với dữ liệu qua ứng dụng
• Tìm hiểu DialogFlow để xây dựng chatbot tư vấn sức khỏe.
CƠ SỞ LÝ THUYẾT
Flutter
Flutter là một Mobile UI Framework dựa trên ngôn ngữ lập trình Dart, được Google phát triển vào tháng 5 năm 2017 Mục đích của Google khi phát triển nền tảng này là để tối ưu thời gian tạo ra các giao diện chất lượng cao trên cả iOS và Android, đáp ứng được việc phát triển các ứng dụng mobile/web một cách nhanh chóng nhưng vẫn đảm bảo sự mượt mà, ổn định trên các nền tảng khác nhau
Flutter được phát triển trên ngôn ngữ Dart (cũng được phát triển bởi Google) Đây là một ngôn ngữ hướng đối tượng, bởi vậy trong quá trình chuyển đổi từ ngôn ngữ lập trình hướng đối tượng này sang ngôn ngữ tương tự khác sẽ diễn ra rất thuận lợi Ngoài ra, Flutter còn cung cấp một bộ UI hoàn toàn miễn phí và có thể tùy chỉnh để nhà phát triển thỏa sức sáng tạo giao diện ứng dụng
• Hot reload: Tính năng này sẽ hiển thị gần như là realtime (thời gian thực) cho những thay đổi trong thiết kế, hay những tùy chỉnh của bạn trên cùng một nền tảng Điều này giúp cho việc thêm tính năng, sửa lỗi hoặc thử nghiệm ý tưởng mới ngay lập tức
• Tiết kiệm thời gian, công sức và tiền bạc: Giống như bất kỳ công nghệ đa nền tảng nào khác, Flutter cho phép bạn sử dụng cùng một cơ sở mã để xây dựng các ứng dụng iOS và Android riêng biệt Điều này đồng nghĩa thời gian test, fix bugs sẽ nhanh hơn, tiết kiệm chi phí xây dựng ứng dụng hơn
• Giao diện đẹp: Flutter cung cấp các bộ UI với các hiệu ứng, hoạt ảnh cực kỳ tiện lợi Do được trang bị rất nhiều UI, đi cùng với các bộ widget phong phú nên các nhà phát triển có thể dễ dàng “hình ảnh hóa” những gì mà mình muốn mà không gặp quá nhiều khó khăn
• Flutter vẫn chưa thật hoàn thiện: Tuy mạnh mẽ nhưng thật khó để Flutter có thể đạt được những điều mà ngôn ngữ Java, C , JavaScript đã làm được Đơn giản là vì Flutter còn khá mới mẻ Thực tế, nhiều tính năng nâng cao của Flutter vẫn chưa được hỗ trợ; nhiều thư viện chưa được thử nghiệm chính thức còn tồn tại hạn chế
4 khi so sánh với các bản sao gốc (như là Google Maps)
• Dart còn khá mới: Ngôn ngữ Dart vẫn còn lạ lẫm với nhiều lập trình viên Tài liệu về chúng cũng không được nhiều như các ngôn ngữ khác Vậy nên dù có thể là dễ học, dễ thực hiện nhưng so với các ngôn ngữ thịnh hành thì đó là một trở ngại Về cơ bản ngôn ngữ lập trình Dart khá giống với Swift và Kotlin, nhưng có ít tính năng hơn, hoặc những tính năng hiện có chưa được toàn diện
• Kích thước file lớn và đôi lúc sự tương thích là chưa ổn định: Việc làm ra một ứng dụng chạy được trên cả Android và iOS tuy rất tuyệt vời, nhưng rõ ràng sự chuyên biệt luôn tốt hơn những thứ tổng hợp Nên đôi khi ứng dụng sẽ gặp một vài lỗi vặt trên cả hai nền tảng và kích thước file của chúng còn khá lớn.
Firebase
Firebase là nền tảng được xây dựng, cung cấp bởi Google, hoạt động trên nền tảng Cloud nhằm hỗ trợ phát triển các ứng dụng trên web và di động dựa trên nguyên tắc đơn giản hóa thao tác lập trình Là một cơ sở dữ liệu có sẵn mang đến khả năng code nhanh chóng, thuận tiện hơn
Dưới sự hỗ trợ của nền tảng này, lập trình viên hoàn toàn không cần để tâm đến backend hay server mà có cơ hội tập trung chủ yếu vào việc phát triển ứng dụng Nền tảng này hướng đến đối tượng chủ yếu là di động, được biết đến như một “backend as an server”
• Tốc độ cao: Firebase hỗ trợ phát triển ứng dụng với tốc độ nhanh chóng, giảm bớt thời gian phát triển và tiếp thị ứng dụng
• Đơn giản, dễ sử dụng: Người dùng có thể tạo tài khoản Firebase bằng tài khoản Google và cũng như sử dụng nền tảng này trong phát triển ứng dụng một cách dễ dàng
• Một nền tảng, đa dịch vụ: Firebase cung cấp đầy đủ các dịch vụ hỗ trợ lập trình viên trong việc phát triển ứng dụng
• Tập trung phát triển chủ yếu về giao diện người dùng: Firebase cho phép lập trình viên tập trung chủ yếu vào phát triển phần giao diện người dùng nhờ kho Backend mẫu phong phú đa dạng
• Khu vực hoạt động bị hạn chế: Firebase là một thành phần Subdomain của Google nên nó sẽ bị chặn ở một số quốc gia
• Nền tảng không tích hợp SQL nên quá trình xử lý dữ liệu và di chuyển data sẽ khó khăn hơn
• Vì Firebase không phải là mã nguồn mở cho nên không có quyền truy cập mã nguồn
• Thời gian truy vấn của firebase chậm với kích thước tài liệu lớn
• Không phải tất cả các dịch vụ Firebase đều miễn phí, mức phí của nó cũng khá đắt và không ổn định.
DialogFlow
DialogFlow (tiền thân là api.ai) là một dịch vụ do Google cung cấp nhằm giúp các lập trình viên dễ dàng hơn khi lập trình các sản phẩm có giao tiếp giữa người dùng với sản phẩm thông qua các đoạn hội thoại bằng văn bản (text) hoặc giọng nói (voice)
Dialogflow sử dụng trí tuệ nhân tạo (AI) giúp phân tích ngôn ngữ tự nhiên để hiểu được những gì người dùng đưa vào
Intent đại diện cho một ý định cụ thể mà người dùng muốn diễn đạt hoặc hành động mà họ muốn thực hiện thông qua cuộc trò chuyện với hệ thống AI DialogFlow sử dụng Intent để ánh xạ các cú pháp ngôn ngữ tự nhiên (natural language) từ người dùng với các hành động cụ thể hoặc phản hồi mà bot cần thực hiện
Mỗi Intent có thể có các mẫu câu khác nhau mà người dùng có thể sử dụng để diễn đạt cùng một ý định, và mỗi Intent cũng có thể có các thực hiện khác nhau hoặc phản hồi để đáp ứng cho ý định đó Ví dụ, nếu một người dùng nói "Xin chào" hoặc "Hello" đến chatbot, hệ có thể có một Intent được gán cho hành động chào hỏi, trong đó thống sẽ phản hồi lại bằng cách gửi lời chào lại như "Xin chào! Bạn cần giúp gì hôm nay?" như một cách mở đầu một cuộc trò chuyện
Tóm lại, Intent trong DialogFlow giúp xác định ý định cụ thể của người dùng từ các
6 câu hoặc từ ngữ họ sử dụng và từ đó chuyển hướng hoặc thực hiện các hành động tương ứng của hệ thống AI hay chatbot
Entity đại diện cho các thành phần của thông điệp người dùng, các thành phần đó có thể thay đổi hoặc có ý nghĩa đặc biệt Entity giúp hệ thống hiểu rõ hơn về các thông tin cụ thể mà người dùng cung cấp trong các câu hoặc thông điệp của họ
Entity được sử dụng để trích xuất các thông tin quan trọng từ các dòng văn bản hoặc câu nói mà người dùng gửi đến chatbot hoặc hệ thống AI Điều này giúp DialogFlow nhận biết và xử lý dữ liệu người dùng một cách chính xác, cho phép bot hiểu được ngữ cảnh và cung cấp phản hồi chính xác hơn Ví dụ, trong một câu như "Tôi muốn đặt một chiếc bàn vào thứ Ba tới", "đặt một chiếc bàn" có thể là một Entity loại "Đặt hàng", trong khi "thứ Ba" có thể là một Entity loại "Ngày" DialogFlow cung cấp các loại Entity mặc định như số, ngày tháng, vị trí địa lý,… Người sử dụng cũng có thể tạo các Entity tùy chỉnh để phù hợp với các thông tin cụ thể và yêu cầu của ứng dụng của mình
Tóm lại, Entity trong DialogFlow giúp xác định và trích xuất các thông tin quan trọng từ câu hoặc văn bản người dùng, giúp hệ thống AI hiểu rõ hơn về ý nghĩa và ngữ cảnh của thông điệp và cung cấp phản hồi hoặc xử lý dữ liệu phù hợp
Agent đề cập đến dự án cụ thể mà bạn tạo để xây dựng và triển khai các hệ thống trí tuệ nhân tạo (AI) như chatbot, ứng dụng hội thoại, hoặc ứng dụng hỗ trợ tự động khác Mỗi Agent trong DialogFlow đại diện cho một module NLU (Natural Language Understanding – Phân tích để hiểu ngôn ngữ tự nhiên), giúp người sử dụng phân tích những những gì người dùng đưa vào (text hoặc voice) để chuyển thành những dữ liệu mà người sử dụng có thể xử lý được bằng lập trình
Hình 2.1: Cách Agent quản lý một cuộc hội thoại giữa người dùng và hệ thống
Mục tiêu của một Agent trong DialogFlow là để tạo ra một hệ thống AI hoặc chatbot thông minh có khả năng hiểu và phản hồi lại người dùng một cách tự nhiên, giúp cải thiện trải nghiệm người dùng và cung cấp giải pháp cho các tác vụ cụ thể mà Agent được thiết kế để thực hiện
• Dễ sử dụng: Giao diện người dùng thân thiện và dễ sử dụng, cho phép người dùng tạo Intent, Entity và triển khai bot một cách nhanh chóng
• Hỗ trợ nhiều ngôn ngữ: DialogFlow hỗ trợ nhiều ngôn ngữ khác nhau, giúp phát triển ứng dụng đa quốc gia và đa văn hóa
• Tích hợp đa nền tảng: Có khả năng tích hợp với nhiều nền tảng như Facebook Messenger, Slack, Google Assistant, và nhiều hơn nữa, giúp triển khai bot trên nhiều kênh khác nhau
• Hỗ trợ các tính năng mở rộng: Cho phép tích hợp với các webhook và các hệ thống ngoại vi khác để xử lý logic phức tạp và tích hợp dữ liệu từ các nguồn bên ngoài
• Machine Learning và Natural Language Understanding (NLU): DialogFlow có khả năng hiểu và xử lý ngôn ngữ tự nhiên, sử dụng các mô hình machine learning để cải thiện việc hiểu ý định và xử lý ngôn ngữ
• Khả năng hiểu và phản hồi có thể hạn chế: Trong một số trường hợp, khả năng
9 hiểu và phản hồi của bot có thể hạn chế, đặc biệt khi người dùng sử dụng ngôn ngữ phức tạp hoặc có nhiều yếu tố ngữ cảnh
• Phụ thuộc vào kết nối internet: Hoạt động dựa trên kết nối internet, vì vậy sẽ có hạn chế khi không có kết nối mạng
• Giới hạn trong mô hình miễn phí: Phiên bản miễn phí của DialogFlow có giới hạn về số lượng yêu cầu API, giới hạn dung lượng dữ liệu và một số hạn chế về tính năng so với các phiên bản trả phí
• Có thể đòi hỏi kỹ năng lập trình: Đối với những tính năng phức tạp hoặc yêu cầu tích hợp sâu, có thể yêu cầu kiến thức kỹ thuật và lập trình để triển khai.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Danh sách các yêu cầu
• Sau khi truy cập vào ứng dụng, người dùng có thể sử dụng các tính năng sau: o Đăng ký tài khoản o Cập nhật thông tin cá nhân sau khi đăng ký tài khoản (các thông tin sức khỏe như chiều cao, cân nặng) o Sử dụng chatbot để được giải đáp về vấn đề sức khỏe mà bản thân đang gặp phải, hoặc hỏi về một bệnh lý hoặc thông tin y tế bất kì o Truy cập thư viện sức khỏe để tìm đọc thông tin y tế về các loại bệnh hoặc xem các video hướng dẫn các bài tập thể dục, yoga và các video công thức hướng dẫn nấu các món ăn có lợi cho sức khỏe o Theo dõi tình trạng cơ thể của bản thân qua các chỉ số như cân nặng, chiều cao, chỉ số BMI sau khi đã cung cấp các thông tin cá nhân trong phần hồ sơ sau khi đăng ký tài khoản o Ghi chú về cảm giác sức khỏe của họ, triệu chứng, và thuốc đã sử dụng hoặc các thông tin cần nhớ như thông tin bệnh viện, bác sĩ,… o Cài đặt các nhắc nhở thông báo về các hoạt động liên quan đến sức khỏe như uống nước, tập luyện, điều trị, uống thuốc o Đổi mật khẩu hoặc có thể cài đặt mật khẩu mới khi quên thông qua email
• Lưu trữ: o Thông tin về người dùng: Hệ thống sẽ lưu các thông tin của người dùng như email, họ và tên, tuổi, giới tính, chiều cao, cân nặng o Thông tin về các loại bệnh: bao gồm các thông tin như tên, tổng quan, nguyên nhân gây bệnh, triệu chứng, đối tượng có nguy cơ mắc bệnh, cách phòng ngừa, các biện pháp chuẩn đoán, các biện pháp điều trị o Thông tin về các video: bao gồm các thông tin như tiêu đề, thời lượng, hình thu nhỏ, đường liên kết tới video
11 o Thông tin về nhắc nhở các hoạt động: bao gồm các thông tin như tên hoạt động, thời gian bắt đầu, ngày hoạt động, nhãn, nhắc nhở có lặp lại hay không, có đặt thông báo cho nhắc nhở hay không o Thông tin về ghi chú: bao gồm các thông tin như tiêu đề, nội dung ghi chú, thời gian ghi chú, ngày ghi chú
• Tính toán: Tính toán chỉ số BMI để xác định tình trạng của người dùng và đưa ra lời khuyên thích hợp Tính toán thời gian đặt thông báo cho các hoạt động được tạo nhắc nhở
• Tính an toàn: o Xác thực người dùng: Yêu cầu người dùng phải đăng nhập, xác thực trước khi truy cập vào ứng dụng, sử dụng phương thức email và mật khẩu để xác minh danh tính người dùng o Kết nối an toàn: Sử dụng HTTPS để đảm bảo việc truyền dữ liệu giữa ứng dụng và cơ sở dữ liệu Firebase được mã hóa và an toàn
• Tính bảo mật: o Bảo vệ thông tin cá nhân: Đảm bảo rằng thông tin cá nhân của người dùng được bảo vệ bằng cách mã hóa dữ liệu, như thông tin y tế, tuân thủ các quy định về bảo vệ dữ liệu cá nhân o Bảo mật cơ sở dữ liệu: Sử dụng Firebase Security Rules để thiết lập quy tắc truy cập cơ sở dữ liệu, xác định quyền truy cập dữ liệu cho người dùng hoặc nhóm người dùng cụ thể o Bảo mật phần mềm: Đảm bảo rằng phần mềm được cập nhật định kỳ để bảo vệ khỏi các lỗ hổng bảo mật đã biết
STT Nghiệp vụ Tham số cần thay đổi
1 Thay đổi thông tin cá Họ và tên, tuổi, giới tính, chiều cao, cân
STT Nghiệp vụ Mức độ dễ học Mức độ dễ sử dụng
1 Chat tư vấn sức khỏe
2 Tra cứu các loại bệnh
4 Thêm, xóa, chỉnh sửa ghi chú
5 Thêm, xóa, chỉnh sửa nhắc nhở
6 Xem tình trạng sức khỏe
7 Chỉnh sửa thông tin cá nhân
Bảng 3.2: Bảng tính tiện dụng
STT Nghiệp vụ Tốc độ xử lý Dung lượng lưu trữ
1 Thêm ghi chú Ngay lập tức