TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Thời gian chờ đợi để lấy số và khám bệnh là nỗi lo lắng thường trực của nhiều bệnh nhân Khi số lượng người bệnh ngày càng tăng và cuộc sống trở nên bận rộn, nhu cầu tìm kiếm phương pháp thuận tiện để giảm bớt căng thẳng trong thời gian chờ đợi khám bệnh trở nên cấp thiết hơn bao giờ hết.
Trong bối cảnh công nghệ phát triển nhanh chóng hiện nay, việc xây dựng dịch vụ khám bệnh online trở thành một giải pháp cần thiết để giải quyết những vấn đề cấp bách trong lĩnh vực y tế.
CỞ SỞ LÝ THUYẾT
NODE JS
NodeJS là một nền tảng phần mềm mạnh mẽ, được tối ưu hóa để phát triển các ứng dụng internet có khả năng mở rộng, đặc biệt là máy chủ web Được viết bằng ngôn ngữ JavaScript, NodeJS sử dụng kỹ thuật điều khiển theo sự kiện và nhập/xuất không đồng bộ nhằm giảm thiểu chi phí và tối đa hóa khả năng mở rộng Nền tảng này bao gồm động cơ V8 JavaScript của Google, libUV và một số thư viện hỗ trợ khác, tạo nên một hệ sinh thái linh hoạt cho các nhà phát triển.
NodeJS là một nền tảng đa năng, có khả năng hoạt động trên nhiều hệ điều hành như Windows, Linux và OSX, mang lại lợi thế lớn cho lập trình viên Với sự hỗ trợ của các thư viện phong phú dưới dạng JavaScript Module, NodeJS giúp đơn giản hóa quy trình lập trình và tối ưu hóa thời gian phát triển Được xây dựng trên V8 Engine, một công nghệ dựa trên C++, NodeJS thể hiện sức mạnh và hiệu suất vượt trội, với C++ là nền tảng cốt lõi.
Node.js có một thư viện tích hợp cho phép ứng dụng hoạt động như một máy chủ web mà không cần sử dụng phần mềm bên ngoài như Nginx, Apache HTTP Server hay IIS Với kiến trúc hướng sự kiện và API I/O không chặn, Node.js tối ưu hóa hiệu suất ứng dụng và mang lại khả năng mở rộng cao.
Node.js hoạt động hoàn toàn không đồng bộ, cho phép các tác vụ được xử lý ở chế độ nền, giúp tối ưu hóa hiệu suất Điểm mạnh của Node.js là khả năng xử lý nhiều kết nối chỉ với một thread duy nhất, điều này giúp tiết kiệm RAM và tăng tốc độ xử lý so với PHP, nơi mỗi truy vấn thường yêu cầu tạo một thread mới Bên cạnh đó, Node.js tận dụng ưu điểm non-blocking I/O của JavaScript, tối đa hóa tài nguyên của server mà không gây ra độ trễ, mang lại hiệu suất cao hơn.
JSON APIs với cơ chế event-driven và non-blocking I/O, kết hợp với Javascript, là lựa chọn lý tưởng cho các dịch vụ web sử dụng JSON Đặc biệt, NodeJS rất phù hợp cho việc phát triển ứng dụng một trang (Single Page Application) như Gmail, nhờ khả năng xử lý nhiều yêu cầu đồng thời và thời gian phản hồi nhanh Nếu bạn muốn xây dựng ứng dụng mà không cần tải lại trang và đáp ứng nhanh chóng các yêu cầu từ người dùng, NodeJS sẽ là sự lựa chọn hoàn hảo để thể hiện sự chuyên nghiệp.
Express.js is a powerful framework built on the Node.js platform, designed for web and mobile development It supports various HTTP methods and middleware, enabling the creation of robust and user-friendly APIs.
Socket.io là một module trong Node.js, được phát triển vào năm 2010, nhằm tạo điều kiện cho giao tiếp thời gian thực thông qua các kết nối mở Với khả năng giao tiếp hai chiều giữa máy khách và máy chủ, Socket.io cho phép trao đổi dữ liệu ngay lập tức, miễn là cả hai bên đều tích hợp gói Socket.io.
Socket.io là một thư viện quan trọng trong việc phát triển các ứng dụng web real-time, cho phép phản hồi tức thì cho các tính năng như chat và theo dõi trực tiếp bóng đá Nó được xây dựng dựa trên Engine.IO, bắt đầu bằng cách thiết lập kết nối long-polling và sau đó nâng cấp lên các kết nối hiệu quả hơn như WebSocket.
REACT NATIVE
React Native là framework do Facebook phát triển, giúp cải thiện hiệu suất của ứng dụng Hybrid và giảm chi phí khi phải lập trình bằng nhiều ngôn ngữ native cho từng nền tảng di động khác nhau.
React Native cho phép build ứng dụng Native đa nên tảng một cách dễ dàng, khác với Mobile Web App, HTML5 App và Hybrid App
React Native cho phép phát triển ứng dụng native cho cả iOS và Android, với React chịu trách nhiệm về view-controller và tạo ra các giao diện native bằng JavaScript Framework này hướng đến nền tảng di động thay vì trình duyệt, giúp các lập trình viên web dễ dàng viết ứng dụng di động với giao diện tự nhiên Một trong những điểm nổi bật của React Native là khả năng chia sẻ mã nguồn giữa các nền tảng, giúp việc phát triển đồng thời cho Android và iOS trở nên đơn giản hơn.
Hình 1 React Native sử dụng hai Thread cho ứng dụng
React Native cho phép viết và chạy logic ứng dụng bằng JavaScript, trong khi giao diện người dùng hoàn toàn là native Điều này giúp loại bỏ những thỏa hiệp thường gặp với giao diện HTML5.
Giống như React cho Web, ứng dụng React Native được phát triển bằng cách kết hợp JavaScript và XML, được gọi là JSX React Native hỗ trợ cả hai nền tảng iOS và Android, và có khả năng mở rộng trên tất cả các nền tảng trong tương lai.
React Native cung cấp hiệu suất vượt trội so với React.JS, nhờ vào khả năng trừu tượng hóa DOM và thao tác trong virtual DOM Nó mang đến những phương pháp lập trình đơn giản cho phát triển ứng dụng di động hybrid, kết hợp tốc độ và linh hoạt của phát triển ứng dụng web với kết quả tương tự ứng dụng native.
POSTGRESQL
PostgreSQL là hệ thống quản trị cơ sở dữ liệu quan hệ mã nguồn mở miễn phí, nổi bật với khả năng mở rộng và tuân thủ các tiêu chuẩn kỹ thuật Nó được thiết kế để quản lý các khối lượng công việc đa dạng, phục vụ từ máy tính cá nhân đến các kho dữ liệu lớn và dịch vụ Web với nhiều người dùng đồng thời.
PostgreSQL là một hệ quản trị cơ sở dữ liệu mạnh mẽ với nhiều tính năng phức tạp như kiểm soát truy cập đồng thời nhiều phiên bản (MVCC), khôi phục dữ liệu tại từng thời điểm, và quản lý dung lượng bảng Nó hỗ trợ sao chép không đồng bộ, giao dịch lồng nhau, và cho phép sao lưu trực tuyến hoặc nội bộ PostgreSQL cũng cung cấp khả năng thực hiện các truy vấn phức tạp và tối ưu hóa, cùng với việc viết trước các khai báo để quản lý và gỡ lỗi Hệ thống này hỗ trợ bộ ký tự quốc tế, bảng mã nhiều byte, và Unicode, cho phép định dạng và phân loại ký tự văn bản Đặc biệt, PostgreSQL có khả năng mở rộng, quản lý dữ liệu lên đến 4 terabyte và hỗ trợ nhiều người dùng truy cập đồng thời.
Các tính năng toàn vẹn dữ liệu bao gồm khóa chính, khóa ngoại, và các tầng cập nhật/xóa Bên cạnh đó, việc kiểm tra hạn chế, ràng buộc duy nhất và các hạn chế không null cũng đóng vai trò quan trọng trong việc đảm bảo tính chính xác và nhất quán của dữ liệu.
PostgreSQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, cho phép người dùng tự do sử dụng, sửa đổi và cài đặt theo nhu cầu cá nhân Với khả năng tùy chỉnh linh hoạt, bạn có thể thực hiện các cải tiến và thay đổi để phục vụ tốt nhất cho mục đích của mình Không chỉ là một hệ thống cơ sở dữ liệu mạnh mẽ, PostgreSQL còn là nền tảng lý tưởng cho phát triển ứng dụng đơn, web và các sản phẩm phần mềm thương mại yêu cầu hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).
PostgreSQL đã nhận được sự hài lòng cao từ người dùng và chuyên gia công nghệ nhờ vào những ưu điểm vượt trội của nó Hệ quản trị cơ sở dữ liệu này đã giành được nhiều giải thưởng danh giá, bao gồm giải thưởng Linux New Media cho hệ điều hành tốt nhất và năm lần được tạp chí Linux Journal Editors bình chọn là DBMS tốt nhất.
JSON WEB TOKEN
JSON Web Mã (JWT) là một chuẩn mở (RFC 7519) cho phép truyền tải thông tin an toàn giữa các bên dưới dạng đối tượng JSON Thông tin trong JWT có thể được xác minh và đảm bảo độ tin cậy nhờ vào chữ ký số JWTs có thể được ký bằng thuật toán bí mật (HMAC) hoặc bằng cặp khóa công khai/riêng tư sử dụng mã hóa RSA.
WebRTC
WebRTC (Web Real-Time Communication) là một tập hợp các hàm lập trình (web API) do World Wide Web Consortium (W3C) phát triển, cho phép trình duyệt giao tiếp với nhau theo thời gian thực qua video, âm thanh và truyền tải dữ liệu “Peer-to-Peer” (P2P) mà không cần cài đặt thêm plugin hay phần mềm bên ngoài Công nghệ này cho phép người dùng thực hiện cuộc gọi video ngay trong trình duyệt mà không cần đăng ký tài khoản, đồng thời cũng được sử dụng để phát triển các trò chơi trực tuyến và nhiều ứng dụng khác.
WebRTC mang lại khả năng truyền tải đa phương tiện mạnh mẽ cho web, với tính năng hỗ trợ âm thanh, video và trao đổi tệp Kết nối giữa các peer được thiết lập một cách hiệu quả, tạo điều kiện thuận lợi cho việc giao tiếp trực tuyến.
20 thực hiện không cần trình điều khiển đặc biệt hay plugin, và có thể hoạt động mà không cần máy chủ trung gian.
FIREBASE
Dịch vụ cơ sở dữ liệu thời gian thực trên nền tảng đám mây của Google giúp lập trình viên phát triển ứng dụng nhanh chóng bằng cách tối ưu hóa các thao tác với cơ sở dữ liệu.
Dịch vụ Firebase có thể được chia thành hai nhóm:
• Phát triển và thử nghiệm ứng dụng của bạn: Realtime Database, Auth, Test Lab, Crashlytics, Cloud Functions, Firestore, Cloud Storage, Performance Monitoring, Crash Reporting, Hosting
• Phát triển và thu hút đối tượng của bạn: Firebase Analytics, Invites, Cloud Messaging, Predictions, AdMob, Dynamic Links, Adwords, Remote Config, App Indexing
Firebase, tiền thân là Evolve, được thành lập vào năm 2011 bởi Andrew Lee và James Tamplin, ban đầu chỉ cung cấp cơ sở dữ liệu cho ứng dụng chat Tuy nhiên, họ nhanh chóng nhận ra rằng khách hàng sử dụng sản phẩm để lưu trữ thông tin như tiến độ game Vào tháng 4 năm 2012, Lee và Tamplin tách mảng realtime để thành lập Firebase Đến tháng 10 năm 2014, Firebase gia nhập Google, tạo điều kiện cho sự phát triển nhanh chóng của cả hai Google đã chuyển giao các dịch vụ hỗ trợ lập trình viên như Cloud Messaging, AdMob và Analytics cho Firebase, giúp nâng cao hiệu quả và chất lượng dịch vụ.
KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU
KHẢO SÁT HIỆN TRẠNG
2.1.1 UMC – App Đăng kí khám bệnh online
Hình 2 Khảo sát hiện trạng - UMC – App Đăng kí khám bệnh online
4 Tạo hồ sơ bệnh nhân
5 Quản lý hồ sơ bệnh nhân
6 Quản lý phiếu khám bệnh
7 Tư vấn sàng lọc bệnh
3 Đầy đủ các thông tin chính
1 Hạn chế về chức năng
2.1.2 TWG Giới thiêu tập đoàn- Đặt lịch khám bệnh
Hình 3 Khảo sát hiện trạng - TWG Giới thiêu tập đoàn- Đặt lịch khám bệnh
1 Ứng dụng giúp tìm hiểu thông tin về hệ thống bệnh viện của tập đoàn TWG
2 các bác sĩ của tập đoàn,
3 đặt lịch khám tại bệnh viện nhanh chóng,
1 Hạn chế về chức năng
XÁC ĐỊNH YÊU CẦU
2.2.1.1 Yêu cầu chức năng nghiệp vụ
❖ Lưu trữ: các thông tin về:
- Thông tin chi tiết người dùng: mã người dùng, tên người dùng, ngày sinh, giới tính, số điện thoại, email, địa chỉ, nghề nghiệp
- Thông tin cuộc gọi: người gọi, người nhận, thời gian cuộc gọi, chi phí
- Thông tin tin nhắn: người gửi, người nhận, thời gian gửi – nhận, nội dung tin nhắn.
- Tra cứu thông tin bác sĩ
- Tra cứu thông tin cuộc gọi
- Tra cứu thông tin tin nhắn
- Bác sĩ trong khu vực
- Thông tin xét nghiệm online
❖ Bộ phận (Người thực hiện): Quản trị viên hệ thống
Bảng 1 Chức năng nghiệp vụ của quản trị viên
STT Công việc Loại công việc
Quy định/Công thức liên quan
1 Thêm người dùng Lưu trữ Khi thêm mới một người dùng thì quy định phân quyền truy cập rõ ràng
Lưu trữ Đã xác thực thông tin
3 Xóa người dùng Lưu trữ Đã xác thực thông tin
3 Tìm kiếm thông tin người dùng
Tra cứu Đã xác thực thông tin
❖ Bộ phận (Người thực hiện): Người dùng ( Bác sĩ )
Bảng 2 Chức năng nghiệp vụ của người dùng ( Bác sĩ )
STT Công việc Loại công việc
Quy định/Công thức liên quan
1 Cập nhật thông tin cá nhân
Lưu trữ Đã xác thực thông tin
2 Gửi tin nhắn Lưu trữ Đã xác thực thông tin
Lưu trữ Đã xác thực thông tin
❖ Bộ phận (Người thực hiện): Người dùng ( Bệnh nhân )
Bảng 3 Chức năng nghiệp vụ của người dùng (Bệnh nhân )
STT Công việc Loại công việc
Quy định/Công thức liên quan
1 Cập nhật thông tin cá nhân
3 Gửi tin nhắn Lưu trữ
5 Đăng kí xét nghiệm online
2.2.1.2 Yêu cầu chức năng hệ thống
Bảng 4 Chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
1 Phân quyền sử dụng • Quản trị viên:
Mỗi phân quyền có chức năng riêng biệt theo từng chức năng nghiệp vụ
2 Sao lưu, back up, phục hồi thông tin
Sao lưu thông tin hệ thống và chỉ phục hồi khi cần thiết.
2.2.2 Yêu cầu phi chức năng
Bảng 5 Yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết Ghi chú
1 Tốc độ tìm kiếm nhanh và chính xác
Hiệu quả Tối đa 5s phải có kết quả tìm kiếm
2 Tiết kiệm được thời gian, thu hẹp không gian lưu trữ, tránh thất lạc dữ liệu
Hiệu quả Tiết kiệm thời gian so với quản lý thủ công Dữ liệu được sao lưu trên máy, có thể dễ dàng phục hồi
3 Tốc độ sử lý các thao tác nhanh chóng và chính xác
Hiệu quả Xử lý nhiều tài khoản hoạt động cũng lúc và cũng thao tác hoạt động trơn tru và chính xác
4 Có thể phát triển thêm các chức năng phù hợp với thị trường
Tiến hóa Đảm bảo có thể thêm chức năng đáp ứng nhu cầu người dùng
5 Cho phép có thể thay đổi giá trị tính toán
Tiến hóa Đảm bảo trải nghiệm người dùng, phù hợp với thị trường
MÔ HÌNH HÓA YÊU CẦU
2.3.2 Lược đồ Module cho hệ thống
Hình 5 Lược đồ module Core System
2.3.2.1 Module quản lý người dùng
Hình 6 Lược đồ Usecase Module quản lý người dùng
2.3.2.2 Module quản lý hệ thống
Hình 7 Lược đồ Usecase Module quản lý hệ thống
2.3.3.1 Mô tả usecase đăng nhập
Bảng 6 Mô tả usecase đăng nhập
Mô tả Cho phép bất kỳ người dùng nào của hệ thống đã được cấp tài khoản đăng nhập vào hệ thống
Tác nhân kích hoạt Người dùng/bác sĩ/bệnh nhân
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động
Các bước thực hiện 1 Người dùng truy cập vào app
2 Nhập đầy đủ và chính xác thông tin: tên đăng nhập và mật khẩu
3 Sau đó, nhấn nút “Đăng nhập” để hoàn tất việc đăng nhập tài khoản vào hệ thống
4 Tài khoản không đăng nhập được thì người dùng không thể truy cập vào hệ thống
2.3.3.2 Mô tả usecase đăng xuất
Bảng 7 Mô tả usecase đăng xuất Use Case Đăng xuất
Mô tả Cho phép bất kỳ người dùng thoát khỏi ứng dụng
Tác nhân kích hoạt Người dùng/bác sĩ/bệnh nhân
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập
Các bước thực hiện 5 Người dùng truy cập vào app
7 Chuyển về màn hình đăng nhập
2.3.3.3 Mô tả usecase gửi tin nhắn
Bảng 8 Mô tả usecase gửi tin nhắn Use Case Gửi tin nhắn
Mô tả Cho phép bác sĩ/ bệnh nhân gửi tin nhắn
Tác nhân kích hoạt Bác sĩ/bệnh nhân
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập
Các bước thực hiện 8 Người dùng truy cập vào app
9 Vào màn hình danh sách người đã chat
2.3.3.4 Mô tả usecase Tạo cuộc gọi video
Bảng 9 Mô tả usecase Tạo cuộc gọi video Use Case Tạo cuộc gọi video
Mô tả Cho phép bác sĩ/ bệnh nhân gọi video
Tác nhân kích hoạt Bác sĩ/bệnh nhân
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập, chỉ bệnh nhân được gọi bác sĩ
Các bước thực hiện 13 Người dùng truy cập vào app
14 Vào màn hình danh sách người đã chat
17 Nếu người nhận chấp nhận nghe, cuộc gọi sẽ được lưu trữ
18 Kết thúc cuộc gọi phải thanh toán phí
19 Nếu người nhận không chấp nhận
20 Di chuyển về màn hình chat
2.3.3.5 Mô tả usecase Tìm kiếm bác sĩ
Bảng 10 Mô tả usecase Tìm kiếm bác sĩ Use Case Tìm kiếm bác sĩ
Mô tả Cho phép bệnh nhân tìm kiếm bác sĩ
Tác nhân kích hoạt Bệnh nhân
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập
Các bước thực hiện 21 Người dùng truy cập vào app
22 Vào màn hình tìm kiếm bác sĩ
2.3.3.6 Mô tả usecase Đăng kí xét nghiệm online
Bảng 11 Mô tả usecase Đăng kí xét nghiệm online Use Case Đăng kí xét nghiệm online
Mô tả Cho phép bệnh nhân đăng kí xét nghiệm
Tác nhân kích hoạt Bệnh nhân
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập
Các bước thực hiện 23 Người dùng truy cập vào app
24 Vào màn hình đăng kí xét nghiệm
26 Thanh toán hoặc quay lại
27 Trở về màn hình chính
2.3.3.7 Mô tả usecase Quản lí thông tin người dùng
Bảng 12 Mô tả usecase Quản lí thông tin người dùng Use Case Quản lí thông tin người dùng
Mô tả Cho phép Admin quản lí thông tin bệnh nhân, bác sĩ
Tác nhân kích hoạt Admin
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập
Các bước thực hiện 28 Người dùng truy cập vào web
29 Chọn tab quản lí người dùng
2.3.3.8 Mô tả usecase Quản lí lịch sử cuộc gọi
Bảng 13 Mô tả usecase Quản lí lịch sử cuộc gọi Use Case Quản lí lịch sử cuộc gọi
Mô tả Cho phép Admin quản lí thông tin cuộc gọi của bệnh nhân, bác sĩ
Tác nhân kích hoạt Admin
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập
Các bước thực hiện 30 Người dùng truy cập vào web
31 Chọn tab quản lí lịch sử cuộc gọi
2.3.3.9 Mô tả usecase Quản lí danh sách online
Bảng 14 Mô tả usecase Quản lí danh sách online Use Case Quản lí danh sách online
Mô tả Cho phép Admin xem thông tin online của bệnh nhân, bác sĩ
Tác nhân kích hoạt Admin
Tiền điều kiện Tài khoản của người dùng phải đang được kích hoạt trạng thái hoạt động, đã đăng nhập
Các bước thực hiện 32 Người dùng truy cập vào web
33 Chọn vào tab trang chủ
THIẾT KẾ PHẦN MỀM
THIẾT KẾ HỆ THỐNG
3.1.1.1 Lược đồ tuần tự - đăng nhập
Hình 8 Lược đồ tuần tự - đăng nhập
3.1.1.2 Lược đồ tuần tự - đăng xuất
Hình 9 Lược đồ tuần tự - đăng xuất
3.1.1.3 Lược đồ tuần tự - đăng ký
Hình 10 Lược đồ tuần tự - đăng ký
3.1.1.4 Lược đồ tuần tự - thêm đối tượng
Hình 11 Lược đồ tuần tự - thêm đối tượng
3.1.1.5 Lược đồ tuần tự - sửa/ cập nhật đối tượng
Hình 12 Lược đồ tuần tự - sửa/ cập nhật đối tượng
3.1.1.6 Lược đồ tuần tự - xóa đối tượng
Hình 13 Lược đồ tuần tự - xóa đối tượng
3.1.1.7 Lược đồ tuần tự - Gọi video call
Hình 14 Lược đồ tuần tự - Gọi video call
3.1.1.8 Lược đồ tuần tự - Chat online
Hình 15 Lược đồ tuần tự - Chat online
3.1.1.9 Lược đồ tuần tự - Đặt lịch khám online
Hình 16 Lược đồ tuần tự - Đặt lịch khám online
THIẾT KẾ DỮ LIỆU
3.2.1 Chi tiết các bảng dữ liệu
❖ User (id, roleId, fullname, email, password, avatar, gender, birthday, phone, address, city, introduction, createAt, updateAt, deleteAt, history, typeOfPlaceWork, status, account)
Bảng 15 Chi tiết dữ liệu bảng Classes - User
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
1 id String Khóa chính Mã người dùng
2 roleId Enum Mã loại người dùng
3 fullname String Tên đầy đủ người dùng
5 password String Mật khẩu được mã hóa
6 avatar String Đường dẫn lưu file hình đại diện
9 phone String Số điện thoại
12 introduction String Đường dẫn lưu file giới thiệu
14 updatedAt Datetime Ngày cập nhật
17 typeOfPlaceWork Enum Nơi làm việc
18 status Enum Trạng thái tài khoản
19 account String Tên đăng nhập
❖ Room (id, senderId, recieverId, portal, createAt, updateAt, deleteAt)
Bảng 16 Chi tiết dữ liệu bảng Classes - Room
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
1 id String Khóa chính Mã người dùng
2 senderId String Mã người gửi
3 recieverId String Mã người nhận
6 updatedAt Datetime Ngày cập nhật
❖ Transaction (id, senderId, recieverId, portal, createAt, updateAt, deleteAt, amount)
Bảng 17 Chi tiết dữ liệu bảng Classes - Transaction
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
1 id String Khóa chính Mã giao dịch
2 senderId String Mã người gửi
3 recieverId String Mã người nhận
4 portal String Cổng giao dịch
6 updatedAt Datetime Ngày cập nhật
8 amount Int Chi phí cuộc gọi
❖ Message (id, senderId, recieverId, code, createAt, updateAt, deleteAt, content)
Bảng 18 Chi tiết dữ liệu bảng Classes - Message
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
1 id String Khóa chính Mã tin nhắn
2 senderId String Mã người gửi
3 recieverId String Mã người nhận
4 room String Mã phòng chat
6 updatedAt Datetime Ngày cập nhật
8 content String Nội dung tin nhắn
9 code String Mã tự động
❖ CallHistory (id, senderId, recieverId, code, createAt, updateAt, deleteAt, room, callduration, amount)
Bảng 19 Chi tiết dữ liệu bảng Classes - CallHistory
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
1 id String Khóa chính Mã người dùng
2 senderId String Mã người gửi
3 recieverId String Mã người nhận
4 code String Mã tự động
6 updatedAt Datetime Ngày cập nhật
8 room int Mã phòng chat
9 amount String Giá cuộc gọi
10 callType String Loại cuộc gọi
Hình 17 Sơ đồ quan hệ
THIẾT KẾ GIAO DIỆN
3.3.1 Mô tả chi tiết các màn hình
3.3.1.1 Màn hình đăng nhập ( cho người dùng )
❖ Ý nghĩa: Cho phép người dùng đăng nhập vào hệ thống
Hình 18 Màn hình đăng nhập ( Người dùng)
❖ Các đối tượng trong màn hình
Bảng 20 Các đối tượng trong màn hình đăng nhập ( Người dùng )
1 textEdit Nhập số điện thoại
3 simpleButton Hiển thị mật khẩu
4 touchAbleopacity Quên mật khẩu, set mật khẩu mới
6 touchAbleopacity Đăng ký tài khoản mới
❖ Ý nghĩa: Cho phép người dùng đăng xuất khỏi hệ thống
Hình 19 Màn hình đăng xuất
❖ Các đối tượng trong màn hình
Bảng 21 Các đối tượng trong màn hình đăng xuất
1 simpleButton Quản lý tài khoản
3 simpleButton Từ chối đăng xuất
3.3.1.3 Màn hình chính người dùng ( bác sĩ )
❖ Ý nghĩa: cho phép xem số dư tài khoản, xem thống kê cuộc gọi, tư vấn, bệnh nhân, thao tác với tin nhắn, xem thông báo, quản lý tài khoản
Hình 20 Màn hình chính người dùng ( bác sĩ )
❖ Các đối tượng trong màn hình
Bảng 22 Các đối tượng trong màn hình chính người dùng ( Bác sĩ )
1 label Xem số dư tài khoản
2 label Xem thống kê cuộc gọi thường
3 label Xem thống kê cuộc gọi video
4 label Xem thống kê số lần tư vấn
5 label Xem thống kê bệnh nhân
9 simpleButton Xem quản lý tài khoản
3.3.1.4 Màn hình chính người dùng ( Bệnh nhân )
❖ Ý nghĩa: Cho phép tìm kiếm bác sĩ, gọi / chat online với bác sĩ, đặt xét nghiệm, xem thông báo, quản lý tài khoản
Hình 21 Màn hình chính người dùng ( Bệnh nhân )
❖ Các đối tượng trong màn hình
Bảng 23 Các đối tượng trong màn hình chính người dùng ( Bệnh nhân )
1 lable Cho phép tìm kiếm bác sĩ tư vấn
2 lable Cho phép gọi điện / gọi video với bác sĩ
3 lable Cho phép chat message với bác sĩ
4 lable Cho phép đăt xét nghiệm online với bác sĩ
5 simpleButton Cho phép xem dịch vụ
6 simpleButton Cho phép xem tin nhắn
7 simpleButton Cho phép xem các thông báo
8 simpleButton Quản lý tài khoản cá nhân
❖ Ý nghĩa: Cho phép người dùng nhắn tin, gọi điện, gọi video call
Hình 22 Màn hình tin nhắn
❖ Các đối tượng trong màn hình
Bảng 24 Các đối tượng trong màn hình tin nhắn
1 textEdit Tìm kiếm tài khoản người gửi / nhận tin nhắn
2 cpnBoxChat Hiển thị người gửi / nhận tin nhắn
3 listView Hiển thị nội dung tin nhắn
4 simpleButton Thực hiện cuộc gọi thường
5 simpleButton Thực hiện cuộc gọi video
6 textEdit Soạn nội dung tin nhắn
7 simpleButton Chụp ảnh, chọn ảnh gửi
3.3.1.6 Màn hình tìm kiếm bác sĩ
❖ Ý nghĩa: Cho phép tìm kiếm, liên hệ với bác sĩ
Hình 23 Màn hình tìm kiếm bác sĩ
❖ Các đối tượng trong màn hình
Bảng 25 Các đối tượng trong màn hình tìm kiếm bác sĩ
1 textEdit Nhập tên bác sĩ muốn tìm kiếm
2 label Hiển thị tên bác sĩ
3 simpleButton Nhắn tin đến bác sĩ
4 simpleButton Gọi điện thoại đến bác sĩ
5 simpleButton Gọi video call đến bác sĩ
10 touchAbleopacity Cho phép tìm kiếm quanh đây bằng bản đồ
11 label Hiển thị bản đồ
3.3.1.7 Màn hình đặt xét nghiệm online
❖ Ý nghĩa: Cho phép xem, đặt các xét nghiệm online
Hình 24 Màn hình đặt xét nghiệm online
❖ Các đối tượng trong màn hình
Bảng 26 Các đối tượng trong màn hình đặt xét nghiệm online
1 TextEdit Nhập tên xét nghiệm cần tìm kiếm
2 Label Hiển thị thông tin loại xét nghiệm
3 Label Hiển thị chi tiết các thông tin về gói xét nghiệm người dùng chọn
5 radioButton Chọn hình thức thanh toán
6 simpleButton Xác nhận thanh toán
3.3.1.8 Màn hình cuộc gọi đến
❖ Ý nghĩa: Cho phép nhận / từ chối cuộc gọi đến
Hình 25 Màn hình cuộc gọi đến
❖ Các đối tượng trong màn hình
Bảng 27 Các đối tượng trong màn hình cuộc gọi đến
1 image Hiển thị ảnh đại diện người gọi đến
2 text Hiển thị tên người gọi đến
3 simpleButton Từ chối cuộc gọi
4 simpleButton Chấp nhận cuộc gọi
3.3.1.9 Màn hình đăng nhập ( cho Admin )
❖ Ý nghĩa: Cho phép đăng nhập dưới quyền Admin
Hình 26 Màn hình đăng nhập ( cho Admin )
❖ Các đối tượng trong màn hình
Bảng 28 Các đối tượng trong màn hình đăng nhập (Admin)
3.3.1.10 Màn hình trang chủ quản lý của Admin
❖ Ý nghĩa: Xem, thực hiện các chức năng quản lý của Admin
Hình 27 Màn hình trang chủ quản lý của Admin
❖ Các đối tượng trong màn hình
Bảng 29 Các đối tượng trong màn hình quản lý của Admin
1 simpleButton Quản lý người dùng ( Bệnh nhân)
2 simpleButton Quản lý bác sĩ
3 simpleButton Quản lý lịch sử cuộc gọi
3.3.1.11 Màn hình quản lý người dùng
❖ Ý nghĩa: Cho phép admin thực hiện các thao tác để quản lý người dùng
Hình 28 Màn hình quản lý người dùng
❖ Các đối tượng trong màn hình
Bảng 30 Các đối tượng trong màn hình quản lý người dùng
1 simpleButton Thực hiện thêm tài khoản người dùng
2 label Hiển thị thông tin tài khoản người dùng
3 simpleButton Sửa thông tin tài khoản người dùng
5 textEdit Nhập họ tên cho tài khoản
6 textEdit Nhập số điện thoại
7 textEdit Nhập mật khẩu cho tài khoản
8 simpleButton Xác nhận thêm tài khoản
CÀI ĐẶT VÀ KIỂM THỬ PHẦN MỀM
CÀI ĐẶT PHẦN MỀM
Hệ thống khám bệnh từ xa cho phép người dùng truy cập dễ dàng mà không cần cài đặt môi trường phức tạp Người dùng chỉ cần vào website hoặc cửa hàng ứng dụng để tải app Đối với các nhà phát triển, việc thiết lập môi trường development yêu cầu cài đặt một số phần mềm cần thiết.
- Khuyến khích cài NodeJs LTS version
- Link dowload NodeJs: https://nodejs.org/en/
- Kiểm tra version NodeJs, mở Terminal và nhập lệnh: node –v
4.1.2 Cài đặt React Native CLI
- Người dùng chạy command: npm install -g react-native-cli
4.1.3 Cài đặt môi trường phát triển Android
- Vào trang chủ android studio: https://developer.android.com/studio/
- Chọn phiên bản phù hợp với thiết bị hỗ trợ
- Trong Android Studio, chọn Tools\Android\SDK Manager Chọn SDK
Platforms và kiểm tra Show Package Details Đảm bảo rằng các mục sau được chọn:
- Google APIs Intel x86 Atom_64 System Image
- Sau đó, chọn SDK Tools và kiểm tra Show Package Details Mở rộng Android
SDK Build-Tools và chắc chắn rằng 23.0.1 được chọn
4.1.4 Cài đặt môi trường PortgreSQL
To set up a PostgreSQL database and pgAdmin, execute the following commands: first, run `docker run -it name postgres -e POSTGRES_PASSWORD=3456 -p 5432:5432 -d postgres` to create a PostgreSQL container Then, pull the pgAdmin image with `docker pull dpage/pgadmin4`, and finally, run `docker run -it name pgadmin4 -e 'PGADMIN_DEFAULT_EMAIL=postgres' -e 'PGADMIN_DEFAULT_PASSWORD=3456' -p 8081:80 -d dpage/pgadmin4` to launch the pgAdmin container.
KIỂM THỬ PHẦN MỀM
4.2.1 Module chat và gọi video call của người dùng
Bảng 31 Kiểm thử Module chat và gọi video call của người dùng
ID Test Case Procedure Expected Output Inter-test case dependence
1 1 Đi đến màn hình đăng nhập
- Sau khi ấn đăng nhập, hiển thị thông báo nếu một trong
2 thông tin bị thiếu, hoặc thông tin Usename và password không chính xác
- Nếu chính xác đi đến màn hình chính cho từng loại người dùng
2 1 Đi đến màn hình messenger
- Sau khi chọn tab messenger, hiển thị danh sách tin nhắn
- Vào box chat hiển thị danh sách tin nhắn
3 1 Từ màn giao diện messenger
3 Hiển thị màn hình chờ phản hồi
- Hiển thị thông báo xác nhận mức phí
- Hiển thị màn hình chờ
4 1 Đi đến màn hình tìm đặt xét nghiệm
2 Chọn mục xét nghiệm muốn đặt
- Sau khi chọn mục mong muôn, hiển thị màn hình xác nhận
- Nếu thanh toán thành công, hiển thị thanh toán
3 Chuyển sang màn hình xác nhận
- Nếu không thông báo lỗi
Bảng 32 Kiểm thử quản lý người dùng
ID Test Case Procedure Expected Output Inter-test case dependence
1 1 Đi đến màn tạo mới người dùng
2 Nhập các thông tin vào form người dùng
Sau khi Click “Xác nhận”:
- Nếu một trong các thông tin bắt buộc bị thiếu thì hiển thị thông báo yêu cầu người dùng nhập đầy đủ thông tin
- Nếu thông tin đầy đủ và chính xác, thông tin người dùng được lưu vào CSDL và hiển thị thông báo thêm người dùng thành công
2 1 Đi đến màn danh người dùng
2 Nhập thông tin tìm kiếm người dùng
Sau khi nhập thông tin tìm kiếm và nhấn tìm kiếm:
- Không hiển thị nếu không tồn tại
- Dánh sách các người dùng theo thông tin tìm kiếm được hiển thị lên bảng
3 1 Đi đến màn hình danh sách người dùng
- Hiển thị thông báo xác nhận
- Nếu xác nhận thực hiện update data
- Thành công hiển thị thông báo thành công
4 1 Đi đến màn hình danh sách người dùng
3 Click “Cập nhật thông tin”
Sau khi Click “Xác nhận”:
- Nếu một trong các thông tin bắt buộc bị thiếu thì hiển thị thông báo yêu cầu người dùng nhập đầy đủ thông tin
- Nếu thông tin đầy đủ và chính xác, thông tin người dùng được lưu vào CSDL và hiển thị thông báo cập nhật người dùng thành công