Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân LỜI CAM ĐOAN Tôi xin cam đoan luận văn về đề tài “Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đ
TỔNG QUAN
Tình hình nghiên cứu trong và ngoài nước
2.1.1 Các hệ thống IoT trong lĩnh vực theo dõi sức khỏe:
* Nội dung nghiên cứu của bài báo “Integrating MQTT and ISO/IEEE 11073 for health information sharing in the Internet of Things” của Yuri F Gomes (Phòng thí nghiệm hệ thống nhúng và điện toán phổ quát, Đại học Liên bang Campina Grande, Brazil) và cộng sự, đăng trên tạp chí “IEEE International Conference on Consumer Electronics” năm 2015:
Nhóm tác giả đề xuất mô hình sử dụng Internet of Things (IoT) để kết nối các thiết bị theo dõi sức khỏe với nhau, từ đó có thể chia sẻ các thông tin sức khỏe cá nhân với bác sĩ và các dịch vụ chăm sóc sức khỏe thông qua thiết bị sức khỏe cá nhân, các thiết bị điện tử dân dụng và mạng internet
Một kiến trúc mới để các thiết bị theo dõi sức khỏe chia sẻ thông tin với nhau, đó là sử dụng các gói tin ISO/IEEE 11073 thông qua giao thức MQTT (Message Queue Telemetry Transport), có sử dụng MQTT Broker Hướng tiếp cận này có thể tận dụng được các ưu thế của giao thức MQTT như cho phép tự động tìm ra những thiết bị dùng ISO/IEEE 11073, từ đó có thể kết nối những thiết bị sức khỏe cá nhân như điện thoại thông minh, TV và các thiết bị điện tử dân dụng khác
Nhóm tác giả đã nêu ra những đặc tính cơ bản của giao thức MQTT như: là một giao thức mã nguồn mở của IBM; thuộc tầng ứng dụng của mô hình OSI; sử dụng nền tảng TCP; cung cấp tính tin cậy và bảo mật thông qua SSL (Secure Socket Layer) Để có thể trao đổi thông tin với nhau, các thiết bị sử dụng MQTT phải thông qua một máy chủ môi giới, gọi là “broker” Giao thức này dựa trên mô hình “xuất bản/đăng ký” (publisher/subscriber) Tồn tại ba mức độ tin cậy cho việc truyền dữ liệu (QoS: Quality of service)
- QoS 0: Broker/client sẽ gửi dữ liệu đúng một lần, quá trình gửi được xác nhận bởi chỉ giao thức TCP/IP
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
- QoS 1: Broker/client sẽ gửi dữ liệu với tín hiệu phản hồi ACK Nếu ACK bị thiếu, dữ liệu sẽ được gửi lại
- QoS 2: Broker/client đảm bảo khi gửi dữ liệu thì phía nhận chỉ nhận được đúng một lần, quá trình này phải trải qua 4 bước bắt tay
Nhóm tác giả trình bày sơ đồ luồng dữ liệu để hệ thống tìm ra một thiết bị sức khỏe mới trong hình 2.1:
Hình 2.1 Sơ đồ luồng dữ liệu để hệ thống tham khảo tìm ra một thiết bị trong nghiên cứu của Yuri F Gomes và cộng sự [2] Đồng thời, kịch bản truyền dữ liệu cũng được triển khai như hình 2.2:
Hình 2.2 Kịch bản truyền dữ liệu trong nghiên cứu của Yuri F Gomes và cộng sự
Nhóm tác giả sử dụng thư viện Antidote để tạo một “MQTT plugin” cùng với thư viện Mosquitto để tạo máy chủ môi giới Sau khi thử gửi dữ liệu ở mức QoS thấp nhất (QoS 0), và mức cao nhất (QoS 2), kết quả tổng số gói tin được trao đổi đều tăng thêm từ 15% đến 50% khi so sánh với kết nối TCP cơ bản Đồng thời, nhóm tác giả còn nhận định thêm về khả năng tự tìm kiếm thiết bị MQTT trong mạng, khả năng chia sẻ thông tin giữa các thiết bị MQTT của bệnh viện và các thiết bị điện tử gia đình; tính bảo mật thông tin bệnh nhân khi MQTT có cung cấp tùy chọn dùng mã hóa SSL [2]
Với nghiên cứu này, có thể nhận định rằng MQTT là một giao thức có nhiều ưu điểm trong việc truyền các số liệu về sức khỏe trong mô hình IoT
* Nghiên cứu về “Hệ thống giám sát, chăm sóc tại nhà dựa trên mạng cảm biến không dây” trong bài báo có tựa đề “WiSPH: A Wireless Sensor Network-Based Home Care Monitoring System” của tỏc giả Pedro Magaủa-Espinoza (khoa Viễn thông, Đại học Colima, Mexico) và cộng sự, đăng trên tạp chí mdpi.com năm 2014 [3]:
Nội dung bài báo Bài báo này trình bày một hệ thống dựa trên công nghệ WSN (mạng cảm biến không dây: Wireless Sensor Network) có khả năng giám sát nhịp tim và tốc độ chuyển động của người cao tuổi trong nhà của họ Hệ thống có khả năng cảnh báo từ xa cho các chuyên gia, người chăm sóc hoặc thành viên gia đình thông qua điện thoại thông minh nhanh chóng thay đổi sinh lý do té ngã, nhịp tim nhanh hoặc nhịp tim chậm Kiến trúc WSN được đề xuất là linh hoạt, cho phép khả năng mở rộng lớn hơn để cho phép tốt hơn giám sát dựa trên sự kiện Kiến trúc cũng cung cấp các cơ chế bảo mật để đảm bảo rằng dữ liệu được giám sát và/hoặc lưu trữ chỉ có thể được truy cập bởi các cá nhân hoặc thiết bị được ủy quyền Các đặc điểm nói trên cung cấp tính linh hoạt và độ vững chắc của mạng cần thiết cho mục đích sử dụng trong các ứng dụng y tế
Liên quan đến ứng dụng IoT vào lĩnh vực chăm sóc sức khỏe, nhóm tác giả đề xuất kiến trúc “nút giám sát di động” Kiến trúc này được trình bày trong hình 2.3 Nút giám sát di động bao gồm một bộ vi điều khiển LCP2148 ARM7, một bộ phát vô tuyến dùng chuẩn 802.15.4 (wireless) và môt bộ phát vô tuyến dùng chuẩn
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
Hình 2.3 Kiến trúc WSN sử dụng các nút giám sát di động [3]
802.15.1 (bluetooth), khối cấp nguồn và một cặp cảm biến (cảm biến gia tốc và nhịp tim) Nút được lập trình để liên tục theo dõi các giá trị của cảm biến nhịp tim và gia tốc kế để phát hiện các giá trị bất thường để phát hiện ra một sự kiện có thể ảnh hưởng đến sự an toàn của người dùng (ví dụ té ngã hoặc nhịp tim bất thường) Để phát hiện những bất thường về nhịp tim của người dùng, ngưỡng theo dõi được thiết lập dựa trên phép đo nhịp mỗi phút (BPM) Một bất thường về nhịp tim phổ biến là nhịp tim chậm, đó là thấp hơn 60 BPM đối với những người đang nghỉ ngơi, mặc dù tình trạng này có thể thay đổi theo độ tuổi và thói quen hàng ngày của mỗi cá nhân Đặc biệt, người lớn tuổi bị nhịp tim chậm nếu giá trị của họ giảm xuống dưới 50 BPM vì tim yếu đi và nhịp tim chậm lại khi con người già đi [4]
Một rối loạn nhịp tim phổ biến khác là nhịp tim nhanh Người lớn bị nhịp tim nhanh có hơn 100 bpm [5] Cũng như nhịp tim chậm, một loạt các thói quen và tuổi tác ảnh hưởng đến các giá trị; tuy nhiên, những yếu tố này không cần nghiên cứu sâu Dựa trên các nghiên cứu khác, các giới hạn chấp nhận được đối với nhịp tim nhanh và nhịp tim chậm được đặt ở mức tương ứng là 100 BPM và 60 BPM Bất kỳ giá trị nào ở trên hoặc dưới giới hạn đã thiết lập sẽ kích hoạt báo động
Giao diện giám sát và cảnh báo từ xa: Hệ thống web giám sát bao gồm một ứng dụng giao diện người dùng liên tục phân tích mọi dữ liệu mới được gửi đến máy chủ cơ sở dữ liệu Trong thời gian thực, có thể hiển thị nhịp tim của người dùng, trạng thái có thể té ngã và trạng thái té ngã thật sự, đồng thời có thể gửi thông báo cho người chăm sóc trong trường hợp khẩn cấp
Kết quả thực nghiệm của nghiên cứu: phát hiện được té ngã với tỉ lệ các trường hợp xảy ra lỗi (phát hiện sai) là 2.5%, nút di động gửi thông báo về hệ thống giám sát với tuần suất 2 lần/giây, gửi được cảnh báo đến điện thoại của người chăm sóc, phát hiện được nhịp tim cao hoặc thấp và hiển thị thông số trên website giám sát; xác suất dữ liệu bị mất mát trên mạng thấp (chỉ 1.83%) [3]
Với nghiên cứu này, có thể thấy việc truyền dữ liệu đo đạc thông số sức khỏe qua mạng cảm biến không dây có nhiều ưu điểm, đồng thời chức năng giám sát sức khỏe từ xa qua internet mang lại nhiều tiện ích cho người dùng
Những vấn đề sẽ tập trung giải quyết
Đề tài sẽ tập trung giải quyết các vấn đề sau:
- Tìm hiểu các kiến thức liên quan về chỉ số sinh hiệu của cơ thể người (thân nhiệt, nhịp tim, SpO2), các hệ thống hỗ trợ bệnh nhân đã có trên thị trường
- Xây dựng hệ thống IoT bao gồm phần cứng và phần mềm để đọc giá trị chỉ số sinh hiệu của cơ thể người (thân nhiệt, nhịp tim, SpO2) từ các cảm biến, hiển thị giá trị tại chỗ, truyền giá trị đo được lên server, lưu trữ giá trị cảm biến vào cơ sở dữ liệu và hiển thị cho người dùng từ xa thông qua website
- Tích hợp vào website một trang quản lý thông tin bệnh nhân cơ bản (bao gồm việc tạo, lưu trữ, tìm kiếm thông tin về họ tên, tuổi, giới tính, mã giường bệnh của bệnh nhân)
Xây dựng mô hình dự đoán tình trạng bệnh nhân dựa trên dữ liệu cảm biến đầu vào từ cơ sở dữ liệu, cung cấp đầu ra về trạng thái sức khỏe của bệnh nhân Đánh giá hiệu suất dự đoán của mô hình giúp xác định độ tin cậy và tính chính xác của các dự đoán, góp phần nâng cao chất lượng chăm sóc sức khỏe.
- Tích hợp mô hình dự đoán tình trạng bệnh nhân vào hệ thống để thực hiện hành động dự đoán tình trạng sức khỏe của bệnh nhân theo thời gian thực, từ đó đưa ra các cảnh báo tại chỗ và từ xa về tình trạng sức khỏe của bệnh nhân
- Nhìn nhận và đánh giá kết quả đạt được, đưa ra hướng phát triển.
Các kiến thức liên quan
2.3.1 Thân nhiệt: Định nghĩa thân nhiệt: thân nhiệt là nhiệt độ của cơ thể Người ta chia thân nhiệt thành 2 loại: thân nhiệt trung tâm và thân nhiệt ngoại vi
- Thân nhiệt trung tâm: đo ở những vùng nằm sâu trong cơ thể, là nhiệt độ có ảnh hưởng trực tiếp tới tốc độ các phản ứng sinh học diễn ra trong cơ thể, là mục đích của hoạt động điều nhiệt, thường được giữ cố định, ít thay đổi theo nhiệt độ môi trường [29]
Nhiệt độ ngoài biên đo ở da, thay đổi theo nhiệt độ môi trường Điều hòa thân nhiệt là hoạt động duy trì thân nhiệt trong phạm vi hẹp trong khi nhiệt độ môi trường thay đổi Để cơ thể hoạt động bình thường, thân nhiệt phải được ổn định vì tốc độ phản ứng hóa học và hoạt động tối ưu của hệ enzym phụ thuộc vào thân nhiệt Có thể coi điều hòa thân nhiệt là hoạt động đảm bảo cân bằng nội môi.
Thân nhiệt bình thường và các yếu tố ảnh hưởng đến thân nhiệt bình thường:
- Bình thường thân nhiệt cơ thể dao động trong khoảng 36.3 o C đến 37.1 o C, nhiệt độ ở hậu môn biểu hiện thân nhiệt đúng nhất, nhiệt độ ở miệng thường thấp hơn nhiệt độ trực tràng khoảng 0.2 đến 0.5 o C, nhiệt độ ở nách thấp hơn trực tràng 0.5 đến 1oC, nhiệt độ ở da chịu ảnh hưởng của nhiệt độ môi trường nhiều hơn và thay đổi theo vị trí đo, ở trán khoảng 36.5 o C [29]
- Khi cơ thể có biểu hiện sốt, thân nhiệt sẽ tăng cao hơn mức bình thường
Hình 2.10 Nhiệt độ cơ thể trong các điều kiện khác nhau [30]
Những cơ chế đặc biệt trong tim gây ra một chuỗi liên tục duy trì co bóp tim hay được gọi là nhịp tim, truyền điện thế hoạt động khắp cơ tim để tạo ra nhịp đập của tim [31]
Nhịp tim chuẩn có thể khác nhau ở mỗi người, tùy thuộc vào độ tuổi, thể trạng, giới tính, Đối với người từ 18 tuổi trở lên, nhịp tim bình thường trong lúc nghỉ ngơi dao
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân động trong khoảng từ 60 đến 100 nhịp mỗi phút Thông thường, người có thể trạng càng khỏe mạnh, thì nhịp tim càng thấp Đối với những vận động viên chuyên nghiệp, khi ở chế độ nghỉ ngơi, nhịp tim trung bình của họ chỉ khoảng 40 nhịp một phút Ví dụ như vận động viên đua xe đạp Lance Armstrong - huyền thoại của làng thể thao thế giới, tim của anh chỉ đập khoảng 32 nhịp mỗi phút [31]
Theo nghiên cứu của Cơ quan y tế quốc gia tại Vương quốc Anh, dưới đây là bảng tiêu chuẩn nhịp tim lý tưởng theo từng độ tuổi:
Bảng 2.3 Thông số nhịp tim tương ứng với độ tuổi [31]
Nhịp tim chuẩn là nhịp tim được đo lúc cơ thể đang nghỉ ngơi hoàn toàn
2.3.3 Chỉ số bão hòa oxy trong máu (SpO 2 ):
SpO2 là viết tắt của cụm từ Saturation of peripheral oxygen - độ bão hòa oxy trong máu ngoại vi Hiểu một cách khác, SpO2 là tỷ lệ hemoglobin oxy hóa (hemoglobin có chứa oxy) so với tổng lượng hemoglobin trong máu Hemoglobin là một protein được tìm thấy trong các tế bào hồng cầu, quyết định màu đỏ của hồng cầu
Chỉ số SpO2 có thể được đo bằng phép đo xung - một phương pháp gián tiếp, không xâm lấn (không đưa các dụng cụ vào trong cơ thể) Nó hoạt động bằng cách phát ra và tự hấp thu một làn sóng ánh sáng đi qua các mạch máu hoặc mao mạch trong đầu ngón tay, đầu ngón chân hoặc dái tai Sự thay đổi của sóng ánh sáng xuyên qua ngón tay, ngón chân hoặc dái tai sẽ cho biết kết quả của phép đo SpO2 vì mức độ oxy bão hòa gây ra các biến đổi về màu sắc của máu [32]
Giá trị chỉ số SpO2 được biểu thị bằng 1% Nếu máy đo oxy cho kết quả 97% thì chứng tỏ mỗi tế bào hồng cầu được tạo ra bởi 97% oxygenated và 3% không oxy hóa hemoglobin Giá trị SpO2 bình thường sẽ dao động ở mức 95 - 99% [33]
Chỉ số oxy hóa máu tốt là rất cần thiết vì cung cấp đủ năng lượng cho cơ bắp hoạt động Nếu giá trị SpO2 xuống dưới 95%, đây là dấu hiệu cảnh báo oxy hóa máu kém, còn được gọi là tình trạng máu thiếu oxy Các nghiên cứu chứng minh rằng chỉ số SpO2 từ 94% trở lên là chỉ số bình thường, đảm bảo an toàn [33]
Thang đo chỉ số SpO2 tiêu chuẩn [32]:
- SpO2 từ 97 - 99%: Chỉ số oxy trong máu tốt;
- SpO2 từ 94 - 96%: Chỉ số oxy trong máu trung bình, cần thở thêm oxy;
- SpO2 từ 90% - 93%: Chỉ số oxy trong máu thấp, cần xin ý kiến của bác sĩ chủ trị;
- SpO2 dưới 92% không thở oxy hoặc dưới 95% có thở oxy: Dấu hiệu suy hô hấp rất nặng;
- SpO2 dưới 90%: Biểu hiện của một ca cấp cứu trên lâm sàng
Hình 2.11 Đồ thị phân ly Oxygen-hemoglobin [30]
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
THIẾT KẾ HỆ THỐNG
Tổng quan hệ thống
3.1.1 Sơ đồ khối hệ thống:
Sơ đồ khối toàn hệ thống:
Hình 3.1 Sơ đồ khối toàn hệ thống
Hệ thống gồm các khối:
- Khối mô-đun thu thập số liệu đặt tại giường bệnh (3 khối với thiết kế phần cứng giống nhau), mỗi khối có nhiệm vụ đọc chỉ số sinh hiệu từ các cảm biến MLX90614 và MAX30100, xử lý giá trị cảm biến bằng arduino Pro mini, hiển thị lên LCD và gửi giá trị sang ESP8266 để truyền về server (thông qua internet/LAN) Đồng thời khối này cũng nhận tín hiệu cảnh báo từ server để hiển thị cho người sử dụng biết khi tình trạng sức khỏe của bệnh nhân chuyển biến xấu
- Đường truyền: sử dụng hạ tầng mạng internet có sẵn để giao tiếp tín hiệu giữa các mô-đun giường bệnh và server:
▪ Đường truyền giữa mô-đun thu thập số liệu và router: wifi
▪ Đường truyền giữa router và server: cáp quang (hoặc đường truyền khác do nhà mạng cung cấp)
▪ Giao thức giao tiếp giữa mô-đun thu thập số liệu và server: MQTT
▪ Giao thức giao tiếp giữa web client và server: http
- Khối server: được xây dựng trên một máy vi tính (hệ điều hành Windows10, có kết nối internet) Khối này có nhiệm vụ thiết lập MQTT Broker, nhận và xử lý tín hiệu cảm biến từ các mô-đun giường bệnh gửi về, lưu trữ, dự đoán tình trạng bệnh nhân
Hệ thống thực hiện các chức năng được nêu trong bảng 3.1:
Bảng 3.1 Đặc tả hệ thống
STT Chức năng Mô tả chức năng
1 Đo các chỉ số sinh hiệu của bệnh nhân
Mô-đun đọc số liệu thực hiện việc đo chỉ số sinh hiệu của bệnh nhân, bao gồm thân nhiệt (thông qua cảm biến MLX90614) và nhịp tim, SpO2 (thông qua cảm biến MAX30100)
2 Hiển thị số đo tại chỗ
Mô-đun đọc số liệu hiển thị tại chỗ các thông số chỉ số sinh hiệu lên màn hình LCD 16x2 (bao gồm thân nhiệt, nhịp tim và SpO2)
Mô-đun đọc số liệu truyền dữ liệu các thông số đo được lên server theo thời gian thực thông qua wifi (giao thức MQTT)
Lưu trữ thông tin về bệnh nhân và các chỉ số đo được của bệnh nhân tại Server
Phần mềm “App Server” sẽ nhận dữ liệu từ các mô- đun đọc số liệu, đối chiếu mã giường bệnh để xác định thông tin bệnh nhân tương ứng, hiển thị số đo trên giao diện phần mềm, thực hiện lưu trữ số đo vào cơ sở dữ liệu SQL server Các thông tin bệnh nhân được nhập từ trang web giám sát cũng được lưu trữ
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân vào cơ sở dữ liệu tại server
Dự đoán và cảnh báo tình trạng sức khỏe bệnh nhân
Phần mềm “App server” sẽ thực hiện dự đoán tình trạng sức khỏe của người bệnh, hiển thị kết quả dự đoán lên giao diện, lưu trữ kết quả dự đoán vào cơ sở dữ liệu, gửi phản hồi về cho mô-đun đọc số liệu
Cảnh báo tại chỗ về tình trạng sức khỏe của bệnh nhân
Mô-đun đọc số liệu nhận phản hồi từ máy chủ và phát cảnh báo tại chỗ về tình trạng sức khỏe xấu của bệnh nhân thông qua đèn (nhấp nháy ở tần số 2 Hz) và loa phát ra âm thanh (lời nói "cảnh báo tình trạng sức khỏe bất thường") Nhờ đó, các bác sĩ và y tá có thể dễ dàng nhận biết tình trạng khẩn cấp của bệnh nhân và kịp thời can thiệp.
7 Quản lý thông tin người bệnh
Website giám sát cho phép người dùng nhập các thông tin của bệnh nhân (như mã bệnh nhân, họ tên, năm sinh, giới tính), thao tác tìm kiếm, cập nhật thông tin bệnh nhân vào cơ sở dữ liệu
8 Theo dõi thông tin từ xa
Webserver chứa một trang web giúp người dùng có thể truy cập từ xa để theo dõi các số đo và tình trạng sức khỏe của bệnh nhân
3.1.3 Các thông số của hệ thống:
▪ Sai số: ±0.5 o C (so với nhiệt kế nhãn hiệu LEPU)
▪ Tần suất đo: 12 lần/phút
▪ Tầm đo: từ 1 đến 250 bpm
▪ Sai số: ±5 bpm (so với máy đo nhãn hiệu SIKA, model LT-F21)
▪ Tần suất đo: 12 lần/phút
▪ Sai số: ±3% (so với máy đo nhãn hiệu SIKA, model LT-F21)
▪ Tần suất đo: 12 lần/phút
- Số mô-đun đọc số liệu đang kết nối: 3
- Số mô-đun đọc số liệu tối đa có thể mở rộng: >1000
- Số lượng bệnh nhân có thể lưu dữ liệu: không giới hạn (phụ thuộc vào dung lượng bộ nhớ)
Chi tiết các thành phần của hệ thống
3.2.1 Chi tiết mô-đun thu thập số liệu:
3.2.1.1 Sơ đồ khối mô-đun thu thập số liệu:
Hình 3.2 Sơ đồ khối mô-đun thu thập số liệu Chi tiết các linh kiện của mô-đun thu thập số liệu được mô tả trong Phụ lục A (các thông số kỹ thuật được lấy theo datasheet của linh kiện)
3.2.1.2 Sơ đồ kết nối mạch chi tiết của mô-đun thu thập số liệu:
Sơ đồ kết mạch chi tiết của mô-đun thu thập số liệu được thể hiện trong hình 3.3:
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
Hình 3.3 Sơ đồ kết nối mạch chi tiết của mô-đun thu thập số liệu
- Phương pháp thủ công (tự gia công bằng công cụ cơ khí)
- Sử dụng các linh kiện dạng mô-đun, ghép nối thông qua dây bus có jack cắm Kết hợp hàn các linh kiện rời (led, điện trở)
- Vỏ hộp thi công trên hộp nhựa kỹ thuật
* Số lượng phần cứng thi công: 3 mô-đun thu thập số liệu
3.2.1.4 Lưu đồ giải thuật xử lý tại mô-đun thu thập số liệu:
16 15 14 13 12 11 D0 D1 D2 D3 D4 D5 D6 D7 A K VSS VD D VEE RS RW EN B
Lưu đồ giải thuật xử lý tại mô-đun thu thập số liệu được thể hiện trong hình 3.4
Hình 3.4 Lưu đồ giải thuật tại mô-đun thu thập số liệu
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
3.2.2.1 Sơ đồ các thành phần tại Server:
Sơ đồ các thành phần tại Server được thể hiện trong hình 3.5
Hình 3.5 Sơ đồ các thành phần tại Server
MQTT Broker được hiểu là một máy chủ môi giới, dùng để quản lý việc kết nối và truyền thông giữa các MQTT client MQTT broker có nhiều loại, ở đề tài này sử dụng MQTT broker là Mosquitto, được cài đặt trên máy tính dùng làm server MQTT broker có thể được kết nối thông qua địa chỉ IP hoặc tên miền của server
Do sử dụng địa chỉ IP động nên để thuận lợi cho việc định danh MQTT Broker, đề tài này sử dụng MQTT Broker chạy trên localhost.
Trong đề tài này, cơ sở dữ liệu được sử dụng là SQL Server, quản trị thông qua công cụ SQL Server Management Studio (phiên bản SQL Server 2008 R2) Cấu trúc cơ sở dữ liệu gồm 5 bảng:
- Bảng “tbl_thongso” dùng để lưu trữ các thông tin về số đo thân nhiệt, nhịp tim, SpO2, giá trị cảnh báo của từng mã bệnh nhân Cấu trúc bảng được mô tả trong hình 3.6:
Hình 3.6 Cấu trúc bảng “tbl_thongso”
- Bảng “tbl_thongtin_bn” dùng để lưu trữ thông tin bệnh nhân bao gồm: mã bệnh nhân, họ tên, năm sinh, giới tính Cấu trúc bảng được mô tả trong hình 3.7:
Hình 3.7 Cấu trúc bảng “tbl_thongtin_bn”
- Bảng “tbl_ttgiuong” dùng để xác định mã bệnh nhân nào đang sử dụng giường nào Cấu trúc bảng được mô tả trong hình 3.8:
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
Hình 3.8 Cấu trúc bảng “tbl_ttgiuong”
- Bảng “tbl_setup” dùng để lưu các thông số cài đặt hệ thống như số lần phát hiện kết quả dự đoán bất thường trước khi xuất cảnh báo Cấu trúc bảng được thể hiện trong hình 3.9:
Hình 3.9 Cấu trúc bảng “tbl_setup”
- Bảng “tbl_last_select”: dùng để lưu các giá trị mà người dùng đã chọn ở phiên làm việc trước đó Cấu trúc bảng như hình 3.10
Hình 3.10 Cấu trúc bảng “tbl_last_select”
3.2.2.4 Trang web và web server
Trang web là giao diện dùng để tương tác giữa người dùng từ xa và hệ thống Đề tài này xây dựng website theo định dạng ASP.NET, sử dụng công cụ Visual Studio
Cấu trúc trang web được mô tả trong bảng 3.3:
Bảng 3.2 Cấu trúc trang web của hệ thống theo dõi sức khỏe bệnh nhân
Màn hình theo dõi giường bệnh hiển thị thông tin bệnh nhân (họ tên, tuổi, giới tính) và tự động cập nhật định kỳ các thông số sinh tồn (thân nhiệt, nhịp tim, SpO2) Hệ thống liên tục theo dõi dữ liệu sinh tồn và phát cảnh báo dựa trên các ngưỡng cảnh báo đã cài đặt từ trước.
Dùng để nhập liệu và cập nhật thông tin bệnh nhân, bao gồm Tìm theo mã bệnh nhân, tìm theo mã giường, thêm mới thông tin bệnh nhân (mã bệnh nhân, mã giường đang sử dụng, họ và tên, năm sinh, giới tính) Dữ liệu được đọc/ghi từ cơ sở dữ liệu
3 Trang xem biểu đồ các thông số sức khỏe của bệnh nhân
Dùng để hiển thị dưới dạng biểu đồ 100 giá trị gần nhất của thân nhiệt, nhịp tim, SpO2 và tỉ lệ dự đoán tình trạng sức khỏe bình thường/bất thường
Dùng để giới thiệu đề tài và các thông tin liên hệ
- Đề tài sử dụng Internet Information Services (IIS) của Microsoft làm Web Server, cài đặt trên máy vi tính cá nhân, hệ điều hành Windows 10 64 bit
- Trong đề tài này, sẽ triển khai web server chạy trên local host
3.2.2.5 Dịch vụ xử lý tại Server:
Dịch vụ tại server được viết bằng ngôn ngữ C#, sử dụng công cụ Visual Studio
2019, đóng vai trò quản lý kết nối và xử lý thông tin Ngoài ra, để thuận tiện cho quá trình kiểm thử và gỡ lỗi ở bước lập trình, dịch vụ này được thiết kế thêm giao diện như một phần mềm (dạng Windows Form)
Các chức năng chính của dịch vụ xử lý tại Server:
- Thiết lập kết nối với MQTT broker
- Nhận giá trị số đo do các mô-đun giường bệnh gửi lên server
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
- Xử lý, lưu trữ các giá trị số đo vào cơ sở dữ liệu
- Truyền các giá trị số đo vào mô hình dự đoán, nhận lại kết quả dự đoán
Hiển thị dữ liệu đầu vào và kết quả dự đoán (để gỡ lỗi trong quá trình lập trình), lưu kết quả dự đoán vào cơ sở dữ liệu, phản hồi kết quả dự đoán cho các mô-đun giường bệnh.
Mô hình dự đoán tình trạng bệnh nhân
3.3.1 Vai trò của mô hình dự đoán trong hệ thống
Hiện nay, thông tin về các chỉ số sức khỏe của bệnh nhân được thu thập thông qua nhiều phương pháp khác nhau Một số phương pháp phổ biến bao gồm:
- Dùng cảm biến để đo các trị số: như thân nhiệt, nhịp tim, huyết áp, chỉ số SpO2
- Dùng các phương pháp xét nghiệm để phân tích các chỉ số phức tạp: như số lượng hồng cầu, tìm kháng nguyên,…
- Bác sĩ trao đổi trực tiếp với bệnh nhân: các thông tin về tiền sử bệnh, các triệu chứng đang gặp phải,…
- Thông qua hồ sơ bệnh án của bệnh nhân
Theo phương pháp truyền thống, các thông tin trên sau khi được thu thập, sẽ được các y bác sĩ đọc và phân tích dựa vào kiến thức và kinh nghiệm để chẩn đoán bệnh Đôi khi các y bác sĩ không đủ thời gian để phân tích hết tất cả các số liệu hoặc việc phân tích sẽ tốn rất nhiều thời gian [34] Để góp phần khắc phục các hạn chế của phương pháp xử lý thông tin sức khỏe truyền thống, trí tuệ nhân tạo có thể tham gia vào quá trình phân tích và dự đoán tình trạng sức khỏe, việc đào tạo các mô hình dựa vào các dữ liệu đã được thu thập trước đó Các mô hình này có thể trợ giúp các y bác sĩ trong quá trình chẩn đoán lâm sàn, giúp bệnh nhân có thể tiếp cận được các hệ thống tự theo dõi sức khỏe với giá cả phù hợp và không quá đắt đỏ
Trong giới hạn đề tài này, sẽ thực hiện mô hình dự đoán để cảnh báo tình trạng sức khỏe chuyển biến xấu dựa trên 5 thông số đầu vào là: thân nhiệt; nhịp tim, SpO2, tuổi của bệnh nhân, giới tính của bệnh nhân Kiểu xử lý của mô hình dự đoán là phân loại Đầu ra của mô hình dự đoán là nhãn trạng thái “0” (mang ý nghĩa tình trạng sức khỏe bình thường) hoặc “1” (mang ý nghĩa trạng thái sức khỏe bất thường) Dựa vào kết quả này, hệ thống theo dõi sức khỏe sẽ gửi cảnh báo đến người dùng (cảnh báo tại chỗ và từ xa)
3.3.2 Phương pháp thực hiện mô hình dự đoán
Từ kết quả của các nghiên cứu được nêu trong [35], nhận thấy: tùy vào mỗi yêu cầu bài toán, tùy vào từng tập dữ liệu mà các thuật toán học máy hoặc học sâu phát huy hiệu quả khác nhau Vì vậy, để chọn thuật toán tối ưu cho vấn đề của mình, đa số các bài báo nghiên cứu sẽ áp dụng phương pháp thử trên nhiều giải thuật khác nhau, sau đó so sánh kết quả (thông số điển hình để so sánh là “accuracy” và “loss”)
Trong đề tài luận văn này, sẽ thực hiện huấn luyện 3 kiểu mô hình dự đoán khác nhau, bao gồm:
Mỗi mô hình sẽ được đánh giá kết quả thông qua các thông số đặc trưng Mô hình tối ưu nhất sẽ được chọn để triển khai vào hệ thống thử nghiệm
3.3.3.1 Nguồn gốc tập dữ liệu:
Do đặc thù bài toán chưa thể tìm được tập dữ liệu thật từ thực tế, chưa có chuyên gia trong lĩnh vực y tế để gán nhãn cho một bộ dữ liệu phù hợp với yêu cầu bài toán, vì vậy để xây dựng và chạy thử nghiệm hệ thống, đề tài sử dụng tập dữ liệu tự tạo
3.3.3.2 Phương pháp tạo tập dữ liệu:
- Sử dụng hàm random có điều kiện trên Excel
- Điều kiện hàm random dựa vào các thông số sức khỏe trong tài liệu Sinh lý học y khoa – Tập 2, trang 44 (tác giả Phạm Đình Lựu, nhà xuất bản Y học năm 2008) [29] và các thông tin được công bố trên website bệnh viện Bệnh viện Đa
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân khoa Quốc tế Vinmec [31] [32]
- Tạo và gán nhãn đầu ra với từng nhóm thông số, sau đó ghép các nhóm lại với nhau để có một bộ tập dữ liệu
3.3.3.3 Mô tả tập dữ liệu:
▪ Temp: số đo thân nhiệt
▪ hr: số đo nhịp tim
▪ age: tuổi của bệnh nhân
▪ gender: giới tính của bệnh nhân
- Số lượng output: 1 (là nhãn “0”: bình thường hoặc “1”: sức khỏe xấu)
Hình 3.11 Hình minh họa các nhãn trạng thái trong tập dữ liệu
Bảng 3.3 Thống kê nhãn trạng thái của tập dữ liệu
NHÃN TRẠNG THÁI SỐ LƯỢNG TỈ LỆ
Hình 3.12 Minh họa một đoạn tập dữ liệu
3.3.4 Huấn luyện và đánh giá kết quả mô hình dự đoán:
3.3.4.1 Mô hình Artificial Neural Network (ANN):
* Thông số của mô hình ANN:
Hình 3.13 minh họa sơ đồ mạng ANN được sử dụng
Hình 3.13 Sơ đồ minh họa mạng ANN
Mô hình gồm 5 lớp Bao gồm 4 lớp hidden và 1 lớp đầu ra Cụ thể:
- Lớp hidden 1: 32 nơ-ron, hàm activation là “relu”
- Các lớp hidden 2, 3, 4: thông số mỗi lớp giống nhau bao gồm 16 nơ-ron, hàm activation là “relu”
- 1 lớp output, với 1 nơ-ron, hàm activation là sigmoid
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
Thông số mô hình được thể hiện qua hình 3.14:
Hình 3.14 Thông số mô hình ANN (thể hiện trên Google Colab)
- Tập huấn luyện: được lấy từ 80% tập dữ liệu
- Tập kiểm tra (test set) và tập kiểm chứng (validation set): 20% còn lại của tập dữ liệu Trong đó tập kiểm tra có độ lớn bằng 25% tập kiểm chứng
- Thực hiện lệnh chia tập huấn luyện, tập kiểm tra và tập kiểm chứng bằng hàm train_test_split() của sklearn
- Hàm tính độ mất mát (loss function): binary_crossentropy
- Thông số đánh giá: “accuracy”, là thông số phản ánh độ chính xác của mô hình đã huấn luyện
- Phần mềm huấn luyện: Google Colab
Quá trình huấn luyện được thực hiện nhiều lần bằng phương pháp thử với các bộ thông số khác nhau Kết quả được trình bày trong bảng 3.5:
Bảng 3.4 Thông số và kết quả huấn luyện mô hình ANN
Thông số Thông số kết quả
Batch _size Loss Accuracy Val loss
22 giây Biểu đồ thông số “accuracy” và “loss” của trường hợp 1 thể hiện trong hình 3.15:
Hình 3.15 Biểu đồ “accuracy” và “loss” của mạng ANN (trường hợp 1) Biểu đồ thông số “accuracy” và loss của trường hợp 2 thể hiện trong hình 3.16:
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
Hình 3.16 Biểu đồ “accuracy” và “loss” của mạng ANN (trường hợp 2) Biểu đồ thông số “accuracy” và loss của trường hợp 3 được thể hiện trong hình 3.17:
Hình 3.17 Biểu đồ “accuracy” và “loss” của mạng ANN (trường hợp 3)
Biểu đồ thông số “accuracy” và “loss” của trường hợp 4 được thể hiện trong hình 3.18:
Hình 3.18 Biểu đồ “accuracy” và “loss” của mạng ANN (trường hợp 4)
Biểu đồ thông số “accuracy” và “loss” của trường hợp 5 được thể hiện trong hình 3.19:
Hình 3.19 Biểu đồ “accuracy” và “loss” của mạng ANN (trường hợp 5)
Biểu đồ thông số “accuracy” và “loss” của trường hợp 6 được thể hiện trong hình 3.20:
Hình 3.20 Biểu đồ “accucary” và “loss” của mạng ANN (trường hợp 6) Biểu đồ thông số “accuracy” và “loss” của trường hợp 7 được thể hiện trong hình 3.21:
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
Hình 3.21 Biểu đồ “accuracy” và “loss” của mạng ANN (trường hợp 7)
Khi tăng số lượng kỷ nguyên (epoch) trong quá trình huấn luyện, độ chính xác thường tăng theo Tuy nhiên, nếu quá nhiều epoch, mô hình có thể bị quá khớp (overfit), dẫn đến dao động lớn trong thông số tổn thất (loss) Để tìm thông số tối ưu, cần cân bằng giữa độ chính xác và tổn thất Trong trường hợp 3, với 250 epoch, mô hình đạt được độ chính xác cao (train_accuracy: 0,9815) và tổn thất thấp (train_loss: 0,0708).
“validation_accuracy” là 0.9913, “validation_loss” là 0.0289), đồng thời dựa vào biểu đồ thông số “loss” và “accuracy”, có thể thấy ở trường hợp này các đường biểu diễn
“loss” và “accuracy” đạt tính ổn định cao, ít dao động Trong các trường hợp đã khảo sát, thì đây là thông số tốt nhất
* Siêu tham số của mô hình Random Forest:
Các siêu tham số huấn luyện của mô hình Ramdom Forest và ý nghĩa của siêu tham số (áp dụng đối với thư viện của scikit-learn) được thể hiện trong bảng 3.6 [36]:
Bảng 3.5 Các siêu tham số huấn luyện mô hình Ramdon Forest và ý nghĩa:
STT Siêu tham số Ý nghĩa
1 bootstrap Chỉ định có hay không có sử dụng bootstrap khi xây dựng các cây quyết định
2 ccp_alpha Siêu tham số độ phức tạp được sử dụng trong quá trình Minimal Cost-Complexity Pruning Cây con có chi phí phức tạp lớn nhất nhỏ hơn ccp_alpha sẽ được chọn
3 class_weight Các trọng số được liên kết với các lớp ở dạng {class_label:weight} Nếu không được cung cấp, tất cả các lớp được cho là có trọng số 1
4 criterion Hàm đo lường chất lượng phân chia các cây quyết định
5 max_depth Độ sâu tối đa của cây quyết định
6 max_features Số lượng đặc tính được xem xét khi tìm phương án phân nhánh tốt nhất
7 max_leaf_nodes Số lượng nút lá tối đa
8 min_impurity_decrease Nếu bootstrap là True, số lượng mẫu cần lấy từ tập X để huấn luyện từng công cụ ước tính cơ sở
9 min_impurity_decrease Giá trị đặc trưng cho sự giảm chất lượng của một nút, căn cứ quyết định có chia nút hay không
10 min_samples_leaf Số mẫu nhỏ nhất ở một nút lá
11 min_samples_split Số mẫu nhỏ nhất để phân nhánh
12 min_weight_fraction_leaf Trọng số nhỏ nhất được yêu cầu ở nút lá
13 n_estimators Số lượng cây trong mô hình
14 n_jobs Số lượng công việc sẽ chạy song song
15 oob_score Quyết định việc có hoặc không sử dụng các mẫu out-of-bag để đánh giá các điểm số tổng quát Chỉ dùng khi bootstrap=True
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
16 random_state Thông số điều khiển quá trình bootstrap các mẫu ngẫu nhiên khi xây dựng cây và quá trình lấy mẫu các đặc trưng khi tìm giá trị phân chia tốt nhất cho mỗi nút
17 verbose Điều khiển độ dài khi “fit” mô hình và khi dự đoán
18 warm_start Nếu được kích hoạt thì sẽ cho phép tái sử dụng giải pháp của lần gọi trước đó để fit và bổ sung nhiều thông số đánh giá vào quá trình kết hợp
- Thông số đánh giá: accuracy_score, trung bình cross_val_score với cv, đánh giá tầm quan trọng của các đặc tính thông qua hàm “feature importances”
- Phần mềm huấn luyện: Google Colab
Quá trình huấn luyện được thực hiện qua 3 bước được thể hiện trong hình 3.22
Hình 3.22 Ba bước huấn luyện mô hình Random Forest
Bước 1: huấn luyện mô hình với các siêu tham số mặc định:
Theo tài liệu tham khảo [37], các siêu tham số mặc định của mô hình Random Forest sẽ được cho trong gói phần mềm sử dụng để huấn luyện, cụ thể ở đề tài này là thư viện scikit-learn Các siêu tham số mặc định của mô hình Random Forest trong thư viện của scikit-learn được thể hiện trong bảng 3.7:
Bảng 3.6 Các siêu tham số mặc định của mô hình Random Forest
STT Siêu tham số Giá trị
Kết quả huấn luyện mô hình tại bước 1 được trình bày trong bảng 3.8:
Bảng 3.7 Kết quả huấn luyện mô hình Random Forest với các siêu tham số mặc định
Cross_val_score với cv
(mức độ quan trọng của các đặc tính đầu vào)
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
Bước 2: Điều chỉnh các siêu tham số thông qua công cụ RandomizedSearchCV:
Một trong những phương pháp để điều chỉnh các siêu tham số của mô hình học máy, đó là “Random Search” [37] Giá trị các siêu tham số được chọn để đưa vào công cụ RandomizedSearchCV [38] [39] được thể hiện trong bảng 3.9:
Bảng 3.8 Giá trị các siêu tham số được chọn để đưa vào công cụ
RandomizedSearchCV dùng cho mô hình Random Forest
STT Siêu tham số Các giá trị
KẾT QUẢ THỰC HIỆN VÀ BÀN LUẬN
Kết quả thực hiện phần cứng
Về mặt phần cứng, đề tài đã hoàn thành các hạng mục sau:
- Hoàn thành thiết kế và thi công 3 khối mô-đun đọc số liệu
- Các mô-đun đọc số liệu có thể thực hiện đầy đủ chức năng đã đặt ra:
▪ Đọc số liệu từ cảm biến MLX90614, MAX30100
▪ Hiển thị số liệu trên màn hình LCD
▪ Gửi dữ liệu giá trị thân nhiệt, nhịp tim, SpO2 lên server
▪ Nhận phản hồi từ server và xuất cảnh báo ra đèn và mô-đun phát âm thanh
Một số hình ảnh phần cứng:
- Phần cứng mô-đun đọc số liệu khi đang thi công:
Hình 4.1 Phần cứng mô-đun đọc số liệu khi thi công
- Bên trong của mô-đun thu thập số liệu sau khi đã thi công xong:
Hình 4.2 Hình ảnh bên trong của mô-đun thu thập số liệu sau khi đã thi công xong
- Hình ảnh bên ngoài của mô-đun thu thập số liệu đã hoàn thiện:
Hình 4.3 Bên ngoài của mô-đun thu thập số liệu đã hoàn thiện
Kết quả xây dựng phần mềm
Về mặt phần mềm, đề tài đã hoàn thành các hạng mục:
- Thiết lập MQTT Broker Mosquitto tại server để đóng vai trò trung gian kết nối giữa các mô-đun đọc số liệu và server
- Lập trình phần mềm tại server, đóng vai trò như một dịch vụ tiếp nhận thông tin từ các mô-đun đọc số liệu, lưu trữ số liệu vào cơ sở dữ liệu SQL Server
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân
- Xây dựng trang web giám sát thông tin sức khỏe của bệnh nhân và nhập liệu, tra cứu thông tin bệnh nhân
- Thiết lập trang web chạy trên localhost với dịch vụ “Internet Information Services” của Microsoft
Để dự đoán tình trạng sức khỏe của bệnh nhân, 3 mô hình đã được xây dựng và đánh giá Trong số đó, mô hình "Random Forest" đạt độ chính xác cao nhất với "accuracy" = 99,95% Do đó, mô hình "Random Forest" được lựa chọn và áp dụng vào hệ thống để dự đoán tình trạng sức khỏe của bệnh nhân một cách chính xác và đáng tin cậy.
- Triển khai mô hình dự đoán vào ứng dụng demo của đề tài, thực hiện được tác vụ dự đoán tình trạng sức khỏe theo thời gian thực
Giao diện giám sát thông số được thể hiện trong hình 4.4:
Hình 4.4 Giao diện trang giám sát thông số Các hình ảnh khác về sản phẩm phần mềm và giao diện hệ thống được trình bày trong phần phụ lục của luận văn này.
Bàn luận
Hệ thống phát triển đáp ứng yêu cầu ban đầu nhờ kết hợp phần cứng và phần mềm Phần cứng và phần mềm tạo thành hệ thống theo dõi, giám sát thông số sức khỏe bệnh nhân Nghiên cứu lựa chọn và triển khai mô hình dự đoán trí tuệ nhân tạo Random Forest để dự đoán tình trạng sức khỏe bệnh nhân Điểm mới là hệ thống xây dựng và kiểm thử trên mô hình phần cứng thực tế, có khả năng dự đoán tình trạng sức khỏe theo thời gian thực, chứng minh tính hiệu quả của mô hình dự đoán.
Hệ thống theo dõi sức khỏe ứng dụng IoT và mô hình dự đoán tình trạng bệnh nhân