Міністерство освіти та науки України
Національний Університет "Львівська Політехніка"
Кафедра ЕОМ
Курсова робота
На тему:”Структурно функціональне проектування
діагностичних систем ”
1 Зміст.
Зміст……………………………………………………………….….………2
Вступ…………………………………………………………….…….……...3
3. Завдання. ……………………………………………………….….………..4
4. Основні теоретичні відомості………..………………………….….………5
4. 1 Загальний огляд системи діагностики…………………….…………5
4. 2 Передобробка ……………………………………………….………..6
4. 3 Етап аналізу…………………………………………………….…..…6
4. 4 Планарна електрокардіограма ЕКГ……………………….…………8
4. 5 Аналіз ЕКГ у часовій області………..………………………………9
5.Опис програми………………………..…………………………….………...10
6. Лістинг програми…………………………………………………………….13
Література………………………………….……………………………..……..19
2.Вступ.
Життедіяльність організму людини пов’язана з постійним обміном речовини, енергії таінформації ,як у цілому організмі так і між організмом і навколишнім середовищем.цей процес називаеться метаблізмом. Цей процес призводить до винекненя фізичних полів в організмі людини та у ближньому навколишньому середовищі.Фізично природа цих полів різна.Це електричні, магнітні поля, електромагнітне поле, теплове поле,акустичне,коефіціенти розподілу поглинання , опорів , коефіцієнтів відбиття , заломлення і т.і.Відхилення метаболізму від норми ,а це патологія, викликає зміну значень параметрів полів ,що їх утворює людський організм . Параметри полів унормі і у випадку патології можуть бути виміряні за допомогою пристроїв,систем,які при наявності при наявності кореляції між виміряними відхиленнями і захворюваннями дає можливість лікарю класифікувати такий параметр тобто встановити обгрунтований діагноз.
Завдання
Проаналізувати заданий відрізок ЕКГ . Порівняння відбувається за такими параметрами:
Амплітуда піків
Часові інтервали між піками.
Відстань між точками.
Створити інтерфейс для лікаря.Дискретизацію вибрати таку , щоб мала похибку не більшу (5% , а похибка визначення інтервалів часу не повинна перевищувати (10%.
4.Основні теоретичні відомості.
4. 1 Загальний огляд системи діагностики
За методами досліджень системи обробки та класифікації біосигнали поділяють на активні та пасивні.У випадку пасивних досліджень відсутня зовнішня дія на біологічний об”єкт і його сигнал має природній або нативний характер.В активних системах сигнал Q(t) є результатом дії якогось стимулу.Біологічний сигнал від організму людини несе інформацію про патологію діяльності організму.сигнали бувають
Сигнали магнітного поля.
Сигнали електричного поля.
Акустичні сигнали.
Ультоазвукові сигнали (f ( 100 kГц , 10-10 Вт/см 2 )
Інфрачервоне випромінювання ((=3(14мкм інтенсивність 10мВт/см2 )
Теплові поля в діапазоні дециметрових хвиль.Це так зване термо-електричне випромінювання інтенсивністю < 10-12 Вт/Гц*см 2.
Хімічна люмінісценція.
Рис.1. Структурна схема системи встановлення діагнозу.
У близькій інфрачервоній та оптичній областях несе інформацію про насичення наприклад крові киснем.Усі ці різні за своєю фізичною природою сигнали реєструються за допомогою давачів перетворювачів. Перетворення відбувається переважно в електричні сигнали для їх подальшої обробки.
4. 2 Передобробка.
Мета передобробки – ліквідація паразитних складових сигналу, які спотворюють сигнал ,що може призвести до невірного діагнозу. Як правило біологічні сигнали невеликої інтенсивності , з високим рівнем шумів, наявністю інших маскуючих сигналів – артефактів. При використанні цифрових методів передобробки ,вони включають в себе відповідне кодування і редукцію даних за рахунок фільтрації певнихскладових сигналу.
4.3 Етап аналізу
Спочатку утворюють формальний опис сигналу з т.з. інформації у сигналі важливої для прийняття рішення у останній фазі- фазі кваліфікації.формальний опис у вибраному координатному базисі , тобто для вибраних елементів форм є математичним образом для кількісної оцінкі ряду відомих синдромів та діагнозів. Набір симптомів та даних утворюють сукупність,що називають синдромом.Симптом – це ряд ознак ,що характеризують визначену хворобу, паталогічний стан.Тому можливо в ідеальному випадку кількісно співставити одержані синдроми та конкретне захворювання.Для встановлення діагнозу на базі експерементальної інформації одержують множину діагностичних гіпотез.якщо наступні вимірюваннявибранівірно (вони дають інформацію про підстройку) томожна послідовно цю множину обмежувати.Цей процес потребуе тестів з високою чутливістю та роздільчою здатністю.Класифікація діагностичних образів є окремим складним питанням.Для біологічних сигналів , в наслідок складності моделювання процесів в організмі велике значення має надійність первинної інформації . Ці результати оцінюють статистично за певними критеріями.В цих критеріяхвводять такі позначення:
VP-Кількість вірно позитивних результатів.
VN- Кількість вірно негативних результатів.
FP- Кількість фальшиво позитивних результатів.
FN- Кількість фальшиво негативних результатів. Тоді критерії такі:
Чутливість.
Специфічність
Надійність
n=VP+FP+VN+FN
Ймовірність того що тест може дати правильну відповідь. N- загальна кількість досліджень.
Позитивно-умовна точність- це ймовірність того ,що патологія має місце в разі позитивного тесту
Негативна умовна точність-це ймовірність відсутності хвороби в разі негативного тесту .
Організація процесу стимуляції і вимірювання біологічних сигналів підпорядковується найважливішому в медицині етичному принципу-не зашкодити,на відміну від технічної діагностики де розв”язуються аналогічні задачі.
4.4 Планарна електрокардіограма ЕКГ.
Найчастіше використовують неінвазійне зчитування ЕКГ.Електроди виготовляють з матеріалу,який під впливом різних рідин не кородують і не роздратовують тканину.Їх виготовляють з сплаву Ag/AgCl (Хлорсрібні електроди).Крім того використовується контактна паста.Ця паста на два порядки знижує опір електрод-шкіра,крім того розширюює частотний діапазон в якому опір практично не залежить від частоти
рис.2.Повний цикл серцебиття.
Базові хвилі ЕКГ позначають P,Q,R,S,T,U.
4.5 Аналіз ЕКГ у часовій області.
Важливими є величини хвиль , відстані між хвилями , і часові інтервали .
Розпізнавання первинних характеристичних складових ЕКГ.
Квантифікація графоелементів . В найпростішому випадку на одному періоді ЕКГ встановлюють відому кількість характеристичних точок (до 24) . Точки обирають таким чином щоб вони визначали координати з яких можна обчислити значення графоелементів ЕКГ . Тобто порівняти координати цих точок .
Обчислення площ над та під ізолініями та наступне їх порівняння.
5.Опис програми
Основна форма програми.
Основна форма містить такі елементи:
Завантаження нової діагностики.
Завантаження допомоги.
Загрузка еталону.
Вивід результату.
Збереження результату
Загрузка попередньої функції.
Вихід з програми.
Форма результату
Форма діагностики
Форма Допомоги
Тут ви зможете дізнатись будь-яку інформацію стосовно програми діагностики.
Лістинг програми
Dim x1, x2, y1, y2, y3 As Integer
Dim krok As Currency
Dim k As Currency
Dim popered(300) As Integer
Dim etalon(300) As Integer
Dim real(300) As Integer
Dim w, w1 As Integer
Dim Y As Integer
Dim t As Integer
Dim tut As Integer
Dim qwerty As Integer
Dim qwerty1 As Integer
Public f_click As Boolean
Public position As Integer
Dim X_coo As Integer
Dim Y_coo As Integer
Dim X_R As Integer
Dim Y_R As Integer
Dim i, j As Integer
Dim f_X As Integer
Dim f_Y As Integer
Dim klient As String
Function Vuvid()
Picture1.Cls
For j = 3 To 11
f_X = MSFlexGrid1.TextMatrix(j, 2) * 60 + 580
f_Y = (MSFlexGrid1.TextMatrix(j, 1) * 60 - 5900) * (-1)
X_R = MSFlexGrid1.TextMatrix(j - 1, 2) * 60 + 580
Y_R = (MSFlexGrid1.TextMatrix(j - 1, 1) * 60 - 5900) * (-1)
Picture1.DrawWidth = 3
Picture1.Line (f_X, f_Y)-(X_R, Y_R), RGB(0, 5, 500)
Picture1.DrawWidth = 9
Picture1.Circle (X_R, Y_R), RGB(0, 0, 0)
Picture1.Print (j - 2)
Next j
Picture1.Circle (f_X, f_Y), RGB(0, 0, 0)
Picture1.Print (10)
For i = 3 To 11
f_X = MSFlexGrid3.TextMatrix(i, 2) * 60 + 580
f_Y = (MSFlexGrid3.TextMatrix(i, 1) * 60 - 5900) * (-1)
X_R = MSFlexGrid3.TextMatrix(i - 1, 2) * 60 + 580
Y_R = (MSFlexGrid3.TextMatrix(i - 1, 1) * 60 - 5900) * (-1)
Picture1.DrawWidth = 3
Picture1.Line (f_X, f_Y)-(X_R, Y_R), RGB(0, 250, 50)
Picture1.DrawWidth = 9
Picture1.Circle (X_R, Y_R), RGB(0, 0, 0)
Picture1.Print (i - 2)
Next i
Picture1.Circle (f_X, f_Y), RGB(0, 0, 0)
Picture1.Print (10)
For i = 3 To 11
f_X = MSFlexGrid2.TextMatrix(i, 2) * 60 + 580
f_Y = (MSFlexGrid2.TextMatrix(i, 1) * 60 - 5900) * (-1)
X_R = MSFlexGrid2.TextMatrix(i - 1, 2) * 60 + 580
Y_R = (MSFlexGrid2.TextMatrix(i - 1, 1) * 60 - 5900) * (-1)
Picture1.DrawWidth = 3
Picture1.Line (f_X, f_Y)-(X_R, Y_R), RGB(400, 50, 0)
Picture1.DrawWidth = 9
Picture1.Circle (X_R, Y_R), RGB(0, 0, 0)
Picture1.Print (i - 2)
Next i
Picture1.Circle (f_X, f_Y), RGB(0, 0, 0)
Picture1.Print (10)
End Function
Private Sub Command1_Click()
Unload Form1
Unload Form2
Unload Form3
End Sub
Private Sub Command2_Click()
If klient = "" Then
ut = MsgBox(" Äàí³ íå çàïèñàí³", , "Âè íå ââåëè ïð³çâèùå ïàö³ºíòà")
Else:
file_as = FreeFile
Open klient & ".dgn" For Output As #file_as
For i = 1 To 10
Print #file_as, MSFlexGrid2.TextMatrix(i + 1, 2)
Next i
For i = 1 To 10
Print #file_as, MSFlexGrid2.TextMatrix(i + 1, 1)
Next i
Print #file_as, " Ðåçóëüòàò ä³àãíîñòèêè ïàö³ºíòà", klient
'Print #file_as, " Äàòà:", Str(DateTime.Date)
'Print #file_as, " ×àñ: ", Str(DateTime.Time)
'For i = 2 To 45
' Print #file_as, "Òî÷êà " & i - 1, MSFlexGrid3.TextMatrix(i, 1), MSFlexGrid3.TextMatrix(i, 2), MSFlexGrid3.TextMatrix(i, 3), MSFlexGrid3.TextMatrix(i, 4)
'Next i
Close #file_as
t = MsgBox("Ðåçóëüòàò çáåðåæåíèé â ôàéë³ " & klient, , "Çáåðåæåííÿ........")
End If
File1.Refresh
End Sub
Private Sub Command3_Click()
On Error GoTo Eror
MSFlexGrid2.TextMatrix(MSFlexGrid2.Row, MSFlexGrid2.Col) = Text1(0).Text
Eror: If Err <> 0 Then
MsgBox "Êîîðäèíàòè íå ââåäåí³ àáî ââåäåí³ íåâ³ðíî ", vbInformation, "Ïîìèëêà ðåäàãóâàííÿ"
End If
Vuvid
Text1(0).Text = 0
Frame8.Enabled = False
End Sub
Private Sub Command4_Click()
klient = Text2.Text
If klient <> "" Then
Picture1.Enabled = True
Command4.Enabled = False
Else
MsgBox "Ïðèçâ³ùå íå âêàçàíî ", vbInformation, "Ïîìèëêà ðåºñòðàö³¿ ïàö³ºíòà"
Exit Sub
End If
End Sub
Private Sub Command5_Click()
Form3.Show
End Sub
Private Sub File1_Click()
If File1.FileName <> "" Then
'MSFlexGrid1.Rows = 1
file_as = FreeFile
Open File1.FileName For Input As #file_as
For i = 1 To 10
Line Input #file_as, strString
'MSFlexGrid3.Rows = MSFlexGrid1.Rows + 1
MSFlexGrid3.TextMatrix(i + 1, 2) = strString
Next i
For i = 1 To 10
Line Input #file_as, strString
MSFlexGrid3.TextMatrix(i + 1, 1) = strString
Next i
Close #file_as
Vuvid
End If
End Sub
Private Sub Form_Load()
MSFlexGrid1.TextMatrix(0, 0) = " Òî÷êà"
MSFlexGrid1.TextMatrix(0, 1) = " U"
MSFlexGrid1.TextMatrix(0, 2) = " T"
MSFlexGrid1.TextMatrix(1, 0) = " ¹ ï\ï"
MSFlexGrid1.TextMatrix(1, 1) = " ìêÂ"
MSFlexGrid1.TextMatrix(1, 2) = " ìêñ"
MSFlexGrid2.TextMatrix(0, 0) = " Òî÷êà"
MSFlexGrid2.TextMatrix(0, 1) = " U"
MSFlexGrid2.TextMatrix(0, 2) = " T"
MSFlexGrid2.TextMatrix(1, 0) = " ¹ ï\ï"
MSFlexGrid2.TextMatrix(1, 1) = " ìêÂ"
MSFlexGrid2.TextMatrix(1, 2) = " ìêñ"
MSFlexGrid3.TextMatrix(0, 0) = " Òî÷êà"
MSFlexGrid3.TextMatrix(0, 1) = " U"
MSFlexGrid3.TextMatrix(0, 2) = " T"
MSFlexGrid3.TextMatrix(1, 0) = " ¹ ï\ï"
MSFlexGrid3.TextMatrix(1, 1) = " ìêÂ"
MSFlexGrid3.TextMatrix(1, 2) = " ìêñ"
For i = 2 To 11
MSFlexGrid2.Rows = MSFlexGrid2.Rows + 1
MSFlexGrid2.TextMatrix(i, 0) = i - 1
MSFlexGrid2.TextMatrix(i, 1) = 0
MSFlexGrid2.TextMatrix(i, 2) = 0
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
MSFlexGrid1.TextMatrix(i, 1) = 0
MSFlexGrid1.TextMatrix(i, 2) = 0
MSFlexGrid1.TextMatrix(i, 0) = i - 1
MSFlexGrid3.Rows = MSFlexGrid3.Rows + 1
MSFlexGrid3.TextMatrix(i, 1) = 0
MSFlexGrid3.TextMatrix(i, 2) = 0
MSFlexGrid3.TextMatrix(i, 0) = i - 1
MSFlexGrid4.Rows = MSFlexGrid4.Rows + 1
MSFlexGrid4.TextMatrix(i, 1) = 0
MSFlexGrid4.TextMatrix(i, 0) = 0
MSFlexGrid5.Rows = MSFlexGrid5.Rows + 1
MSFlexGrid5.TextMatrix(i, 1) = 0
MSFlexGrid5.TextMatrix(i, 0) = 0
Next i
MSFlexGrid1.TextMatrix(2, 1) = 0
MSFlexGrid1.TextMatrix(2, 2) = 10
MSFlexGrid1.TextMatrix(3, 1) = 20
MSFlexGrid1.TextMatrix(3, 2) = 20
MSFlexGrid1.TextMatrix(4, 1) = 11
MSFlexGrid1.TextMatrix(4, 2) = 24
MSFlexGrid1.TextMatrix(5, 1) = 20
MSFlexGrid1.TextMatrix(5, 2) = 30
MSFlexGrid1.TextMatrix(6, 1) = 0
MSFlexGrid1.TextMatrix(6, 2) = 36
MSFlexGrid1.TextMatrix(7, 1) = -7
MSFlexGrid1.TextMatrix(7, 2) = 40
MSFlexGrid1.TextMatrix(8, 1) = 0
MSFlexGrid1.TextMatrix(8, 2) = 45
MSFlexGrid1.TextMatrix(9, 1) = 1
MSFlexGrid1.TextMatrix(9, 2) = 53
MSFlexGrid1.TextMatrix(10, 1) = -10
MSFlexGrid1.TextMatrix(10, 2) = 59
MSFlexGrid1.TextMatrix(11, 1) = 0
MSFlexGrid1.TextMatrix(11, 2) = 68
MSFlexGrid4.TextMatrix(0, 0) = " гçíèöÿ"
MSFlexGrid4.TextMatrix(0, 1) = " ³äíîñíà"
MSFlexGrid5.TextMatrix(0, 0) = " гçíèöÿ"
MSFlexGrid5.TextMatrix(0, 1) = " ³äíîñíà"
MSFlexGrid4.TextMatrix(1, 0) = " ìê "
MSFlexGrid4.TextMatrix(1, 1) = " % "
MSFlexGrid5.TextMatrix(1, 0) = " ìê "
MSFlexGrid5.TextMatrix(1, 1) = " %"
Vuvid
End Sub
Private Sub MSFlexGrid2_Click()
If MSFlexGrid2.Col <> 0 Then
Text1(0).Text = MSFlexGrid2.TextMatrix(MSFlexGrid2.Row, MSFlexGrid2.Col)
Frame8.Enabled = True
'Command3.Default = True
Else:
Frame8.Enabled = False
'Command3.Default = False
End If
End Sub
Private Sub Picture1_Click()
If f_click = False Then
f_X = X_R
f_Y = Y_R
End If
If f_click = True Then
Picture1.DrawWidth = 3
Picture1.Line (f_X, f_Y)-(X_R, Y_R), RGB(400, 50, 0)
f_X = X_R
f_Y = Y_R
End If
position = position + 1
Picture1.DrawWidth = 9
Picture1.Circle (f_X, f_Y), RGB(0, 0, 0)
Picture1.Print (position)
MSFlexGrid2.TextMatrix(position + 1, 2) = Str(X_coo)
MSFlexGrid2.TextMatrix(position + 1, 1) = Str(Y_coo)
f_click = True
If position = 10 Then
MSFlexGrid2.Enabled = True
Picture1.DrawWidth = 9
Picture1.Circle (f_X, f_Y), RGB(0, 0, 0)
Picture1.Print (position)
Picture1.Enabled = False
Vuvid
End If
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
X_R = X
Y_R = Y
X_coo = (X - 580) / 60
Y_coo = (5900 - Y) / 60
End Sub
Private Sub Text2_Change()
Command4.Enabled = True
For i = 2 To 11
MSFlexGrid2.TextMatrix(i, 0) = i - 1
MSFlexGrid2.TextMatrix(i, 1) = 0
MSFlexGrid2.TextMatrix(i, 2) = 0
Next i
position = 0
Vuvid
End Sub
Private Sub Timer1_Timer()
'-------- çíà÷åííÿ--------
Y = 0
For i = 2 To 11
k = 0
y3 = MSFlexGrid3.TextMatrix(i, 1)
Y = Y + 1
popered(Y) = y3
k = k + krok
Next i
'-------- åòàëîíå çíà÷åííÿ--------
Y = 0
For i = 2 To 11
k = 0
y1 = MSFlexGrid1.TextMatrix(i, 1)
Y = Y + 1
etalon(Y) = y1
k = k + krok
Next i
'-------- ðåàëüíå çíà÷åííÿ--------
Y = 0
For i = 2 To 11
k = 0
y2 = MSFlexGrid2.TextMatrix(i, 1)
Y = Y + 1
real(Y) = y2
k = k + krok
Next i
For j = 2 To 11
w = Abs(etalon(j - 1) - real(j - 1))
w1 = Abs(etalon(j - 1) - popered(j - 1))
MSFlexGrid4.TextMatrix(j, 0) = w
MSFlexGrid5.TextMatrix(j, 0) = w1
If etalon(j - 1) <> 0 Then
qwerty = (w / Abs(etalon(j - 1))) * 100
MSFlexGrid4.TextMatrix(j, 1) = qwerty
qwerty1 = (w1 / Abs(etalon(j - 1))) * 100
MSFlexGrid5.TextMatrix(j, 1) = qwerty1
Else
MSFlexGrid4.TextMatrix(j, 1) = "NULL"
MSFlexGrid5.TextMatrix(j, 1) = "NULL"
End If
Next j
End Sub
Література
Дейв Энсор, Йен Стивенсон. Проектирование систем дыагностики в медицине.- BHV, Киев, 1999
Н.Вайнберг .Заболевания сердечно-сосудистой системы.Диагностика. , НИМ
Санкт-Петербург, 1993
Visual Basic 6.0. Руководство для профессионалов. - BHV, Санкт-Петербург, 2000
Всесвітня інформаційна мережа Internet.