Thiết kế kiến trúc

Một phần của tài liệu ỨNG DỤNG hỗ TRỢ CHĂM sóc sức KHỎE BẰNG CHATBOT (Trang 82 - 97)

Kiến trúc MVVM trong Flutter – MVVM Pattern Flutter

Kiến trúc MVVM trong Flutter là một trong những pattern được sử dụng nhiều trong quá trình xây dựng ứng dụng Flutter.

4.2.1.1 Tổng quan kiến trúc MVVM

Viết tắt của Model – View – ViewModel.

Là một mô hình hỗ trợ ràng buộc dữ liệu hai chiều (Two-way data binding ) giữa View và ViewModel.

Cho phép tách biệt dữ liệu (Model), mã thực thi (Logic hay ViewModel ) và giao diện người dùng (View). Model

Model là thành phần liên kết với cơ sở dữ liệu, trong Model ln có các hàm truy xuất dữ liệu từ cơ sở dữ liệu.

Là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng. Bộ phận này là một cầu nối giữa 2 thành phần bên dưới là View và Controller. Model thể hiện dưới hình thức là một cơ sở dữ liệu hoặc có khi chỉ đơn giản là một file XML bình thường.

Model thể hiện rõ các thao tác với cơ sở dữ liệu như cho phép xem, truy xuất, xử lý dữ liệu,…

4.2.1.1.1 Model

Model là thành phần liên kết với cơ sở dữ liệu, trong Model ln có các hàm truy xuất dữ liệu từ cơ sở dữ liệu.

Là bộ phận có chức năng lưu trữ tồn bộ dữ liệu của ứng dụng. Bộ phận này là một cầu nối giữa 2 thành phần bên dưới là View và Controller. Model thể hiện dưới hình thức là một cơ sở dữ liệu hoặc có khi chỉ đơn giản là một file XML bình thường. Model thể hiện rõ các thao tác với cơ sở dữ liệu như cho phép xem, truy xuất, xử lý dữ liệu,…

4.2.1.1.2 View

View hay UI hay Presentation Layer là phần giao diện của ứng dụng và nhận

tương tác của người dùng.

Một điểm khác biệt của View trong MVVM là : khả năng thực hiện các hành vi và phản hồi lại người dùng thơng qua tính năng binding, command.

4.2.1.1.3 ViewModel

• Được xem là một thành phần thay thế lớp Controller trong mơ hình MVC. • ViewModel khơng biết được các thơng tin gì về tầng bên trên của nó,

cũng như khơng biết thơng tin gì về View.

• Một ViewModel có thể sử dụng cho nhiều View thơng qua binding data, có thể 1 hay 2 chiều tuỳ nhu cầu của ứng dụng.

• Sự khác biệt ở chỗ : Trong ViewModel có chứa các mã lệnh thực hiện

Data Binding, Command.

4.2.1.2 Triển khai kiến trúc MVVM Flutter

Tạo project mới và khai báo thư viện mới nhất của : provider, http Tạo các folder như bên dưới:

models

Tạo một file model có tên: user.dart class User { Name? name; Picture? picture; String? email; String? phone;

User({this.name, this.picture, this.email, this.phone});

User.fromJson(Map<String, dynamic> json) : name = new Name.fromJson(json['name']), picture = new Picture.fromJson(json['picture']), email = json['email'],

phone = json['phone'];

@override

String toString() {

// TODO: implement toString

return phone! + " " + email! + " " + name!.first!; } } class Name { String? last; String? first; Name({this.last, this.first});

Name.fromJson(Map<String, dynamic> json) : last = json['last'], first = json['first']; } class Picture { String? medium; Picture({this.medium});

Picture.fromJson(Map<String, dynamic> json) : medium = json['large'];

}

data_sources

Tạo file api_urls.dart: 1

2

3

class ApiUrls{

final Uri API_USER_LIST = Uri.parse('https://api.randomuser.me/?results=50');

}

view_models

Tạo file user_list_view_model.dart 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import 'package:flutter/material.dart'; import 'package:mvvm/data_sources/api_services.dart'; import 'package:mvvm/models/user.dart';

class UserListViewModel with ChangeNotifier{

List<User> userList = [];

fetchUserList() async {

this.userList = await ApiServices().fetchUser(); notifyListeners();

} }

views

Tạo file user_list_screen.dart 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mvvm/data_sources/api_services.dart'; import 'package:mvvm/models/user.dart'; import 'package:mvvm/resources/strings.dart'; import 'package:mvvm/view_models/user_list_view_model.dart'; import 'package:provider/provider.dart';

class UserListScreen extends StatefulWidget { @override

_UserListScreenState createState() => _UserListScreenState();

}

class _UserListScreenState extends State<UserListScreen> { @override

void initState() {

// TODO: implement initState super.initState();

Provider.of<UserListViewModel>(context, listen: false).fetchUserList(); }

@override

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

final userListOnProvider = Provider.of<UserListViewModel>(context); return Scaffold( appBar: AppBar( title: Text(USER_LIST), centerTitle: true, ), body: Container( padding: EdgeInsets.only(left: 10), height: MediaQuery.of(context).size.height, width: MediaQuery.of(context).size.height, child: userListOnProvider.userList.length!= 0 ? ListView.builder( itemCount: userListOnProvider.userList.length, itemBuilder: (BuildContext context, int index) {

return UserItem(user: userListOnProvider.userList[index],); } ): Center( child: Container( height: 100, width: 100, child: CircularProgressIndicator(), ), ) ), ); } }

class UserItem extends StatelessWidget { User? user;

UserItem({this.user});

@override

Widget build(BuildContext context) {

return new Container(

margin: new EdgeInsets.only(top: 20.0), child: new Row(

children: <Widget>[ new Container( height: 80.0, width: 80.0,

margin: new EdgeInsets.only(right: 20.0), child: new CircleAvatar(

backgroundImage: new NetworkImage(user!.picture!.medium!), ), ), new Column( crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ new Text( user!.name!.first! + " " + user!.name!.last!, style: new TextStyle(

fontSize: 20.0, color: Colors.black, ),

),

81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96

margin: new EdgeInsets.only(top: 10.0), child: new Text(

user!.email!, style: new TextStyle( fontSize: 15.0, color: Colors.grey, ), ), ), ], ) ], ), ); } } resources

Trong file này chứa các file utils hoặc Widgets, strings , sẽ dùng chung cho toàn bộ dự án.

4.2.2.1 Intents - kịch bản chatbot Dr.Cowin

Intent name Training phrases

Text Response

iKienThucCoBan Kiến thức cơ bản về sức khỏe?

Sức khỏe cơ bản?

Bạn phải chăm sóc tốt cho bản thân ở cả 2 phương diện Tâm lý và Thể chất để chống chọi với không chỉ Covid-19 mà còn với nhiều căn bệnh cấp/mãn tính khác trong đời sống hàng ngày,

Bạn muốn biết thêm về:

Sức khỏe nói chung

Sức khỏe

[button] Bảo vệ sức khỏe thể chất

iTamLy Tâm lý

Tinh thần

Sức khỏe tâm lý

Bảo vệ tâm lý

Điều trị tâm lý

Sức khỏe tâm lý hay tinh thần của bạn sẽ

được hình thành từ quá trình phát triển trong suốt

cuộc đời bạn và nếu nhìn nhận ở góc độ sinh học, tâm lý ln bị tác động mạnh mẽ nhất bởi hoocmon và mơi trường sống. Vì vậy để tránh việc các

hoocmon tác động xấu lên suy nghĩ của bạn,

Dr.Cowin đưa ra những lời khuyên sau: (thông tin

được đúc kết từ nhiều tài liệu, nghiên cứu về tâm

lý, y tế, giáo dục)

1. Tập luyện thể thao, học thiền, yoga hoặc tập các bài tập tăng cường tính tập trung để điều

hịa suy nghĩ, phát triển tư duy, giảm tỏa stress. 2. Bạn có thể thử việc thi thoảng ăn

chay/nhịn ăn hoặc ăn chay hoàn toàn (CHỈ KHI sức khỏe bạn THỰC SỰ TỐT), để bảo vệ

hoocmon khỏi những tạp chất xấu tích tụ từ các loại thịt, làm chậm tốc độ lão hóa của cơ thể..

3. Có thể sử dụng những thực phẩm chức năng có các hoạt chất tác động tốt tới hoocmon (L- Cysine…)

4. Trò chuyện, chia sẻ với thái độ thân ái, cư xử hiền hòa với người xung quanh cũng là cách

giúp bạn lâu lão hóa, bảo về sức khỏe thể chất lẫn tinh thần.

5. Sinh hoạt điều độ để bảo toàn đồng hồ

sinh học.

iTheChat Thể chất

Sức khỏe thể chất

Giữ gìn cơ thể mạnh khỏe để bảo vệ khơng chỉ cho bản thân mà cịn cho những người thân yêu xung quanh mình.

1. Giữ gìn vệ sinh thân thể, thực hiện quy tắc 5K

2. Ăn uống điều độ, cân bằng dinh dưỡng. 3. Ngủ nghỉ đúng giờ để bảo vệ đồng hồ

sinh học

4. Tập luyện thể dục thể thao với cường độ phù hợp, nâng cao sức khỏe nền và thể hình.

5. Trị chuyện, chia sẻ với thái độ thân ái, cư xử hiền hòa với người xung quanh cũng là cách

giúp bạn lâu lão hóa, bảo về sức khỏe thể chất lẫn tinh thần.

6. Vận động mọi người 1 cách khéo léo về việc chăm sóc cơ thể, chăm chỉ dọn dẹp không gian sống để mầm bệnh không tồn đọng trong ngơi nhà của bạn.

iNhapCanh Quy trình nhập cảnh?

Nhập cảnh?

Đi máy bay về?

Hãy cho CoWin biết, bạn thuộc nhóm đối

tượng nào?

[button] 1. Cơng dân Việt Nam hoặc người nước ngồi là thân nhân của công dân Việt Nam

[button] 2. Người nước ngoài là chuyên gia, nhà đầu tư, nhà quản lý doanh nghiệp, lao động kỹ thuật cao,… có thỏa thuận hợp tác và thân nhân

Đi nước ngoài

về?

Đi ngước

ngoài?

[button] 3. Chuyên gia làm việc ngắn ngày (dưới 14 ngày)

[button] 4. Người nước ngồi nhập cảnh vì ngoại giao/cơng vụ

[Button] 5. Học sinh, sinh viên

iNhapCanh_1 QUY TRÌNH NHẬP CẢNH TRÊN

CHUYẾN BAY THƯƠNG MẠI QUỐC TẾ

THƯỜNG LỆ, CÁCH LY TẬP TRUNG DƯỚI 14 NGÀY

*Quy trình này chỉ áp dụng với: Người nước ngoài

là chuyên gia, nhà đầu tư, nhà quản lý doanh

nghiệp, lao động kỹ thuật cao, các đối tượng theo thỏa thuận hợp tác (gọi tắt là chuyên gia) và thân nhân (cha, mẹ, vợ, chẳng, con) nhập cảnh vào Việt Nam từ 14 ngày trở lên và Học sinh, sinh viên * Tuyệt đối không sử dụng phương tiện giao thông công cộng để vận chuyển người nhập cảnh đến khu cách ly tập trung, về nơi lưu trú, từ nơi lưu trú đến

nơi làm việc.

* Theo dõi sức khỏe 14 ngày tiếp theo sau khi kết thúc cách ly tại nơi lưu trú:

- Mở kết nối liên tục và các cài đặt ứng dụng khai báo sức khỏe Vietnam Health Declaration, NCOVI, Bluezone

- Khai báo tình trạng sức khỏe và các tiếp

xúc theo hướng dẫn.

1. Có hộ chiếu hợp lệ. 2. Giấy chấp thuận nhập cảnh (đối với người nước

ngồi) do cơ quan có thấm

quyền cấp.

3. Có Giấy xác nhận âm tính với vi rút SARS-CoV-2 của

cơ quan có thấm quyền trước ngày khởi hành 3-5

ngày.

4. Có bảo hiểm ytế hoặc cam kết chỉ trả chỉ phí trong,

trường hợp mắc COVID-19. 5. Đăng ký và có xác nhận

tiếp nhận của cơ sở cách ly tại khách sạn và dịch vụ đưa

đón.

6. Khai báo y tế điện tử trong vòng 12 giờ trước khi khởi hành

B. Trên máy bay: Đeo khẩu trang và tuân thủ hướng dẫn phòng chống lây nhiễm

C. Tại cửa khẩu nhập cảnh

1. Sử dụng khẩu trang và kiểm tra thân nhiệt.

2. Kiểm tra tính hợp lệ của việc thực hiện các yêu cầu

trước khi lên máy bay. 3. Cài đặt đủ 03 ứng dụng:

Vietnam Health Declaration, NCOVI và ứng dụng truy vết.(Bluezone).

4. Thực hiện biện pháp phòng chống dịch khi đi chuyển về thẳng địa điểm

cách ly đã đăng ký.

D. Cách ly tập trung tại khách sạn (7 ngày

đầu tiên)

1. Đeo khẩu trang và thực

hiện phòng chống lây nhiễm tại nơi cách ly.

2. Lấy mẫu xét nghiệm ngày

đầu nhập cảnh trong trường

hợp chưa được lấy mẫu tại sân bay. Thực hiện lấy mẫu xét nghiệm đảm bảo 2 lần

ngày đầu và ngày thứ 6. 3. Trường hợp có kết quả xét

nghiệm âm tính với SARS- CoV-2 với mâu bệnh phẩm lấy vào ngày thứ 6, được chuyển về địa điểm cách ly tại nơi lưu trú.

E. Cách ly tại nơi lưu trú (7 ngày tiếp theo)

1. Đeo khẩu trang và thực

tiện các biện pháp vệ sinh cá nhân phòng chống lây nhiễm. 2. Không sử dụng phương

tiện giao thông công cộng để di chuyển từ nơi lưu trú đến

nơi làm việc.

3. Kết nối liên tục và cập nhật tình hình sức khỏe hàng Tigày trên các ứng dụng đã khai báo.

4. Lấy mẫu xét nghiệm lần cuối vào ngày thứ 14 kế từ khi nhập cảnh. iTrieuChung Triệu chứng Covid19? Triệu chứng? Dấu hiệu nhận biết?

Dấu hiệu nhiễm Covid?

COVID-19 tác động đến mỗi người theo những cách khác nhau. Hầu hết những người nhiễm vi-rút sẽ có triệu chứng bệnh từ nhẹ đến

trung bình và có thể hồi phục mà không cần nhập viện.

Các triệu chứng thường gặp nhất: 1. sốt

2. ho 3. mệt mỏi

4. mất vị giác hoặc khứu giác 5. đau họng

Các triệu chứng ít gặp hơn: 1. đau đầu

2. đau nhức cơ 3. tiêu chảy

4. da nổi mẩn hay ngón tay hoặc ngón chân bị tấy đỏ hoặc tím tái

5. mắt đỏ hoặc ngứa Các triệu chứng nghiêm trọng:

1. khó thở

2. mất khả năng nói hay cử động hoặc thấy lú lẫn

3. đau ngực

Hãy báo cán bộ y tế địa phương lập tức nếu bạn gặp phải các triệu chứng nghiêm trọng. Luôn gọi điện trước khi gặp bác sĩ hoặc đến cơ sở y tế.

Những người có triệu chứng nhẹ và khơng có biểu hiện bệnh nào khác nên điều trị triệu chứng tại nhà.

Thông thường, các triệu chứng sẽ xuất hiện

sau 5-6 ngày kể từ khi một người nhiễm vi-rút. Tuy nhiên, thời gian này có thể lên tới 14 ngày.

Bản dịch do SDL Inc thực hiện. For informational purposes only. Consult your local medical authority for advice.

iLayNhiem Covid lây lan?

Covid đã lan

truyền như thế nào?

Cách lây lan

Lây lan

COVID-19 lây lan khi người nhiễm bệnh thở ra các giọt bắn và các hạt rất nhỏ có chứa vi-rút. Những giọt bắn và hạt này có thể bị người khác hít vào hoặc rơi vào mắt, mũi hoặc miệng của họ. Trong một số trường hợp, họ có thể gây ô

nhiễm các bề mặt họ chạm vào. Những người ở

gần hơn 6 feet so với người bị nhiễm bệnh có nhiều khả năng bị nhiễm bệnh nhất.

COVID-19 lây lan theo ba cách chính: 1. Hít vào khơng khí khi ở gần người bị nhiễm bệnh đang thở ra những giọt nhỏ và các hạt có chứa vi-rút.

2. Để những giọt nhỏ và các hạt có

chứa vi-rút rơi vào mắt, mũi hoặc miệng, đặc biệt là thông qua sự bắn tóe và tia xịt như ho hoặc hắt

hơi.

3. Chạm vào mắt, mũi hoặc miệng bằng tay có vi-rút trên đó.

iNghiNhiem Tơi nghĩ mình đã nhiễm covid Bị nhiễm covid phải làm gì? Làm gì khi bị nhiễm covid? Bị nhiễm bệnh Nhiễm covid Nhiễm bệnh Tôi đã nhiễm bệnh.

Hãy liên lạc đến cơ quan y tế địa phương để được hướng dẫn điều trị từ xa.Trong trường hợp bạn đang có dấu hiệu cảnh báo cấp cứu

của COVID-19 như khó thở, đau hoặc tức ngực

thường xuyên, trạng thái lẫn lộn mới, Không thể

thức dậy hay duy trì sự tỉnh táo, da, móng tay hoặc môi nhợt nhạt, xám hoặc có màu xanh, tùy vào tơng da.

Gọi 911 hoặc gọi trước cho cơ sở cấp cứu địa phương: Thông báo cho nhân viên trực tổng đài rằng q vị đang tìm kiếm sự chăm sóc cho một người nhiễm hoặc có thể nhiễm COVID- 19.

iPhongChong Phịng tránh Phòng chống Phòng ngừa

Giữ khoảng cách an tồn với người khác (ít nhất 1 mét), kể cả khi họ khơng có biểu hiện bệnh. Đeo khẩu trang ở nơi công cộng, nhất là khi ở trong nhà hoặc khi không thể giữ khoảng cách.

Chọn những không gian mở, thơng thống thay vì những khơng gian kín. Mở cửa sổ nếu ở

trong nhà.

Thường xuyên rửa tay. Dùng xà phòng và

nước hoặc dung dịch rửa tay chứa cồn.

Tiêm vaccine khi đến lượt. Tuân thủ chỉ dẫn của địa phương về việc tiêm vaccine.

Khi ho hoặc hắt hơi, hãy che mũi và miệng bằng khăn giấy hoặc khuỷu tay.

4.2.2.2 Kịch bản entity

Entity Reference value Synonym

ePhongTranh Phòng tránh Phòng chống;

phòng ngừa; đề phòng

eLayNhiem Lây nhiễm Lây lan; lan truyền

eCapCuu Cấp cứu Khẩn cấp;

eTaiGia Tại gia Tại nhà;

Tự cách ly

eBoiBo Bồi bổ Bồi bổ sức khỏe;

Ăn uống đầy đủ, tăng

cường tập luyện thể dục thể thao

eHanChe Hạn chế Tránh;

Giảm bớt việc

eDiChung Di chứng Triệu chứng sau nhiễm

eTamLy Tâm lý Tinh thần

eTheChat Thể chất Thân thể, Tâm

eVeSucKhoe Về sức khỏe Về y tế

Một phần của tài liệu ỨNG DỤNG hỗ TRỢ CHĂM sóc sức KHỎE BẰNG CHATBOT (Trang 82 - 97)

Tải bản đầy đủ (PDF)

(136 trang)