Luận văn Ứng dụng smartphone cho điện tâm đồ không dây

pdf 49 trang phuongnguyen 2250
Bạn đang xem 20 trang mẫu của tài liệu "Luận văn Ứng dụng smartphone cho điện tâm đồ không dây", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfluan_van_ung_dung_smartphone_cho_dien_tam_do_khong_day.pdf

Nội dung text: Luận văn Ứng dụng smartphone cho điện tâm đồ không dây

  1. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THANH PHÚC ỨNG DỤNG SMARTPHONE CHO ĐIỆN TÂM ĐỒ KHÔNG DÂY LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG Hà Nội – 2014
  2. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THANH PHÚC ỨNG DỤNG SMARTPHONE CHO ĐIỆN TÂM ĐỒ KHÔNG DÂY Ngành: Công nghệ Điện tử - Viễn thông Chuyên ngành: Kỹ thuật Điện tử Mã số: 60 52 02 03 LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. NGUYỄN QUỐC TUẤN Hà Nội – 2014
  3. Lời cam đoan Tôi xin cam đoan bản luận văn Thạc sĩ Công nghệ Điện tử - Viễn thông “Ứng dụng smartphone cho điện tâm đồ không dây” là công trình nghiên cứu của cá nhân tôi. Các kết quả, số liệu trình bày trong luận văn là trung thực. Các trích dẫn và tài liệu tham khảo sử dụng trong luận văn đều được chỉ rõ nguồn và tác giả. Hà Nội, ngày 09 tháng 10 năm 2014 Người cam đoan NGUYỄN THANH PHÚC
  4. Lời cảm ơn Trước hết tôi xin gửi lời cảm ơn chân thành tới các thầy cô trong Khoa Điện tử - Viễn thông và các thầy cô giảng dạy chương trình Thạc sĩ Công nghệ Điện tử - Viễn thông, trường Đại học Công nghệ, Đại học Quốc gia Hà Nội với tri thức và tâm huyết của mình đã giúp chúng tôi trang bị kiến thức và hoàn thành chương trình đào tạo. Tôi xin gửi tới PGS.TS. Nguyễn Quốc Tuấn, chủ nhiệm Bộ môn Hệ thống viễn thông, khoa Điện tử - Viễn thông, trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội lời cảm ơn trân trọng nhất vì đã khuyến khích, tạo điều kiện và hướng dẫn, chỉ bảo tận tình tôi trong suốt quá trình thực hiện luận văn. Cuối cùng tôi xin gửi lời cảm ơn tới người thân trong gia đình, bạn bè đã giúp đỡ, động viên tôi trong suốt quá trình học tập và hoàn thành luận văn.
  5. 1 Mục lục Lời cam đoan 3 Lời cảm ơn 4 Bảng các ký hiệu, chữ viết tắt 3 Danh mục các bảng 4 Danh mục các hình vẽ, đồ thị 5 MỞ ĐẦU 6 1. Lý do chọn đề tài 6 2. Nội dung và đối tượng nghiên cứu 6 Chương 1. ĐIỆN TÂM ĐỒ 8 1.1. Nguyên lý 8 1.1.1. Tim 8 1.1.2. Định nghĩa điện tâm đồ 8 1.1.3. Sự hình thành 8 1.2. Cách mắc điện cực 8 1.2.1. Điện trường tim 8 1.2.2. Cách mắc 8 1.3. Ý nghĩa dạng sóng 9 1.4. Hệ đo, thông số tín hiệu điện tim 9 1.5. Cơ sở dữ liệu mẫu 10 1.5.1. PhysioBank 10 1.5.2. Physio Toolkit 10 Chương 2. ANDROID 11 2.1. Kiến trúc 11 2.1.1. Các thành phần 11 2.1.2. Applications 12 2.2. Môi trường phát triển 16 2.2.1. Android SDK 16 2.2.2. Eclipse 17
  6. 2 2.2.3. Emulator 18 Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG 20 3.1. Phân tích yêu cầu 20 3.1.1. Mô tả 20 3.1.2. Bảng phân tích xác định chức năng, tác nhân, hồ sơ 21 3.1.3. Biểu đồ ngữ cảnh 22 3.1.4. Phân rã chức năng 22 3.1.5. Ma trận thực thể - chức năng 24 3.2. Mô hình khái niệm/logic 25 3.2.1. Biểu đồ luồng dữ liệu mức 0 25 3.2.2. Biểu đồ luồng dữ liệu mức 1 25 3.2.3. Mô hình thực thể mối quan hệ 27 3.2.4. Biểu đồ quan hệ 27 3.3. Thiết kế cơ sở dữ liệu 28 3.4. Thiết kế lớp 29 3.5. Thiết kế giao diện 29 3.5.1. Giao diện ứng dụng 29 3.5.2. Giao diện web 34 Chương 4: CÀI ĐẶT VÀ THỬ NGHIỆM 38 4.1. Cài đặt ứng dụng 38 4.1.1. Cài đặt bộ công cụ phát triển 38 4.1.2. Project 39 4.2. Cài đặt Server 40 4.3. Thử nghiệm 42 4.3.1. Ứng dụng 42 4.3.2. Server 42 KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45
  7. 3 Bảng các ký hiệu, chữ viết tắt Chữ viết tắt Ý nghĩa Android Development Tools: các công cụ phát triển Android ADT cài thêm trên Eclipse App Application: ứng dụng Android ECG Electrocardiography: Điện tâm đồ ERM Entity-Relationship Model: Mô hình thực thể mối quan hệ Java Development Kit: Công cụ phát triển ngôn ngữ lập trình JDK Java Integrated Development Environment: môi trường phát triển IDE hợp nhất SDK Software Development Kit: bộ công cụ phát triển phần mềm
  8. 4 Danh mục các bảng Bảng 3.1. Phân tích xác định chức năng, tác nhân 21 Bảng 3.2. Nhóm các chức năng 22 Bảng 3.3. Các hồ sơ sử dụng 24 Bảng 3.4. Ma trận thực thể - chức năng 24 Bảng 3.5. Bệnh nhân 28 Bảng 3.6. Bác sĩ 28 Bảng 3.7. Bệnh án 28 Bảng 3.8. Phản hồi 28
  9. 5 Danh mục các hình vẽ, đồ thị Hình 1.1. Dạng sóng Điện tâm đồ 9 Hình 2.1. Kiến trúc của hệ điều hành Android 11 Hình 2.2. Vòng đời của activity 13 Hình 2.3. Layout 16 Hình 2.4. Quy trình phát triển một ứng dụng Android 18 Hình 3.1. Sơ đồ hệ thống 20 Hình 3.2. Biểu đồ ngữ cảnh 22 Hình 3.3. Biểu đồ phân rã chức năng 23 Hình 3.4. Biểu đồ luồng dữ liệu mức 0 25 Hình 3.5. Biểu đồ luồng dữ liệu mức 1 quản lý thông tin bệnh nhân 26 Hình 3.6. Biểu đồ luồng dữ liệu mức 1 quản lý bệnh án 26 Hình 3.7. Mô hình thực thể mối quan hệ 27 Hình 3.8. Biểu đồ quan hệ 27 Hình 3.9. Màn hình menu của ứng dụng: 30 Hình 3.10. Bluetooth: 31 Hình 3.11. Đồ thị dạng sóng điện tim 32 Hình 3.12. Gửi thông tin: 33 Hình 3.13. Màn hình help 34 Hình 3.14. Trang đăng ký 35 Hình 3.15. Trang đăng nhập 35 Hình 3.16. Danh sách bệnh nhân 36 Hình 3.17. Danh sách bác sĩ 36 Hình 3.18. Trang bệnh án: 37 Hình 4.1. Màn hình Eclipse 39 Hình 4.2. Cơ sở dữ liệu 41 Hình 4.3. Truyền dữ liệu tới server 42
  10. 6 MỞ ĐẦU 1. Lý do chọn đề tài Bệnh tim là một trong những vấn đề sức khỏe hiện được quan tâm trên thế giới. Đây là gánh nặng cho xã hội với tỷ lệ tử vong và tàn phế cao hàng đầu. Bên cạnh đó, chi phí điều trị và chăm sóc điều trị bệnh nhân cũng là một gánh nặng. Cùng với sự phát triển của kinh tế, số lượng người béo phì, hút thuốc lá, rượu bia và đái tháo đường gia tăng cùng lối sống ít vận động gây nên những bệnh lý về tim mạch như cao huyết áp, xơ vữa mạch vành và đột quỵ. Theo thống kê của Tổ chức Y tế thế giới WHO, bệnh liên quan đến tim mạch là nguyên nhân gây tử vong cho 17.3 triệu người hàng năm, chiếm 30% tổng số ca tử vong trên toàn thế giới. Trong đó 80% đến từ các nước thu nhập thấp và trung bình. Dự đoán năm 2030 sẽ có hơn 23.3 triệu người chết vì bệnh tim mỗi năm. [1] Ở nước ta hiện nay, hệ thống y tế vẫn còn những khó khăn và thách thức lớn. Nhu cầu khám chữa bệnh, chăm sóc sức khỏe đòi hỏi cao, trong khi nguồn lực còn hạn hẹp. Theo thống kê, tỷ lệ bác sĩ trên 1000 bệnh nhân là 1.22 bác sĩ/1000 dân, tỷ lệ giường bệnh là 2.2 giường bệnh /1000 dân [2]. Điều đó đặt ra áp lực rất lớn lên ngành y tế, các thủ tục hành chính, qui trình khám chữa bệnh đã được cải cách, cùng với việc áp dụng công nghệ thông tin vào bệnh viện. Tuy nhiên, việc ứng dụng công nghệ thông tin trong y tế vẫn còn hạn chế và thiếu đồng bộ. Điều đó đặt ra thách thức, đồng thời cũng tạo ra những cơ hội. Theo thống kê, ở Việt Nam hiện có 136 triệu thuê bao di động, 36 triệu người sử dụng Internet. Sự bùng nổ của các thiết bị di động, đặc biệt là smartphone đã khẳng định tầm quan trọng của nó trong đời sống xã hội. Các sản phẩm mới có cấu hình và thời lượng sử dụng pin ngày càng được cải thiện. Bên cạnh đó, các smartphone tích hợp cảm biến và ứng dụng về chăm sóc sức khỏe đang là một xu hướng phát triển mạnh mẽ. Các nghiên cứu ứng dụng trong chăm sóc sức khỏe, nhất là những ứng dụng dựa trên nền tảng Android đang thu hút được sự chú ý trong những năm gần đây như nghiên cứu giải thuật tăng cường ảnh và truyền kết quả bằng công nghệ điện toán đám mấy của nhóm tác giả từ đại học Tennessee, Knoxville, Hoa Kỳ. Nghiên cứu của nhóm tác giả từ đại học Erlangen-Nuremberg, Đức dựa trên giải thuật Pan-Tompkins để phát hiện phức bộ QRS và đếm nhịp tim. Sản phẩm của nhóm tác giả từ đại học kỹ thuật Lahore, Pakistan về máy đo điện tim giá rẻ dựa trên vi điều khiển MSP430 và điện thoại Android [3-6]. 2. Nội dung và đối tượng nghiên cứu Từ những lý do trên, nội dung của luận văn là giải quyết bài toán phát triển ứng dụng smartphone cho y tế. Đối tượng là phát triển ứng dụng smartphone chạy trên hệ
  11. 7 điều hành Android, truyền dữ liệu điện tim từ thiết bị đầu cuối tới trung tâm. Nội dung và phương pháp nghiên cứu được trình bày trong các chương: Chương 1: Điện tâm đồ. Trình bày những khái niệm cơ bản về tín hiệu điện tim, nguyên lý hình thành, đặc điểm tín hiệu và phương pháp ghi điện tâm đồ, ý nghĩa dạng sóng. Phần cuối cùng của chương trình bày về cơ sở dữ liệu được sử dụng trong đề tài. Đây là nguồn dữ liệu sinh lý học tin cậy phục vụ cho nghiên cứu được đo của bệnh nhân tim và được số hóa và cung cấp miễn phí trên trang web Chương 2: Android. Trình bày kiến thức về hệ điều hành Android, kiến trúc, bộ công cụ phát triển Android SDK, bộ công cụ phát triển hợp nhất Eclipse cũng như các chương trình mô phỏng Emulator. Chương 3: Phân tích thiết kế hệ thống. Khảo sát hệ thống, xây dựng biểu đồ phân rã chức năng, mô hình khái niệm, thiết kế logic và thiết kế vật lý. Chương 4: Cài đặt và thử nghiệm. Trình bày nội dung ứng dụng và server bao gồm cài đặt và thử nghiệm. Ứng dụng được xây dựng để đọc và xử lý dữ liệu. Các thành phần chính của ứng dụng bao gồm: nhận dữ liệu qua Bluetooth, hiển thị dạng sóng lên màn hình, truyền dữ liệu về server. Server gồm cơ sở dữ liệu MySQL, các trang webpage PHP đăng nhập và tra cứu hồ sơ bệnh nhân. Kết luận. Những mặt đạt được và hạn chế, hướng phát triển tiếp theo.
  12. 8 Chương 1. ĐIỆN TÂM ĐỒ 1.1. Nguyên lý 1.1.1. Tim Quả tim là cơ quan chịu trách nhiệm bơm máu cho hệ tuần hoàn. Tim được cấu tạo bởi một loại cơ đặc biệt và tự đập mà không qua sự điều khiển của não bộ. Cấu tạo của tim gồm 4 buồng: 2 tâm nhĩ và 2 tâm thất. Nhĩ trái nhận máu giàu O2 từ tĩnh mạch, đẩy xuống thất trái, thất trái đẩy máu với áp lực mạnh vào động mạch và được đưa đi tới các bộ phận khác của cơ thể. Máu quay trở lại qua nhĩ phải chứa nhiều CO2 và được bơm vào phổi để trao đổi CO2 lấy O2 và quay trở lại nhĩ trái để lặp lại vòng tuần hoàn. Mỗi phút tim của một người trưởng thành đập khoảng 70 – 90 nhịp. 1.1.2. Định nghĩa điện tâm đồ Điện tâm đồ là đồ thị tuần hoàn ghi lại biến thiên của dòng điện do tim phát ra trong quá trình hoạt động co bóp. Điện tâm đồ được ghi lại lần đầu tiên bởi Einthoven năm 1903 bằng một điện kế nhạy cỡ mili volt. 1.1.3. Sự hình thành Do sự thay đổi nồng độ ion Na+, Ca++ và K+ ở trong và ngoài tế bào trong quá trình co bóp. Lúc nghỉ các ion dương ở ngoài màng tế bào còn các ion âm bị giữ ở trong màng tế bào để cân bằng lực hút tĩnh điện. Khi cơ tim bị kích thích sẽ xuất hiện sự khử cực trong đó các ion âm khuếch tán ra ngoài màng còn các ion dương khuếch tán vào trong màng. Tiếp theo sự khử cực là tái cực khi các ion dương ở ngoài màng tế bào và các ion âm ở trong màng. 1.2. Cách mắc điện cực 1.2.1. Điện trường tim Do cơ thể con người là môi trường dẫn điện nên dòng điện do tim co bóp gây ra được lan truyền khắp cơ thể và ra tới da. Vì vậy cơ thể là một điện trường của tim. Nếu ta đặt hai điện cực bất kỳ trên da có điện thế khác nhau ta sẽ thu được một dòng điện là hiệu điện thế giữa hai điểm đó và gọi là một chuyển đạo (lead), nó hiện ra trên máy bằng một đường cong điện tâm đồ có hình dạng tùy thuộc vào vị trí đặt điện cực. Đường thẳng nối hai điểm đặt điện cực gọi là trục chuyển đạo. 1.2.2. Cách mắc Có 12 cách đặt chuyển đạo bao gồm 3 chuyển đạo mẫu (standard), 3 chuyển đạo đơn cực các chi và 6 chuyển đạo trước tim. Mỗi cách mắc cho một dạng sóng điện tâm đồ khác nhau.
  13. 9 Qui ước mắc điện cực: đặt điện cực dương ở bên trái quả tim và điện cực âm ở bên phải của quả tim. 1.3. Ý nghĩa dạng sóng Hình 1.1. Dạng sóng Điện tâm đồ Điện tâm đồ gồm 6 sóng nối tiếp nhau P, Q, R, S, T, U Sóng P thể hiện quá trình khử cực của tâm nhĩ. Khử cực tâm thất bao gồm 3 sóng cao nhọn Q, R, S biến thiên trong thời gian rất nhanh khoảng 0.07s và phức tạp nên được gọi là phức bộ QRS. Tiếp theo khử cực là một thời kỳ tái cực chậm không thể hiện trên điện tâm đồ bằng sóng nào mà chỉ là một đoạn thẳng, sau đó là thời kỳ tái cực nhanh thể hiện bằng sóng T. [7] 1.4. Hệ đo, thông số tín hiệu điện tim Dòng điện do tim sinh ra trong quá trình co bóp là một tín hiệu rất yếu cỡ 0.5mV – 5mV. Vì dòng điện tim có điện thế rất nhỏ, nên trong khi ghi điện tâm đồ rất dễ bị ảnh hưởng bởi các nhiễu như: nhiễu tần số 50Hz do mạng điện sinh hoạt, thắp đèn, chạy quạt, chạy máy X quang có dây dẫn đi qua gần đó hoặc các dòng điện phát sinh từ cơ và da của bệnh nhân. Hệ đo: vì tín hiệu điện tim rất yếu nên phải được khuếch đại. Thông tin có ý nghĩa trong chẩn đoán nằm trong dải tần 0.5Hz – 80Hz nên có thể loại bỏ hết các tín hiệu tần số cao. Do đó tín hiệu thu được từ điện cực được đi qua bộ lọc thông thấp với
  14. 10 tần số cắt fc=100Hz và bộ lọc triệt tần fc=50Hz để loại bỏ nhiễu do mạng điện sinh hoạt. Cuối cùng tín hiệu tương tự được số hóa bởi bộ ADC. 1.5. Cơ sở dữ liệu mẫu Dữ liệu được sử dụng trong luận văn được lấy từ nguồn PhysioNet. Đây là trang web cung cấp dữ liệu y sinh được thu từ trước tại các bệnh viện để phục vụ cho nghiên cứu và được bảo trợ bởi National Institute of Biomedical Imaging and Bioengineering (NIBIB) và the National Institute of General Medical Sciences (NIGMS) của Hoa Kỳ. Các tài nguyên có trên PhysioNet bao gồm: PhysioBank, Physio Toolkit, PhysioNet Library và PhysioNetworks. 1.5.1. PhysioBank PhysioBank là kho dữ liệu sinh lý học được số hóa để cung cấp cho cộng đồng nghiên cứu y sinh. Hiện nay PhysioBank bao gồm dữ liệu về tim phổi, thần kinh và các tín hiệu y sinh khác của người khỏe mạnh và người bệnh. Các thông số về những bệnh tật có ảnh hưởng tới sức khỏe cộng đồng như đột quỵ, suy tim, động kinh, ngừng thở khi ngủ và lão hóa. Hiện nay PhysioBank bao gồm 50 cơ sở dữ liệu có thể tải về miễn phí. 1.5.2. Physio Toolkit Là thư viên lớn và ngày càng tăng về số lượng các phần mềm nguồn mở để mở và phân tích dữ liệu như convert dữ liệu từ binary sang text, xử lý tín hiệu, các thư viện và công cụ phát triển hỗ trợ các ngôn ngữ C, C++, Fortran, Java, Python, Perl và Matlab. Tất cả các phần mềm đều được cung cấp ở dạng mã nguồn theo giấy phép GNU General Public License (GPL).
  15. 11 Chương 2. ANDROID 2.1. Kiến trúc 2.1.1. Các thành phần Hình 2.1. Kiến trúc của hệ điều hành Android Android được xây dựng trên nhân Linux. Linux là một hệ điều hành hoạt động ổn định và an toàn, với một thiết bị di động thì tính ổn định quan trọng hơn hiệu năng, bởi vì khi mua một thiết bị di động thì thoại vẫn là tính năng chính. Android sử dụng Linux để quản lý bộ nhớ, quản lý các tiến trình, mạng và service của hệ thống. Nhân Linux là nơi cài đặt các driver đặc tả phần cứng như Keypad, Wi-Fi, Bluetooth, Flash Memory, Audio. Nó được thiết kế để mềm dẻo với nhiều thành phần tùy chọn khác nhau để tương thích với phần cứng, bao gồm cả những tính năng như màn hình cảm ứng, camera, GPS. Ở bên trên nhân Linux là thư viện, bao gồm: Trình duyệt web tích hợp dựa trên dự án mã nguồn mở WebKit engine Đồ họa: các thư viện đồ họa 2D; thư viện đồ họa 3D dựa trên OpenGL ES (Open Graphics Library for Embedded System) Cơ sở dữ liệu SQLite Hỗ trợ các định dạng âm thanh, video và ảnh thông dụng (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) Các dịch vụ:
  16. 12 Activities và views Thoại Cửa sổ Các tài nguyên Các dịch vụ định vị Android runtime bao gồm máy ảo Dalvik và thư viện Java core. Các ứng dụng chạy trên thiết bị Android được viết bằng ngôn ngữ Java và được biên dịch thành byte code và được thực thi bởi máy ảo Dalvik trên thiết bị di động. Dalvik là một máy ảo Java được tối ưu hóa cho thiết bị di động vốn có bộ nhớ và thời lượng pin hạn chế. Nhiều máy ảo có thể chạy cùng lúc và nó tận dụng được ưu điểm của hệ điều hành Linux cho bảo mật. Ở bên trên của runtime và thư viện native là lớp Application Framwork. Nó bao gồm các framework quan trọng sau : Activity Manager : quản lý vòng đời của ứng dụng. Content providers : quản lý và chia sẻ dữ liệu. Resource manager : tài nguyên là tất cả những gì chạy cùng chương trình mà không phải là code. Location manager : quản lý vị trí Notificaiton manager : quản lý các thông báo Lớp cao nhất trong kiến trúc Android là lớp ứng dụng. Người dùng đầu cuối sẽ chỉ nhìn thấy những chương trình này. Ứng dụng là những chương trình chiếm toàn màn hình và tương tác với người sử dụng. Ngoài ra, widgets hoạt động với một cửa sổ nhỏ hình chữ nhật trên màn hình chính của ứng dụng. 2.1.2. Applications Mỗi ứng dụng chạy trong một tiến trình Linux riêng. Các thành phần cơ bản của một ứng dụng Android: a. Activity Activity là thành phần quan trọng nhất trong phát triển một ứng dụng Android. Định nghĩa activity là những lớp nằm trong các gói tương tác với người dùng. Một activity mới được tạo ra phải được khai báo trong file AndroidManifest.xml. Activity bao gồm 4 trạng thái: Active: là trạng thái mà activity đang hiển thị trên màn hình (foreground) Paused: activity vẫn hiển thị nhưng không thể tương tác Stop: khi được thay thế bằng một activity mới, activity cũ sẽ chuyển sang trạng thái stop.
  17. 13 Killed: khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình. Vòng đời của một activity Hình 2.2. Vòng đời của activity Trong hệ thống, activity được quản lý theo nguyên lý xếp chồng. Khi một activity mới được chạy, nó được đặt ở trên đỉnh của chồng và trở thành activity đang chạy. Activity trước sẽ bị xếp xuống bên dưới nó và không quay trở lại foreground chừng nào activity mới thoát ra. Một activity có bốn trạng thái: Nếu một activity ở foreground của màn hình, tức là ở trên đỉnh của stack thì nó ở trạng thái active hoặc running. Nếu bị một activity mới chiếm màn hình nhưng activity cũ vẫn được nhìn thấy thì nó ở trạng thái paused. Ở trạng thái này, nó giữ toàn bộ trạng thái và thông tin nhưng không thể bị kill bởi hệ thống khi ở tình trạng bộ nhớ đầy. Nếu một activity bị che khuất hoàn toàn bởi một activity khác, nó rơi vào trạng thái stopped. Nó vẫn giữ lại toàn bộ trạng thái và thông tin, tuy
  18. 14 nhiên, nếu nó không được hiển thị cho người sử dụng nữa thì các cửa sổ của nó sẽ bị ẩn và thường sẽ bị hệ thống kill để nhường bộ nhớ cho nơi khác. Nếu một activity ở trạng thái paused hoặc stopped, hệ thống có thể bỏ activity khỏi bộ nhớ bằng cách yêu cầu nó có kết thúc hay không, hoặc đơn giản là hủy các process của nó. Khi nó hiển thị trở lại cho người sử dụng, nó phải được khởi động lại hoàn toàn và khôi phục lại trạng thái trước đó. Trong vòng đời của một activity có ba vòng chính: Entire lifetime: giữa cuộc gọi đầu tiên onCreate(Bundle) tới cuộc gọi kết thúc onDestroy(). Visible lifetime: giữa cuộc gọi onStart() tới onStop. Trong thời gian này người sử dụng có thể trông thấy activity trên màn hình dù nó có thể không ở foreground và tương tác với người dùng. Foreground lifetime: giữa cuộc gọi onResume() và onPause(). Trong thời gian này activity ở bên trên tất cả activity khác và tương tác với người sử dụng. Một activity có thể thường xuyên chuyển đổi giữa các trạng thái resumed và paused, ví dụ thiết bị ở trạng thái sleep, khi một intent được gửi tới. Thời gian sống của một activity được định nghĩa bởi các phương thức sau: onCreate() được gọi khi activity được khởi tạo. Nó luôn được tiếp nối bởi phương thức onStart(). onRestart() được gọi để khởi động lại sau khi activity bị stopped. Luôn được tiếp nối bởi onStart(). onStart() được gọi khi activity hiển thị với người sử dụng. onResume() được gọi khi hệ thống khôi phục lại activity trước. onStop() được gọi khi activity không được sử dụng nữa. onDestroy() cuộc gọi cuối cùng trước khi activity bị hủy. Nó xảy ra khi activity kết thúc hoặc khi hệ thống tạm thời hủy activity này để giải phóng bộ nhớ. b. Service Là một thành phần của app chạy ngầm trong background, không tương tác với người dùng và có thời gian chạy không xác định. Service chạy trong thread chính của tiến trình, nếu service làm công việc chiếm nhiều CPU hoặc thời gian, nó cần sinh ra một thread riêng.
  19. 15 Cũng giống như activity, service được khởi tạo bằng phương thức onCreate() và trả lại tài nguyên bằng onDestroy() c. Intent Trong một ứng dụng thường có nhiều activity và chúng độc lập với nhau. Các activity dùng intent để trao đổi thông tin với nhau. Thông tin của một intent bao gồm: action hay service muốn thực hiện và data cho action hoặc service đó. Ứng dụng quan trọng nhất của intent là gọi một activity hoặc một service. Intent được phát quảng bá tới tất cả activity hoặc service. Để tương tác chúng dùng Intent-filter, nó quy định quan hệ giữa intent với activity hoặc service. Khi một intent được phát đi, hệ thống sẽ đánh giá các activity, service và broadcast receiver rồi gửi nó đến nơi phù hợp. d. Content Provider Là nơi lưu giữ và đọc dữ liệu cho các ứng dụng. Có các content provider cho các kiểu dữ liệu thông dụng như âm thanh, video, ảnh, thông tin liên lạc cá nhân. Một content provider có thể cung cấp dữ liệu cho activity và service trong cùng ứng dụng hoặc các activity và service ở trong ứng dụng khác. [8] e. Broadcast Receiver Broadcast Receiver là một thành phần của tiến trình Android như các Activities, conten providers và các services, có nhiệm vụ đáp ứng lại một bản tin, ở đây là quảng bá một intent. Các thành phần khác như activity sử dụng phương thức sendBroadcast() có trong lớp Context để phát quảng bá một sự kiện. Đối số của phương thức này là một intent.[9] f. Threads Mỗi thread là một đơn vị thực thi song song, mỗi ứng dụng có ít nhất một thread chạy khi nó được khởi động, đó là luồng chính (main thread). Ngoài ra nó có thể có them vài luồng khác cho các hoạt động phục vụ luồng chính. Các luồng dùng chung tài nguyên của tiến trình nhưng thực thi độc lập. Một ứng dụng có thể tách thành một luồng chính chạy giao diện người sử dụng và các luồng chạy ở background phục vụ các nhiệm vụ có thời gian dài. Với hệ thống có vi xử lý đa nhân thì việc chạy đa luồng giúp cho ứng dụng chạy nhanh hơn. Khi một tiến trình được sinh ra, luồng chính được dùng để chạy một messenger queue, hàng đợi này quản lý các thành phần của ứng dụng như activity, intent receiver. Các luồng phụ tương tác với luồng chính thông qua token. Khi lấy được token, luồng phụ ghi dữ liệu vào messenger queue của handler và được thực thi khi nó ra khỏi hàng đợi. Nhiệm vụ chính của handler là xếp lịch cho các message để thực thi trong một thời điểm trong tương lai và xếp hàng một action cần thực hiện tại một luồng khác.
  20. 16 g. XML layouts Layout là một cấu trúc trực quan của một giao diện người sử dụng cho một activity hoặc một widget của ứng dụng. Có thể khai báo một layout theo hai cách: Khai báo một thành phần giao diện người dùng trong XML. Android cung cấp cú pháp XML đơn giản để khai báo các lớp View và các lớp con, cũng như widgets và các layouts. Ứng dụng có thể tạo đối tượng View và ViewGroup tức thời trong thời gian chạy. Hình 2.3. Layout Ưu điểm của việc khai báo giao diện người sử dụng trong XML là cho phép tách phần giao diện với mã nguồn điều khiển hoạt động của nó. Giao diện người sử dụng ở bên ngoài mã nguồn của ứng dụng, tức là có thể thay đổi nó mà không phải thay đổi mã nguồn và biên dịch lại. Hơn nữa, khai báo layout trong XML trực quan hơn về cấu trúc và dễ gỡ lỗi hơn. 2.2. Môi trường phát triển 2.2.1. Android SDK Các gói cho Core Android cho các chức năng lõi java.lang – lớp ngôn ngữ cơ bản java.io – quản lý vào/ra java.net – kết nối mạng java.util – các lớp tiện ích. Gói này bao gồm lớp Log sử dụng để viết LogCat java.text – tiện ích xử lý văn bản java.math – cung cấp các hàm toán học
  21. 17 javax.net – các lớp mạng javax.security – các lớp liên quan đến bảo mật javax.xml – các lớp DOM-based XML org.apache.* - các lớp liên quan đến http org.xml – các lớp SAX-based XML Ngoài ra còn có một số gói riêng biệt của Android : android.app – mô hình truy cập ứng dụng Android android.content – truy cập và xuất dữ liệu trong Android android.net – bao gồm lớp Uri, sử dụng để truy cập một số content android.graphics – các lớp đồ họa gốc android.opengl – các lớp OpenGL android.os – cung cấp các dịch vụ cơ bản của hệ điều hành android.provider – các lớp liên quan đến Content Provider android.telephony – thoại android.text – Text layout android.util – các tiện ích xử lý văn bản, bao gồm XML android.view – các thành phần giao diện người dùng android.webkit – các chức năng của trình duyệt android.widget – các thành phần giao diện người dùng khác 2.2.2. Eclipse Một dự án ứng dụng trên Android bao gồm các thành phần chính sau: mã nguồn Java, các files tài nguyên, file AndroidManifest.xml. Thư mục src là thư mục chứa mã nguồn Java điều khiển ứng dụng. R.java chứa định danh của mỗi thành phần tài nguyên. Nó rất quan trọng và tự động được sinh ra mỗi khi tài nguyên thay đổi. Thư mục res chứa toàn bộ tài nguyên của ứng dụng, bao gồm: Drawables chứa các file ảnh như là bitmaps và icons. Layout chứa file xml định nghĩa các view của activity. File strings.xml được sử dụng cho các giá trị có kiểu chuỗi như là tên ứng dụng. AndroidManifest.xml miêu tả thông tin của dự án mà hệ điều hành cần biết trước khi chạy. Nó bao gồm việc khai báo các activity, khai báo việc sử dụng phần cứng như camera, Bluetooth, khai báo activity đầu tiên được chạy khi ứng dụng được mở. Quy trình phát triển một ứng dụng được mô tả như hình 2.4 dưới đây
  22. 18 Hình 2.4. Quy trình phát triển một ứng dụng Android Các tài nguyên được khai báo trong các file xml, file R.java chứa định danh được tự động sinh ra. Mã nguồn điều khiển nó được viết bằng java. Khai báo trong file AndroidManifest.xml. Elipse biên dịch thành dạng byte code (file *.dex) để sẵn sàng sử dụng trong các máy ảo Java. Bên cạnh đó, công cụ ADT của bộ công cụ Android SDK còn convert file nguồn sang file *.apk là một dạng đóng gói để sẵn sàng chạy trong các thiết bị Android cũng như các emulator. 2.2.3. Emulator Cho dù test trên phần cứng mà ứng dụng được thiết kế cho nó vẫn là tốt nhất, song việc test ứng dụng trên bộ mô phỏng emulator khiến cho công việc dễ dàng hơn. Làm việc với emulator cho phép biên dịch, chạy và gỡ lỗi nhanh hơn so với việc chạy trên phần cứng thật. Việc đồng bộ hóa, copy một ứng dụng vào thiết bị thật thì mất thời gian hơn so với việc chạy trên emulator. Ngoài ra việc gỡ bỏ nó đi trên emulator cũng dễ dàng hơn. Có hai bộ công cụ mô phỏng thông dụng là Android Emulator và GenyMotion. a. Android Emulator Là bộ công cụ mô phỏng được tích hợp sẵn trong Android SDK, nó có đầy đủ các tính năng của thiết bị như camera, bàn phím QWERTY, các phần cứng khác nhau, màn hình hướng ngang (landscape) hay dọc (vertical). Ngoài ra, Android Emulator còn cung cấp một bộ công cụ mạnh để test với các điều kiện mạng khác nhau với tốc tộ thay đổi như GSM, GPRS, EDGE, HSPDA b. GenyMotion Android Emulator là bộ công cụ mạnh, nhưng có nhược điểm là chiếm khá nhiều CPU. Để khắc phục nhược điểm này, nhất là khi test ứng dụng trên máy tính có cấu
  23. 19 hình yếu thì GenyMotion là một lựa chọn lý tưởng, được hơn 900 000 người sử dụng. Nó không chiếm nhiều CPU như Android Emulator nhưng vẫn có đầy đủ các tính năng của một bộ công cụ mô phỏng hoàn hảo. GenyMotion 2.3.0 hỗ trợ các thiết bị ảo từ API 10 – API 18 (Android 2.3.7 – Android 4.4.4) với độ phân giải màn hình từ 480x800 – 1920x1200. Bên cạnh việc chạy mô phỏng các ứng dụng từ source code trên bộ công cụ Eclipse, máy ảo còn cài được các ứng dụng từ file đóng gói *.apk bằng kéo thả rất nhanh và tiện lợi.
  24. 20 Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG 3.1. Phân tích yêu cầu 3.1.1. Mô tả a. Mô tả Khách hàng đăng ký thông tin và tên đăng nhập, mật khẩu vào phiếu đăng ký. Hệ thống cấp một mã số ID bệnh nhân. Bệnh nhân đăng nhập vào ứng dụng trên smartphone. Máy đo gửi tín hiệu cho smartphone qua bluetooth. Smartphone hiển thị kết quả trên màn hình, gửi dữ liệu tới Trung tâm. Khi dữ liệu được gửi, Trung tâm nhận dạng bệnh nhân theo mã ID, lưu dữ liệu vào hồ sơ bệnh nhân, gửi thông báo đã nhận dữ liệu thành công. Gửi chỉ dẫn cấp cứu, số điện thoại khẩn cấp, danh sách các bệnh viện gần nhất về smartphone của bệnh nhân. Khi bác sĩ, bệnh nhân, người nhà truy cập dữ liệu của bệnh nhân, kiểm tra mã số ID, mật khẩu, nếu đúng thì in ra màn hình bảng kết quả theo dõi. b. Sơ đồ hệ thống Internet H T T P G 3 Hệ đo Database Bluetooth Smartphone Bệnh nhân Web Server Hình 3.1. Sơ đồ hệ thống Hệ thống có nhiệm vụ thu thập dữ liệu liệu bệnh nhân qua Bluetooth, xử lý dữ liệu và gửi về trung tâm qua 3G. Hệ thống được chia thành hai hệ thống con: Ứng dụng chạy trên hệ điều hành smartphone có chức năng thu thập và xử lý thông tin thu được từ máy đo qua Bluetooth. Trong khuôn khổ luận văn, dữ liệu từ máy đo là file dạng text thu sẵn được cung cấp bởi PhysioNet.
  25. 21 Server: bao gồm cơ sở dữ liệu bệnh nhân và các dịch vụ. Server có chức năng nhận thông tin từ người sử dụng, quản lý thông tin trên cơ sở dữ liệu và trả về thông tin khi có yêu cầu. 3.1.2. Bảng phân tích xác định chức năng, tác nhân, hồ sơ Bảng 3.1. Phân tích xác định chức năng, tác nhân Cụm động từ + bổ ngữ Cụm danh từ Nhận xét Đăng ký thông tin Bệnh nhân Tác nhân Cấp mã số ID bệnh nhân Hồ sơ bệnh án Hồ sơ dữ liệu Đăng nhập vào trang cá Bệnh nhân = nhân Gửi dữ liệu cho Máy đo Tác nhân smartphone Hiển thị kết quả Smartphone = Gửi dữ liệu Trung tâm Tác nhân Nhận dạng bệnh nhân theo Trung tâm = ID Lưu dữ liệu Hồ sơ bệnh nhân Hồ sơ dữ liệu Truy cập dữ liệu bệnh Bệnh nhân, bác sĩ Hồ sơ dữ liệu nhân Kiểm tra mã số ID, mật Hồ sơ bệnh nhân Hồ sơ dữ liệu khẩu In ra màn hình Bảng kết quả Hồ sơ dữ liệu
  26. 22 3.1.3. Biểu đồ ngữ cảnh Thông tin cá nhân ID 0 Đăng nhập ___ Bệnh Dữ liệu đo Yêu cầu Ban lãnh nhân Bệnh án Hệ thống Báo cáo đạo Cảnh báo theo dõi sức Chỉ dẫn khỏe từ xa Phản hồi P B h n ệ ả ẫ n n d h ỉ h á h ồ n i C Bác sĩ Hình 3.2. Biểu đồ ngữ cảnh 3.1.4. Phân rã chức năng a. Nhóm các chức năng Bảng 3.2. Nhóm các chức năng Các chức năng chi tiết Nhóm lần 1 Nhóm lần 2 1. Kiểm tra thông tin đăng ký 2. Cấp tài khoản bệnh nhân 3. Chọn bác sĩ theo dõi Quản lý thông tin bệnh 4. Thay đổi thông tin nhân 5. Hiển thị kết quả đo 6. Lưu dữ liệu vào bệnh án Theo dõi 7. Kiểm tra thông tin đăng nhập Hệ thống theo dõi sức khỏe 8. Tìm kiếm danh sách bệnh Quản lý bệnh án nhân 9. Tra cứu hồ sơ bệnh án 10. Xem hồ sơ bệnh án 11. Phản hồi 12. Gửi yêu cầu báo cáo Báo cáo 13. Báo cáo
  27. 23 b. Lập biểu đồ phân rã chức năng Quản lý bệnh nhân 1. Quản lý thông 2. Theo dõi 3. Quản lý bệnh án 4. Báo cáo tin bệnh nhân 1.1. Kiểm tra thông 2.1. Hiển thị kết 3.1. Kiểm tra thông 4.1. Gửi yêu cầu tin đăng ký quả tin đăng nhập báo cáo 1.2. Cấp tài khoản 2.2. Lưu dữ liệu 3.2. Tìm kiếm danh 4.2. Báo cáo bệnh nhân vào bệnh án sách bệnh nhân 3.3. Tra cứu hồ sơ 1.3. Chọn bác sĩ bệnh án 1.4. Thay đổi thông 3.4. Phản hồi tin Hình 3.3. Biểu đồ phân rã chức năng c. Mô tả chi tiết các chức năng lá 1.1. Kiểm tra thông tin đăng ký 1.2. Cấp tài khoản bệnh nhân 1.3. Chọn bác sĩ 1.4. Thay đổi thông tin 2.1. Hiển thị kết quả đo 2.2. Lưu dữ liệu vào bệnh án 3.1. Kiểm tra thông tin đăng nhập 3.2. Tìm kiếm danh sách bệnh nhân 3.3. Tra cứu hồ sơ bệnh án 3.4. Phản hồi 4.1. Gửi yêu cầu báo cáo 4.2. Báo cáo d. Các hồ sơ sử dụng
  28. 24 Bảng 3.3. Các hồ sơ sử dụng Tên hồ sơ Nội dung a. Phiếu đăng ký Các thông tin đăng ký b. Bệnh án Thông tin bệnh nhân, bác sĩ, chẩn đoán, thời gian c. Danh sách bệnh nhân Danh sách và thông tin bệnh nhân d. Danh sách bác sĩ Danh sách và thông tin bác sĩ e. Phản hồi Thông tin phản hồi, người gửi, thời gian f. Báo cáo Nội dung báo cáo 3.1.5. Ma trận thực thể - chức năng Bảng 3.4. Ma trận thực thể - chức năng Các thực thể a. Phiếu đăng ký bệnh án b. Bệnh án c. Danh sách bệnh nhân d. Danh sách bác sĩ e. Phản hồi f. Báo cáo Các chức năng nghiệp vụ a b c d e f 1. Quản lý thông tin bệnh nhân C C R R 2. Theo dõi U U 3. Quản lý bệnh án R R C 4. Báo cáo R R R C C = create; R = read; U = update
  29. 25 3.2. Mô hình khái niệm/logic 3.2.1. Biểu đồ luồng dữ liệu mức 0 ID Chọn bác sĩ Thông tin cá nhân a. Phiếu đăng ký b. Bệnh án Data 1.0 Quản lý 2.0 Kết quả Người sử dụng thông tin c. Danh sách bệnh nhân Theo dõi bệnh nhân Chỉ dẫn d. Danh sách bác sĩ Đăng nhập e. Phản hồi Danh sách bệnh nhân f. Báo cáo 3.0 4.0 Quản lý bệnh Bệnh án Báo cáo Yêu cầu án Phản hồi Báo cáo Lãnh đạo Hình 3.4. Biểu đồ luồng dữ liệu mức 0 3.2.2. Biểu đồ luồng dữ liệu mức 1 a. Biểu đồ tiến trình Quản lý thông tin bệnh nhân
  30. 26 a. Phiếu đăng ký Thông tin đăng ký 1.1 Người sử Thông tin đăng ký dụng Kiểm tra 1.2 thông tin Cấp tài khoản đăng ký b. Bệnh án Thông tin cập nhật c. Danh sách bệnh nhân Thông tin đăng ký d. Danh sách bác sĩ 1.4 1.3 Thay đổi Chọn bác sĩ thông tin Hình 3.5. Biểu đồ luồng dữ liệu mức 1 quản lý thông tin bệnh nhân b. Biểu đồ tiến trình Quản lý bệnh án Thông tin 3.1 Thông tin đăng 3.2 Người sử đăng nhập Kiểm tra nhập đúng Tìm danh dụng thông tin sách bệnh đăng nhập nhân c. Danh sách bệnh nhân Thông tin b. Bệnh án đăng ký e. Phản hồi 3.3 3.4 Tra cứu hồ sơ Phản hồi bệnh án Hình 3.6. Biểu đồ luồng dữ liệu mức 1 quản lý bệnh án
  31. 27 3.2.3. Mô hình thực thể mối quan hệ Ngày giờ Hồ sơ Số bệnh nhân Phản hồi ID Phản hồi Số bác sĩ Username Số bệnh nhân Username Họ tên Cơ quan Điện thoại Bệnh Điện thoại Chọn bác sĩ Bác sĩ nhân Email Địa chỉ Chức danh Email Họ tên Giới tính Số bệnh án Số bệnh nhân Chẩn đoán Theo dõi Ngày giờ Ngày giờ Đơn thuốc Bệnh án Số bác sĩ Chẩn đoán Hình 3.7. Mô hình thực thể mối quan hệ 3.2.4. Biểu đồ quan hệ 2. Bệnh nhân 3. Bác sĩ # Mã số bệnh nhân # Mã số bác sĩ Password Họ tên Họ tên Chức danh Ngày sinh Cơ quan Giới tính Điện thoại Điện thoại Email Email Địa chỉ 4. Bệnh án 5. Phản hồi # Mã số bệnh án * Mã số bệnh nhân # Mã số phản hồi * Mã số bác sĩ * Mã số bệnh nhân Chẩn đoán Phản hồi Đơn thuốc Ngày giờ Ngày giờ Hình 3.8. Biểu đồ quan hệ
  32. 28 3.3. Thiết kế cơ sở dữ liệu Bảng 3.5. Bệnh nhân Thuộc tính Kiểu dữ liệu Độ dài Ràng buộc ID_benh_nhan int 11 Khóa chính Password varchar 256 ho_ten varchar 256 ngay_sinh date gioi_tinh varchar 256 dien_thoai int 20 email varchar 256 dia_chi varchar 256 Bảng 3.6. Bác sĩ Thuộc tính Kiểu dữ liệu Độ dài Ràng buộc ID_bac_si int 11 Khóa chính ho_ten varchar 256 chuc_danh varchar 256 co_quan varchar 256 dien_thoai int 20 email varchar 256 Bảng 3.7. Bệnh án Thuộc tính Kiểu dữ liệu Độ dài Ràng buộc ID_benh_an int 11 Khóa chính ID_benh_nhan int 11 Khóa ngoại ID_bac_si int 11 Khóa ngoại chan_doan varchar 256 don_thuoc varchar 256 thoi_gian datetime Bảng 3.8. Phản hồi Thuộc tính Kiểu dữ liệu Độ dài Ràng buộc ID_phan_hoi int 11 Khóa chính ID_benh_nhan int 11 Khóa ngoại phan_hoi varchar 256 thoi_gian datetime
  33. 29 3.4. Thiết kế lớp Lớp MenuActivity: Phương thức onCreate () khởi tạo các nút trong menu. Lớp DataView kế thừa từ lớp DemoView được phát triển sẵn có trong thư viện AFreeChart: Phương thức XYSeriesCollection trả về Dataset Phương thức AFreeChart (XYDataset) vẽ đồ thị dạng đường từ Dataset, trả về chart. Lớp BluetoothActivity: Phương thức onCreate khởi tạo menu các nút trong BluetoothActivity Phương thức on(View) kích hoạt bluetooth Phương thức list(View) hiển thị danh sách các thiết bị kết nối Phương thức off(View) tắt bluetooth Phương thức visible(View) cho phép máy khác tìm thấy (discoverable) Lớp ChartActivity: Phương thức onCreate () tạo đối tượng từ lớp Dataview Lớp PostTextActivity: Phương thức onCreate khởi tạo activity, edit text và button Phương thức send(View) gửi dữ liệu bằng phương thức HttpPost Lớp PostFileActivity Phương thức onCreate khởi tạo activity Lớp PostDataAsyncTask Phương thức postFile() gửi file dữ liệu *.csv bằng phương thức HttpPost Lớp SplashActivity: Phương thức onCreate() khởi tạo activity Lớp HelpActivity: Phương thức onCreate() khởi tạo activity 3.5. Thiết kế giao diện 3.5.1. Giao diện ứng dụng a. Màn hình chính
  34. 30 (a) (b) Hình 3.9. Màn hình menu của ứng dụng: (a) Màn hình splash; (b) Màn hình menu Khi ứng dụng được mở, màn hình splash hiển thị tên ứng dụng, tác giả và logo, sau 1,5 giây tự động chuyển qua màn hình menu bao gồm các nút để người sử dụng lựa chọn chức năng. Các nút chức năng trong màn hình Menu bao gồm: Bluetooth Chart Send Message Upload Data Help Khi người dùng bấm vào các nút này, màn hình sẽ chuyển qua các activity tương ứng với các chức năng b. Bluetooth Bluetooth là kênh không dây để thiết bị Android nhận dữ liệu từ hệ đo. Các chức năng chính của Bluetooth Activity trong ứng dụng này bao gồm: Scan để tìm thiết bị có Bluetooth khác Danh sách các thiết bị đã kết nối Kết nói với thiết bị khác qua service discovery
  35. 31 (a) (b) (c) (d) (e) Hình 3.10. Bluetooth: (a) menu; (b) Turn on; (c) Discoverable; (d) Devices; (e) Turn off Màn hính chính của Bluetooth bao gồm các phím chức năng Turn on Discoverable Devices Turn off
  36. 32 Khi người dùng bấm vào phím Turn on, màn hình pop-up hiện lên thông báo yêu cầu cho phép bật Bluetooth của máy. Khi người dùng bấm vào nút Discoverable, màn hình pop-up thông báo yêu cầu cho phép các máy khác có thể tìm thấy máy trong 120 giây. Khi người dùng bấm vào Devices, hiển thị danh sách các thiết bị đã kết nối với máy. Khi người dùng bấm vào Turn off, màn hình pop-up thông báo đã tắt Bluetooth của máy. c. Đồ thị dạng sóng điện tim Hình 3.11. Đồ thị dạng sóng điện tim Màn hình hiển thị đồ thị được thiết kế nằm ngang (landscape) để thuận tiện cho việc quan sát tín hiệu điện tim. Bao gồm tên đồ thị, tên hai hai trục X, Y và đơn vị. Đồ thị tín hiệu điện tim vẽ dạng đường gồm trục X là thời gian (giây), trục Y là giá trị điện thế (mV). d. Gửi dữ liệu tới server
  37. 33 (a) (b) (c) (d) Hình 3.12. Gửi thông tin: (a) Send Message; (b) Upload File; (c) Uploading; (d) File Upload Completed e. Help
  38. 34 Hình 3.13. Màn hình help 3.5.2. Giao diện web a. Trang đăng ký
  39. 35 Hình 3.14. Trang đăng ký Trang đăng ký dạng form để người dùng khai báo thông tin người sử dụng. Các thông tin được nhập sẽ được lưu vào cơ sở dữ liệu người dùng. Dưới cùng là nút để submit. Danh sách các form yêu cầu nhập bao gồm: Họ và tên Mật khẩu Xác nhận lại mật khẩu Ngày sinh Giới tính Địa chỉ email Điện thoại Địa chỉ b. Trang đăng nhập Hình 3.15. Trang đăng nhập Trang đăng nhập dạng form gồm hai: Số điện thoại đăng ký Mật khẩu c. Trang danh sách bệnh nhân
  40. 36 Hình 3.16. Danh sách bệnh nhân Danh sách bệnh nhân: Mã số bệnh nhân Họ tên Ngày sinh Giới tính Điện thoại Email Địa chỉ d. Trang danh sách bác sĩ Hình 3.17. Danh sách bác sĩ Danh sách bác sĩ: Mã số bác sĩ Họ tên Chức danh Cơ quan
  41. 37 Điện thoại Email e. Trang bệnh án (a) (b) Hình 3.18. Trang bệnh án: (a) Nhập số bệnh nhân; (b) Kết quả bệnh án Trang bệnh án gồm trang đăng nhập với mã số bệnh nhân. Kết quả tương ứng là bệnh án bao gồm: Tên bệnh nhân Ngày sinh Giới tính Chẩn đoán của bác sĩ Bác sĩ khám Chức vụ Thời gian khám
  42. 38 Chương 4: CÀI ĐẶT VÀ THỬ NGHIỆM 4.1. Cài đặt ứng dụng Ứng dụng có chức năng thu thập dữ liệu bệnh nhân từ máy đo, xử lý, hiển thị kết quả trên màn hình thiết bị, gửi dữ liệu đo tới trung tâm để lưu vào hồ sơ bệnh nhân. Dữ liệu được sử dụng cho ứng dụng được lấy từ cơ sở dữ liệu của bệnh nhân loạn nhịp tim MIT-BIH Arrhythmia Database. Phần lớn được đo ở chuyển đạo II (lead II) với các điện cực được gắn ở ngực bệnh nhân. Tín hiệu analog được qua bộ lọc có dải thông 0.1 – 100 Hz và bộ lọc triệt tần 60 Hz và được số hóa bởi bộ ADC. [10] Dữ liệu số hóa có dạng binary (định dạng file *.dat) được convert sang dạng text (file *.csv). Ứng dụng smartphone sử dụng file *.csv để hiển thị kết quả trên màn hình cũng như gửi về trung tâm để lưu trong hồ sơ bệnh nhân. Về cấu trúc, ứng dụng gồm có 7 activity: Splash Activity: là activity thông báo tên ứng dụng, xuất hiện ngay khi ứng đụng được chạy, tự động chuyển sang activity Menu sau 2 giây. Menu Activity: gồm các nút để người dùng lựa chọn các chức năng của ứng dụng Bluetooth Activity: lấy dữ liệu từ Bluetooth Chart Activity: hiển thị kết quả điện tim trên màn hình smartphone Post Text Activity: gửi bản tin do người dùng nhập vào tới trung tâm Post File Activity: gửi file dữ liệu điện tim (*.csv) tới trung tâm Help Activity: hiển thị thông tin liên lạc với kỹ thuật viên và bác sĩ Ứng dụng được viết cho phiên bản SDK tối thiểu là SDK 8, tức là chạy trên hệ điều hành Android 2.2 hoặc cao hơn. 4.1.1. Cài đặt bộ công cụ phát triển Môi trường phát triển bao gồm: Công cụ phát triển Java JDK Eclipse IDE Công cụ phát triển Android SDK Công cụ mô phỏng Gói ADT Bundle được dùng là adt-bundle-windows-x86_64-20140702 bao gồm bộ công cụ SDK và Eclipse tích hợp plug-in ADT chạy trên Windows 7 64 bit. Công cụ mô phỏng được sử dụng là GenyMotion phiên bản 2.3.0. Máy ảo dùng để mô phỏng chạy Android 2.3.7 API 10 có độ phân giải màn hình là 480x800 pixels.
  43. 39 4.1.2. Project Hình 4.1. Màn hình Eclipse Các thành phần quan trọng của project bao gồm: Thư mục src: chứa các file java, bao gồm hai gói Gói org.afree.chart.demo bao gồm các lớp để vẽ đồ thị o ChartHierachyActivity.java o DemoView.java Gói uet.phuc.ecg: o SplashActivity.java o MenuActivity.java o BluetoothActivity.java o DataView.java o ChartActivity.java o PostTextActivity.java o PostFileActivity.java o HelpActivity.java Thư mục libs: chứa các thư viện sử dụng trong chương trình afreechart-0.0.4.jar android-support-v4.jar
  44. 40 commons-codec-1.6.jar commons-logging-1.13.jar fluent-hc-4.3.6.jar httpclient-4.3.6.jar httpclient-cache-4.3.6.jar httpcore-4.3.3.jar httpmime-4.3.6.jar Thư mục res: Drawable: chứa các file ảnh *.jpg và *.png sử dụng làm logo và icon cho ứng dụng. layout: chứa các file xml thiết kế giao diện cho các activity tương ứng o splash.xml o menu.xml o bluetooth.xml o posttext.xml o postfile.xml o help.xml values: các file xml định nghĩa các màu, kích thước và các string sử dụng trong ứng dụng. o color.xml o dimens.xml o string.xml o styles.xml AndroidManifest.xml: Khai báo các activity Các permission để ứng dụng có thể sử dụng các phần cứng như Bluetooth, Internet 4.2. Cài đặt Server Sử dụng gói XAMPP cho Windows phiên bản 1.8.3-5 bao gồm máy chủ Apache phiên bản 2.4.10, cơ sở dữ liệu MySQL phiên bản 5.6.20, PHP phiên bản 5.5.15. Cấu hình XAMPP tại file /xampp/apache/conf/httpd.conf, sử dụng port 80 và port 7443 thay cho port 443 do xung đột với VMWare. Cơ sở dữ liệu: tạo cơ sở dữ liệu MySQL tại địa chỉ Bao gồm 1 cơ sở dữ liệu ecg có 5 bảng với các thuộc tính và ràng buộc như trong hình 4.2 dưới đây.
  45. 41 Hình 4.2. Cơ sở dữ liệu Web page viết bằng PHP bao gồm: Trang đăng ký thông tin, được lưu vào cơ sở dữ liệu: register.php Trang xử lý thông tin đăng ký: RegisterController.php o Kiểm tra các thông tin hợp lệ o Trường hợp thông tin hợp lệ thì tạo tài khoản trên cơ sở dữ liệu Trang đăng nhập: login.php Trang xử lý thông tin đăng nhập : LoginController.php o So sánh thông tin đăng nhập với cơ sở dữ liệu o Nếu thông tin đúng hiển thị lời chào, thông tin sai yêu cầu nhập lại Trang nhận dữ liệu text từ ứng dụng : receiver.php Trang nhận file dữ liệu từ ứng dụng: receiver2.php Trang danh sách bệnh nhân Trang danh sách bác sĩ Trang bệnh án : o Truy vấn : so sánh tên, số bệnh nhân, bác sĩ o In ra các trường tên bệnh nhân, tên bác sĩ, chẩn đoán
  46. 42 4.3. Thử nghiệm 4.3.1. Ứng dụng Biên dịch project trên Eclipse, chạy ứng dụng trên công cụ mô phỏng Emulator GenyMotion sử dụng máy ảo Android 2.3.7 API 10. Chạy các chức năng Bluetooth, vẽ đồ thị và gửi dữ liệu dạng text và file data tới localhost. Kết quả hiển thị trên công cụ mô phỏng emulator GenyMotion và logcat của Eclipse cho thấy ứng dụng chạy đúng theo yêu cầu. Chạy ứng dụng trên máy thật : HTC Desire A8181 chạy hệ điều hành Android 2.2 cho kết quả giống như chạy trên Emulator. 4.3.2. Server Hình 4.3. Truyền dữ liệu tới server Chạy thử trang web đăng ký tại địa chỉ nhập thông tin đăng ký. Trang đăng nhập tại địa chỉ khi nhập đúng tên đăng nhập và mật khẩu thì chuyển sang trang Danh sách bệnh nhân : Danh sách bác sĩ : Trang dành cho bác sĩ Thông tin nhập vào được xử lý tại Dữ liệu được lưu vào bảng Bệnh án trong cơ sở dữ liệu.
  47. 43 Truy cập bệnh án tại địa chỉ Nhập số bệnh nhân, kết quả trả về thông tin bệnh án tại trang Kết quả chạy, dữ liệu được nhập và truy vấn từ cơ sở dữ liệu đúng theo yêu cầu đặt ra Gửi file dữ liệu (file *.csv) tới địa chỉ Hình 4.3 là LogCat thông báo các tiến trình khởi tạo các activity để truyền dữ liệu. Dữ liệu được gửi tới server bằng bản tin HTTP (Request Message) bao gồm hai phần : tiêu đề chứa tên phương thức POST, phần nội dung (body). Server trả về response 200 OK thông báo quá trình liên lạc giữa client – server hoàn tất. Dữ liệu được gửi tới thư mục \xampp\htdocs\uploads\ trên server. .
  48. 44 KẾT LUẬN Những nội dung của luận văn bao gồm nghiên cứu về lý thuyết và sản phẩm demo. Phần lý thuyết đề cập những nội dung và phương pháp để phát triển ứng dụng thu thập tín hiệu điện tim bao gồm lý thuyết điện tim, hệ điều hành Android. Lý thuyết điện tim được đề cập bao gồm những kiến thức khái quát, nguyên lý, sự hình thành, cách đo điện tim và ý nghĩa dạng sóng. Lý thuyết hệ điều hành Android bao gồm kiến trúc, các thành phần, các công cụ và môi trường phát triển hợp nhất. Ứng dụng demo được trình bày từ quy trình phát triển một sản phẩm phần mềm: khảo sát, xây dựng các biểu đồ ngữ cảnh, phân rã chức năng, biểu đồ luồng dữ liệu logic và vật lý, đặc tả cơ sở dữ liệu vật lý. Sản phẩm demo bao gồm ứng dụng smartphone được viết cho hệ điều hành Android có chức năng xử lý và hiển thị kết quả điện tim, gửi dữ liệu về server qua giao thức HTTP. Về phía server, cơ sở dữ liệu được xây dựng trên MySQL, các trang web viết bằng PHP. Do phạm vi của đề tài nên việc xây dựng phần cứng (hệ đo) chưa được thực hiện. Điều đó dẫn đến khó khăn trong việc xây dựng một giải pháp tổng thể để phát triển hệ thống từ hệ đo trên bệnh nhân tới ứng dụng smartphone và server. Bên cạnh đó, do không đặt trọng tâm vào phần đồ họa nên đồ thị biểu diễn tín hiệu điện tim trên ứng dụng còn đơn giản, không biểu diễn dạng sóng theo thời gian thực (real-time). Ứng dụng truyền dữ liệu tới trung tâm bằng giao thức HTTP chưa đảm bảo tính bảo mật. Hướng phát triển tiếp theo của đề tài là sử dụng các giao thức bảo mật cao hơn được dùng như chuẩn thông tin y tế được các nước đang sử dụng như bộ giao thức HL7. Hiện nay việc ứng dụng công nghệ thông tin và điện tử viễn thông trong lĩnh vực y học hứa hẹn rất nhiều triển vọng. Hướng phát triển tiếp theo của đề tài là thiết kế hệ đo bao gồm điện cực thu tín hiệu điện tim trên da bệnh nhân, khuếch đại tín hiệu và lọc nhiễu, các bộ lọc bao gồm bộ lọc thông thấp, bộ lọc triệt tần và số hóa ADC. Hoàn thiện giải pháp chăm sóc sức khỏe từ xa giúp người bệnh được chăm sóc liên tục mà không cần tới bệnh viện, rút ngắn khoảng cách địa lý.
  49. 45 TÀI LIỆU THAM KHẢO 1. WHO. Cardiovascular disease 2014; Available from: 2. CIA. The World Factbook. 2014; Available from: factbook/geos/vm.html. 3. Xia, H., I. Asif, and X. Zhao, Cloud-ECG for real time ECG monitoring and analysis. Computer methods and programs in biomedicine, 2013: p. 253-259. 4. Gradl, S., et al., Real-time ECG monitoring and arrhythmia detection using Android-based mobile devices. Engineering in Medicine and Biology Society (EMBC), 2012 Annual International Conference of the IEEE 2012: p. 2452 - 2455. 5. Akram, A., R. Javed, and A. Ahmad, Android Based ECG Monitoring System. International Journal of Science and Research (IJSR), 2013. 2(11). 6. Chan, V., P. Ray, and N. Parameswaran, Mobile e-Health monitoring: an agent-based approach. Communications, IET, 2008. 2(2). 7. Malmivuo, J. and R. Plonsey, Bioelectromagnetism: Principles and Applications of Bioelectric and Biomagnetic Fields 1995: Oxford University Press. 8. Ableson, F., C. Collins, and R. Sen, Unlocking Android 2009: Manning. 9. Komatineni, S. and D. MacLean, Pro Android 4 2012: Apress. 10. Moody, G.B. MIT-BIH Arrhythmia Database. 2010; Available from: