You are on page 1of 49

ĐẠ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
ĐẠ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
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


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.
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
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
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
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
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
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ệ
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 http://physionet.org/.
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.
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.
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
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).
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ụ:
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.
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
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.
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.
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
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
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
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.
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
HT T
P
3G

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.
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
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

Phản hồi

Bệnh án
Chỉ dẫn
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
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
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


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ử
thông tin Theo dõi dụng
c. Danh sách bệnh nhân Chỉ dẫn
bệnh nhân
d. Danh sách bác sĩ

Đăng nhập
e. Phản hồi

f. Báo cáo Danh sách bệnh nhân


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
26

a. Phiếu đăng ký
Thông tin đăng ký

Người sử 1.1
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


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 Họ tên
Username
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ệ


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
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
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
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
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
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
34

Hình 3.13. Màn hình help

3.5.2. Giao diện web


a. Trang đăng ký
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
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
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
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.
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
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ỉ http://localhost/phpmyadmin.
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.
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
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ỉ http://localhost/register.php, nhập thông
tin đăng ký.
Trang đăng nhập tại địa chỉ http://localhost/login.php, khi nhập đúng tên đăng
nhập và mật khẩu thì chuyển sang trang http://localhost/LoginRegister.php.
Danh sách bệnh nhân : http://localhost/DanhSachBenhNhan.php.
Danh sách bác sĩ : http://localhost/DanhSachBacSi.php.
Trang dành cho bác sĩ http://localhost/ChanDoan.php. Thông tin nhập vào được
xử lý tại http://localhost/ChanDoanController.php. Dữ liệu được lưu vào bảng Bệnh án
trong cơ sở dữ liệu.
43

Truy cập bệnh án tại địa chỉ http://localhost/benhan.php. Nhập số bệnh nhân, kết
quả trả về thông tin bệnh án tại trang http://localhost/BenhAnController.php. 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ỉ http://localhost/receiver2.php. 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.
.
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ý.
45

TÀI LIỆU THAM KHẢO


1. WHO. Cardiovascular disease 2014; Available from:
http://www.who.int/cardiovascular_diseases/en/.
2. CIA. The World Factbook. 2014; Available from:
https://www.cia.gov/library/publications/the-world-
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:
http://physionet.org/physiobank/database/html/mitdbdir/intro.htm.

You might also like