3.6.1. Đầu vào của bài toán chẩn đoán chứng cam
Để triển khai tổng thể của bài toán chẩn đoán chứng cam của trẻ em cần rất nhiều thời gian, công sức, kỹ thuật và kinh tế. Do vậy, trong phạm vi luận văn tác giả sẽ thực hiện thử nghiệm triển khai một phần của bài toán này. Mục tiêu chính của việc thử nghiệm là mô tả đƣợc hoạt động, bảo đảm đúng ý tƣởng của hệ thống đã đề ra.
Về công nghệ sử dụng, tác giả lựa chọn bộ Visual Studio 2013 và lƣu trữ cơ sở tri thức trên hệ quản trị cơ sở dữ liệu SQL. Ứng dụng chạy trên chạy trên hệ điều hành Windows.
Mục tiêu đạt đƣợc trong thử nghiệm hình dung nhƣ sau: + Đầu vào của bài toán là triệu chứng ban đầu.
+ Quá trình chẩn đoán của hệ thống:
- Từ triệu chứng ban đầu sẽ có các câu hỏi liên quan đến các biểu hiện bệnh liên quan đến triệu chứng ban đầu đó.
- Các câu hỏi sẽ tuân theo cây nhị phân. Dựa theo cây nhị phân mỗi một nút là một câu hỏi gắn liền với biểu hiện của từng chứng cam có dạng trả lời là “có” thì đi sang nhánh trái của cây hoặc “không” thì đi sang nhánh phải của cây để phân tích và chẩn đoán cho đến khi kết luận đƣợc chứng cam gì và có bài thuốc tƣơng ứng với chứng cam đó.
+ Kết quả của bài toán là đƣa ra đƣợc chứng cam gì và bài thuốc tƣơng ứng hoặc đƣa ra kết luận là “không chẩn đoán đƣợc do thiếu các biểu hiện”.
65
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.6.1.1 Biểu diễn tri thức các chứng cam
Cơ sở tri thức của hệ chuyên gia chẩn đoán chứng cam cho trẻ em là các triệu chứng ban đầu và các biểu hiện của bệnh thông qua 4 phƣơng pháp chẩn đoán bệnh.
Đầu vào của bài toán chẩn đoán chứng cam là triệu chứng ban đầu và cũng là triệu chứng chính quyết định là trẻ em mắc chứng cam gì.
+ Triệu chứng ban đầu sẽ đƣợc mô tả nhƣ sau:
Triệu chứng (Triệu chứng id, Tên triệu chứng, Mô tả).
+ Từ các triệu chứng ban đầu sẽ đi kèm với các biểu hiện tiếp theo của
chứng cam. Các biểu hiện sẽ đƣợc mô tả nhƣ sau:
Biểu hiện ( Biểu hiện id, Tên biểu hiện, Câu hỏi, Parent id, Nhánh trả lời, Triệu chứng id).
+ Sau khi đã tổng hợp từ triệu chứng ban đầu và các biểu hiện của chứng cam sẽ đƣa ra đƣợc kết luận.
Kết luận (Bệnh id, Biểu hiện id, Nhánh trả lời).
+ Sau khi có kết luận là chứng cam gì sẽ biết đƣợc tên bệnh tƣơng ứng
(hoặc không đƣa ra đƣợc kết luận bệnh vì không đủ các biểu hiện) và có bài thuốc kèm theo.
66
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.6.1.2 Mô hình quan hệ giữa các tri thức
Hình 3.1 Mô hình quan hệ giữa các tri thức
Giải thích:
* Bảng triệu chứng: Là nơi chứa các triệu chứng ban đầu.
+ Triệu chứng id: Trỏ đến Triệu chứng id của bảng biểu hiện tiếp theo của triệu chứng đó. Triệu chứng + Tên triệu chứng + Mô tả + Triệu chứng id Biểu hiện
+ Tên biểu hiện + Câu hỏi + Nhánh trả lời + Biểu hiện id +Triệu chứng id + Parent id Kết luận + Nhánh trả lời + Bệnh id + Biểu hiện id Bệnh + Bệnh id + Mô tả + Bài thuốc + Tên bệnh
67
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ + Tên triệu chứng
+ Mô tả: Mô tả vắn tắt triệu chứng
+ Tên biểu hiện: Mô tả ngắn biểu hiện của bệnh.
* Bảng Biểu hiện: Là nơi chứa các biểu hiện tiếp theo của từng triệu chứng.
+ Tên biểu hiện: Mô tả ngắn biểu hiện của bệnh. + Câu hỏi: Câu hỏi cho từng biểu hiện.
+ Parent id: dùng để phân cấp phân biệt câu hỏi cha và con trong cây nhị phân. Parent id = null (Biểu hiện đầu tiên của triệu chứng). Parent id đƣợc trỏ tới bởi biểu hiện id.
+ Nhánh trả lời: Phân nhánh câu trả lời khi “có” hoặc “không”.
+ Biểu hiện id: Sẽ đƣợc liên kết với bảng kết luận thông qua trƣờng này. + Triệu chứng id: Là trƣờng dùng để liên kết với bảng triệu chứng.
* Bảng kết luận: Là nơi lƣu danh sách có chứng cam hay không tƣơng ứng với câu trả lời là “có” hoặc “không” của từng biểu hiện và đƣa ra kết luận tƣơng ứng.
+ Nhánh trả lời: Là nơi chứa tên của chứng cam hoặc là nơi chứa kết luận không tìm thấy chứng cam.
+ Bệnh id: Là trƣờng dùng để liên kết đến bảng Bệnh.
+ Biểu hiện id: Sẽ đƣợc liên kết với bảng biểu hiện thông qua trƣờng này.
* Bảng bệnh: Lƣu danh sách các chứng cam.
68
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ + Tên bệnh: Tên của từng chứng cam.
+ Bài thuốc: Nội dung của bài thuốc tƣơng ứng với từng chứng cam. + Mô tả: Mô tả vắn tắt chứng cam.
3.6.2. Xây dựng các động cơ suy diễn cho các chứng cam
3.6.2.1 Thuật toán của bài toán chẩn đoán chứng cam của trẻ em
Các động cơ suy diễn sẽ đƣợc suy luận theo phƣơng pháp suy diễn tiến. Dựa theo cây nhị phân mỗi một nút là một câu hỏi gắn liền với biểu hiện của từng chứng cam có dạng trả lời là “có” hoặc “không” để phân tích và chẩn đoán cho đến khi kết luận đƣợc chứng cam gì và có bài thuốc tƣơng ứng với chứng cam đó.
Cây nhị phân sẽ bắt đầu từ khi nhấn chọn triệu chứng ban đầu, từ triệu chứng ban đầu này sẽ xuất hiện câu hỏi cho biểu hiện tiếp theo của chứng cam. Khi câu trả lời là “có” thì sẽ xuất hiện câu hỏi của biểu hiện chứng cam tiếp theo nhƣng đi sang nhánh bên trái của cây. Khi câu trả lời là “không” sẽ xuất hiện câu hỏi tiếp theo nhƣng đi sang nhánh phải của cây.
Thực hiện chuẩn đoán
{
Đƣa ra danh sách các triệu chứng; Ngƣời dùng lựa chọn triệu chứng;
If (không có biểu hiện tƣơng ứng với triệu chứng đƣợc chọn) Thông báo: không tìm thấy biểu hiện của triệu chứng này; Else
{
69
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ RepeatHienThiCauHoi();
Until (có kết luận về bệnh OR Không kết luận đƣợc bệnh) }
}
Thủ tục HienThiCauHoi ()
{
Đƣa ra câu hỏi chuẩn đoán;
IF (lựa chọn chuẩn đoán là Yes) Gọi thủ tục ChuanDoan(True); Else Gọi thủ tục ChuanDoan(False);
}
Thủ tục ChanDoan(Boolean TraLoi)
{
Tìm kết luận tƣơng ứng với câu trả lời: KetLuan(TraLoi); IF (có kết luận)
{
Đƣa ra kết luận và bài thuốc; Kết thúc vòng chuẩn đoán; }
Else {
Tìm biểu hiện tiếp theo dựa vào triệu chứng bệnh; If (không tìm thấy câu hỏi tiếp)
Đƣa ra kết luận không chuẩn đoán đƣợc bệnh; Else
70
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ }
}
Hàm KetLuan(TraLoi)
{
If (TraLoi = True) then
Tìm kết luận theo nhánh phải của cây suy diễn; Else
Tìm kết luận theo nhánh trái của cây suy diễn; Return (Kết luận);
}
3.6.2.2. Hàm xử lý chính của bài toán
protectedvoid Start()
{
if (listCacTrieuChung.SelectedValue != null) //Neu trieu chung duoc chon khac Null
{
TrieuChungID = Convert.ToInt32(listCacTrieuChung.SelectedValue);
try
{
ResetForm(true);
//Lấy biểu hiện bệnh đầu tiên tương ứng với Triệu chứng được chọn
ad = newSqlDataAdapter("Select Top 1 BieuHienID,CauHoi From
tblBieuHien Where TrieuChungID=@TrieuChungID And ParentID Is Null", conn);
ad.SelectCommand.Parameters.AddWithValue("TrieuChungID", TrieuChungID); dt = newDataTable(); ad.Fill(dt); if (dt.Rows.Count > 0) {
txtCauHoi.Text = dt.Rows[0]["CauHoi"].ToString(); BieuHienID = (int)dt.Rows[0]["BieuHienID"]; }
else
{
ResetForm(false);
XtraMessageBox.Show("Không tìm thấy biểu hiện đầu tiên của triệu chứng này.",
"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
} }
71
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
{
MessageBox.Show("Lỗi: " + ex.Message);
} finally { dt.Clear(); dt.Dispose(); } } } 3.6.2.3 Hàm chẩn đoán chứng cam.
privatevoid ChuanDoan(Boolean TraLoi)
{
//TraLoi = Nhận câu trả lời Có hoặc không
//Bắt đầu thêm Rows dữ liệu vào GridView Giải Thích
int index = grvTraLoiCauHoi.Rows.Add();
DataGridViewRow dgvr = grvTraLoiCauHoi.Rows[index];
//Thêm dữ liệu vào các cột
dgvr.Cells["colCauHoi"].Value = txtCauHoi.Text;
dgvr.Cells["colTraLoi"].Value = rdbNo.Checked ? "Không" : "Có"; dgvr.Cells["colBieuHienID"].Value = BieuHienID;
dgvr.Cells["bTraLoi"].Value = TraLoi;
//Tim ket luan tuong ung voi cau tra loi (Ket luan benh)
ad = newSqlDataAdapter("Select top 1 kl.BenhID,b.TenBenh From tblKetLuan kl inner join tblBenh b On kl.BenhID = b.BenhID Where
BieuHienID=@BieuHienID And NhanhTraLoi=@NhanhTraLoi", conn);
ad.SelectCommand.Parameters.AddWithValue("BieuHienID", BieuHienID); ad.SelectCommand.Parameters.AddWithValue("NhanhTraLoi", TraLoi); dt = newDataTable(); ad.Fill(dt); //Nếu có Kết luận bệnh tương ứng với Câu trả lời và Biểu hiện chọn => Kết luận bệnh if (dt.Rows.Count > 0) {
//Kết luận bệnh trả về kết quả vào textbox txtKetLuan
BenhID = (int)dt.Rows[0]["BenhID"];
txtKetLuan.Text = dt.Rows[0]["TenBenh"].ToString();
//Kết thúc vòng chuẩn đoán (disable một số control)
Finished(true); }
//Nếu không tìm thấy kết luận bệnh nào với Câu trả lời và Biểu hiện chọn => Tìm Biểu hiện tiếp theo
72
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
else
{
//Tìm biểu hiện tiếp dựa vảo Triệu Chứng Bệnh, và ParentID (Biểu hiện nhánh tiếp
theo), NhanhTraLoi = Có Hoặc Không
ad = newSqlDataAdapter("Select top 1 BieuHienID,TenBieuHien,CauHoi From tblBieuHien Where TrieuChungID=@TrieuChungID And ParentID = @ParentID And
NhanhTraLoi=@NhanhTraLoi", conn);
ad.SelectCommand.Parameters.AddWithValue("TrieuChungID", TrieuChungID);
ad.SelectCommand.Parameters.AddWithValue("ParentID", BieuHienID); ad.SelectCommand.Parameters.AddWithValue("NhanhTraLoi", TraLoi); dt = newDataTable();
ad.Fill(dt);
//Nếu tìm thấy câu hỏi tiếp theo
if (dt.Rows.Count > 0) {
//Hiển thị câu hỏi vào ô textbox txtCauHoi
txtCauHoi.Text = dt.Rows[0]["CauHoi"].ToString(); BieuHienID = (int)dt.Rows[0]["BieuHienID"]; }
//Nếu không tìm thấy câu hỏi tiếp
else
{
//Kết luận không tìm được bệnh
txtKetLuan.Text = "Không kết luận được bệnh"; BenhID = 0;
//Kết thúc vòng chuẩn đoán (disable một số control)
Finished(false); }
} }
73
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.6.2.4. Cây chẩn đoán triệu chứng“Ăn ít” – Chủ trị Tỳ cam và Can cam
Hình 3.2 Cây nhị phân chẩn đoán chứng cam theo triệu chứng “Ăn ít” Ăn ít và bụng ỏng Chậm tiêu Phân Lỏng Mặt vàng Hay nôn Cam bổ tỳ (Mức nhẹ) Cam bổ tỳ (Mức TB) Cam bổ tỳ (Mức nặng) Không kết luận đƣợc bệnh Khát nƣớc Phân sống
Đầy hơi trung tiện Cam chính khí (mức nhẹ) Cam chính khí (mức nhẹ) Không kết luận đƣợc bệnh Hôi mồm Có giun
Cam nhiệt Không kết luận
74
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.6.2.5. Cây chẩn đoán triệu chứng“Đêm ngủ giật mình"- Chủ trị Tâm cam
Hình 3.3 Cây nhị phân chứng cam theo triệu chứng “Đêm ngủ giật mình”
Đêm ngủ giật mình và ăn kém Phân nhão Quấy khóc Tâm – Tỳ hƣ (Mức nhẹ) Hay sợ Tâm – Tỳ hƣ (Mức TB) Tâm – Tỳ hƣ (Mức nặng) Không kết luận đƣợc bệnh Nƣớc tiểu vàng
Lƣỡi đỏ Tâm nhiệt
(Mức nhẹ)
Miệng lở Tâm nhiệt
Buồn phiền Tâm nhiệt – Tỳ
hƣ (mức nhẹ)
Tâm nhiệt – Tỳ hƣ
Không kết luận đƣợc bệnh
75
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.6.3.6. Cây chẩn đoánt triệu chứng “Đái dầm” – Chủ trị Thận cam
Hình 3.4 Cây nhị phân chứng cam theo triệu chứng “Đái dầm”
Đái dầm và nghiến răng
Nƣớc tiểu vàng
Giật mình Thận dƣơng nhiệt (mức nhẹ)
Thận dƣơng nhiệt Tâm nhiệt (Mức nhẹ) Chân tay lạnh Nƣớc tiểu trong Thận âm hàn (mức nhẹ) Đêm nằm bị lạnh Thận âm hàn (mức nặng) Thận âm hàn (mức TB) Không kết luận đƣợc bệnh
76
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.6.3.7. Cây chẩn đoán triệu chứng “Ho” – Chủ trị Phế cam
Hình 3.5 Cây nhị phân chứng cam theo triệu chứng “Ho”
Ho và tự chọc ngón tay vào tai
Chảy nƣớc mũi
Viêm tai Không kết luận
đƣợc bệnh Có mồ hôi Khát nƣớc Tiểu tiện ít màu vàng Phong nhiệt (Mức nhẹ) Mu bàn tay nóng Phong nhiệt (Mức TB) Phong nhiệt (Mức TB) Không kết luận đƣợc bệnh Phong hàn (Mức nhẹ) Tiểu tiện trong Ít uống nƣớc Phong hàn (Mức TB) Đầu ngón tay lạnh Không kết luận đƣợc bệnh Phong hàn (Mức nặng)
77
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.6.3.8. Cây chẩn đoán triệu chứng “Mụn nhọt”– Chủ trị Can cam
Hình 3.6 Cây nhị phân chứng cam theo triệu chứng “Mụn nhọt”
Không kết luận đƣợc bệnh Mụn có rắn không
Có màu
đỏ chƣa? trắng không? Đầu mụn có
Giai đoạn đầu
Nƣớc tiểu có màu vàng không
Đại tiện có táo không
Giai đoạn hóa mủ (mức nhẹ)
Giai đoạn hóa mủ Không kết luận
đƣợc bệnh Có hạch gần nơi mụn không Có sốt không Giai đoạn vỡ mủ Giai đoạn đầu Chuẩn bị vỡ mủ
79
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
3.7. Giao diện và kết quả kiểm thử của trƣơng trình
Phần này thể hiện một vài chức năng trong phần demo của phần mềm “Hệ chuyên gia chẩn đoán chứng cam cho trẻ em”. Phần mềm sử dụng đơn giản không phức tạp và đã phần nào mô phỏng đƣợc một hệ chuyên gia.
Trong ứng dụng này ngƣời sử dụng chỉ việc chọn các triệu chứng thì ứng dụng sẽ đƣa ra các câu hỏi tƣơng ứng với các biểu hiện liên quan đến triệu chứng ban đầu và phần mềm sẽ tự chẩn đoán ra các chứng cam dựa trên các biểu hiện đã hỏi.
Ở phần này sẽ chọn dữ liệu kiểm thử là triệu chứng ban đầu là “Ăn ít” cùng với các biểu hiện kèm theo.
80
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Kết quả trả ra là bài thuốc tƣơng ứng với chứng cam đã đƣợc chẩn đoán.
Hình 3.8 Giao diện bài thuốc
Giao diện này là phần mô tả chức năng thêm các cơ sở tri thức. Ở đây là thêm các “Chứng cam” và các triệu chứng đi kèm cho “chứng cam” đó
81
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
Hình 3.9 Giao diện công cụ
Giao diện này là phần thêm cơ sở tri thức dƣới dạng cây nhị phân đƣợc nhập từ ngoài vào.
Hình 3.10 Form thêm mới cơ sở tri thức
Giao diện này là phần hiển thị và cập nhật loại bỏ các chứng cam ( hay còn gọi là bệnh).
82
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
Giao diện này là phần mô tả chức năng thêm mới ngƣời khám bệnh và mở ra xem lại các ngƣời bệnh đã đƣợc phần mềm chẩn đoán.
83
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
Hình 3.12 Form quản lý bệnh nhân
3.8. Kết luận chƣơng
Chƣơng 3 đã tìm hiểu về quan điểm chữa bệnh của đông y với các quan niệm về Tạng và phủ. Dựa vào các quan niệm đó đã hình thành nên các phƣơng pháp chẩn đoán bệnh đặc thù cho trẻ em thông qua bôn phƣơng pháp chẩn đoán kinh điển đó là “vọng, văn, vấn, thiết”.
Dựa vào các quan niệm và các phƣơng pháp chẩn đoán trên đã bƣớc đầu xây dựng đƣợc các triệu chứng của các chứng cam và hình thành đƣợc động cơ suy diễn theo phƣơng pháp suy diễn tiến để cho ra kết quả là các chứng cam. Đi kèm với mỗi chứng cam là các bài thuốc gia truyền đã chữa khỏi các chứng cam đã đƣợc mô tả ở trên.
Xây dựng đƣợc chƣơng trình “ Hệ chuyên gia chẩn đoán chứng cam cho trẻ
84
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
TỔNG KẾT
1. Kết quả thủ đƣợc
Về cơ bản luận văn đã xây dựng và mô phỏng đƣợc một hệ chuyên gia chẩn đoán các chứng cam cho trẻ em. Trong quá trình làm luận văn tôi đã thu đƣợc các kết quả sau:
- Có kiến thức về hệ chuyên gia.
- Hiểu biết thêm về các hệ thông minh khác. - Nắm rõ thêm đƣợc các chứng cam của trẻ em.
- Xây dựng đƣợc phần mềm mô phỏng của một hệ chuyên gia.
85
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Bên cạch những vấn đề đạt đạt đƣợc luận văn còn tồn tại nhiều hạn chế:
- Phần mềm xây dựng quá đơn giản và chƣa ứng dụng vào thực tế. Demo