Vì vậy, “Xây dựng hệ thống ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý trực tuyến dựa trên n ền tảng ReactJS và NodeJS - PsyCare” được tạo ra để giúp mọi người giải quyết các vấn đề tâm
Trang 1ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KINH TẾ KHOA HỆ THỐNG THÔNG TIN KINH TẾ
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG HỆ THỐNG ỨNG DỤNG HỖ TRỢ CHẨN
ĐOÁN VÀ ĐIỀU TRỊ TÂM LÝ TRỰC TUYẾN DỰA TRÊN
NỀN TẢNG REACTJS VÀ NODEJS – PSYCARE
Sinh viên thực hiện: LÊ THỊ THANH HẰNG
Niên khóa: 2018 – 2022
Trường Đại học Kinh tế Huế
Trang 2ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KINH TẾ KHOA HỆ THỐNG THÔNG TIN KINH TẾ
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG HỆ THỐNG ỨNG DỤNG HỖ TRỢ CHẨN
ĐOÁN VÀ ĐIỀU TRỊ TÂM LÝ TRỰC TUYẾN DỰA TRÊN
NỀN TẢNG REACTJS VÀ NODEJS – PSYCARE
Giảng viên hướng dẫn : TS Dương Thị Hải Phương Sinh viên thực hiện : Lê Thị Thanh Hằng
Trang 3LỜI CẢM ƠN
Để hoàn thành khóa luận này em xin bày tỏ lòng biết ơn sâu sắc đến Ban Giám
hiệu nhà trường, cùng các thầy cô giáo trường Đại học Kinh tế Huế nói chung và các
thầy cô trong Khoa Hệ thống thông tin nói riêng đã truyền đạt cho em những kiến thức
chuyên môn cũng như những kinh nghiệm bổ ích trong suốt những năm học vừa qua.
Đặc biệt, em xin chân thành tỏ lòng biết ơn sâu sắc tới cô TS Dương Thị Hải
Phương đã tận tình giúp đỡ, dành nhiều thời gian và công sức để hướng dẫn em hoàn
thành khóa luận này.
Và cuối cùng em xin gửi lời cảm ơn chân thành đến Công ty TNHH SmartDev
đã nhận em vào đơn vị thực tập trong thời gian qua Trong đó có chị Võ Thị Phương
Thảo, anh Nguyễn Hữu Thịnh, cùng với các anh chị trainer trong bộ phận Internship
đã dẫn dắt em trong thời gian thực tập, cũng như luôn động viên, giúp đỡ em có thể
hoàn thành tốt bài thực tập cuối khóa của mình.
Điều mà em luôn biết ơn nhất đó chính là ba mẹ, gia đình và người thân đã
luôn ủng hộ, đồng hành với em trong suốt chặng đường đại học và em cũng xin cảm
ơn đến các bạn lớp K52 Tin học Kinh tế, đã đi cùng nhau trong những năm tháng đại
học, đã trải qua bao nhiêu kỉ niệm vui buồn với nhau,vẫn luôn nhớ tới những chuyến
đi ngắn hạn của thanh xuân đã có nhau.
Tuy có nhiều cố gắng nhưng do hạn chế về thời gian và kiến thức chuyên môn
nên trong quá trình làm khóa luận này có nhiều sai sót Rất mong nhận được sự chỉ
bảo của quý thầy cô để khóa luận hoàn thiện hơn.
Một lần nữa, em xin chân thành cảm ơn!
Trường Đại học Kinh tế Huế
Trang 4MỤC LỤC
LỜI CẢM ƠN 3
MỤC LỤC i
DANH MỤC TỪ VIẾT TẮT vi
DANH MỤC BẢNG vii
DANH MỤC HÌNH viii
PHẦN 1: MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu nghiên cứu 2
2.1 Mục tiêu tổng quát 2
2.2 Mục tiêu cụ thể 2
3 Đối tượng và phạm vi nghiên cứu 3
3.1 Đối tượng nghiên cứu 3
3.2 Phạm vi nghiên cứu 3
4 Phương pháp nghiên cứu 3
5 Cấu trúc khóa luận 4
PHẦN 2: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 6
CHƯƠNG 1: CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN VỀ XÂY DỰNG HỆ THỐNG ỨNG DỤNG HỖ TRỢ CHẨN ĐOÁN VÀ ĐIỀU TRỊ TÂM LÝ TRỰC TUYẾN 6
1.1.Cơ sở lý luận về xây dựng hệ thống ứng dụng 6
1.1.1 Cấu trúc hệ thống ứng dụng 6
1.1.2 Phân tích và thiết kế hướng đối tượng 7
1.1.2.1 Tổng quan về phân tích và thiết kế hướng đối tượng 7 Trường Đại học Kinh tế Huế
Trang 51.1.2.2 Tổng quan về biểu đồ UML 7
1.1.2.3 Một số biểu đồ UML phổ biến 8
1.1.3 Các công cụ hỗ trợ xây dựng ứng dụng 12
1.1.3.1 ReactJS 12
1.1.3.2 NodeJS 14
1.1.3.3 MongoDB 17
1.1.3.4 Cloudinary 19
1.1.3.5 Cổng thanh toán ví điện tử MoMo 20
1.1.3.6 Hệ thống Tích hợp liên tục và Chiến lược phân phối liên tục (CI / CD) trong môi trường Github 22
1.1.4 Tổng quan về kiểm thử hệ thống 23
1.1.4.1 Khái niệm về kiểm thử 23
1.1.4.2 Các cấp độ kiểm thử 23
1.1.4.3 Các loại kiểm thử 24
1.1.4.4 Các phương pháp kiểm thử 25
1.2.Cơ sở thực tiễn về xây dựng hệ thống ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý trực tuyến 26
1.2.1 Hiện trạng vấn đề tâm lý của người dân trong đại dịch COVID-1926 1.2.2 Một số ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý 27
1.2.2.1 Hệ thống BookingCare https://bookingcare.vn/ 27
1.2.2.2 Website của bệnh viện tâm thần Đà Nẵng – http://benhvientamthan.danang.gov.vn/ 28
CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH, VÀ THIẾT KẾ HỆ THỐNG ỨNG DỤNG CHẨN ĐOÁN VÀ ĐIỀU TRỊ TÂM LÝ TRỰC TUYẾN 30
Trường Đại học Kinh tế Huế
Trang 62.1.Bài toán chẩn đoán và điều trị tâm lý trực tuyến 30
2.1.1 Khảo sát nhu cầu chẩn đoán và điều trị tâm lý trực tuyến 30
2.1.2 Phát biểu bài toán 33
2.1.3 Yêu cầu hệ thống 35
2.1.3.1 Yêu cầu chức năng 35
2.1.3.2 Yêu cầu phi chức năng 35
2.2.Phân tích hệ thống 36
2.2.1 Xác định các tác nhân 36
2.2.2 Xác định các Usecase 36
2.2.3 Một số biểu đồ usecase chính của hệ thống 38
2.2.3.1 Biểu đồ use case tổng quát 38
2.2.3.2 Biểu đồ usecase – Quản lý hệ thống 39
2.2.3.3 Biểu đồ usecase - Quản lý cuộc hẹn 41
2.2.3.4 Biểu đồ Use case - Quản lý Forum 45
2.2.3.5 Biểu đồ Use case - Quản lý bác sĩ 47
2.2.4 Biểu đồ tuần tự 48
2.2.4.1 Biểu đồ tuần tự tạo cuộc hẹn khám 49
2.2.4.2 Biểu đồ tham gia cuộc hẹn cùng bác sĩ sau khi thanh toán lịch điều trị thành công 49
2.2.4.3 Biểu đồ tuần tự hủy cuộc hẹn khám 50
2.2.4.4 Biểu đồ tuần tự hiển thị thông tin cuộc hẹn khám 50
2.2.4.5 Biểu đồ tuần tự hiển thị danh sách thông tin bác sĩ 51
2.2.4.6 Biểu đồ tuần tự cập nhật thông tin cá nhân 51 Trường Đại học Kinh tế Huế
Trang 72.3.Thiết kế hệ thống 53
2.3.1 Thiết kế cơ sở dữ liệu 53
2.3.1.1 Biểu đồ lớp 53
2.3.1.2 Mô hình dữ liệu quan hệ 53
2.3.1.3 Thiết kế cấu trúc các bảng dữ liệu 56
2.3.2 Thiết kế giao diện 56
2.3.2.1 Giao diện Landing page 56
2.3.2.2 Giao diện hệ thống 58
2.3.2.3 Giao diện Bệnh nhân 59
2.3.2.4 Giao diện Bác sĩ 59
2.3.2.5 Giao diện cuộc hẹn chẩn đoán và điều trị tâm lý trực tuyến62 2.3.2.6 Giao diện thanh toán 63
2.3.2.7 Giao diện tham gia trao đổi trực tuyến 65
2.3.2.8 Giao diện bài Test 67
2.3.2.9 Giao diện forum 69
CHƯƠNG 3: CÀI ĐẶT, TRIỂN KHAI VÀ KIỂM THỬ HỆ THỐNG ỨNG DỤNG HỖ TRỢ CHẨN ĐOÁN VÀ ĐIỀU TRỊ TÂM LÝ TRỰC TUYẾN 72
3.1.Cài đặt hệ thống 72
3.1.1 Yêu cầu phần cứng 72
3.1.1.1 Đối với máy chủ - Server 72
3.1.1.2 Đối với máy khách - Clients 72
3.1.2 Yêu cầu phần mềm 73
Trường Đại học Kinh tế Huế
Trang 83.3.Kiểm thử hệ thống 73
3.3.1 Kiểm thử chức năng 73
3.3.1.1 Danh sách các test case trong hệ thống 74
3.3.1.2 Test case lựa chọn bài kiểm tra 76
3.3.1.3 Test case làm bài kiểm tra 77
3.3.1.4 Test case tham gia cuộc hẹn 78
3.3.1.5 Test case phản hồi, đánh giá 79
3.3.1.6 Test case thảo luận 80
3.3.1.7 Báo cáo kết quả 81
3.3.2 Kiểm thử phi chức năng 82
PHẦN 3: KẾT LUẬN 84
1 Kết quả đạt được 84
2 Hạn chế của đề tài 85
3 Hướng phát triển đề tài 85
TÀI LIỆU THAM KHẢO 87
KẾT QUẢ KIỂM TRA ĐẠO VĂN 89
PHỤ LỤC 90
Trường Đại học Kinh tế Huế
Trang 9DANH MỤC TỪ VIẾT TẮT
1 API Application Programming
Interface Giao diện lập trình ứng dụng
2 CD Continuous Delivery Triển khai liên tục
3 CI Continuous Integration Tích hợp liên tục
4 COVID-19 Coronavirus Disease 19 Virus corona ở người 2019
6 GAD-7 Generalized Anxiety
Disorder-7 Rối loạn lo âu tổng quát 7
7 ISI Insomnia Severity Index Chỉ số mức độ nghiêm trọng của
chứng mất ngủ
9 MVC Model – View – Control Mô hình – Giao diện – Điều khiển
10 OOAD Object Oriented Analysis
13 UML Unified Modeling Language Ngôn ngữ mô hình hóa thống nhất
14 WHO World Health Organization Tổ chức Y tế thế giới
Trường Đại học Kinh tế Huế
Trang 10DANH MỤC BẢNG
Bảng 1 1 Cấu hình HTTP Request cho ứng dụng MoMo 22
Bảng 2 1 Phân tích các tác nhân 36
Bảng 2 2 Danh sách các use case có trong hệ thống 36
Bảng 2 3 Mô tả các bảng trong mô hình dữ liệu quan hệ 55
Bảng 3 1 Yêu cầu phần cứng 72
Bảng 3 2 Yêu cầu phần mềm 73
Bảng 3 3 Các giai đoạn kiểm thử 74
Bảng 3 4 Danh sách các test case 74
Bảng 3 5 Báo cáo kết quả sau khi kiểm thử hệ thống 81
Trường Đại học Kinh tế Huế
Trang 11DANH MỤC HÌNH
Hình 1 1 Cơ sở dữ liệu ở MongoDB 19
Hình 1 2 Giao diện trang chủ của hệ thống BookingCare 28
Hình 1 3 Giao diện trang chủ của Website Bệnh viện tâm thần Đà Nẵng 29
Hinh 2 1 Tỷ lệ người bị tổn thương về tâm lý trong đại dịch COVID-19 31
Hinh 2 2 Tỷ lệ người muốn làm bài test để kiểm tra tâm lý 31
Hinh 2 3 Lý do mọi người gặp vấn đề về tâm lý 31
Hinh 2 4 Biện pháp xử lý khi có vấn đề về tâm lý 31
Hinh 2 5 Hình thức điều trị khi có vấn đề về tâm lý 32
Hinh 2 6 Tỷ lệ số người đã từng sử dụng dịch vụ cuộc hẹn khám trực tuyến 32
Hinh 2 7 Hình thức đăng kí khám bệnh khi có vấn đề về tâm lý 32
Hinh 2 8 Tiêu chí lựa chọn nơi khám chữa bệnh 32
Hinh 2 9 Biểu đồ Use Case mô tả chức năng tổng quát hệ thống chẩn đoán và điều trị tâm lý trực tuyến 38
Hinh 2 10 Biểu đồ Use case quản lý hệ thống 39
Hinh 2 11 Biểu đồ Use Case quản lý cuộc hẹn chẩn đoán và điều trị tâm lý 41
Hinh 2 12 Biểu đồ Usecase tham gia cuộc hẹn 43
Hinh 2 13 Biểu đồ Use case quản lý Forum 45
Hinh 2 14 Biểu đồ Use Case quản lý thông tin bác sĩ 47
Hinh 2 15 Biểu đồ tuần tự tạo lịch khám điều trị tâm lý 49
Hinh 2 16 Biểu đồ tuần tự tham gia trò chuyện với lịch điều trị tâm lý 49
Hinh 2 17 Biểu đồ tuần tự hủy cuộc hẹn điều trị tâm lý 50
Hinh 2 18 Biểu đồ tuần tự hiển thị thông tin cuộc hẹn điều trị tâm lý 50
Trường Đại học Kinh tế Huế
Trang 12Hinh 2 19 Biểu đồ tuần tự hiển thị thông tin bác sĩ 51
Hinh 2 20 Biểu đồ tuần tự cập nhật thông tin cá nhân 51
Hinh 2 21 Biểu đồ tuần tự đăng nhập tài khoản 52
Hinh 2 22 Biểu đồ lớp 53
Hinh 2 23 Mô hình dữ liệu quan hệ 54
Hinh 2 24 Giao diện Header 56
Hinh 2 25 Giao diện Footer 56
Hinh 2 26 Giao diện landing page 57
Hinh 2 27 Giao diện đăng ký 58
Hinh 2 28 Giao diện đăng nhập 58
Hinh 2 29 Giao diện trang Dashboard của Bệnh nhân 59
Hinh 2 30 Giao diện trang Dashboard của Bác sĩ 60
Hinh 2 31 Giao diện thông tin cá nhân của bác sĩ 60
Hinh 2 32 Giao diện hiển thị danh sách các bác sĩ 61
Hinh 2 33 Giao diện cuộc hẹn điều trị tâm lý với bác sĩ 62
Hinh 2 34 Giao diện danh sách cuộc hẹn điều trị trước đó 62
Hinh 2 35 Giao diện Thanh toán 63
Hinh 2 36 Giao diện MoMo – phần mềm tích hợp bên thứ 3 để thanh toán 64
Hinh 2 37 Giao diện chuyển tài khoản thành công trên ứng dụng MoMo 64
Hinh 2 38 Giao diện thanh toán thành công 65
Hinh 2 39 Giao diện bắt đầu tham gia trao đổi trực tuyến 65
Hinh 2 40 Giao diện trò chuyện trực tuyến 66
Hinh 2 41 Giao diện đánh giá 67
Trường Đại học Kinh tế Huế
Trang 13Hinh 2 43 Giao diện các câu hỏi tương ứng với mỗi bài test 68
Hinh 2 44 Giao diện kết quả bài test 68
Hinh 2 45 Giao diện hệ thống đề nghị liên lạc với các bác sĩ 69
Hinh 2 46 Giao diện forum của Bác sĩ 70
Hinh 2 47 Giao diện forum của Bệnh nhân 70
Hình 3 1 Test case lựa chọn bài kiểm tra tâm lý 76
Hình 3 2 Test case làm bài kiểm tra tâm lý của bệnh nhân 77
Hình 3 3 Test case tham gia cuộc hẹn giữa bệnh nhân và bác sĩ 78
Hình 3 4 Test case phản hồi, đánh giả 79
Hình 3 5 Test case thảo luận trao đổi giữa bệnh nhân và bác sĩ 80
Trường Đại học Kinh tế Huế
Trang 14PHẦN 1: MỞ ĐẦU
1 Lý do chọn đề tài
Đại dịch SARS COVID-2 từ lúc xuất hiện tháng 1/2020 đã lan tràn trên hầu hết
các lãnh thổ toàn thế giới Dịch bệnh corona virus gây ra quá tải toàn bộ hệ thống y tế
từ sàng lọc nhiễm, phong tỏa và cách ly các trường hợp F0, F1, F2, cũng như điều trị
các biến chứng nặng với tỷ lệ tỷ vong cao khoảng 5.6% đến 6.4% Cho đến nay, có
hơn 3.8 triệu người nhiễm trên toàn thế giới, Việt Nam và thành phố Hồ Chí Minh
(TP.HCM) đã trải qua hai đợt dịch mà gần nhất là đợt bùng phát mạnh lần thứ 2 tại
TP.HCM, với tổng nhiễm hơn 110.000 trường hợp (28/7/2021) trên cả nước [1]
Không chỉ nhân viên y tế, giới chức trách đảm nhiệm vai trò chống dịch phải gặp
nhiều khó khăn, người dân cũng gặp phải nhiều vấn đề về sinh hoạt, kinh tế, kể cả sự
sợ hãi liên quan đến dịch bệnh, mà nhất là những bệnh nhân nhiễm corona virus Các
vấn đề về sức khỏe tâm thần đối với cộng đồng vì vậy cần đặt ra, không chỉ liên quan
đến sự sợ hãi mà còn nhiều vấn đề sức khỏe tâm thần khác
Không ai có thể ngờ rằng đại dịch có thể ảnh hưởng sâu rộng đến mọi mặt
đời sống xã hội trên phạm vi toàn cầu Đại dịch kéo dài với quy mô lớn hơn nhiều so
với dự báo Những làn sóng lây nhiễm COVID-19 mới và các biện pháp nhằm hạn chế
lây nhiễm áp đặt lên đời sống xã hội đã ảnh hưởng nghiêm trọng đến sự tồn tại, vận
hành và phát triển của nhiều quốc gia Tổ chức Y tế Thế giới (WHO) vẫn chưa thể
khẳng định bao giờ đại dịch chấm dứt và việc phải chung sống với COVID-19 dường
như là một thực tại hiện hữu
Song song với những thiệt hại về kinh tế - xã hội là gánh nặng bệnh tật và số ca
tử vong tăng theo thời gian Đại dịch còn là tác nhân nghiêm trọng gây tổn thương tâm
lý và sức khỏe tinh thần con người Người dân trên khắp thế giới nói chung và Việt
Nam nói riêng đã và đang trải qua tâm trạng bất an, lo âu, căng thẳng trước sự lây lan
nhanh của các biến chủng mới, do bị mất việc làm, thu nhập giảm sút, bị cách ly, xét
nghiệm, nhập viện Nguy cơ rối loạn thần kinh như trầm cảm, lo lắng, hoang mang, rơi
Trường Đại học Kinh tế Huế
Trang 15vào trạng thái khủng hoảng gia tăng khi tình hình dịch bệnh, phong tỏa và giãn cách xã
hội kéo dài
Tuy nhiên ở Việt Nam công tác phòng chống dịch chỉ tập trung vào ngăn chặn
sự bùng phát, lây lan và chữa trị người bệnh Còn các vấn đề về tâm lý của người dân
rất ít được chú ý đến Ở Việt Nam hiện tại có rất ít các bệnh viện, phòng khám đa khoa
chuyên điều trị về tâm lý Đặc biệt trong tình hình dịch ngày càng căng thẳng Việc đi
khám tại các bệnh viện, trung tâm điều trị tâm lý ngày càng trở nên khó khăn và nguy
cơ lây nhiễm corana virut cao hơn Dẫn tới tình trạng nhiều người dân dễ tiếp xúc với
những người nhiễm trước đó và có thể lây bệnh từ họ Nhận thấy nhu cầu về tư vấn
tâm lý (đặc biệt là tư vấn online) là vô cùng cần thiết trong giai đoạn hiện tại Vì vậy,
“Xây dựng hệ thống ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý trực tuyến dựa
trên n ền tảng ReactJS và NodeJS - PsyCare” được tạo ra để giúp mọi người giải
quyết các vấn đề tâm lý
2 Mục tiêu nghiên cứu
2.1 Mục tiêu tổng quát
Xây dựng thành công hệ thống ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý trực
tuyến dựa trên nền tảng ReactJS và NodeJS nhằm góp phần hỗ trợ tư vấn, điều trị các vấn
đề tâm lý cho người dân từ xa, đặc biệt trong giai đoạn đại dịch đang diễn ra
2.2 Mục tiêu cụ thể
- Khảo sát, phân tích nhu cầu của các bệnh nhân trong việc chẩn đoán và điều
trị tâm lý, đồng thời nhu cầu hợp tác của các bác sĩ
- Khảo sát quy trình chẩn đoán và điều trị tâm lý
- Nghiên cứu các phương pháp, các công cụ phân tích, thiết kế và phát triển hệ
thống ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý trực tuyến
- Xây dựng được website hoàn chỉnh
- Xây dựng được các test case để kiểm thử và đánh giá website
Trường Đại học Kinh tế Huế
Trang 163 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
- Quy trình khám bệnh của bác sĩ dành cho các bệnh nhân có vấn đề về tâm lý
- Các bài kiểm tra tâm lý dựa trên tiêu chuẩn theo bộ Y tế
- Các công cụ hỗ trợ xây dựng ứng dụng như ReactJS, NodeJS, MongoDB,
Cloudinary,
- Cổng thanh toán ví điện tử MoMo
3.2 Phạm vi nghiên cứu
- Thời gian: Từ ngày 11/10/2021 đến ngày 16/01/2022
- Không gian: Khóa luận được thực hiện dựa trên khảo sát thực tế tại bệnh viện
Hello Bác sĩ và trung tâm y tế về vấn đề tâm lý tại thành phố Đà Nẵng
4 Phương pháp nghiên cứu
Phương pháp thu thập thông tin
- Quan sát: Quan sát cách hoạt động của video call trên nền tảng của Google
meet từ đó xây dựng lên một module với tính năng trao đổi trực tiếp với bệnh nhân và
bác sĩ Đồng thời quan sát cách thức liên lạc giữa bệnh nhân và bác sĩ thông qua các
website đã được triển khai liên quan, cách quản lý của bác sĩ với lịch đặt lệnh, cách
thức cuộc hẹn để chẩn đoán đối với bệnh nhân, cách thức liên hệ, làm các bài kiểm tra
đánh giá bằng bộ câu hỏi trắc nghiệm đã qua kiểm định, đánh giá của các chuyên gia
- Nghiên cứu tài liệu: Tìm hiểu các lý thuyết xây dựng hệ thống thông tin quản
lý bằng ngôn ngữ ReactJS, NodeJS Từ đó nắm rõ được các kiến thức về ngôn ngữ lập
trình là điều kiện cần thiết cho việc xây dựng dự án Bên cạnh đó, tìm hiểu qua sách vở,
bài báo, các tài liệu thống kê, tổng hợp về thông tin tình hình dịch bệnh COVID, số
lượng người có vấn đề tâm lý trước và sau khi khỏi bệnh do Corona virus gây ra
- Phỏng vấn: Hỏi đáp một số câu hỏi với người bệnh về tâm lý thay đổi trước
và sau khi mắc bệnh, cũng như hỏi đáp các bác sĩ về cách điều trị cho các bệnh nhân
Trường Đại học Kinh tế Huế
Trang 17nghiệm được các bác sĩ có kinh nghiệm điều trị tâm lý lâu năm viết, từ đó xây dựng
nên bộ câu hỏi trắc nghiệm đánh giá tình trạng tâm lý của bệnh nhân
- Khảo sát trực tuyến: Thu thập các thông tin liên quan đến tình trạng cũng như
nhu cầu của người dân trong việc chẩn đoán và điều trị tâm lý trực tuyến thông qua
biểu mẫu của Google
Phương pháp phát triển
- Mô hình Agile – quy trình Scrum: Sử dụng quy trình Scrum trong quá trình
xây dựng và phát triển phần mềm với mỗi Sprint được thực hiện trong vòng 2 tuần
Mỗi Sprint bao gồm cả một quy trình phát triển phần mềm cho 1 đến 2 chức năng
chính cho hệ thống
- Phân tích thiết kế hệ thống theo hướng đối tượng: sử dụng công cụ UML
- Lập trình hệ thống: Giao diện ứng dụng sử dụng ngôn ngữ HTML5 và CSS3,
Javascript, với framework ReactJS, cơ sở dữ liệu MongoDB, phía máy chủ sử dụng
NodeJS để xây dựng ứng dụng
5 Cấu trúc khóa luận
Ngoài phần mở đầu và kết luận, nội dung chính của báo cáo khóa luận gồm
có 3 chương:
Chương 1: Cơ sở lý luận và thực tiễn về xây dựng hệ thống ứng dụng hỗ
trợ chẩn đoán và điều trị tâm lý trực tuyến - Chương này trình bày cơ sở lý luận về
xây dựng hệ thống ứng dụng bao gồm cấu trúc hệ thống ứng dụng, các khái niệm về
phân tích, thiết kế hướng đối tượng, các công cụ hỗ trợ xây dựng ứng dụng và tổng
quan về kiểm thử hệ thống Đồng thời nêu rõ cơ sở thực tiễn về việc xây dựng hệ
thống ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý trực tuyến
Chương 2: Khảo sát, Phân tích, và thiết kế hệ thống ứng dụng chẩn đoán
và điều trị tâm lý trực tuyến – Chương này trình bày các vấn đề liên quan đến quá
trình khảo sát, phân tích và thiết kế hệ thống bao gồm mô tả bài toán, các tài liệu đặc tả
và hồ sơ của hệ thống
Trường Đại học Kinh tế Huế
Trang 18Chương 3: Cài đặt, Triển khai và kiểm thử hệ thống ứng dụng hỗ trợ chẩn
đoán và điều trị tâm lý trực tuyến – Trình bày các thông tin cần thiết về môi trường
để cài đặt hệ thống; đồng thời, trình bày kết quả kiểm thử hệ thống ứng dụng Psycare
với các test case đã xây dựng, cũng như kết quả báo cáo và đánh giá hệ thống khi triển
khai hệ thống
Trường Đại học Kinh tế Huế
Trang 19PHẦN 2: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU CHƯƠNG 1: CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN VỀ XÂY DỰNG HỆ THỐNG
ỨNG DỤNG HỖ TRỢ CHẨN ĐOÁN VÀ ĐIỀU TRỊ TÂM LÝ TRỰC TUYẾN
1.1 Cơ sở lý luận về xây dựng hệ thống ứng dụng
1.1.1 C ấu trúc hệ thống ứng dụng
Mô hình Client – Server [2] (mô hình máy khách – máy chủ) là một mô hình
tổng quát nhất, trên thực tế thì một server có thể được nối tới nhiều server khác nhằm
làm việc hiệu quả và nhanh hơn Khi nhận được một yêu cầu từ phía máy khách
(client), máy chủ (server) này có thể gửi tiếp yêu cầu vừa nhận được cho máy chủ khác
Ví dụ như database server vì bản thân nó không thể xử lý yêu cầu này được Trong khi
đó, máy chủ (Server) có thể thi hành các nhiệm vụ đơn giản hoặc phức tạp
- Dịch vụ máy khách (Client Service): cung cấp giao diện cho máy tính người
dùng, từ đó yêu cầu dịch vụ từ phía máy chủ và hiển thị thông tin kết quả lên cho người
dùng
- Dịch vụ máy chủ (Server Service): cung cấp giao diện minh bạch được tiêu
chuẩn hóa cho máy khách để khách hàng có các thông tin chi tiết cụ thể về hệ thống
(phần cứng và phần mềm)
Ưu điểm:
- Có khả năng chống quá tải mạng
- Client server có khả năng chống quá tải mạng
- Client server đảm bảo toàn vẹn dữ liệu khi có sự cố xảy ra
- Dễ dàng mở rộng hệ thống mạng
- Chỉ cần chung định dạng giao tiếp mà không cần chung nền tảng là có thể hoạt
động được
- Client server cho phép tích hợp các kỹ thuật hiện đại như GIS, mô hình thiết
kế hướng đối tượng,…
Trường Đại học Kinh tế Huế
Trang 20- Với mô hình Client server, người dùng có thể truy cập dữ liệu từ xa, thực hiện
các thao tác gửi, nhận file hay tìm kiếm thông tin đơn giản
Nhược điểm:
- Cần bảo trì, bảo dưỡng máy chủ thường xuyên
- Khả năng bảo mật thông tin mạng
1.1.2 Phân tích và thi ết kế hướng đối tượng
1.1.2.1 Tổng quan về phân tích và thiết kế hướng đối tượng
Quy trình phát triển phần mềm, được phân chia thành nhiều giai đoạn như thu
thập và phân tích yêu cầu, phân tích và thiết kế hệ thống, phát triển (mã hóa), kiểm thử,
triển khai và bảo trì Trong đó giai đoạn phân tích và thiết kế là giai đoạn khó khăn và
phức tạp nhất Giai đoạn này sẽ thực hiện các yêu cầu đặt ra, xác định giải pháp, mô tả
chi tiết giải pháp bằng cách trả lời hai câu hỏi Phần mềm này làm cái gì? (What?) và
Làm nó như thế nào? (How?)
Để phân tích và thiết kế một phần mềm thì có nhiều cách làm, một trong những
cách làm đó là phân tích các đối tượng để làm nền tảng để phân tích hệ thống gồm
những đối tượng nào và các đối tượng đó tương tác với nhau như thế nào Việc mô tả
được tất cả các đối tượng và sự tương tác của chúng sẽ giúp chúng ta hiểu rõ hệ thống
và cài đặt được nó Phương thức này gọi là Phân tích thiết kế hướng đối tượng (Object
Oriented Analysis and Design - OOAD)
1.1.2.2 Tổng quan về biểu đồ UML
Ngôn ngữ mô hình hóa thống nhất (UML – Unified Modeling Language) là một
ngôn ngữ sử dụng cho việc hình dung, mô tả, xây dựng và làm tài liệu của các phần
mềm Mô hình gồm các ký hiệu đồ họa mà các phương pháp hướng đối tượng sử dụng
để thiết kế các hệ thống thông tin một cách nhanh chóng
Cách tiếp cận theo mô hình của UML giúp ích rất nhiều cho những người thiết kế
và thực hiện hệ thống thông tin cũng như những người sử dụng nó, tạo nên một cái nhìn
bao quát và đầy đủ về hệ thống thông tin dự định xây dựng Cách nhìn bao quát này
Trường Đại học Kinh tế Huế
Trang 21phân tích đến việc thiết kế, thẩm định và kiểm tra sản phẩm ứng dụng công nghệ thông
tin
UML sử dụng một hệ thống ký hiệu thống nhất biểu diễn các Phần tử mô hình
Model elements) Tập hợp các phần tử mô hình tạo thành các sơ đồ UML (UML
Diagrams)
1.1.2.3 Một số biểu đồ UML phổ biến
Bi ểu đồ Use case (Use case diagram)
Biểu đồ Use case biểu diễn các chức năng của hệ thống Nó bao gồm một tập hợp
các tác nhân (actor), các ca sử dụng (use case) và các mối quan hệ (relationship) giữa các
ca sử dụng Biểu đồ ca sử dụng chỉ ra sự tương tác giữa các tác nhân và hệ thống thông tin
các ca sử dụng Tác nhân có thể là con người hay một hệ thống khác cung cấp thông tin
hay tác động lên hệ thống Biểu đồ ca sử dụng có thể được phân rã theo nhiều mức khác
nhau Từ tập hợp yêu cầu xác định được của hệ thống, biểu đồ ca sử dụng sẽ chỉ ra hệ
thống cần thực hiện điều gì để thỏa mãn các yêu cầu của người dùng hệ thống đó
Các thành phần trong mô hình:
- Hệ thống: Hệ thống biểu diễn ranh giới giữa bên trong và bên ngoài của một
chủ thể trong phần mềm đang xây dựng Một hệ thống ở trong biểu đồ ca sử dụng
không phải bao giờ cũng nhất thiết là một hệ thống phần mềm, nó có thể là chiếc máy,
hoặc là một hệ thống thực (như một doanh nghiệp, một trường đại học, )
- Tác nhân: là người sử dụng hệ thống, một tác nhân có thể là một người dùng
thực hoặc các hệ thống máy tính khác có vai trò nào đó trong hoạt động của hệ thống
Một tác nhân có thể thực hiện nhiều ca sử dụng và ngược lại một ca sử dụng cũng có
thể được thực hiện bởi nhiều tác nhân
Tác nhân được kí hiệu:
Trường Đại học Kinh tế Huế
Trang 22- Các ca sử dụng (use case): Đây là thành phần cơ bản của biểu đồ ca sử
dụng Các ca sử dụng được biểu diễn bởi các hình elip thể hiện một chức năng xác
định của hệ thống
Các use case được kí hiệu bằng hình elip:
- Quan hệ giữa các ca sử dụng: Giữa các ca sử dụng có thể bao hàm các quan
hệ như sau:
Bao hàm (Include): Quan hệ mô tả việc một Use case lớn được chia
thành các Use Case nhỏ để dễ cài đặt (module hóa) hoặc thể hiện sự dùng lại
Mở rộng (Extend): Quan hệ mô tả quan hệ giữa 2 Use Case Quan hệ này
được sử dụng khi có một Use Case được tạo ra để bổ sung chức năng cho một Use
Case có sẵn và được sử dụng trong một điều kiện nhất định nào đó
Đặc biệt hóa (Specialization): Được sử dụng để thể hiện quan hệ thừa kế
giữa các Actor hoặc giữa các Use Case với nhau Ca sử dụng 1 kế thừa các chức năng
từ ca sử dụng 2 thì ca sử dụng 1 được gọi là đặc biệt hóa của ca sử dụng 2 và ca sử
dụng 2 là tổng quát hóa của ca sử dụng
Trường Đại học Kinh tế Huế
Trang 23Bi ểu đồ tuần tự (Sequence Diagram)
Biểu đồ tuần tự [3] là biểu đồ dùng để xác định các trình tự diễn ra sự kiện của
một nhóm đối tượng nào đó Nó miêu tả chi tiết các thông điệp được gửi và nhận giữa
các đối tượng đồng thời cũng chú trọng đến việc trình tự về mặt thời gian gửi và nhận
các thông điệp đó
Các thành phần của biểu đồ tuần tự:
- Đối tượng (Object or Class): biểu diễn bằng hình chữ nhật
- Đường đời đối tượng (Lifelines): biểu diễn bằng các đường gạch rời thẳng
đứng bên dưới các đối tượng
Thông điệp (Message): được dùng để giao tiếp giữa các đối tượng và lớp.
Biểu diễn bằng các đường mũi tên
Trường Đại học Kinh tế Huế
Trang 24 Thông điệp đồng bộ (Synchronous Message): thông điệp đồng bộ cần có
một yêu cầu trước hành động tiếp theo
Thông điệp không đồng bộ (Asynchronous Message): Thông điệp không
đồng bộ không cần có một yêu cầu trước hành động tiếp theo
Thông điệp chính mình (Self Message): là thông điệp mà đối tượng gửi
cho chính nó để thực hiện các hàm nội tại
Thông điệp trả lời hoặc trả về (Reply or Return Message): Là thông điệp
trả lời lại khi có yêu cầu hoặc sau khi kiểm tra tính đúng đắn của một điều kiện nào đó
Thông điệp tạo mới (Create Message): là thông điệp được trả về khi tạo
mới một đối tượng
Thông điệp xóa (Delete Message): là thông điệp được trả về khi xóa một
Trang 25- Xử lý trong đối tượng: biểu diễn bằng các đoạn hình chữ nhật rỗng nối với các
đường đời đối tượng
1.1.3 Các công c ụ hỗ trợ xây dựng ứng dụng
1.1.3.1 ReactJS
ReactJS [4] là một thư viện viết bằng Javascript được tạo bởi Jordan Walke –
một kỹ sư phần mềm tại Facebook nhằm giải quyết các vấn đề về hiệu suất và khả
năng tương thích cho các ứng dụng web ReactJS ra đời vào năm 2011, nó đã mang
đến một triển vọng mới về phân chia trang để thuận tiện cho việc tạo ra sự linh động
trong quản lý tài nguyên và tăng khả năng trải nghiệm cho người dùng trên các thiết bị
ReactJS là một thư viện dùng để xây dựng giao diện người dùng (User Interface –
UI) ReactJS không phải là một framework và được xây dựng xung quanh các component
(thành phần) React được sử dụng rộng rãi và có hệ sinh thái phong phú đa dạng
Mục đích của việc tạo ra ReactJS là để tạo ra những ứng dụng website hấp dẫn
với tốc độ nhanh và hiệu quả cao với những mã hóa tối thiểu Và mục đích chủ chốt
của ReactJS đó chính là mỗi website khi đã sử dụng ReactJS thì phải chạy thật mượt
thật nhanh và có khả năng mở rộng cao và đơn giản thực hiện
ReactJS không chỉ hoạt động trên phía máy khách mà còn được phân chia và
thực hiện ngay trên máy chủ, chúng có thể kết nối với nhau bởi vì ReactJS xuất phát từ
việc tập trung vào các phần riêng lẻ
ReactJS tạo ra Virtual DOM (DOM ảo) Từ đó, Virtual DOM có thể tạo ra bản
cache cấu trúc dữ liệu của ứng dụng trên bộ nhớ Sau đó, ở mỗi vòng lặp, nó liệt kê
những thay đổi và sau đó là cập nhật lại sự thay đổi trên DOM của trình duyệt
Trường Đại học Kinh tế Huế
Trang 26Ưu điểm của ReactJS:
- ReactJS cực kì hiệu quả [5]: ReactJS tạo ra cho chính nó DOM ảo – nơi mà các
component thực sự tồn tại trên đó Điều này sẽ giúp cải thiện hiệu suất rất nhiều Đồng
thời ReactJS cũng so sánh những thay đổi nào cần cập nhật lên DOM và chỉ thực hiện
chúng
- Viết các đoạn mã hóa code sẽ trở nên dễ dàng hơn vì nó sử dụng cú pháp cú
pháp JSX(JSX viết tắt của từ Javascript XML)( - cho phép thực hiện trộn các đoạn mã
hóa HTML và Javascript lại với nhau
- Có nhiều công cụ phát triển giúp cho việc debug code một cách dễ dàng hơn,
khi cài đặt ứng dụng mở rộng của Chrome chuyên dành cho ReactJS Từ đó có thể
xem trực tiếp vào Virtual Dom (Dom Ảo)
- Thân thiện với SEO Bởi vì dưới sự hỗ trợ của các render và trả về trình duyệt
dưới dạng web page khi mà chạy ứng dụng ReactJS trên Server và các Virtual Dom
[5]
- Khi viết các phương thức, các chức năng tác động lên từng thành phần Hoge
(thay đổi Model Data – Lớp chứa kết nối các bảng từ cơ sở dữ liệu), View (Giao diện
người dùng) sẽ lập tức được cập nhật Khi mà chúng ta không có tác động trực tiếp gì
vào các thành phần DOM trong View
- Làm việc với vấn đề test giao diện cực kì dễ cho việc test case giao diện vì
virtual DOM được cài đặt hoàn toàn bằng JS
- Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho
bảo trì và sửa lỗi
Nhược điểm của ReactJS:
- ReactJS chỉ phục vụ cho tầng View React chỉ là View Library nó không phải
là một MVC Framework như những framework khác Đây chỉ là thư viện của
Facebook giúp render ra phần View Vì thế React sẽ không có phần Model và
Trường Đại học Kinh tế Huế
Trang 27Controller, mà phải kết hợp với các thư viện khác React cũng sẽ không có 2-way
binding hay là Ajax
- Tích hợp ReactJS vào các framework MVC truyền thống yêu cầu cần phải
cấu hình lại
- ReactJS khá nặng nếu so với các Framework tương đương (Khoảng 35kb của
ReactJS so với 39kb của Angular, trong khi đó Angular là một framework hoàn chỉnh [5]
- Khó tiếp cận cho người mới học Web
Ứng dụng của ReactJS:
- ReactJS là thư viện thích hợp cho những ứng dụng cần mở rộng, quy mô lớn,
không phù hợp cho những ứng dụng nhỏ cần hoàn thành sớm [6]
- Các công ty công nghệ đang triển khai ReactJS như Facebook, PayPal, Uber,
Instagram và Airbnb, sử dụng để giải quyết các vấn đề liên quan tới giao diện của người
dùng
1.1.3.2 NodeJS
NodeJS [7] là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên
Javascript Runtime của Google Chrome mà chúng ta có thể xây dựng được các ứng
dụng mạng một cách nhanh chóng và dễ dàng mở rộng
NodeJS được xây dựng và phát triển bởi Ryan Lienhart vào năm 2009, bảo trợ
bởi công ty Joyent, trụ sở tại California, Hoa Kỳ NodeJS tạo ra được các ứng dụng có
tốc độ xử lý nhanh, với thời gian thực
NodeJS áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh,
cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể
Đặc điểm của NodeJS:
- Các ứng dụng NodeJS được viết bằng Javascript
- NodeJS chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện
Event-driven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả
Trường Đại học Kinh tế Huế
Trang 28- Có thể chạy ứng dụng NodeJS ở bất kỳ thiết bị nào (macOs, Window, Linux)
với thời gian thực
Trường Đại học Kinh tế Huế
Trang 29Ưu điểm:
- Nhận và xử lý nhiều kết nối chỉ với một single-thread Điều này giúp hệ
thống tốn ít RAM nhất và chạy nhanh nhất khi không phải tạo thread mới cho mỗi
truy vấn giống PHP [8]
- Tốc độ xử lý nhanh nhờ cơ chế xử lý bất đồng bộ (non-blocking) Từ đó có thể
dễ dàng xử lý hàng ngàn kết nối trong khoảng thời gian ngắn
- Dễ dàng mở rộng khi có nhu cầu phát triển website
- Ứng dụng trên một trang (Single page Application) NodeJS có khả năng xử lý
nhiều yêu cầu đồng thời thời gian phản hồi nhanh
- NodeJS có thể xử lý hàng nghìn quá trình và trả ra một luồng khiến cho hiệu
suất hoạt động đạt mức tối đa nhất và tuyệt vời nhất
- NodeJS rất hiệu quả khi xây dựng những ứng dụng thời gian thực (real-time
applications) như ứng dụng chat, các dịch vụ mạng xã hội như Facebook, Twitter,
Nhược điểm:
- Ứng dụng nặng tốn tài nguyên Bởi vì NodeJS được viết bằng C++ và
Javascript, nên phải thông qua thêm một trình biên dịch của NodeJS [8]
- NodeJS và ngôn ngữ khác NodeJS, PHP, Ruby, Python, NET không có sự
chênh lệch quá lớn Vì việc cuối cùng sử dụng các ngôn ngữ đó là để phát triển App Web
Nh ững ứng dụng nên triển khai NodeJS
- Websocket server: các máy chủ web socket như là Online chat, Game server,
- Fast File Upload Client: các chương trình upload file tốc độ cao.
- Advertisement Server: các máy chủ quảng cáo.
- Cloud Services: Các dịch vụ đám mây.
- RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng
khác thông qua API
Trường Đại học Kinh tế Huế
Trang 30- Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc
độ thời gian thực Micro Services có ý tưởng là chia nhỏ một ứng dụng lớn thành các
dịch vụ nhỏ và kết nối chúng lại với nhau NodeJS đã làm tốt điều này
MongoDB [9] là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là cơ sở dữ liệu
(CSDL) thuộc NoSQL và được hàng triệu người sử dụng
MongoDB là một cơ sở dữ liệu hướng tài liệu, các dữ liệu được lưu trữ trong
document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh
JSON hoạt động trên khái niệm collection và document
Collection là nhóm các tài liệu, mỗi collection sẽ thuộc về một database
duy nhất và nó không có ràng buộc về mối quan hệ nên truy xuất rất nhanh
Document trong MongoDB có cấu trúc tương tự như kiểu JSON được
thể hiện dưới các cặp key-value nên có tính năng động lớn những các cặp key-value
này không giống nhau ở mỗi document
Đặc điểm của MongoDB:
Với MongoDB chúng ta sử dụng Collection thay vì bảng để lưu dữ liệu và
document kiểu JSON sẽ ứng với row như được sử dụng trong các CSDL quan hệ khác
(MySQL, SQL Server, )
Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ
liệu lưu trữ không cần tuân theo một cấu trúc nhất định
Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông
qua ngôn ngữ truy vấn MongoDB
Ưu điểm:
- Mỗi một collection sẽ có các kích cỡ và các document khác nhau, rất linh hoạt
trong việc lưu trữ tài liệu
Trường Đại học Kinh tế Huế
Trang 31- Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có sự kết nối
giữa các bảng như trong Hệ quản trị cơ sở dữ liệu (RDBMS - Relational Database
Management System)
- MongoDB rất dễ mở rộng Trong MongoDB có một khái niệm cluster là cụm
các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm
một node mới vào cluster
- Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ RAM, để phục
vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng
- Hiệu năng cao, với tốc độ truy vấn trong MongoDB nhanh hơn hẳn so với các
hệ quản trị cơ sở dữ liệu Với một lượng lớn dữ liệu đủ lớn thì thử nghiệm cho thấy tốc
độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL
Nhược điểm:
- MongoDB không có tính chất ràng buộc như trong RDBMS nên khi thao tác
mongoDB phải hết sức cẩn thận
- Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về
value do đó key sẽ bị lặp lại Không hỗ trợ câu lệnh join nên dễ bị dư thừa dữ liệu
- Khi thực hiện thao tác đối với bản ghi, MongoDB sẽ chưa cập nhật ngay
xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi
từ RAM xuống ổ cứng Điều này sẽ có nguy cơ làm mất dữ liệu khi xảy ra các tình
huống như mất điện,
Ứng dụng của MongoDB:
- Các hệ thống thời gian thực (Real-time) yêu cầu phản hồi nhanh
- Hệ thống bigData với yêu cầu truy vấn nhanh hay các hệ thống có lượng yêu
cầu lớn thì MongoDB sẽ là lựa chọn ưu tiên hơn CSDL quan hệ
- Website có tính chất insert cao Bởi vì mặc định MongoDB có sẵn cơ chế ghi
với tốc độ cao và an toàn
Trường Đại học Kinh tế Huế
Trang 32Hình 1 1 Cơ sở dữ liệu ở MongoDB
1.1.3.4 Cloudinary
Cloudinary [10] là một dịch vụ điện toán đám mây, nó cung cấp một giải pháp quản lý
hình ảnh bao gồm upload, lưu trữ, thao tác, tối ưu hóa và bàn giao sản phẩm cho khách hàng
Đặc điểm của Cloudinary:
Có thể đăng tải hình ảnh lên Cloud, tự động thực thi các thao tác với ảnh một
cách thông minh mà không cần phải cài đặt bất kỳ một phần mềm phức tạp nào khác
Cloudinary cung cấp các APIs toàn diện và màn hình quản lý giúp chúng ta dễ
dàng tích hợp vào các trang web và ứng dụng di động
Cloudinary có nhiều gói dịch vụ khác nhau, trong đó có gói miễn phí cho phép
đăng tải khoảng 75000 ảnh
Trang 33- Có các tùy chọn nén ảnh phù hợp nên không làm ảnh hưởng đến chất lượng của
ảnh Trong khi cá Cloudinary miễn phí khác đều làm giảm chất lượng của ảnh dù ít hay
nhiều
- Miễn phí 25GB lưu trữ hoặc 25000 lượt chuyển đổi
Nhược điểm:
- Gói miễn phí của Cloudinary không phù hợp với website có lưu lượng truy
cập cao hoặc có nhiều ảnh
- Tên miền tùy chỉnh dạng cdn.ten-mien.com chỉ có gói Advanced không có gói
miễn phí nên có thể sẽ ảnh hưởng đến chất lượng SEO
- Cloudinary không thiết lập header cho ảnh
1.1.3.5 Cổng thanh toán ví điện tử MoMo
Cổng thanh toán trực tuyến là hệ thống kết nối giữa ngân hàng, người mua, và
người bán với mục tiêu cốt lõi là người bán có thể nhận được tiền ngay khi giao dịch
trực tuyến hoàn tất
MoMo hiện nay là Ví điện tử hàng đầu Việt Nam với hơn 25 triệu người dùng
(số liệu tính đến tháng 3/2021), được cấp phép và quản lý bởi ngân hàng nhà nước
Việt Nam và là đối tác chiến lược của hàng loạt các ngân hàng lớn như Vietcombank,
VPBank, OCB, VietinBank và các tổ chức thẻ Visa/Master/JCB[11]
Với cổng thanh toán trực tuyến MoMo, người dùng có thể:
- Nạp tiền điện thoại, mua thẻ cào điện thoại của tất cả các nhà mạng mọi lúc
mọi nơi với mức chiết khấu 3-5%
- Thanh toán tất cả các loại hóa đơn điện, nước, internet, truyền hình cáp,
nhanh chóng và thuận tiện
- Chuyển nhận tiền siêu nhanh và đơn giản chỉ với số điện thoại
- Thanh toán các khoản vay tiêu dùng cá nhân, mua thẻ game, vé xem phim, đặt
vé máy bay, phòng khách sạn, mua e-voucher, và hàng trăm dịch vụ đa dạng khác,
Trường Đại học Kinh tế Huế
Trang 34- Miễn phí giao dịch khi nạp tiền vào ví và rút được tiền ngay lập tức khi liên
kết ví với tài khoản ngân hàng Vietcombank, VPBank, OCB, Vietinbank,
Các hình th ức tích hợp MoMo cho doanh nghiệp
Thanh toán trên PC/Mobile website (Web-in-app)
- Áp dụng: Doanh nghiệp có website bán hàng/ dịch vụ trực tuyến
- Mô tả: Mỗi giao dịch thanh toán qua MoMo trên website sẽ tạo ra một mã QR
tương ứng Khách hàng có ví MoMo và dùng chức năng “Quét mã thanh toán”
Thanh toán trên Mobile App của đối tác
- Áp dụng: Doanh nghiệp có ứng dụng di động để bán hàng/ dịch vụ trực tuyến
- Mô tả: Khách hàng lựa chọn thanh toán bằng MoMo, hệ thống sẽ tự động mở
ứng dụng và xác nhận thanh toán để hoàn tất giao dịch
Thanh toán tại quầy – QR code
- Áp dụng: Doanh nghiệp có cửa hàng bán hàng/ dịch vụ trực tiếp
- Mô tả: MoMo cung cấp cho doanh nghiệp một mã QR Khách hàng dùng chức
năng quét mã QR để tiến hành thanh toán
Thanh toán tại quầy – Thanh toán bằng máy POS
- Áp dụng: Doanh nghiệp có cửa hàng bán hàng/ dịch vụ trực tiếp và có máy
scanner
- Mô tả: Nhân viên cửa hàng quét mã thanh toán trên App MoMo của khách
hàng để tiến hành thanh toán
Thông tin tích h ợp kỹ thuật [12]
Môi trường: MoMo cung cấp hai môi trường riêng biệt, với môi trường kiểm
thử - sử dụng cho việc xây dựng tính năng, chức năng, tìm lỗi, và môi trường
production – sử dụng cho người dùng cuối
Thông tin cấu hình kết nối với MoMo API
Trường Đại học Kinh tế Huế
Trang 35Thông tin chi tiết về cấu hình tích hợp API cho các hình thức triển khai MoMo
của doanh nghiệp có thể xem chi tiết tại đường dẫn:
https://business.momo.vn/assets/docs/api/MoMo-Payment-APIs v2.1.5.pdf
Các thông tin cần thiết trong việc tích hợp API:
- Partner Code: Thông tin để định danh tài khoản doanh nghiệp
- Access Key: Cấp quyền truy cập vào hệ thống MoMo
- Secret Key: Dùng để tạo chữ ký điện tử
- Public Key: Sử dụng để tạo mã hóa dữ liệu bằng thuật toán RSA
Sử dụng MoMo để thanh toán trên môi trường kiểm thử: Quét mã QR Code,
Tạo mã thanh toán POS, SDK Mobile (App-In-App), Thanh toán bằng nguồn tiền Ví
1.1.3.6 Hệ thống Tích hợp liên tục và Chiến lược phân phối liên tục (CI / CD)
trong môi trường Github
Tích hợp liên tục (CI - Continuous Integration): là phương pháp phát triển phần
mềm yêu cầu các thành viên của team tích hợp công việc của họ thường xuyên, mỗi
ngày ít nhất một lần Mỗi tích hợp được “build” tự động (bao gồm cả kiểm thử) nhằm
phát hiện lỗi nhanh nhất có thể Cả đội nhận thấy rằng cách tiếp cận này giảm thiểu
vấn đề tích hợp và cho phép phát triển phần mềm nhanh hơn
Lợi ích của việc sử dụng CI:
Trường Đại học Kinh tế Huế
Trang 36- Giảm thiểu rủi ro nhờ việc phát hiện lỗi và fix sớm, tăng chất lượng phần
mềm nhờ việc tự động test và quan sát tự động dựa vào cấu hình đã cài đặt, đảm bảo
coding style chẳng hạn mỗi dòng code dài không quá 255 kí tự
- Giảm thiểu những quy trình thủ công lặp đi lặp lại thay vì xây dựng tự động,
chạy kiểm thử tự động
- Sinh ra phần mềm có thể deploy ở bất kì thời gian, địa điểm
Triển khai liên tục (CD - Continuous Delivery): triển khai tất cả thay đổi về
code (đã được build và test) đến môi trường testing hoặc staging CD cho phép
developer tự động hóa phần testing bên cạnh việc sử dụng unit test, kiểm tra phần
mềm qua nhiều thước đo trước khi triển khai cho khách hàng Những bài test bao gồm
UI testing, load testing, integration testing, API testing Nó tự động hoàn toàn quy
trình release phần mềm Continuous Delivery được thực hiện bằng cách sử dụng
Deployment Pipeline
Hệ thống triển khai tích hợp liên tục và chiến lược phân phối liên tục trong môi
trường Github bằng cách thiết lập một quy trình CI/CD tự động hóa sẽ giảm một lượng
lớn thời gian để triển khai mã nguồn lên nền tảng đám mây Nó có thể tự động triển
khai tới các máy chủ, hỗ trợ kiểm tra, đảm bảo chất lượng sản phẩm và triển khai các
giai đoạn trong vòng đời phát triển phần mềm
1.1.4 T ổng quan về kiểm thử hệ thống
1.1.4.1 Khái niệm về kiểm thử
Kiểm thử phần mềm [14]: Là quá trình thực hiện một chương trình với mục đích
tìm ra lỗi, đảm bảo phần mềm thực hiện đúng theo những gì mà chúng ta thiết kế
Trong quá trình sử dụng phần mềm không phát sinh bất cứ thứ gì không mong muốn
1.1.4.2 Các cấp độ kiểm thử
Ki ểm thử thành phần (Component testing) [15]: là loại kiểm thử phần mềm
trong đó các thành phần đơn lẻ của phần mềm được kiểm tra như: Hàm (Function),
Lớp (Class), Phương thức (Method) Kiểm thử đơn vị được thực hiện trong quá trình
Trường Đại học Kinh tế Huế
Trang 37phát triển ứng dụng Lỗi ở mức độ này thường được chỉnh sửa ngay sau khi những lỗi
được tìm ra mà không cần lưu lại và quản lý như các mức độ kiểm thử khác
Ki ểm thử tích hợp (Integration testing) [16]: là loại kiểm thử trong đó các tính
năng, chức năng được liên kết lại với nhau để kiểm tra sự giao tiếp giữa các tính năng
cũng như từng thành phần của từng tính năng
Kiểm thử tích hợp thường được thực hiện với hai mục đích chính sau:
Phát hiện lỗi giao tiếp giữa các đơn vị
Tích hợp các đơn vị đơn lẻ thành các hệ thống nhỏ và cuối cùng thành
một hệ thống hoàn chỉnh để chuẩn bị cho bước kiểm thử hệ thống
Ki ểm thử hệ thống (System testing) [17]: Kiểm thử một hệ thống đã được tích
hợp hoàn chỉnh để xác minh rằng hệ thống đáp ứng được yêu cầu kiểm thử hệ thống
Kiểm thử ở đây sẽ được thực hiện kiểm thử hệ thống hoạt động một cách hoàn chỉnh,
từ đầu tới cuối theo một luồng dữ liệu của hệ thống có hoạt động đúng như yêu cầu
hay không
Ki ểm thử chấp nhận (Acceptance testing) [18]: Kiểm thử này sẽ được thực
hiện từ người dùng để tìm ra nếu phần mềm phù hợp với sự mong đợi của người dùng
và thực hiện đúng như mong đợi của người dùng
Có 2 loại kiểm thử chấp nhận:
Kiểm thử Alpha: là loại kiểm thử nội bộ, sẽ được đội kiểm thử độc lập
hoặc so khách hàng thực hiện tại môi trường stage
Kiểm thử Beta: là loại kiểm thử mà khách hàng thực hiện kiểm thử ở
chính môi trường của họ Loại kiểm thử này được thực hiện sau kiểm thử Alpha
1.1.4.3 Các loại kiểm thử
Ki ểm thử hộp đen (Black box testing): Là một phương pháp kiểm thử phần
mềm mà việc kiểm tra các chức năng của một ứng dụng không cần quan tâm vào cấu
trúc nội bộ hoặc hoạt động bên trong của nó
Dựa vào chức năng kiểm thử hộp đen có thể áp dụng hầu như mọi cấp độ của
kiểm thử phần mềm
Trường Đại học Kinh tế Huế
Trang 38Kiểm thử hộp đen: bao gồm các phương pháp: phân vùng tương đương, phân
tích giá trị biên, bảng quyết định, sơ đồ chuyển đổi trạng thái, use case
Ki ểm thử hộp trắng (White box testing): là một phương pháp kiểm thử phần
mềm, trong đó các thiết kế, cấu trúc giải thuật bên trong và việc thực hiện các công
việc đều được biết đến
Dựa vào giải thuật cụ thể và cấu trúc dữ liệu bên trong của đơn vị phần mềm
cần kiểm thử để xác định đơn vị phần mềm đó có thực hiện đúng không Kỹ thuật
kiểm thử hộp xám thích hợp dùng để kiểm thử đơn vị (Unit test)
Ki ểm thử hộp xám (Gray box testing): là phương pháp kiểm thử phần mềm
được kết hợp giữa phương pháp kiểm thử hộp đen và kiểm thử hộp trắng Trong kiểm
thử hộp xám, cấu trúc bên trong sản phẩm chỉ được biết một phần để viết các ca kiểm
thử (white box testing) Còn khi thực hiện kiểm thử thì thực hiện phương pháp black
box testing
Dựa vào giải thuật và chức năng, kiểm thử hộp xám có thể được sử dụng ở
nhiều mức kiểm thử khác nhau Tuy nhiên, chủ yếu được ứng dụng trong kiểm thử tích
hợp
1.1.4.4 Các phương pháp kiểm thử
Ki ểm thử chức năng [19]: Là kiểm thử tất cả các chức năng của hệ thống có
hoạt đúng theo yêu cầu hay không Kiểm thử này sử dụng hầu như loại kiểm thử hộp
đen và các trường hợp kiểm thử của nó được dựa trên tài liệu đặc tả phần mềm
Kiểm thử chức năng bao gồm các loại: kiểm thử khói (smoke testing),
kiểm thử tích hợp (integration testing), kiểm thử hồi quy (regression testing), kiểm thử
nội địa hóa (localization testing), kiểm tra độ tỉnh táo (sanity testing)
Ki ểm thử phi chức năng [20]: là một loại kiểm thử liên quan đến các vấn
đề như hiệu suất, bảo mật, giao diện người dùng của phần mềm Loại kiểm thử này
được thiết kế để kiểm thử mức độ sẵn sàng của một hệ thống theo các tham số phi
chức năng Đồng thời việc kiểm thử này sử dụng công cụ để thực hiện chúng như
LoadRunner, Jmeter,
Trường Đại học Kinh tế Huế
Trang 39Kiểm thử phi chức năng bao gồm các loại: kiểm thử tải (load testing), kiểm thử
áp lực (stress testing), kiểm thử âm thanh (volume testing), kiểm thử bảo mật (security
testing) và kiểm thử hiệu suất (usability testing)
1.2 Cơ sở thực tiễn về xây dựng hệ thống ứng dụng hỗ trợ chẩn đoán và điều
trị tâm lý trực tuyến
1.2.1 Hi ện trạng vấn đề tâm lý của người dân trong đại dịch COVID-19
Đại dịch COVID-19 gây ra hậu quả nghiêm trọng về tâm lý với rất nhiều người
Đó là tình trạng chứng kiến sự ra đi của người thân đột ngột, không có người đưa tiễn,
trong một gia đình có nhiều người ra đi Hay vào điều trị COVID -19 trong các bệnh
viện dã chiến, chứng kiến cảnh nhiều người nằm điều trị, chứng kiến sự ra đi của
người bệnh cùng phòng, khi ra viện sẽ có những di chứng khó hồi phục hoàn toàn
Đồng thời tình trạng kinh tế suy sụp kéo dài trong hơn hai năm qua, đặc biệt
nhiều ngành nghề gần như không hoạt động gì, dẫn đến nạn thất nghiệp, thu nhập giảm
như các ngành nghề du lịch, nhà hàng, khách sạn, cho thuê nhà, đất… là nguyên nhân
dẫn đến nhiều rối loạn tâm lý lo âu, trầm cảm Họ đã phải đi khám bệnh, nằm viện
điều trị… Cứ như vậy như một vòng xoắn bệnh lý không thoát ra được
Tình trạng sức khỏe tâm thần này được thể hiện trong nhiều nghiên cứu trên thế
giới Trong giai đoạn đầu của đại dịch Covid (2020), nhiều nghiên cứu với mẫu dân số
khác nhau ở Trung Quốc ghi nhận tỷ lệ là 50.7% trầm cảm với thang PHQ-9 (Bệnh nhâns
Health Questionnaire -9), 44.7% lo âu với thang GAD-7 (Generalized Anxiety
Disorder-7), 36.1% mất ngủ với thang ISI (Insomnia Severity Index) và 73.4% có triệu chứng liên
quan đến stress (Thang Events Scale-Revised) Điều này đòi hỏi cần có sự nhìn nhận cẩn
thận hơn về vấn đề tâm thần – tâm lý trong tình huống đại dịch Covid lan tràn ở Việt Nam
[21]
Tổ chức Y tế Thế giới WHO (World Health Organization) đã đưa ra lời khuyến
cáo và cảnh báo về những vấn đề sức khỏe tâm thần – tâm lý từ tháng 3/2020 Kể đến
là sự sợ hãi và ám ảnh, dẫn đến những niềm tin không phù hợp với khoa học và những
đồn đoán sai sự thật.Từ đó dẫn đến các bệnh lý tâm thần trong đại dịch
Trường Đại học Kinh tế Huế
Trang 40Từ đó đưa ra các chẩn đoán vấn đề tâm thần trong đại dịch mặc dù vẫn chưa
được thống nhất nhưng vẫn còn có sự chung nhất về các triệu chứng như sau [22]:
- Triệu chứng ám ảnh: ký ức tái diễn về dịch bệnh, được lặp lại trên truyền
thông, phản ứng phân ly lặp lại do cảm giác đe dọa, thay đổi nhịp sống, ám ảnh về vệ
sinh
- Triệu chứng khí sắc: cảm xúc buồn rầu liên quan với bệnh thực thể, lặp lại trên
truyền thông, phản ứng phân ly lặp lại do cảm giác đe dọa, thay đổi nhịp sống, ám ảnh
về vệ sinh
- Triệu chứng phân ly: cảm giác không thật, mơ hồ về bản thân, nhận thức méo
mó do quá mức cảnh giác với môi trường
- Triệu chứng tránh né: đây là nỗ lực cố gắng thoát khỏi đau thương, một lối
thoát cho suy nghĩ, cảm xúc và ký ức đau khổ từ đại dịch
- Triệu chứng tăng hoạt động: biểu hiện của hình thức than phiền về các dịch vụ
y tế, kèm theo là rối loạn giấc ngủ, tức giận, cơn bùng nổ cảm xúc, tăng cảnh giác,
phản ứng mạnh với kích thích, khó tập trung
1.2.2 M ột số ứng dụng hỗ trợ chẩn đoán và điều trị tâm lý
1.2.2.1 Hệ thống BookingCare https://bookingcare.vn/
Đây là một hệ thống ứng dụng chăm sóc sức khỏe toàn diện kết nối người dùng
với dịch vụ y tế - chăm sóc sức khỏe chất lượng hiệu quả và đáng tin cậy cho các bệnh
viện ở Việt Nam Trang web này có các ưu điểm sau:
- Giao diện quen thuộc với người dùng Người dùng muốn vào tư vấn chăm sóc
sức khỏe về mọi lĩnh vực trong y tế như theo chuyên khoa cụ thể, cơ sở y tế gần nhà,
hay bác sĩ giỏi, hoặc khám theo từng lứa tuổi, giới tính
- Cuộc hẹn thanh toán nhanh
- Có ứng dụng app để cho người dùng thuận tiện sử dụng
- Có thể mua các gói khám bệnh trực tuyến trên website, và đi khám bệnh trực
tuyến tại cơ sở y tế đã đăng ký
Trường Đại học Kinh tế Huế