2.6.1 Nhiệm vụ của chương trình điều khiển
Trên cơ sởsơ đồ khối của mạch đo thông số sinh tồn, sơ đồ chức năng chương trình điều khiển đã được xây dựng. Các chức năng cần phải có của khối điều khiển gồm theo gồm các nội dung như sau:
• Có các giao tiếp kết nối chuẩn theo linh kiện • Lọc nhiễu khi đo các thông số
• Chương trình chỉ hoạt động khi có tín hiệu từ phần mềm trên máy tính Từđó, sơ đồ khối chức năng phần mềm điều khiển mạch đo được thiết kếnhư trên Hình 2.17.
36
Hình 2.17 Sơ đồ chức năng của chương trình điều khiển
2.6.2 Lựa chọn ngôn ngữ và môi trường phát triển
Từ yêu cầu của đề tài, chương trình điều khiển của mạch đo đã được phân tích, thiết kế và xây dựng hoàn thiện có nhiệm vụ kết nối, điều khiển các thành phần của mạch đo thông số sinh tồn, kết quả thực hiện đạt được các mục tiêu thiết kếvà đáp ứng đúng với các nội dung của đề tài nghiên cứu đặt ra.
Chương trình điều khiển được lập trình bằng ngôn ngữ lập trình C++. Ngôn ngữ lập trình C++ là một ngôn ngữ lập trình hướng đối tượng (OOP – Object – oriented programming) được phát triển bởi Bjarne Stroustrup. C++ là ngôn ngữ lập trình được phát triển trên nền tảng của ngôn ngữ lập trình C. Do đó, C++ có song song cả 2 style lập trình hướng cấu trúc giống C và có thêm style hướng đối tượng. Trong nhiều trường hợp, C++ sử dụng kết hợp cả 2 style trên, Do đó, nó được xem là một ngôn ngữ “lai tạo”.
Ngôn ngữ C++ là một ngôn ngữ lập trình cấp trung. Bởi vì nó có các tính chất của cả ngôn ngữ lập trình bậc thấp (Pascal, C, …) và ngôn ngữ lập tình bậc cao (C#, Java, Python, …). Ngôn ngữ lập trình C++ có đuôi mở rộng là .cpp. C++ là sự lựa chọn tốt để lập trình chương trình điều khiển trong đề tài này.
Sau khi lựa chọn ngôn ngữ lập trình, cần có một môi trường phát triển phù hợp với ngôn ngữđó. Môi trường lập trình (IDE) được lựa chọn là Arduino IDE – Phần mềm lập trình mã nguồn mở miễn phí. IDE trong Arduino IDE là phần có
37 nghĩa là mã nguồn mở, nghĩa là phần mềm này miễn phí cả về phần tải về lẫn phần bản quyền: Người dùng có quyền sửa đổi, cải tiến, phát triển, nâng cấp theo một số nguyên tắc chung được nhà phát hành cho phép.
Hình 2.18 Giao diện chính Arduino IDE
2.6.3 Một số hàm sử dụng trong chương trình điều khiển
Khi đo thông số sinh tồn, người quản trị sẽ yêu cầu người được đo sẽ đặt ngón tay trỏ tại vị trí yêu cầu để đo nhịp tim và nồng độ bão hoà Oxy trong máu. Cảm biến nhiệt độ sẽđược kẹp vào nách người được đo, hình ảnh minh họa được biểu thị tại Hình 2.19. Sau đó, người quản trị sẽ chạy tính năng đo trên phần mềm đã cài đặt trên máy tính. Khi vi điều khiển nhận lệnh điều khiển từ phần mềm, mạch đo sẽ hoạt động, các cảm biến sẽ gửi dữ liệu vềvi điều khiển để xử lý tính toán ra kết quả. Sau khi có kết quả, kết quảnày được vi điều khiển gửi lên phần mềm thông qua kết nối cổng COM.
38
Hình 2.19 Hình ảnh minh họa vị trí đo chỉ số sinh tồn
Trong quá trình đo nếu xảy ra lỗi, có thể chọn chức năng Reset trên phần mềm, chương trình trong vi xử lý sẽ chạy lại từ đầu, bắt đầu quá trình đo mới. Ngoài ra có thể tạm dừng quá trình đo thông số sinh tồn vì một lý do khách quan từ phần mềm.
Do đó, cần một sốhàm đặc trưng để thực hiện chức năng trên nhưdưới đây:
Hàm ngắt interrupt(). Là những lời gọi hàm tựđộng khi hệ thống sinh ra một sự kiện. Những sự kiện này được nhà sản xuất vi điều khiển thiết lập bằng phần cứng và được cấu hình trong phần mềm bằng những tên gọi cốđịnh. Ngắt giúp chương trình gọn nhẹ và xửlý nhanh hơn. Trong đề tài này, hàm ngắt hoạt động khi có tín hiệu từ phần mềm trên máy tính cụ thể là khi chọn “Pause”.
Hàm Switch … case… Là một cấu trúc điều khiển và rẽ nhánh hoàn toàn có thể được thay thế bằng cấu trúc if else. Việc sử dụng switch case sẽ giúp việc lập trình dễ viết và cho hiệu năng tốt hơn.
switch (state) { case 1: câu lệnh break; …. case n: câu lệnh break; }
39 Trong đó, state là giá trị hằng, nếu có 1 case nào đó khớp giá trị, các khối lệnh tương ứng sau case đó sẽđược thực hiện khi tới gặp lệnh break;. Do đó, nếu chúng ta không sử dụng break thì tất cả các case kể từ case khớp giá trị đều được thực hiện. Trong đề tài state sẽđược gán bằng các giá trịnhư “1”, “2”, “3”. Khi vi điều khiển nhận được các giá trị trên từ phần mềm sẽ chạy một chức năng đã lập trình.
2.7 Đánh giá độ chính xác của mạch đo chỉ số sinh tồn 2.7.1 Sai số hệ thống 2.7.1 Sai số hệ thống
Mạch đo sử dụng hai loại cảm biến là cảm biến đo nhịp tim, SpO2 Max30100 và cảm biến nhiệt độ DS18B20. Mỗi cảm biến được nhà sản xuất công bố một giá trị sai số cụ thể, với cảm biến nhiệt độ DS18B20 sai số hệ thống là ± 0.5oC, còn đối với cảm biến max30100 là 4%. Ngoài ra, đểđánh giá sai số chi tiết của từng cảm biến cũng như toàn mạch đo thì sẽ so sánh các giá trị đo được của mạch đo chỉ số sinh tồn với các thiết bị chuẩn thường được sử dụng trong các cơ sở y tế.
2.7.2 So sánh chỉ số của mạch đo với thiết bị chuẩn
Đánh giá sai số một cách chính xác nhất có thể, cần chuẩn bị:
• Nhiệt kế thuỷngân: dùng để so sánh với cảm biến nhiệt độ DS18B20; • Máy đo nồng độ SpO2 kèm nhịp tim: dùng để so sánh với cảm biến
Max30100;
• Số mẫu đo: 15 người tương ứng với 15 mẫu đo
Dữ liệu nhiệt độ, nhịp tim, và SpO2được đo trên 15 người bằng mạch đo và bằng các thiết bị dùng đểđối sánh đểđánh giá độ chính xác của mạch đo. Bài thống kê 2-sample t-test được dùng để so sánh sự khác nhau của 2 tập giá trị, với p < 0.05 thể hiện hai tập giá trị khác nhau về mặt thống kê. Giá trịp > 0.05 thể hiện hai tập giá trị không có sai khác về mặt thống kê.
40
Hình 2.20 Nhiệt kế thủy ngân
Cách đo nhiệt kế thuỷngân như sau:
• Vảy nhẹ nhiệt kếđể vạch đo trở về vị trí ban đầu;
• Đặt nhiệt kếvào hõm nách, sau đó khép tay lại. Giữ tay khép lại, phần cẳng tay đểtrước ngang ngực
• Sau 5 phút, rút nhiệt kếra và đọc kết quả
Với cảm biến nhiệt độ DS18B20, áp dụng cách đo như nhiệt kế thuỷ ngân, sau 5 phút đọc kết quả trên màn hình máy tính.
Hình 2.21 Kết quả đo nhiệt độ bằng nhiệt kế thủy ngân và DS18B20 của mẫu
41
Cách đo của máy Lk87 như sau:
• Mở kẹp, đặt ngón tay vào khe kẹp sao cho đầu ngón tay chạm vào điểm tận cùng của máy sao cho đầu ngón tay che kín bộ phận cảm biến trong khe kẹp.
• Nhấn nút nguồn để khởi động máy. Không cửđược cửđộng tay, hoạt động mạch, giữcơ thể trạng thái thư giãn nhất.
• Kết quả sẽđược hển thị trên màn hình
Hình 2.22 Máy đo nồng độ bão hoã Oxy trong máu SpO2 Lk87
Thiết bị này có thông số kỹ thuật của hãng công bốnhư sau: • Độ chính xác: Nhịp tim ±2bpm, SpO2 ±2%
• Phạm vi đo: nhịp tim 30-250 bpm, SpO2 0 – 100%
42
Bảng 2.1 Bảng kết qua đo nhiệt độ (oC)
Nhiệt kế
thủy ngân Cảm biến DS18B20
Mẫu 1 36.3 36.25 Mẫu 2 36.2 36.15 Mẫu 3 36.2 36.25 Mẫu 4 36.3 36.1 Mẫu 5 36.2 36.25 Mẫu 6 36.3 36.25 Mẫu 7 36.3 36.5 Mẫu 8 36.3 36.4 Mẫu 9 36.3 36.2 Mẫu 10 36.3 36.2 Mẫu 11 36.3 36.3 Mẫu 12 36.3 36.2 Mẫu 13 36.3 36.1 Mẫu 14 36.3 36.1 Mẫu 15 36.3 36.2
p-value (paired 2 sample t-test) 0.114
Bảng 2.2 Bảng kết quả đo nhịp tim (nhịp/phút)
Lk87 Max30100 Mẫu 1 72 73 Mẫu 2 72 74 Mẫu 3 73 70 Mẫu 4 74 74 Mẫu 5 72 71 Mẫu 6 81 81 Mẫu 7 80 83 Mẫu 8 80 83 Mẫu 9 82 82 Mẫu 10 80 83 Mẫu 11 89 89
43
Mẫu 12 90 88
Mẫu 13 88 85
Mẫu 14 89 92
Mẫu 15 89 89
p-value (paired 2 sample t-test) 0.472
Bảng 2.3 Bảng kết quả đo SpO2 (%)
Lk87 Max30100 Mẫu 1 99 98 Mẫu 2 99 98 Mẫu 3 99 98 Mẫu 4 99 98 Mẫu 5 99 98 Mẫu 6 99 99 Mẫu 7 98 99 Mẫu 8 99 99 Mẫu 9 99 99 Mẫu 10 99 99 Mẫu 11 97 37 Mẫu 12 97 97 Mẫu 13 98 97 Mẫu 14 97 97 Mẫu 15 97 97
p value (paired 2 sample t-test) 0.294
Các giá trị p của 3 phép so sánh đều > 0.05, từđó có thể kết luận rằng mạch đo cho kết quả không có sai khác mang tính thống kê so với các thiết bịđang được dùng trên thị trường. Vì vậy, kết quảđo được có thể sử dụng để đưa vào bệnh án điện tử.
2.8 Kết luận chương
Trên cơ sở nghiên cứu, chương này đã trình bày cách thức thiết kế mạch đo thông số sinh tồn. Mạch đo đã đáp ứng được yêu cầu của đề tài, kết nối với máy tính và gửi dữ liệu đo được vềmáy tính khi được yêu cầu. Trong chương tiếp theo, luận văn sẽ trình bày về phần mềm quản lý bệnh án điện tử kèm chức năng đo thông số sinh tồn.
44
CHƯƠNG 3.PHẦN MỀM BỆNH ÁN ĐIỆN TỬ
Chương 2 đã trình bày về mạch đo các thông số sinh tồn của cơ thể và cách giao tiếp để gửi dữ liệu lên máy tính. Chương này sẽ giới thiệu về cách thiết kế, xây dựng phần mềm bệnh án điện tử.
3.1 Mô tảsơ bộ về phần mềm
Phần mềm sẽđược thiết kế với chức năng chínhnhư cho phép nhập thông tin bệnh nhân từ bàn phím, nhận kết quả đo thông số sinh tồn từ mạch đo thông số sinh tồn. Ngoài ra, phần mềm cung cấp một số chức năng khác như: chỉnh sửa thông tin bệnh nhân khi có yêu cầu, quản lý thông tin nhân viên y tế, quản lý phòng bệnh trong bệnh viện và quản lý bệnh nhân đã xuất viện. Các tính năng này đang trong quá trình hoàn thiện đểđáp ứng nhu cầu thực tế.
3.2 Phân tích thiết kế hệ thống
Luận văn sử dụng phương pháp phân tích thiết kế hệ thống hướng cấu trúc, là cách phân tích thiết kế hệ thống thông tin theo hướng module hoá để dễ theo dõi, quản lý, bảo trì.
Các phương pháp luận hướng cấu trúc sử dụng một hay một số công cụđể xác định luồng thông tin và các quá trình xử lý. Việc xác định và chi tiết hoá dần các luồng dữ liệu và các tiến trình là ý tưởng cơ bản của phương pháp luận từ trên xuống.
Từ mức 0: mức chung nhất, quá trình tiếp tục làm mịn cho đến mức thấp nhất: mức cơ sở. Ởđó từcác sơ đồ nhận được ta có thể bắt đầu tạo lập các chương trình với các module thấp nhất (module lá).
Cách tiếp cận này đã cung cấp một tập hợp đầy đủcác đặc tả hệ thống không dư thừa được phát triển theo quá trình logic và lặp lại.
Các lợi ích trong việc phân tích thiết kế hệ thống hướng cấu trúc: • Làm giảm sự phức tạp (nhờ chia nhỏ, module hoá)
45 • Tập trung vào ý tưởng (vào logic, kiến trúc trước khi thiết kế)
• Chuẩn mực hoá (theo các phương pháp, công cụđã cho) • Hướng vềtương lai (kiến trúc tốt, module hoá đễ bảo trì)
• Giảm bớt tính nghệ thuật trong thiết kế (phát triển hệ thống phải tuân thủ các quy tắc và phương pháp)
3.3 Công cụ thiết kế phần mềm 3.3.1 Ngôn ngữ Visual Basic 3.3.1 Ngôn ngữ Visual Basic
Visual Basic là công cụ mạnh nhất để phát triển ứng dụng trên nền Windows. Thành phần “Visual” đã nói đến các phương thức dùng để tạo giao diện đồ họa người sử dụng (GUI). Thay vì phải viết những dòng mã để mô tả sự xuất hiện và vị trí của những thành phần giao diện, ta chỉ cần thêm vào các đối tượng đã được định nghĩa trước ở vịtrí nào đó trên màn hình. Ngoài những tính năng tương thích với các phiên bản VB trước đó, VB6 còn hỗ trợ phát triển ứng dụng trên nền 32 bit, tạo tệp tin thi hành và khảnăng lập điều khiển (Control của chính mình, tăng cường cho Internet và có các tính năng cơ sở dữ liệu mạnh hơn). Một ứng dụng Visual Basic có thể bao gồm một hay nhiều Project được nhóm lại với nhau. Mỗi Project có thể bao gồm một hay nhiều mẫu biểu (Form). Trên một Form cũng có thểđặt các điều khiển khác nhau. Để phát triển một ứng dụng Visual Basic, sau khi đã tiến hành phân tích thiết kế, xây dựng CSDL, cần phải qua 3 bước chính:
• Bước 1: Thiết kế giao diện, Visual Basic dễ dàng cho bạn thiết kế giao diện và kích hoạt mọi thủ tục bằng mã lệnh.
• Bước 2: Viết mã lệnh nhằm kích hoạt giao diện đã xây dựng. • Bước 3: Chỉnh sửa và tìm lỗi.
3.3.1.1.Các thành phần chính của Visual Basic
Do Visual Basic là ngôn ngữ lập trình hướng đối tượng nên việc thiết kế giao
diện rất đơn giản bằng cách đưa các đối tượng vào Form và tiến hành thay đổi một số thuộc tính của các đối tượng đó.
46
Form
Form là biểu mẫu của mỗi ứng dụng trong Visual Basic. Form (như là một biểu mẫu) được sử dụng nhằm định vị và sắp xếp các bộ phận trên nó khi thiết kế các phần giao tiếp với người dùng. Form được xem như là bộ phận mà nó có thể chứa các bộ phận khác. Form chính của ứng dụng, các thành phần của nó tương tác với các Form khác và các bộ phận của chúng tạo nên giao tiếp cho ứng dụng. Form chính là giao diện chính của ứng dụng, các Form khác có thể chứa các hộp thoại, hiển thị cho nhập dữ liệu và hơn thế nữa.
Trong nhiều ứng dụng Visual Basic, kích thước và vị trí của mẫu biểu vào lúc hoàn tất thiết kế là kích cỡ và hình dáng mà người dùng sẽ gặp vào lúc chạy chương trình. Điều này có nghĩa là Visual Basic cho phép thay đổi kích cỡ và vị trí của các Form đến bất kì nơi nào trên màn hình khi chạy một đề án, bằng cách thay đổi các thuộc tính của nó trong cửa sổ thuộc tính đối tượng (Properties Windows). Thực tế một trong những tính năng thiết yếu của Visual Basic đó là khảnăng tiến hành các thay đổi động đểđáp ứng các sự kiện của người dùng.
Tool Box(Hộp công cụ)
Các hộp công cụ này chỉ chứa các biểu tượng biểu thị cho các điều khiển mà ta có thể bổ sung vào biểu mẫu, là bảng chứa các đối tượng được định nghĩa sẵn của Visual Basic. Các đối tượng này được sử dụng trong Form để tạo thành giao diện cho các chương trình ứng dụng của Visual Basic. Các đối tượng trong thanh công cụsau đây là thông dụng nhất:
• Scroll Bar (Thanh cuộn).
• Option Button Control (Nút chọn). • Check Box (Hộp kiểm tra).
• Label (Nhãn). • Image (hình ảnh). • Picture Box.
• Text Box (Hộp soạn thảo). • Command Button (Nút lệnh).
47 • Directory List Box, Drive List Box, File List Box.
• List Box (hộp danh sách).
Properties Windows(cửa sổ thuộc tính)
Properties Windows là nơi chứa danh sách các thuộc tính của một đối tượng cụ thể. Các thuộc tính này có thểthay đổi được để phù hợp với các yêu cầu về giao diện của các chương trình ứng dụng
Project Explorer
Do các ứng dụng của Visual Basic thường dùng chung mã hoặc các Form đã tuỳ biến trước đó nên Visual Basic 6 tổ chức các ứng dụng thành các Project. Mỗi Project có thể có nhiều Form và mã kích hoạt các điều khiển trên một Form sẽ được lưu trữ chung với Form đó trong các tệp tin riêng biệt. Mã lập trình chung