Giải pháp bao gồm việc triển khai một hệ thống video conference kết nối trực tuyến cho phép bác sĩ và bệnh nhân tương tác dễ dàng thông qua video, từ đó giúp bác sĩ thực hiện các b
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHENIKAA
BÁO CÁO ĐỒ ÁN TỐT NGHIỆP
XÂY DỰNG HỆ THỐNG VIDEO CONFERENCE CHẨN ĐOÁN BỆNH LÝ MẤT TRÍ NHỚ
TRÊN NỀN TẢNG WEB
Sinh viên: Phùng Bá Công
Giảng viên hướng dẫn: TS Trần Đức Minh
Copies for internal use only in Phenikaa University
Trang 2Họ và tên sinh viên:
- Phùng Bá Công
Điện thoại liên lạc: 0961177815 Email: 20010940@gmail.com Lớp: K14 – CNTT VJ Hệ đào tạo: Chính quy
Tôi cam kết đồ án này là công trình nghiên cứu của bản thân tôi Các kết quả nêu trong đồ án là trung thực, là thành quả của riêng tôi, không sao chép theo bất kỳ công trình nào khác Tất cả những tham khảo trong đồ án – bao gồm hình ảnh, bảng biểu,
số liệu, và các câu từ trích dẫn – đều được ghi rõ ràng và đầy đủ nguồn gốc trong danh mục tài liệu tham khảo Tôi xin hoàn toàn chịu trách nhiệm với dù chỉ một sao chép vi phạm quy chế của nhà trường
Hà Nội, ngày 29 tháng 8 năm 2024
Tác giả đồ án
Họ và tên sinh viên
Lời cam kết
Copies for internal use only in Phenikaa University
Trang 3Trước hết, em xin gửi lời cảm ơn chân thành và sâu sắc nhất đến quý thầy cô tại trường Đại học Phenikaa, đặc biệt là các thầy cô trong Khoa Công nghệ thông tin tại trường , đã tận tình giảng dạy, truyền đạt kiến thức và kinh nghiệm quý báu cho
em trong suốt quá trình học tập tại trường
Em xin bày tỏ lòng biết ơn đến thầy Trần Đức Minh người đã hướng dẫn, giúp
đỡ và động viên em trong suốt quá trình thực hiện đồ án tốt nghiệp Sự chỉ dẫn tận tình và những góp ý quý báu của thầy đã giúp em hoàn thành tốt đồ án tốt nghiệp này Không chỉ trong giai đoạn thực hiện đồ án mà còn ở trong các môn học dưới sự giảng dạy của thầy Thầy đã giúp đỡ, định hướng cũng như đưa ra những lời khuyên hữu ích, từ đó em giúp đề ra hướng đi của mình và để có thể đạt được kết quả mà mình mong muốn trong 4 năm học tập tại trường
Em cũng xin chân thành cảm ơn các anh chị và các bạn trong cùng ngành Công nghệ thông tin đã luôn sẵn lòng hỗ trợ, chia sẻ kiến thức và kinh nghiệm, giúp em có được những điều kiện thuận lợi để em hoàn thành đồ án tốt nghiệp này
Bên cạnh đó, em xin gửi lời cảm ơn đến gia đình và bạn bè đã luôn ở bên, động viên
là chỗ dựa tinh thần vững chắc để em có thể tập trung hoàn thành nhiệm vụ học tập của mình
Cuối cùng, em xin chân thành cảm ơn tất cả mọi người đã giúp đỡ và ủng hộ
em trong suốt quá trình học tập và thực hiện đồ án này Sự hỗ trợ và động viên từ mọi người là nguồn động lực to lớn để em hoàn thành tốt đồ án và đạt được những kết quả đáng khích lệ
Em xin chân thành cảm ơn!
Lời cảm ơn
Copies for internal use only in Phenikaa University
Trang 4Trong bối cảnh nhu cầu ngày càng cao về việc đánh giá và điều trị bệnh lý mất trí nhớ, việc tiếp cận bác sĩ qua hình thức trực tuyến đang trở nên cần thiết hơn bao giờ hết Hiện tại, bệnh nhân và gia đình thường phải đối mặt với nhiều khó khăn như thời gian chờ đợi lâu và các thủ tục phức tạp tại các cơ sở y tế chuyên khoa Để khắc phục những hạn chế này, hệ thống kết nối video trực tuyến giữa bác sĩ và bệnh nhân được đề xuất nhằm giảm bớt khoảng cách địa lý và thời gian, tạo điều kiện thuận lợi cho việc khám và đánh giá bệnh tình
Giải pháp bao gồm việc triển khai một hệ thống video conference kết nối trực tuyến cho phép bác sĩ và bệnh nhân tương tác dễ dàng thông qua video, từ đó giúp bác sĩ thực hiện các bài kiểm tra và đánh giá bệnh nhân hiệu quả hơn Hệ thống được thiết kế với tính năng quản lý người dùng, quản lý lịch sử khám và kiểm tra, từ đó đảm bảo hiệu suất và tính bảo trì
Trong tương lai, hệ thống sẽ tiếp tục được mở rộng với các tính năng như tăng cường nhiều bài kiểm tra khác nhau, tích hợp trí tuệ nhân tạo (AI) để hỗ trợ bác sĩ trong việc chẩn đoán và đưa ra các khuyến nghị điều trị Ngoài ra, việc cải thiện chất lượng video và âm thanh nhằm tối ưu hóa trải nghiệm người dùng cũng là một định hướng quan trọng Hệ thống sẽ được mở rộng khả năng tương thích với nhiều thiết bị khác nhau, từ máy tính để bàn đến thiết bị di động Bảo mật dữ liệu sẽ được tăng cường để bảo vệ thông tin nhạy cảm của bệnh nhân và bác sĩ Cuối cùng, khả năng tích hợp với các hệ thống quản lý bệnh viện và hồ sơ y tế, kết hợp thêm các biểu đồ phân tích tình trạng của bệnh nhân qua các lần thăm khám
Tóm tắt
Copies for internal use only in Phenikaa University
Trang 5Lời cam kết ii
Lời cảm ơn iii
Tóm tắt iv
Mục lục v
Danh mục hình vẽ viii
Danh mục bảng x
Danh mục các từ viết tắt xi
Danh mục thuật ngữ xiii
Chương 1 Giới thiệu đề tài 1
1.1 Đặt vấn đề 1
1.2 Mục tiêu và phạm vi đề tài 1
1.3 Định hướng giải pháp 3
Chương 2 Kiến thức cơ sở 4
2.1 Phương pháp đánh giá chứng mất trí nhớ 4
2.2 Tổng quan kiến trúc của hệ thống 7
2.2.1 Kiến trúc chính của hệ thống 7
2.2.2 Các kiến trúc còn lại của hệ thống 9
2.3 Công nghệ sử dụng chính 10
Mục lục
Copies for internal use only in Phenikaa University
Trang 62.3.1 Công nghệ WebRTC 10
2.3.2 STUN Server 12
2.3.3 TURN Server 13
2.4 Công nghệ sử dụng còn lại 14
2.4.1 ViteJS 14
2.4.2 ReactJS 14
2.4.3 TypeScript 15
2.4.4 Ant Design 16
2.4.5 TailwindCSS 16
2.4.6 NodeJS 17
2.4.7 Express 17
2.4.8 WebSocket 18
2.4.9 PeerJS 18
2.4.10 MongoDB 19
Chương 3 Phân tích và thiết kế hệ thống 20
3.1 Khảo sát hiện trạng 20
3.2 Tổng quan chức năng 21
3.2.1 Biểu đồ use case tổng quan 21
3.2.2 Biểu đồ use case quản lý người dùng 23
3.2.3 Biểu đồ use case quản lý lịch sử cuộc gọi 24
3.2.4 Biểu đồ use case quản lý các bài kiểm tra 25
3.3 Đặc tả chức năng 26
3.3.1 Đặc tả use case đăng nhập 26
3.3.2 Đặc tả use case cập nhật thông tin người dùng 28 Copies for internal use only in Phenikaa University
Trang 73.3.3 Đặc tả use case tham gia cuộc gọi của bác sĩ 29
3.3.4 Đặc tả use case tham gia cuộc gọi của bệnh nhân 30
3.3.5 Đặc tả use case thực hiện bài kiểm tra cho bệnh nhân 31
3.4 Yêu cầu phi chức năng 32
3.5 Thiết kế chi tiết 33
3.5.1 Thiết kế giao diện 33
3.5.2 Thiết kế cơ sở dữ liệu 38
3.5.3 Thư viện và công cụ sử dụng 40
3.6 Thiết kế kiến trúc 41
3.6.1 Lựa chọn kiến trúc phần mềm 41
3.6.2 Áp dụng mô hình MVCS vào hệ thống 41
Chương 4 Chương trình thực nghiệm 45
4.1 Thực nghiệm chức năng đăng nhập 45
4.2 Thực nghiệm chức năng thay đổi thông tin người dùng 48
4.3 Thực nghiệm chức năng kết nối video của bác sĩ và bệnh nhân 51
4.4 Thực nghiệm chức năng thực hiện bài kiểm tra của bác sĩ cho bệnh nhân 54
Chương 5 Kết luận và hướng phát triển 57
5.1 Kết luận 57
5.2 Hướng phát triển 58
Tài liệu tham khảo 59 Copies for internal use only in Phenikaa University
Trang 8Hình 2.1 Tổng quan kiến trúc của hệ thống 7
Hình 3.1 Biểu đồ use case tổng quan 21
Hình 3.2 Biểu đồ use case quản lý người dùng 23
Hình 3.3 Biểu đồ use case quản lý lịch sử cuộc gọi 24
Hình 3.4 Biểu đồ use case quản lý các bài kiểm tra 25
Hình 3.5 Biểu đồ tuần tự chức năng đăng nhập 26
Hình 3.6 Biểu đồ tuần tự chức năng cập nhật thông tin người dùng 28
Hình 3.7 Biểu đồ tuần tự chức năng tham gia cuộc gọi của bác sĩ 29
Hình 3.8 Biểu đồ tuần tự chức năng tham gia cuộc gọi của bệnh nhân 30
Hình 3.9 Biểu đồ tuần tự chức năng kiểm tra cho bệnh nhân 31
Hình 3.10 Thiết kế giao diện của admin 36
Hình 3.11 Thiết kế giao diện của bác sĩ khi thực hiện cuộc gọi với bệnh nhân 36
Hình 3.12 Thiết kế giao diện của bác sĩ khi thực hiện bài kiểm tra và ghi hình 37
Hình 3.13 Giao diện của bệnh nhân khi thực hiện cuộc gọi với bác sĩ 37
Hình 3.14 Biểu đồ thực thể liên kết 38
Hình 3.15 Mô hình MVCS 42
Hình 3.16 Áp dụng mô hình MVCS vào hệ thống 42
Hình 3.17 Model (M) áp dụng vào hệ thống 43
Hình 3.18 Controller (C) áp dụng vào hệ thống 44
Hình 3.19 Service (S) áp dụng vào hệ thống 44
Danh mục hình vẽ
Copies for internal use only in Phenikaa University
Trang 9Hình 4.1 Thực nghiệm API đăng nhập 46
Hình 4.2 Giao diện khi người dùng nhập thiếu thông tin hoặc sai định dạng email 47 Hình 4.3 Giao diện khi người dùng đăng nhập sai thông tin tài khoản 47
Hình 4.4 Giao diện khi người dùng đăng nhập thành công 48
Hình 4.5 Thực nghiệm API thay đổi thông tin người dùng 49
Hình 4.6 Thay đổi thông tin người dùng trên giao diện 50
Hình 4.7 Giao diệnn người dùng nhập sai định dạng khi cập nhật thông tin 50
Hình 4.8 Giao diện kết nối video và audio của bác sĩ và bệnh nhân 52
Hình 4.9 Giao diện của bệnh nhân khi bác sĩ kết thúc cuộc gọi 53
Hình 4.10 Giao hiện khi bác sĩ kết thúc cuộc gọi 53
Hình 4.11 Giao diện bác sĩ thực hiện bài kiểm tra cho bệnh nhân 55
Hình 4.12 Tương tác các câu trả lời của bác sĩ và bệnh nhân trên giao diện 55
Hình 4.13 Giao diện khi bệnh nhân hoàn thành bài kiểm tra 56
Copies for internal use only in Phenikaa University
Trang 10Bảng 3.1 Danh sách thư viện và công cụ sử dụng 40
Bảng 4.1 Thực nghiệm chức năng đăng nhập 45
Bảng 4.2 Thực nghiệm chức năng thay đổi thông tin người dùng 48
Bảng 4.3 Thực nghiệm chức năng kết nối video của bác sĩ và bệnh nhân 51
Bảng 4.4 Thực nghiệm chức năng bác sĩ cho bệnh nhân thực hiện bài kiểm tra 54
Danh mục bảng
Copies for internal use only in Phenikaa University
Trang 11MVVM Mô hình Model-View-ViewModel
MVCS Mô hình Model-View-Controller-Service
CNTT Công nghệ thông tin
CSDL Cơ sở dữ liệu
I/O
input/output Đầu vào/Đầu ra
Danh mục các từ viết tắt
Copies for internal use only in Phenikaa University
Trang 12HTTP
HyperText Transfer Protocol Giao thức truyền tải siêu văn bản
ERD
Entity Relationship Diagrams
Sơ đồ thực thể liên kết
RDBMS
Relational Database Management System
Hệ quản trị cơ sỡ dữ liệu quan hệ
P2P
Peer-to-Peer
Mô hình kết nối ngang hàng
DOM
Document Object Model
Mô hình các đối tượng tài liệu
STUN
Simple Traversal of UDP through NAT Một giao thức mạng cho phép các máy khách tìm ra địa chỉ công khai của mình
TURN
Traversal Using Relays around NAT Một giao thức hỗ trợ truyền tải các trình biên dịch địa chỉ mạng hoặc tường lửa cho các ứng dụng đa phương tiện
Copies for internal use only in Phenikaa University
Trang 13STUN server Máy chủ hỗ trợ NAT traversal
TURN server Máy chủ chuyển tiếp lưu lượng mạng
Peer-to-Peer Mô hình kết nối trực tiếp giữa hai thiết bị ngang hàng
mà không thông qua máy chủ
Candidate Địa chỉ mạng tiềm năng mà các peer có thể sử dụng để
Trang 141.1 Đặt vấn đề
Trong bối cảnh dân số già hóa ngày càng gia tăng, bệnh lý mất trí nhớ đang trở thành một vấn đề y tế nghiêm trọng Đây là một tình trạng bệnh lý không chỉ ảnh hưởng đến sức khỏe tâm thần và thể chất của bệnh nhân mà còn tạo gánh nặng lớn cho gia đình và hệ thống y tế Hiện nay, quá trình chẩn đoán và điều trị bệnh lý mất trí nhớ thường yêu cầu bệnh nhân và người thân phải đến các cơ sở y tế chuyên khoa, dẫn đến nhiều khó khăn như thời gian chờ đợi lâu, chi phí cao và thủ tục phức tạp
Việc không thể tiếp cận dễ dàng và kịp thời các dịch vụ y tế chuyên sâu làm tăng nguy cơ bệnh lý trở nên nghiêm trọng hơn và giảm hiệu quả điều trị Nếu vấn đề này không được giải quyết, nó sẽ tiếp tục gây ảnh hưởng tiêu cực đến chất lượng cuộc sống của người bệnh và có thể trở thành gánh nặng cho gia đình cũng như hệ thống
y tế Hơn nữa, việc giải quyết vấn đề này không chỉ mang lại lợi ích trực tiếp cho các bệnh nhân mà còn có thể mở rộng ứng dụng vào các lĩnh vực khác như chăm sóc sức khỏe từ xa cho các bệnh lý khác, đồng thời cải thiện hệ thống chăm sóc y tế toàn diện hơn
1.2 Mục tiêu và phạm vi đề tài
Trong tình trạng bệnh nhân và người thân phải đến các cơ sở y tế chuyên khoa
để khám và điều trị, đặc biết là đối với những bệnh nhân bị mắc bệnh suy giảm trí nhớ, dẫn đến nhiều khó khăn như thời gian chờ đợi lâu, chi phí cao và thủ tục phức tạp Bệnh nhân và gia đình cần một giải pháp giúp giảm bớt gánh nặng từ việc di chuyển đến cơ sở y tế, đồng thời cung cấp dịch vụ khám và tư vấn hiệu quả hơn Các sản phẩm hiện tại chủ yếu tập trung vào việc cung cấp dịch vụ video call cho mục đích chung, nhưng chưa đặc biệt tối ưu hóa cho các nhu cầu của bệnh nhân mắc bệnh
Chương 1 Giới thiệu đề tài
Copies for internal use only in Phenikaa University
Trang 15lý mất trí nhớ nhằm hỗ trợ các chức năng đánh giá đặc thù và tương tác từ xa Các bác sĩ cũng cần một công cụ hỗ trợ để thực hiện chẩn đoán từ xa, theo dõi tiến trình điều trị, và giao tiếp trực tiếp với bệnh nhân để đưa ra các phương án điều trị phù hợp
Qua quá trình phân tích các nhu cầu người dùng, có thể thấy rằng hiện tại chưa
có nhiều giải pháp phù hợp để đáp ứng yêu cầu chẩn đoán từ xa một cách hiệu quả Các hệ thống hiện tại thường chưa chú trọng đến việc cung cấp dịch vụ video call trực tuyến trong lĩnh vực y tế, đặc biệt là trong những lĩnh vực chuyên khoa và đặc thù như bệnh lý mất trí nhớ Điều này dẫn đến sự thiếu hụt trong việc tiếp cận dịch
vụ y tế, và người dùng thường phải đối mặt với các vấn đề như thời gian chờ đợi lâu, chi phí cao, và sự phức tạp trong thủ tục
Dựa trên các phân tích và đánh giá trên, các hạn chế chính hiện tại bao gồm việc thiếu một hệ thống video conference trực tuyến sử dụng hiệu quả và tích hợp tốt với các dịch vụ y tế chuyên sâu Những hạn chế này cần được khắc phục để đáp ứng nhu cầu ngày càng cao của người dùng
Từ đó, mục tiêu của đề tài là phát triển một hệ thống video conference chuyên biệt cho việc chẩn đoán bệnh lý mất trí nhớ trên nền tảng web Hệ thống sẽ hướng đến việc cung cấp một nền tảng video conference hỗ trợ việc chẩn đoán, thực hiện các bài kiểm tra chuyên sâu và tư vấn từ xa Tạo điều kiện thuận lợi cho các bệnh nhân có thể tiếp cận dịch vụ y tế dễ dàng hơn, giảm thiểu thời gian chờ đợi và chi phí
di chuyển
Hệ thống dự kiến sẽ tạo nên đột phá trong việc cung cấp dịch vụ chẩn đoán chẩn đoán bệnh lý mất trí nhớ từ xa, mang lại sự tiện lợi và hiệu quả cho người dùng Điều này không chỉ giúp giải quyết vấn đề tiếp cận dịch vụ y tế mà còn có thể mở rộng ứng dụng vào các lĩnh vực chăm sóc sức khỏe khác trong tương lai Copies for internal use only in Phenikaa University
Trang 161.3 Định hướng giải pháp
Định hướng giải pháp được chọn là xây dựng một hệ thống video conference chuyên biệt cho việc chẩn đoán bệnh lý mất trí nhớ, tận dụng các công nghệ hiện đại
để phát triển giao diện và xử lý dữ liệu Đề tài sẽ áp dụng các công nghệ bao gồm Vite, ReactJS, TypeScript và TailwindCSS cho phía client, NodeJS, PeerJS cho phía server và MongoDB cho cơ sở dữ liệu
Ở phía client, hệ thống sử dụng Vite để tối ưu hóa quy trình phát triển và xây dựng ứng dụng, ReactJS và TypeScript để xây dựng giao diện người dùng tương tác,
và TailwindCSS để tạo kiểu dáng linh hoạt Ở phía server, NodeJS và PeerJS sẽ hỗ trợ việc xây dựng tính năng, truyền tải video và âm thanh trong thời gian thực, kết nối CSDL và client, trong khi đó MongoDB sẽ được sử dụng để quản lý và lưu trữ
dữ liệu một cách hiệu quả
Qua đó, hệ thống đóng góp chính vào việc phát triển một hệ thống video conference hiệu quả, đáp ứng yêu cầu về hiệu suất, tính linh hoạt, và khả năng bảo trì
và mở rộng trong tương lai Mang lại kết quả là một trang web video conference tối
ưu hóa cho việc chẩn đoán bệnh lý mất trí nhớ, giúp cải thiện khả năng tiếp cận dịch
vụ y tế từ xa, hỗ trợ công việc chẩn đoán bệnh lý đồng thời cung cấp một giải pháp
dễ bảo trì và phát triển trong tương lai
Copies for internal use only in Phenikaa University
Trang 172.1 Phương pháp đánh giá chứng mất trí nhớ
Chứng mất trí nhớ (dementia) là một trong những rối loạn phổ biến ở người lớn tuổi, đặc biệt là những người trên 65 tuổi Đây là tình trạng suy giảm nghiêm trọng chức năng nhận thức, bao gồm trí nhớ, khả năng ngôn ngữ, sự chú ý và các kỹ năng tư duy khác Các dạng phổ biến của chứng mất trí nhớ bao gồm bệnh Alzheimer,
sa sút trí tuệ mạch máu, và sa sút trí tuệ liên quan đến các bệnh thần kinh khác Khi bệnh tiến triển, bệnh nhân dần mất khả năng thực hiện các hoạt động thường ngày, dẫn đến suy giảm chất lượng cuộc sống
Việc phát hiện sớm và đánh giá chính xác mức độ suy giảm nhận thức là điều cực kỳ quan trọng trong việc quản lý và điều trị chứng mất trí nhớ Để làm điều này, các bài kiểm tra đánh giá nhận thức được phát triển nhằm giúp các bác sĩ và chuyên gia đánh giá được tình trạng của bệnh nhân một cách hiệu quả Các bài kiểm tra này không chỉ giúp chẩn đoán mức độ suy giảm trí nhớ mà còn cung cấp cơ sở để theo dõi quá trình điều trị
Qua quá trình phân tích và khảo sát, phương pháp đánh giá phổ biến nhất cho chứng mất trí nhớ là phương pháp Mini-Mental State Examination (MMSE) Vì vậy trong đồ án này, MMSE được lựa chọn để đưa vào bài kiểm tra của hệ thống Phương pháp này đã được sử dụng rộng rãi trong nghiên cứu lâm sàng và thực hành y tế, nhằm cung cấp cái nhìn sâu sắc về chức năng nhận thức và khả năng ghi nhớ của bệnh nhân
MMSE (Mini-Mental State Examination)[4] là một trong những công cụ phổ biến và tiêu chuẩn để đánh giá suy giảm nhận thức và chứng mất trí nhớ MMSE bao gồm một loạt các câu hỏi và bài tập được thiết kế để kiểm tra nhiều khía cạnh khác nhau của nhận thức, bao gồm:
Chương 2 Kiến thức cơ sở
Copies for internal use only in Phenikaa University
Trang 18Định hướng thời gian và không gian:
• Câu hỏi về thời gian: Bệnh nhân được yêu cầu trả lời các câu hỏi liên quan đến thời gian như ngày, tháng, năm, mùa và ngày trong tuần
• Câu hỏi về địa điểm: Bệnh nhân phải xác định mình đang ở đâu, bao gồm quốc gia, tỉnh/thành phố, bệnh viện hoặc địa điểm cụ thể và tầng nhà
Điểm đánh giá: Tổng cộng 10 điểm, với mỗi câu trả lời đúng được tính 1 điểm
Ghi nhớ ngay lập tức và ghi nhớ ngắn hạn:
• Ghi nhớ ngay lập tức: Bác sĩ nêu ra ba đồ vật đơn giản (ví dụ: "quả táo", "chìa khóa", "bóng") và yêu cầu bệnh nhân lặp lại ngay lập tức Mỗi từ được lặp lại đúng sẽ được tính điểm
• Ghi nhớ ngắn hạn: Sau khi thực hiện các phần kiểm tra khác, bệnh nhân được hỏi để lặp lại ba từ đã được nói trước đó nhằm đánh giá khả năng ghi nhớ ngắn hạn
Điểm đánh giá: Ghi nhớ ngay lập tức và ngắn hạn có tổng cộng 6 điểm
Ngôn ngữ và khả năng thực hiện yêu cầu:
• Gọi tên: Bệnh nhân được yêu cầu gọi tên các đồ vật quen thuộc như đồng hồ
và bút
• Thực hiện yêu cầu 3 bước: Bệnh nhân được yêu cầu làm theo một chuỗi lệnh
ba bước như "Hãy cầm giấy lên, gấp lại và đặt xuống"
• Đọc và làm theo chỉ dẫn: Bệnh nhân đọc một câu lệnh ("Nhắm mắt lại") và thực hiện hành động
Copies for internal use only in Phenikaa University
Trang 19• Viết câu: Bệnh nhân được yêu cầu viết một câu có nghĩa, thể hiện khả năng ngôn ngữ
Điểm đánh giá: Các phần liên quan đến ngôn ngữ có tổng cộng 8 điểm
Khả năng thị giác không gian:
• Bệnh nhân được yêu cầu sao chép một hình vẽ gồm hai hình ngũ giác chồng lên nhau
Điểm đánh giá: 1 điểm nếu sao chép đúng hình vẽ
Tổng điểm: tổng cộng bài kiểm tra sẽ có tối đa 30 điểm
Dựa vào điểm số khi bệnh nhân thực hiện bài kiểm tra, bác sĩ có thể đánh giá sơ
bộ về tình trạng của bệnh nhân như sau:
• Không có suy giảm nhận thức: ≥ 24 điểm
• Suy giảm nhận thức nhẹ: 20 – 23 điểm
• Suy giảm nhận thức vừa: 14 – 19 điểm
• Suy giảm nhận thức nặng: 0 – 13 điểm
Copies for internal use only in Phenikaa University
Trang 202.2 Tổng quan kiến trúc của hệ thống
Không tìm thấy mục nhập nào của bảng hình minh họa.
Hình 2.1 Tổng quan kiến trúc của hệ thống
Hệ thống được xây dựng nhằm mục đích thực hiện các cuộc gọi video trực tuyến giữa các peer (người dùng) với nhau Hệ thống bao gồm nhiều thành phần chính
để đảm bảo việc kết nối và truyền tải dữ liệu âm thanh, video được diễn ra một cách hiệu quả, bao gồm các máy chủ (server) và các công nghệ mạng khác nhau Dưới đây
là giải thích về từng thành phần trong kiến trúc hệ thống:
2.2.1 Kiến trúc chính của hệ thống
Hệ thống sự dụng mô hình Peer-to-Peer (P2P)[5] P2P là một mô hình mạng phân tán trong đó các thiết bị (peer) có thể giao tiếp trực tiếp với nhau mà không cần thông qua máy chủ trung gian Thay vì dựa vào các máy chủ trung tâm để điều phối
và truyền tải dữ liệu, các peer trong mạng P2P chia sẻ tài nguyên và dữ liệu trực tiếp với nhau, giúp giảm tải cho các máy chủ và tối ưu hóa băng thông
Đặc Điểm Chính Của Mạng P2P:
Copies for internal use only in Phenikaa University
Trang 21• Tính Phi Tập Trung: Trong mạng P2P, không có máy chủ chính hay máy chủ trung tâm điều khiển toàn bộ hệ thống Mỗi peer có thể thực hiện cả vai trò của máy khách (client) lẫn máy chủ (server) Các peer có thể gửi và nhận dữ liệu trực tiếp mà không cần đi qua một điểm trung gian nào
• Tính Phân Tán: Dữ liệu và tài nguyên được chia sẻ giữa các peer trong mạng, không tập trung vào một vị trí duy nhất Điều này giúp hệ thống có khả năng mở rộng và tránh được sự cố đơn điểm (single point of failure)
• Khả Năng Mở Rộng: Hệ thống P2P có thể mở rộng dễ dàng bằng cách thêm nhiều peer vào mạng mà không cần thay đổi kiến trúc hệ thống Khi có thêm peer mới, hệ thống có thể tăng cường khả năng truyền tải dữ liệu mà không cần phụ thuộc vào máy chủ trung tâm
• Tương Tác Trực Tiếp: Các peer tương tác với nhau trực tiếp, đặc biệt là trong các ứng dụng truyền thông thời gian thực như WebRTC Khi hai peer kết nối với nhau trong một cuộc gọi video hoặc truyền dữ liệu, dữ liệu sẽ đi trực tiếp
từ peer này sang peer kia mà không phải thông qua server trung gian Điều này giúp giảm độ trễ (latency) và cải thiện chất lượng kết nối
Lợi Ích Của Mô Hình P2P
• Bằng cách truyền dữ liệu trực tiếp giữa các peer, P2P giúp giảm lượng băng thông cần thiết trên các máy chủ trung gian
• Truyền dữ liệu trực tiếp giữa các peer giảm thiểu độ trễ, giúp cải thiện trải nghiệm của người dùng, đặc biệt là trong các ứng dụng thời gian thực như video call hoặc voice chat
• Mô hình P2P có khả năng mở rộng tốt, vì mỗi peer có thể đồng thời tham gia nhiều kết nối và chia sẻ tài nguyên với các peer khác mà không cần phụ thuộc vào máy chủ
Thách Thức Của Mô Hình P2P
• Một trong những thách thức lớn nhất trong mạng P2P là việc vượt qua các NAT và firewall để giúp các peer có thể kết nối trực tiếp với nhau STUN và TURN server là những giải pháp giúp giải quyết vấn đề này
Copies for internal use only in Phenikaa University
Trang 22• Vì các peer giao tiếp trực tiếp với nhau, vấn đề bảo mật và quyền riêng tư phải được đảm bảo Cần phải mã hóa dữ liệu và thiết lập các biện pháp bảo vệ để tránh bị tấn công từ bên ngoài
• Trong mạng P2P, mỗi peer có thể rời mạng bất cứ lúc nào Điều này có thể gây ra sự gián đoạn trong các kết nối hoặc mất dữ liệu nếu không có cơ chế
dự phòng
Mạng P2P là một giải pháp mạnh mẽ và hiệu quả cho việc truyền dữ liệu giữa các peer, đặc biệt là trong các ứng dụng thời gian thực như WebRTC Mô hình này giúp giảm tải cho các máy chủ, tối ưu hóa băng thông và giảm độ trễ, nhưng cũng đặt ra các thách thức về NAT traversal và bảo mật
Trong WebRTC, P2P là nền tảng cơ bản để thực hiện các cuộc gọi video, truyền tải dữ liệu giữa các peer với nhau một cách trực tiếp Các bước cơ bản trong việc thiết lập kết nối P2P giữa hai peer trong WebRTC sẽ được trình bày ở phần sau
2.2.2 Các kiến trúc còn lại của hệ thống
Node.js (Backend Server): Node.js đóng vai trò như một máy chủ backend
Nó cung cấp các API cho ứng dụng khách (client) React, chịu trách nhiệm nhận yêu cầu từ người dùng và gửi dữ liệu liên quan đến cơ sở dữ liệu MongoDB Backend cũng tương tác với signaling server để quản lý kết nối WebRTC giữa các peer
MongoDB (Database): MongoDB là hệ quản trị cơ sở dữ liệu NoSQL, được
sử dụng để lưu trữ dữ liệu người dùng, lịch sử cuộc gọi, và các thông tin liên quan đến phiên kết nối Khi người dùng yêu cầu thông tin từ server, dữ liệu sẽ được truy xuất từ MongoDB và trả về cho frontend để hiển thị hoặc thực hiện các thao tác khác
React (Frontend): React đóng vai trò là frontend cho ứng dụng web Người dùng tương tác với giao diện được tạo ra từ React để thực hiện các chức năng như đăng nhập, bắt đầu cuộc gọi, hoặc nhận cuộc gọi Các yêu cầu này sẽ được gửi đến Node.js server thông qua API React cũng sử dụng WebRTC thông qua thư viện PeerJS để thiết lập kết nối trực tiếp với các peer khác
Copies for internal use only in Phenikaa University
Trang 23PeerJS (Peer): PeerJS là một thư viện hỗ trợ WebRTC, cung cấp các API giúp việc thiết lập kết nối peer-to-peer (P2P) giữa các người dùng đơn giản hơn Thông qua PeerJS, các peer có thể kết nối trực tiếp để truyền dữ liệu video và âm thanh trong các cuộc gọi trực tuyến
Signaling Server: Trước khi thiết lập kết nối P2P, các peer cần trao đổi thông tin về kết nối của mình (các candidate ICE, SDP) Đây là vai trò của signaling server Thông qua signaling server, các peer trao đổi các dữ liệu signaling cần thiết để thiết lập một kết nối P2P Trong hệ thống này, signaling server có thể được xây dựng bằng WebSocket
STUN và TURN Server: Các server này giúp các peer tìm thấy nhau và duy trì kết nối ổn định, ngay cả khi một hoặc cả hai peer đứng sau tường lửa (firewall) hoặc NAT (Network Address Translation)
• STUN Server: Được sử dụng để xác định địa chỉ IP công cộng và cổng của peer khi peer đang đứng sau NAT
• TURN Server: Nếu các peer không thể kết nối trực tiếp với nhau (do NAT hoặc firewall quá phức tạp), TURN server sẽ đóng vai trò như một trung gian
để truyền dữ liệu
Chi tiết về các công nghệ được sử dụng trong kiến trúc của hệ thống sẽ được trình bày ở phần sau
2.3 Công nghệ sử dụng chính
2.3.1 Công nghệ WebRTC
WebRTC (Web Real-Time Communication)[1] là một bộ các tiêu chuẩn mở giúp cho các trình duyệt và ứng dụng có thể trao đổi âm thanh, video, và dữ liệu trực tiếp với nhau mà không cần qua một máy chủ trung gian WebRTC cho phép thiết lập kết nối peer-to-peer (P2P), sử dụng công nghệ ICE (Interactive Connectivity Establishment)
để tìm cách kết nối giữa các peer
Copies for internal use only in Phenikaa University
Trang 24Các thành phần chính của WebRTC bao gồm:
• MediaStream: Dòng dữ liệu chứa âm thanh và video
• RTCPeerConnection: Là một giao diện chính của WebRTC để quản lý kết nối P2P, giúp peer gửi và nhận các luồng dữ liệu media
• DataChannel: Cho phép gửi dữ liệu tùy ý (chẳng hạn như văn bản hoặc file) giữa các peer qua WebRTC
Cơ Chế Hoạt Động Của WebRTC:
1 Signaling: Trước khi có thể thiết lập kết nối P2P, các peer cần trao đổi thông tin với nhau qua quá trình signaling Thông tin signaling bao gồm địa chỉ IP, cổng kết nối, các candidate ICE, và mô tả phiên (session description) Quá trình này giúp các peer tìm thấy nhau và quyết định cách thiết lập kết nối trực tiếp Thông thường, signaling được xử lý qua WebSocket, nhưng nó cũng có thể được thực hiện qua bất kỳ giao thức nào khác
2 ICE (Interactive Connectivity Establishment): ICE là giao thức dùng để giúp các peer tìm ra con đường kết nối tối ưu nhất, đặc biệt khi một trong hai hoặc
cả hai peer đang đứng sau NAT hoặc firewall Khi hai peer đã trao đổi thông tin signaling, giao thức ICE sẽ bắt đầu tìm cách kết nối trực tiếp giữa các peer bằng cách xác định con đường tốt nhất (tức là kết nối thông qua địa chỉ IP công cộng hoặc thông qua các NAT/firewall nếu cần)
3 STUN và TURN Server: Các server này hỗ trợ trong việc thiết lập kết nối Trong các trường hợp mà peer không thể kết nối trực tiếp do NAT hoặc firewall, STUN server được sử dụng để giúp peer tìm ra địa chỉ IP công cộng của mình Nếu vẫn không thể kết nối trực tiếp, TURN server sẽ được sử dụng
để đóng vai trò làm trung gian truyền tải dữ liệu giữa các peer
Ưu điểm:
• WebRTC cho phép truyền tải dữ liệu âm thanh, video, và dữ liệu khác theo thời gian thực, giúp tạo nên trải nghiệm tương tác liền mạch giữa các người dùng
Copies for internal use only in Phenikaa University
Trang 25• WebRTC hoạt động trên nền tảng trình duyệt mà không cần cài đặt thêm bất kỳ phần mềm bổ sung nào
• Sử dụng mô hình P2P, WebRTC giúp giảm tải cho các server trung gian bằng cách cho phép truyền dữ liệu trực tiếp giữa các peer
• WebRTC tự động mã hóa các luồng dữ liệu, bảo vệ tính riêng tư và bảo mật của các kết nối
sử dụng khi kết nối có thể thực hiện trực tiếp, và không yêu cầu relay dữ liệu
Quá trình hoạt động:
1 Khi một peer cần xác định địa chỉ IP công cộng của mình, nó gửi một yêu cầu đến STUN server
2 STUN server trả về địa chỉ IP công cộng và cổng của peer
3 Peer sử dụng thông tin này để gửi trực tiếp các gói dữ liệu đến peer khác
Trang 26• STUN chỉ đơn giản cung cấp thông tin về IP công cộng và cổng, không phải tham gia vào truyền tải dữ liệu, do đó không gây tốn tài nguyên hệ thống Nhược điểm:
• STUN không hoạt động hiệu quả trong các mạng có NAT phức tạp hoặc bị firewall hạn chế, đặc biệt là NAT Symmetric, dẫn đến cần sử dụng TURN server
• STUN chỉ đóng vai trò hỗ trợ kết nối P2P chứ không truyền tải dữ liệu, vì vậy trong trường hợp không kết nối được, phải dựa vào TURN server
2.3.3 TURN Server
TURN (Traversal Using Relays around NAT) là một giao thức tương tự STUN nhưng phức tạp hơn Khi STUN không thể thiết lập kết nối trực tiếp giữa các peer do NAT hoặc firewall quá khắt khe, TURN sẽ được sử dụng Thay vì gửi dữ liệu trực tiếp, các peer sẽ gửi dữ liệu qua TURN server, đóng vai trò là trung gian truyền tải Quá trình hoạt động:
1 Nếu các peer không thể kết nối trực tiếp, dữ liệu media sẽ được gửi đến TURN server
2 TURN server sau đó chuyển tiếp dữ liệu đến peer kia
3 Tuy giải pháp này làm tăng độ trễ và yêu cầu tài nguyên lớn hơn, nó đảm bảo rằng kết nối có thể thực hiện được trong các tình huống phức tạp
TURN thường được sử dụng như một giải pháp dự phòng khi STUN không thể thực hiện kết nối P2P
Ưu điểm:
• Khi STUN không thể giúp các peer kết nối trực tiếp, TURN server đóng vai trò làm trung gian, đảm bảo việc truyền tải dữ liệu ngay cả khi có NAT phức tạp hoặc firewall
• TURN server cung cấp một kênh đáng tin cậy và ổn định để truyền dữ liệu khi kết nối P2P thất bại, giúp duy trì liên lạc trong mọi tình huống
Copies for internal use only in Phenikaa University
Trang 272.4 Công nghệ sử dụng còn lại
2.4.1 ViteJS
Vite là một công cụ xây dựng đặc biệt nổi bật với tốc độ và hiệu suất cao nhờ kiến trúc mới mẻ so với các công cụ truyền thống như Webpack hay Parcel Vite chủ yếu tập trung vào hai đặc điểm chính: thời gian khởi động nhanh và quá trình phát triển mượt mà thông qua Hot Module Replacement (HMR) Với HMR, việc cập nhật
mã nguồn trong quá trình phát triển mà không cần tải lại trang giúp tiết kiệm thời gian và tăng năng suất, cung cấp các công cụ tối ưu hóa như gộp mã (code concatenation), nén và tối ưu hóa mã nguồn để giảm kích thước file và tăng tốc tải trang Vite hoạt động bằng cách chia quá trình xây dựng thành hai giai đoạn: tải module trong thời gian phát triển bằng ES modules (chỉ tải những gì cần thiết khi sử dụng) và xử lý nhanh chóng quá trình đóng gói sản phẩm khi xuất bản Vite có cấu hình tối giản, sử dụng được ngay mà không cần cấu hình phức tạp như Webpack Điều này làm cho Vite dễ tiếp cận với những người mới bắt đầu hoặc những dự án nhỏ, đồng thời vẫn mạnh mẽ và linh hoạt cho các dự án lớn Vite hỗ trợ TypeScript, JSX, CSS-in-JS và nhiều tính năng khác mà không cần cài đặt bổ sung Điều này giúp Vite dễ dàng tích hợp với các công nghệ hiện đại như React, Vue, hay TailwindCSS, cải thiện trải nghiệm phát triển
2.4.2 ReactJS
ReactJS là một thư viện JavaScript mã nguồn mở do Facebook phát triển, được
sử dụng chủ yếu để xây dựng các giao diện người dùng (UI) trong các ứng dụng web ReactJS hoạt động theo nguyên tắc component-based (dựa trên thành phần), giúp chia Copies for internal use only in Phenikaa University
Trang 28nhỏ giao diện thành các phần có thể tái sử dụng và quản lý dễ dàng Điểm nổi bật của ReactJS là khả năng quản lý trạng thái thông qua các hooks như useState, useEffect, cùng với sự hỗ trợ mạnh mẽ của hệ sinh thái như React Router, Redux và Context API Điều này giúp React trở thành công cụ lý tưởng cho các ứng dụng có tính tương tác cao và yêu cầu cập nhật giao diện theo thời gian thực như hệ thống video conference Kiến trúc component-based của React cho phép chia giao diện người dùng thành các thành phần độc lập, dễ bảo trì và tái sử dụng Điều này giúp việc phát triển ứng dụng lớn trở nên dễ dàng hơn, và đồng thời tối ưu hóa hiệu suất React sử dụng một phiên bản DOM ảo giúp cải thiện hiệu suất bằng cách chỉ cập nhật những phần cần thiết trên giao diện, thay vì làm mới toàn bộ DOM mỗi khi có sự thay đổi Điều này giúp tối ưu hoá tốc độ phản hồi của ứng dụng, một yếu tố rất quan trọng trong các ứng dụng video conference yêu cầu sự mượt mà và thời gian thực React cung cấp các công cụ mạnh mẽ để quản lý trạng thái của ứng dụng như Context API, Redux, hoặc các hook như useState, useEffect Điều này giúp việc quản lý và đồng
bộ hóa dữ liệu giữa các thành phần khác nhau trong ứng dụng trở nên dễ dàng và hiệu quả hơn
2.4.3 TypeScript
TypeScript là một phiên bản mở rộng của JavaScript, được phát triển bởi Microsoft Điểm nổi bật của TypeScript là việc cung cấp kiểm tra kiểu tĩnh (static typing), giúp phát hiện lỗi trong quá trình biên dịch trước khi chạy chương trình TypeScript tuân theo cú pháp và cách viết của JavaScript, nhưng bổ sung thêm các tính năng như kiểu dữ liệu, class, interface, và hỗ trợ đầy đủ các tính năng của ES6+ (EcmaScript 6+) Tính năng nổi bật nhất của TypeScript là kiểm tra kiểu tĩnh, cho phép phát hiện lỗi khi lập trình viên khai báo các biến, hàm, hoặc tham số không đúng kiểu Điều này giúp giảm thiểu lỗi liên quan đến việc truyền sai kiểu dữ liệu, đặc biệt quan trọng đối với các dự án phức tạp như hệ thống video conference, nơi cần quản
lý nhiều trạng thái và dữ liệu người dùng TypeScript hỗ trợ lập trình hướng đối tượng với các khái niệm như class, interface, kế thừa và tính đa hình, giúp việc tổ chức và duy trì cấu trúc mã dễ dàng hơn, đồng thời tăng tính mở rộng cho dự án Các tính năng này rất hữu ích trong các hệ thống lớn, cần quản lý nhiều thành phần khác nhau Copies for internal use only in Phenikaa University
Trang 29Với JavaScript, các lỗi chỉ được phát hiện khi chương trình chạy (runtime), trong khi TypeScript phát hiện lỗi ngay trong quá trình biên dịch (compile-time) Điều này giúp lập trình viên nhanh chóng khắc phục lỗi trước khi phát hành, đảm bảo tính ổn định của hệ thống TypeScript là một siêu ngôn ngữ của JavaScript, có nghĩa là tất cả mã JavaScript hợp lệ đều có thể chạy trong TypeScript Điều này giúp các lập trình viên
có thể chuyển đổi dần từ JavaScript sang TypeScript mà không cần phải viết lại toàn
bộ mã TypeScript giúp duy trì một cấu trúc mã rõ ràng và chặt chẽ, điều này cực kỳ hữu ích khi làm việc với các dự án lớn hoặc khi cần mở rộng hệ thống Các tính năng như interface và generics giúp mã trở nên dễ hiểu hơn và dễ bảo trì hơn, đặc biệt khi
có nhiều lập trình viên cùng làm việc trên một dự án
2.4.4 Ant Design
Ant Design là một thư viện UI mạnh mẽ và phong phú được phát triển bởi Ant Financial, một trong những công ty con của tập đoàn Alibaba Ant Design cung cấp các thành phần giao diện người dùng (UI) chuyên nghiệp, hiện đại và thân thiện với người dùng, được tối ưu cho việc phát triển các ứng dụng web với React Đây là một trong những thư viện UI phổ biến nhất trong hệ sinh thái React nhờ vào sự tiện lợi,
dễ dàng sử dụng và tính linh hoạt cao trong thiết kế Ant Design tuân theo nguyên tắc thiết kế UI đồng nhất, chuyên nghiệp, giúp phát triển giao diện người dùng nhanh chóng mà không cần tốn quá nhiều công sức để định hình phong cách Ant Design cung cấp một bộ các component phong phú và được sử dụng phổ biến trong các ứng dụng, như Button, Form, Table, Modal, Pagination, và nhiều thành phần khác, giúp tiết kiệm thời gian và công sức khi phát triển ứng dụng
2.4.5 TailwindCSS
TailwindCSS là một framework CSS theo hướng utility-first, tức là tập trung vào việc sử dụng các class CSS nhỏ gọn, trực tiếp để xây dựng giao diện người dùng Thay vì cung cấp các thành phần giao diện sẵn có như các framework CSS truyền thống, TailwindCSS cho phép lập trình viên tạo ra các giao diện tùy chỉnh và linh hoạt hơn bằng cách sử dụng các class utility được định nghĩa sẵn Với TailwindCSS, lập trình viên có thể dễ dàng cấu hình lại các class utility theo ý muốn bằng cách Copies for internal use only in Phenikaa University
Trang 30chỉnh sửa tệp cấu hình “tailwind.config.js” Điều này giúp tạo ra giao diện hoàn toàn tùy chỉnh mà không bị ràng buộc vào các thành phần mặc định Các class utility trong TailwindCSS có thể được tái sử dụng nhiều lần trong suốt dự án mà không phải viết lại CSS cho mỗi phần tử Điều này không chỉ giảm thiểu kích thước file CSS mà còn giúp tổ chức mã rõ ràng hơn, dễ dàng quản lý và bảo trì
2.4.6 NodeJS
NodeJS là một môi trường runtime mã nguồn mở dựa trên JavaScript được thiết kế để xây dựng các ứng dụng web nhanh chóng và có khả năng mở rộng NodeJS nổi bật nhờ kiến trúc non-blocking I/O, tức là xử lý các tác vụ I/O (input/output) mà không cần chờ đợi một tác vụ hoàn thành trước khi bắt đầu xử lý các tác vụ khác Điều này giúp NodeJS rất phù hợp cho việc xử lý yêu cầu đồng thời và các ứng dụng thời gian thực như video conference Nhờ vào mô hình I/O bất đồng bộ, NodeJS có khả năng xử lý nhiều yêu cầu cùng lúc mà không bị nghẽn, giúp tăng hiệu suất của ứng dụng Một lợi thế lớn của NodeJS là nó sử dụng JavaScript, cùng ngôn ngữ với client, giúp đồng bộ hóa tốt giữa client và server Điều này không chỉ giúp giảm bớt
sự khác biệt giữa front-end và back-end mà còn giúp các nhà phát triển sử dụng JavaScript trong toàn bộ quá trình phát triển ứng dụng
2.4.7 Express
Express là một framework back-end dành cho Node.js, cung cấp các công cụ mạnh mẽ để xây dựng các ứng dụng web và API dễ dàng, hiệu quả Express giúp giảm bớt sự phức tạp trong việc phát triển web bằng cách cung cấp một lớp trừu tượng trên các tính năng cơ bản của Node.js, giúp lập trình viên tập trung vào việc xây dựng các tính năng mà không phải lo lắng quá nhiều về cấu trúc hạ tầng phức tạp Express cung cấp cơ chế định tuyến URL dựa trên phương thức HTTP (GET, POST, PUT, DELETE) và đường dẫn URL, giúp lập trình viên dễ dàng định nghĩa các endpoint trong ứng dụng Sử dụng hệ thống middleware mạnh mẽ, cho phép quản lý và kiểm soát luồng xử lý các request và response Điều này giúp bạn dễ dàng thêm các tính năng như xử lý lỗi, xác thực, logging hoặc nén dữ liệu Express hoạt động rất tốt với các cơ sở dữ liệu như MongoDB, MySQL, …
Copies for internal use only in Phenikaa University
Trang 312.4.8 WebSocket
WebSocket là một thư viện phổ biến trong môi trường Node.js được sử dụng
để phát triển các ứng dụng thời gian thực WebSocket hỗ trợ các kết nối giữa client
và server, giúp truyền dữ liệu và sự kiện nhanh chóng với độ trễ thấp mà không cần refresh trang hay gửi lại yêu cầu HTTP thông thường Phía server, Node.js chịu trách nhiệm quản lý kết nối WebSocket và xử lý sự kiện từ client Phía client, JavaScript chạy trên trình duyệt giúp kết nối tới server qua WebSocket và gửi, nhận dữ liệu từ server WebSocket có thể tự động kết nối lại nếu kết nối bị gián đoạn do mất mạng hoặc lỗi server, giúp cải thiện trải nghiệm người dùng WebSocket còn cho phép phân nhóm người dùng vào các room (phòng) hoặc namespace, giúp dễ dàng quản lý các phiên video conference hoặc chat nhóm
2.4.9 PeerJS
PeerJS[2] là một thư viện JavaScript giúp đơn giản hóa việc sử dụng WebRTC
để tạo các kết nối peer-to-peer (P2P) giữa các trình duyệt Mục tiêu chính của PeerJS
là làm cho việc triển khai WebRTC trở nên dễ dàng và tiện lợi hơn bằng cách cung cấp các API thân thiện và trừu tượng hóa một số phức tạp liên quan đến việc thiết lập các kết nối trực tiếp giữa các thiết bị (peer)
Việc kết nối người dùng đối với việc sử dụng WebRTC tương đối phức tạp, vì vậy cần có một thư viện hộ trợ việc đơn giản hóa vấn đề kết nối của WebRTC PeerJS trừu tượng hóa các thao tác phức tạp trong việc thiết lập kết nối WebRTC bằng cách cung cấp các hàm API dễ sử dụng Người dùng chỉ cần gọi các hàm như
“peer.connect()” để kết nối với một peer khác và “peer.call()” để thiết lập cuộc gọi video PeerJS quản lý quá trình trao đổi SDP và ICE, giúp người phát triển không cần viết quá nhiều mã để xử lý các bước tín hiệu hóa (signaling)
Các thành phần chính trong PeerJS bao gồm: Peer Object: Tạo một đối tượng peer mới để bắt đầu hoặc nhận kết nối; PeerServer: Server tín hiệu (signaling server) của PeerJS giúp các peers tìm nhau và trao đổi các thông tin cần thiết để thiết lập kết nối; Connection & Call Object: “peer.connect()” cho phép hai peers giao tiếp qua DataConnection và “peer.call()” thiết lập cuộc gọi video qua MediaConnection Copies for internal use only in Phenikaa University
Trang 32Từ các thành phần của PeerJS, PeerJS cung cấp một luồng kết nối đơn giản hơn:
• Khởi tạo peer: Mỗi người dùng khởi tạo một đối tượng peer với ID duy nhất
• Kết nối P2P: Khi người dùng này gọi đến người dùng khác, một MediaConnection được tạo ra với peer ID của người dùng
• Truyền video: Sau khi kết nối, video của bác sĩ và bệnh nhân được truyền trực tiếp giữa hai thiết bị
Khi sử dụng WebRTC thuần, nhà phát triển cần phải tự xây dựng các giải pháp tín hiệu (signaling) và xử lý tất cả các bước trao đổi ICE và SDP một cách thủ công Điều này yêu cầu nhiều hiểu biết kỹ thuật và có thể làm tăng độ phức tạp của dự án Gây khó khăn trong việc triển khai và quản lý các kết nối phức tạp, đặc biệt là khi mở rộng quy mô ứng dụng
2.4.10 MongoDB
MongoDB[3] là một cơ sở dữ liệu NoSQL dạng document-oriented (dữ liệu dạng tài liệu), nơi dữ liệu được lưu trữ dưới dạng JSON-like documents Không giống như các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) như MySQL, MongoDB không
có bảng hoặc các mối quan hệ cố định giữa dữ liệu, thay vào đó, các document được lưu trữ trong các collection và có thể chứa các cấu trúc dữ liệu đa dạng và phức tạp MongoDB lưu trữ dữ liệu dưới dạng các tài liệu JSON, giúp dễ dàng lưu trữ và quản
lý dữ liệu không có cấu trúc cố định Điều này phù hợp với các ứng dụng yêu cầu lưu trữ dữ liệu thay đổi liên tục hoặc phức tạp Hỗ trợ khả năng mở rộng horizontal scaling (mở rộng theo chiều ngang) thông qua sharding – phân chia dữ liệu trên nhiều máy chủ, giúp hệ thống dễ dàng mở rộng khi cần thiết Cung cấp cơ chế index linh hoạt
và các công cụ mạnh mẽ để thực hiện các phép tính toán và tìm kiếm dữ liệu, giúp tối ưu hóa tốc độ truy vấn dữ liệu lớn MongoDB còn hỗ trợ replication (sao lưu dữ liệu), giúp đảm bảo tính sẵn sàng của dữ liệu và bảo vệ dữ liệu khỏi mất mát trong trường hợp xảy ra sự cố.Copies for internal use only in Phenikaa University
Trang 333.1 Khảo sát hiện trạng
Trong quá trình phát triển hệ thống video conference, việc khảo sát hiện trạng
là bước đầu tiên và vô cùng quan trọng Nguồn thông tin cho việc khảo sát này thường được lấy từ ba nguồn là người dùng, các hệ thống đã có sẵn và các ứng dụng tương
tự Dựa vào khảo sát từ ba nguồn này, để đưa ra những đánh giá và so sánh các tính năng, hiệu suất, và những vấn đề đang tồn tại trong các giải pháp hiện tại để đưa ra phương án phát triển phù hợp cho hệ thống
Yêu cầu từ phía người dùng là yếu tố quyết định trực tiếp đến việc hệ thống
có đáp ứng được nhu cầu thực tế hay không Thông qua việc tìm hiểu về tình trạng thực tế của xã hội, qua việc thu thập được các mong muốn, vấn đề và khó khăn mà người dùng gặp phải trong các hệ thống hay ứng dụng trong lĩnh vực y tế hiện tại Đặc biệt, là việc tiếp cận ý tế đối với những người cao tuổi bị mắc bệnh lý mất trí nhớ Vì vậy mà hệ thống cần quan tâm vào những vào việc dễ sử dụng, có một giao diện đơn giản, thân thiện với người dùng, có một kết nối ổn định Đó là những yếu tố cần chú trọng trong quá trình phát triển hệ thống
Việc khảo sát các hệ thống video conference đã có sẵn trên thị trường, từ đó rút ra được những ưu điểm và nhược điểm của các hệ thống này Các hệ thống nổi tiếng như Zoom, Google Meet hay Microsoft Teams cung cấp nhiều tính năng mạnh
mẽ như chia sẻ màn hình, ghi lại cuộc gọi, và hỗ trợ nhiều người tham gia Tuy nhiên, một số hệ thống có thể thiếu tính linh hoạt trong việc cá nhân hóa giao diện hoặc hạn chế về khả năng mở rộng, cũng như đó chỉ là những hệ thống video call chung, chưa tập trung vào một lĩnh vực nhất định Từ những thông tin này, hệ thống được điều chỉnh thiết kế để phát triển một hệ thống chỉ kết nối giữa một bác sĩ với một bệnh
Chương 3 Phân tích và thiết kế hệ thống
Copies for internal use only in Phenikaa University
Trang 34nhân trong cùng một thời điểm, tiếp thu tính năng ghi lại cuộc gọi và bổ sung tính năng thực hiện các bài kiểm tra chuyên sâu để chẩn đoán về bệnh lý mất trí nhớ
Sau quá trình khảo sát hiện trạng, hệ thống sẽ chú trọng vào các tính năng quan trọng cần phát triển sau: Kết nối một bác sĩ với một bệnh nhân; Ghi lại cuộc gọi; Đưa
ra các bài kiểm tra chuyên sâu; Lưu lại kết quả của các bài kiểm tra đó Những tính năng này sẽ góp phần xây dựng một hệ thống video conference chất lượng đáp ứng được nhu cầu của người dùng, đồng thời mang lại khả năng mở rộng trong tương lai
3.2 Tổng quan chức năng
3.2.1 Biểu đồ use case tổng quan
Hình 3.1 Biểu đồ use case tổng quan
Tác nhân tham gia:
• Admin (Quản trị viên): Quản lý toàn bộ hệ thống, bao gồm quản lý người dùng, lịch sử cuộc gọi, và các bài kiểm tra
• Doctor (Bác sĩ): Bác sĩ là người trực tiếp thực hiện cuộc gọi video với bệnh nhân, thực hiện các bài kiểm tra, quản lý lịch sử cuộc gọi
• Patient (Bệnh nhân): Bệnh nhân tham gia vào các cuộc gọi video với bác sĩ và Copies for internal use only in Phenikaa University
Trang 35Vai trò của từng tác nhân:
Admin:
• Quản lý người dùng: Tạo, xóa, và quản lý thông tin người dùng
• Quản lý lịch sử cuộc gọi và các bài kiểm tra: Theo dõi và kiểm soát các cuộc gọi đã diễn ra và quản lý các bài kiểm tra của hệ thống
Doctor:
• Thực hiện cuộc gọi video với bệnh nhân
• Lưu và quản lý lịch sử cuộc gọi để theo dõi sức khỏe của bệnh nhân
• Ghi hình cuộc gọi và thực hiện các bài kiểm tra sức khỏe từ xa
Patient:
• Tham gia cuộc gọi video với bác sĩ
• Thực hiện các bài kiểm tra sức khỏe trong quá trình gọi video theo hướng dẫn của bác sĩ
Mô tả các use case chính:
Trang 36Doctor:
• Xem lịch sử cuộc gọi: Bác sĩ có thể xem lại lịch sử các cuộc gọi trước đó với bệnh nhân, phục vụ cho việc đánh giá và chẩn đoán Đồng thời có thể xóa hay chỉnh sửa lại nội dung lịch sử cuộc gọi nếu cần thiết
• Thực hiện bài kiểm tra: Trong quá trình cuộc gọi video, bác sĩ có thể hướng dẫn bệnh nhân thực hiện các bài kiểm tra sức khỏe từ xa
• Ghi hình cuộc gọi: Bác sĩ có thể ghi lại các cuộc gọi để lưu trữ và tham khảo sau này nếu cần thiết
Patient:
• Tham gia cuộc gọi: Bệnh nhân có thể tham gia vào các cuộc gọi video đã được lên lịch với bác sĩ để nhận tư vấn và thực hiện các bài kiểm tra
3.2.2 Biểu đồ use case quản lý người dùng
Hình 3.2 Biểu đồ use case quản lý người dùng
Admin tạo tài khoản mới cho người dùng:
1 Admin nhập các thông tin cơ bản như tên, tuổi, địa chỉ, số điện thoại, email và vai trò (doctor, patient)
2 Hệ thống kiểm tra và xác nhận tính hợp lệ của thông tin
3 Hệ thống tạo tài khoản mới và thông báo thành công
Copies for internal use only in Phenikaa University