ARRH_DET - Elektrokardiografia dla Informatyka Praktyka

Transkrypt

ARRH_DET - Elektrokardiografia dla Informatyka Praktyka
AKADEMIA GÓRNICZO-HUTNICZA
im. St. Staszica w Krakowie
WEAIiE, Katedra Automatyki
Laboratorium Biocybernetyki
Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej.
Temat projektu: Detekcja arytmii.
ARRH_DET
Spis treści:
1
ABSTRAKT .................................................................................................................................................. 3
2
WSTĘP .......................................................................................................................................................... 4
3
KONCEPCJA PROPONOWANEGO ROZWIĄZANIA ......................................................................... 5
4
3.1
Szczegółowa lista arytmii ........................................................................................................................ 5
3.2
Algorytm detekcji .................................................................................................................................... 9
REZULTATY I WNIOSKI ......................................................................................................................... 9
4.1
Wyniki analizy ....................................................................................................................................... 10
5
PODSUMOWANIE ................................................................................................................................... 11
6
LITERATURA ........................................................................................................................................... 11
7
DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA ................ 12
8
DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA ............................................ 12
9
DODATEK C: OPIS INFORMATYCZNY PROCEDUR ..................................................................... 13
10
DODATEK D: SPIS ZAWARTOŚCI CD ................................................................................................ 15
11
DODATEK E: TABELA OBJAWÓW ARYTMII.................................................................................. 15
Wykonali: Tomasz Michalski, Jakub Turoboś
V rok IS
konsultant: dr hab. inż. Piotr Augustyniak
Wersja 1.0.
Kraków, styczeń 2010.
1 Abstrakt
Celem tego projektu jest zaprojektowanie i zaimplementowanie aplikacji, której zadaniem będzie
przeszukiwanie i analiza zapisów EKG w celu znalezienia oraz klasyfikacji podstawowych typów
arytmii serca, takich jak bradykardia, tachykardia, pauzy, migotanie przedsionków itp. W naszej
aplikacji planujemy wykorzystać algorytmy oparte na analizie odległości między zespołami QRS, a
także spróbujemy zbadać działanie algorytmów opartych na cechach sygnału w domenie
częstotliwości.
Słowa kluczowe: arytmia, detekcja arytmii, klasyfikacja arytmii
3
2 Wstęp
Zaburzenie rytmu serca, znane także jako arytmia to stan, w którym skurcze mięśnia sercowego pod
wpływem anormalnej aktywności elektrycznej stają się nieregularne, a ich częstotliwość wychodzi
poza bezpieczny zakres 60-100 uderzeń na minutę – są zbyt szybkie (w skrajnych przypadkach
powyżej 400 uderzeń/min) lub zbyt wolne (może też dojść do pominięcia niektórych skurczy).
Niektóre arytmie mogą być niebezpieczne dla zdrowia, a nawet prowadzić do śmierci pacjenta,
chociaż nie jest to regułą.
Klasyfikacja zaburzeń rytmu serca wyróżnia dwie podstawowe grupy arytmii:

nadkomorowe:
◦ dodatkowe pobudzenia nadkomorowe pojedyncze, pary
◦ częstoskurcze przedsionkowe (AT)
◦ węzłowe (AVNRT)
◦ przedsionkowo-komorowe (AVRT)
◦ trzepotanie przedsionków (AFl)
◦ migotanie przedsionków (AF)

komorowe
◦ pojedyncze pobudzenia komorowe (VEB)
◦ częstoskurcze:
▪ łagodne: z drogi odpływu prawej komory i pęczkowy,
▪ kardiomiopatie: rozstrzeniowa, przerostowa,
▪ arytmogenna dysplazja prawej komory (ADRV)
▪ zespół wydłużonego odstępu QT (LQTS), zespół krótkiego QT (SQTS)
▪ częstoskurcze katecholaminergiczne (CPVT)
▪ zespół Brugadów (BrS)
◦ migotanie komór (VF)
W rozdziale 3.1 przedstawione są bardziej szczegółowo te rodzaje arytmii, które staraliśmy się
wziąć pod uwagę pisząc naszą aplikację.
Arytmie groźne dla życia to najczęściej utrwalone arytmie komorowe, które występują zarówno w
mięśniu uszkodzonym (po zawale, kardiomiopatie) jak i zdrowym (genetycznie uwarunkowane
arytmiczne choroby serca). Nadkomorowe zaburzenia rytmu serca stanowią zagrożenie wtedy, gdy
występują w sercu uszkodzonym i/lub przebiegają z szybką czynnością komór (zespoły
preekscytacji).
4
Arytmie zdiagnozować można dzięki ustalonym kryteriom rozpoznania, opierającymi się na
analizie zapisu elektrycznej czynności mięśnia sercowego czyli elektrokardiogramu (ECG lub
EKG). W literaturze można się spotkać z szeregiem sposobów na automatyczne wykrywanie
i klasyfikację arytmii. Najprostszą metodą jest badanie tempa uderzeń serca (mierzenie interwału
RR), co pozwala znaleźć sekwencje o nienormalnym tempie, a także łatwo wyznaczyć początek i
koniec arytmii. Aby dokonać klasyfikacji arytmii można skorzystać z tablicy zawierającej interwały
RR oraz dane dotyczące morfologii danego zespołu. W trakcie klasyfikacji należy zadbać o
odpowiednią hierarchię rodzajów arytmii. [1]
Istnieją także bardziej skomplikowane metody, oparte o analizę matematyczną i statystyczną. Jedna
z takich metod polega na analizie poszczególnych zespołów PQRST. Najpierw wyznaczane są
charakterystyczne częstotliwości tworzące te zespoły (tzw. częstotliwości sprzężone fazowo), a
następnie są one porównywane z wynikiem FFT pojedynczego zespołu. Analiza różnic pozwala
stwierdzić, które zespoły mają cechy arytmii. [4]
Dosyć skuteczną metodą klasyfikacji jest analiza statystyczna zespołów PQRST przy użyciu
modelowania autoregresyjnego – tworzone są modele, których współczynniki opisują kilka różnych
rodzajów arytmii. Przyrównując badane zespoły do otrzymanych poprzez autoregresję danych
otrzymujemy parametry, które pozwolą na decyzję, jaki rodzaj arytmii reprezentuje dany zespół.
Metoda ta osiąga skuteczność powyżej 90%. [3]
3 Koncepcja proponowanego rozwiązania
W proponowanym przez nas rozwiązaniu wykorzystujemy listę objawów charakterystycznych dla
danych arytmii, analizując informacje o załamkach PQRS pochodzące z poprzednich aplikacji z
wykonywanego łańcucha. Wyznaczyliśmy kilka typów arytmii, których objawy są na tyle
rozróżnialne, aby można je było poddać analizie automatycznej.
3.1 Szczegółowa lista arytmii
3.1.1 Zwolniony rytm zatokowy (łac. bradycardia sinusalis; ang. sinus bradycardia)
Jest wynikiem zmniejszonej częstości powstawania pobudzeń w węźle zatokowym. Może
występować w warunkach fizjologicznych np. u sportowców lub w czasie snu (przewaga układu
parasympatycznego). W stanach chorobowych najczęstszą jego przyczyną jest choroba
niedokrwienna serca, zapalenie mięśnia serca, niedoczynność tarczycy, podwyższone ciśnienie
śródczaszkowe, wpływ leków (beta-blokery, naparstnica).
Kryteria rozpoznania:
5

Miarowy rytm zatokowy o częstości poniżej 60/min.

Załamki P dodatnie w odprowadzeniach I i II, ujemne w aVR.

Każdy zespół QRS poprzedzony załamkiem P.
3.1.2 Przyspieszony rytm zatokowy (łac. tachycardia sinusalis; ang. sinus
tachycardia)
Jest wynikiem zwiększonej częstości powstawania pobudzeń w węźle zatokowym. Może
występować w warunkach fizjologicznych np. w czasie wysiłku fizycznego i osiągać częstość 180200/min. Inne jego przyczyny to przewaga układu współczulnego, gorączka, niewydolność
oddechowa,
nadczynność
tarczycy,
wstrząs,
krwotok,
niedokrwistość,
wpływ
leków
sympatykomimetycznych i parasympatykolitycznych oraz alkoholu, kofeiny i nikotyny.
Kryteria rozpoznania:

Miarowy rytm zatokowy o częstości powyżej 100/min.

Załamki P dodatnie w odprowadzeniach I i II, ujemne w aVR.

Każdy zespół QRS poprzedzony załamkiem P.
3.1.3 Niemiarowość zatokowa (łac. arrhythmia sinusalis; ang. sinus arrhythmia)
Jest wynikiem powstawania pobudzeń w węźle zatokowym w nieregularnych odstępach czasu.
Wyróżnia się dwie postacie:
Niemiarowość zatokowa oddechowa – w czasie wdechu dochodzi do odruchowego przyspieszenia
rytmu serca, w czasie wydechu do zwolnienia. Przyczyną jest zmieniające się napięcie nerwu
błędnego. Jest zjawiskiem fizjologicznym występującym często u dzieci. Nie ma znaczenia
klinicznego.
Niemiarowość zatokowa bezładna – nie stwierdza się żadnych prawidłowości pomiędzy kolejnymi
odstępami PP. Występuje w przebiegu organicznych chorób serca.
Kryteria rozpoznania:

Różnice w czasie trwania odstępów PP większe niż 0,16 s.

Załamki P dodatnie w odprowadzeniach I i II, ujemne w aVR.

Niemiarowość zatokowa oddechowa – przyspieszenie rytmu w czasie wdechu.

Niemiarowość zatokowa bezładna – zmiany rytmu nie zależą od oddychania.
6
3.1.4 Zahamowanie zatokowe (łac. pausa sinusalis; ang. sinus pause)
Jest wynikiem ustania czynności bodźcotwórczej węzła zatokowego co doprowadza do przerwy w
pracy serca. Przy dłużej trwającym zahamowaniu włącza się zastępczy rytm pozazatokowy lub
utrzymuje się asystolia. Może występować u osób zdrowych jako wyraz wzmożonego napięcia
nerwu błędnego oraz w wielu organicznych chorobach serca, a także pod wpływem leków.
Kryteria rozpoznania:

Przerwa w rytmie zatokowym (wydłużenie odstępu PP).

Przerwa nie jest wielokrotnością podstawowych odstępów PP

(w przeciwieństwie do bloku zatokowo-przedsionkowego).
3.1.5 Blok zatokowo-przedsionkowy (łac. dissociatio sinuatrialis; ang. sinoatrial
exit block)
Jest wynikiem utrudnionego przewodzenia pobudzeń przez tkankę okołowęzłową do przedsinka.
Wyróżnia się bloki I, II i III stopnia. W rutynowym EKG można rozpoznać jedynie blok II stopnia,
który polega na okresowym przerwaniu przewodzenia przez tkankę okołowęzłową i wypadaniu
ewolucji przedsionkowej.
Kryteria rozpoznania:

Przerwa w rytmie zatokowym (wydłużenie odstępu PP).

Przerwa jest wielokrotnością podstawowych odstępów PP.
3.1.6 Ekstrasystolia przedsionkowa (łac. extrasystolia atrialis; ang. atrial premature
beats)
Przedsionkowe pobudzenia przedwczesne powstają w ognisku ektopowym w przedsionku, tzn.
poza węzłem zatokowym. Niemal zawsze pobudzają „wstecznie” węzeł zatokowy zmieniając jego
rytm i powodując wystąpienie przerwy poekstrasystolicznej, krótszej niż tzw. pełna przerwa
wyrównawcza. Mogą występować u osób zdrowych, ale najczęściej spowodowane są organicznymi
chorobami serca, zwłaszcza przebiegającymi z przerostem przedsionków.
Kryteria rozpoznania:

Przedwczesny (w stosunku do rytmu zatokowego) załamek P o zmienionym kształcie.

Odstęp PQ dłuższy od 0,1 s.

Kształt zespołu QRS przeważnie prawidłowy.
7
3.1.7 Napadowy
częstoskurcz
nadkomorowy
(łac.
tachycardia
paroxysmalis
supraventricularis; ang. paroxysmal supraventricular tachycardia)
Pojęcie to obejmuje grupę częstoskurczów (w tym częstoskurcz przedsionkowy i częstoskurcz
węzłowy), ale nie precyzuje dokładnie lokalizacji rozrusznika, gdyż jest to na podstawie
standardowego EKG często niemożliwe. Większość z nich powstaje w mechanizmie reentry.
Częstoskurcze te mają charakter napadowy to znaczy nagle się rozpoczynają i nagle kończą.
Występują najczęściej u chorych z wadami serca, chorobą wieńcową, chorobą wieńcową,
zapaleniem mięśnia serca, zespołem WPW, nadczynnością tarczycy, czasami u osób zdrowych.
Kryteria rozpoznania:

Częstość rytmu 150-250/min.

Załamek P o zmienionym kształcie w porównaniu z rytmem zatokowym lub niewidoczny.

Kształt zespołów QRS przeważnie prawidłowy. Nagły początek i nagły koniec
częstoskurczu.
3.1.8 Częstoskurcz komorowy (łac. tachycardia ventricularis; ang. ventricular
tachycardia)
Jest wynikiem aktywności komorowego ogniska ektopowego wyzwalającego pobudzenia z dużą
częstością lub powstaje w mechaniźmie reentry. Można go rozpoznać przy obecności serii 6 lub
więcej pobudzeń komorowych. Występuje w świeżym zawale mięśnia serca, w kardiomiopatiach,
w zaburzeniach elektrolitowych, w wyniku toksycznego działania leków.
Kryteria rozpoznania:

Miarowy rytm o częstości 100–250/min.

Zespoły QRS zniekształcone i poszerzone (powyżej 0,12 s) z przeciwstawnym kierunkiem
odcinka ST i załamka T.

Mogą być obecne pobudzenia złożone i przewiedzione pobudzenia nadkomorowe.
3.1.9 Bigeminia komorowa (łac. bigeminia; ang. bigeminy)
Pobudzenie komorowe przedwczesne występuje po każdym pobudzeniu rytmu podstawowego.
3.1.10 Para pobudzeń komorowych (łac. dyadis; ang. couplets)
Dwa kolejne (występujące bezpośrednio po sobie) pobudzenia komorowe.
8
3.1.11 Salwa komorowa (łac. dyadis; ang. couplets)
Kilka (od 3 do 5) kolejnych pobudzeń komorowych.
3.2 Algorytm detekcji
Nasz algorytm detekcji arytmii w dużej mierze bazuje na analizie wektora struktur Beats.
Najważniejszym elementem algorytmu jest obliczanie odstępu pomiędzy kolejnymi ewolucjami
serca. Otrzymany w ten sposób rytm pozwala na wykrycie kilku najbardziej podstawowych typów
arytmii – bradykardię, tachykardię, niemiarowość zatokową itp. Detekcję można przeprowadzać na
dwa sposoby:
 statycznie – wystąpienie arytmii jest sygnalizowane wtedy, kiedy prędkość bicia serca
przekroczy zadaną, z góry ustaloną szybkość, np. poniżej 40 lub powyżej 100 uderzeń/min.
 dynamicznie – algorytm mierzy średnie BPM pacjenta i sygnalizuje wystąpienie arytmii
dopiero wtedy, gdy dojdzie do znacznej odchyłki od średniej. Korzystając ze średniej
ruchomej (np. średnie BPM wyznaczane tylko z ostatniej minuty) możemy uzyskać
algorytm, który jest bardziej odporny na zmiany częstotliwości uderzeń z powodów
naturalnych i może być bardziej czuły. Z drugiej strony może to powodować pewne ilości
fałszywych detekcji, gdyż nawet normalny przebieg wykazuje nieznaczne odchylenia.
Następnie są sprawdzane inne charakterystyczne cechy różnych arytmii, np. szerokość QRS, czy
fale w innych odprowadzeniach. Zdobyte informacje przechodzą przez drzewko decyzyjne, które
pozwala ostatecznie sklasyfikować arytmię.
Alternatywnie, zamiast drzewka decyzyjnego, można wykorzystać funkcje oceniające. Do tego
należy stworzyć tabelę podobną do tej z Dodatku E, jednakże zamiast wartości binarnych jest/brak
objawu, wstawić wagi odpowiadające poszczególnym objawom. Następnie należy zsumować
iloczyny waga * objaw dla każdego rodzaju arytmii i wybrać ten, który będzie miał największą
sumę. Taka metoda jest bardziej elastyczna niż wykorzystanie samego drzewka lub grafu
decyzyjnego, jednakże skonstruowanie odpowiedniej tablicy (ponad 100 współczynników) może
być bardzo trudne i wymagać dużej ilości danych testowych, aby uzyskać optymalne wyniki.
4 Rezultaty i wnioski
Ze względu na to, że nasza aplikacja opiera się o dane, które powinny być przetworzone przez
aplikacje odpalane wcześniej w cyklu, jej wyniki są zależne od jakości tych implementacji.
Niestety, w dniu oddawania tego sprawozdania dostęp mamy tylko do jednej aplikacji typu
9
QRS_DET, co pozwala na rozpoznawanie tylko podstawowych typów zaburzeń rytmu. Nie mając
innych informacji o sygnale, a w szczególności informacji o załamkach P, nie możemy rozróżnić
wielu typów arytmii. Dlatego naszą aplikację musieliśmy „przyciąć”, tak aby mogła pracować z
tymi dostępnymi danymi. Poza tą jedną aplikacją możemy się opierać o dane referencyjne ze strony
www.physionet.org, z której to pobieramy próbki do testowania. Niestety one zawierają jeszcze
mniej informacji – tylko momenty wystąpienia załamka R, co nie pozwala na pełną weryfikację
rezultatów.
4.1 Wyniki analizy
Plik 100.dat z bazy Physionet zawiera przebieg bicia serca osoby o średnim BPM 75 uderzeń na
minutę. Na poniższym przebiegu i histogramie odległości R-R można zauważyć pewną grupę zbyt
wczesnych uderzeń, o odstępach sięgających nawet poniżej 0.6 sek. Z drugiej strony widać też
nieliczne uderzenia występujące nieco później, w odstępie około sekundy. Wg bazy Physionet w
ciągu 30 minut występują 33 arytmie.
Nasza aplikacja po dobraniu parametrów była w stanie wykryć około 30 arytmii. Niestety nie
wszystkie wykryte arytmie pokrywają się z tymi z bazy referencyjnej (oko 15 z nich). Może to być
efektem przyjęcia innych kryteriów detekcji przez algorytm referencyjny lub też niedokładnego
wybrania parametrów.
Niestety dane przekazane przez aplikację QRS_DET okazały się wadliwe, gdyż wykrywa ona
czasem podwójnie zespoły QRS, a następnie pomija jeden lub więcej zespołów, co powoduje
wykrywanie fałszywych bloków zatokowych przedsionkowych.
10
Dla pliku 105.dat o bardziej wyróżnialnych arytmiach mamy przebieg i histogram:
Jak widać próbki zawierające arytmie są w dużo większej odległości od normalnych ewolucji serca.
Dzięki temu detekcja powinna być łatwiejsza. I tak przy 164 próbkach wg Physionetu, nasza
aplikacja wykryła 172 arytmie, z czego większość (ponad 80%) była zgodna z referencyjnymi.
Niestety bazując tylko na odległości RR nie jesteśmy w stanie wykryć dokładnego typu arytmii,
przez co spora część kodu naszej aplikacji jest niewykorzystana.
5 Podsumowanie
Efekty działania naszej aplikacji w aktualnej wersji są niezadowalające, jednakże nie do końca
mieliśmy na nie wpływ, gdyż jesteśmy zależni od jakości pracy innych. Dopiero mając
odpowiednio wypełnione struktury danych aplikacja zaczyna zadowalająco. Dlatego należy ją
uważać za rozwojową. Najważniejszym efektem jest jednak to, że podczas jej tworzenia
zrozumieliśmy działanie arytmii serca i dokonaliśmy analizy i implementacji kilku ciekawych i
obiecujących algorytmów, co na pewno ma wymierny efekt dydaktyczny.
6 Literatura
[1] Piotr Augustyniak, “Przetwarzanie sygnałów elektrodiagnostycznych”, AGH Uczelniane
Wydawnictwo Naukowo-Dydaktyczne, Kraków 2001
[2] AS Al-Fahoum, AM Qasaimeh, “ECG Arrhythmia Classification Using
11
Simple Reconstructed Phase Space Approach”, Biomedical Centre of Excellence, Yarmouk
University, Jordan University of Science and Technology, Irbid, Jordan
[3] Dingfei Ge, Narayanan Srinivasan, Shankar M Krishnan, “Cardiac arrhythmia classification
using autoregressive modeling”, BioMedical Engineering OnLine 2002, 1:5
[4] GVS Chiranjivi, Vamsi Krishna Madasu, Madasu Hanmandlu, Brian C. Lovell, “Arrhythmia
Detection in Human Electrocardiogram”, Department of Electrical Engineering, Indian Institute of
Technology Delhi, New Delhi, India, School of ITEE, University of Queensland, St. Lucia,
Australia.
[5] Aleksandra Czepiel, “Zaburzenia rytmu serca”, Postępy Nauk Medycznych 2-3/2007, s. 62-67
[6] Wikipedia, „Cardiac arrhythmia”, http://en.wikipedia.org/wiki/Cardiac_arrhythmia
[7] Tomasz Tomasik, AdamWindak, Anna Skalska, Jolanta Kulczycka-Życzkowska,
Józef Kocemba, „Elektrokardiografia dla lekarza praktyka”
7 DODATEK A: Opis opracowanych narzędzi i metody
postępowania
Program nie wymaga instalacji, wystarczy wypakować z archiwum plik *.exe.
W przypadku kompilacji programu ze źródeł wystarczy uruchomić polecenie make. Program nie
korzysta z żadnych niestandardowych bibliotek i powinien się skompilować w każdym środowisku
z kompilatorem gcc i GNU make lub kompatybilnymi.
Program był testowany w środowisku Windows, zarówno jako kompilacja do natywnego pliku
wykonywalnego – projekt MinGW jak i środowiska zgodnego z POSIX (CygWin).
Aby użyć programu należy wykonać polecenie:
arrh_det <plik_qrs> <plik_wyj>
gdzie:
<plik_qrs> - plik zwrócony przez program qrs_det
<plik_wyj> - plik, do którego zostaną zapisane dane wyjściowe
8 DODATEK B: Realizacja proponowanego rozwiązania
Do realizacji rozwiązania posłużył język C++. Kod programu tworzony był w środowisku Eclipse
C/C++, z użyciem kompilatora GCC pod systemem operacyjnym Windows XP.
12
Do poprawnego działania programu wymagany jest plik z surowym sygnałem EKG oraz struktury
Config, Status oraz Beats z częściowo przetworzonym sygnałem EKG, szczegółowo opisane w
dokumencie o strukturach projektu. Niezbędne dane z tych struktur to częstotliwość próbkowania
oraz ilość kanałów sygnału EKG (Config.FileType), oraz dane ze struktur Beats.Det oraz
Beats.Waves.
Po wczytaniu wyżej wymienionych danych, dla każdej ewolucji serca zapisanej w strukturze Beats
przeprowadzana jest statystyczna analiza. Wyliczane są takie wielkości jak długość zespołu QRS,
długość odcinka PQ oraz zależności pomiędzy kolejnymi ewolucjami serca, tj. odległości RR, PP,
średnia odległość PP, a także wyliczana jest chwilowa oraz średnia częstość ewolucji serca.
Porównywane są również wartości sygnału EKG w poszczególnych jego kanałach dla
odpowiednich załamków. Na podstawie tak spreparowanych danych oraz kryteriów poszczególnych
arytmii serca opisanych w podrozdziale 3.1 przeprowadzana jest klasyfikacja.
9 DODATEK C: Opis informatyczny procedur
Wykorzystane biblioteki:
stdio.h, stdlib.h, math.h, fileio.h, vector, iostream
int loadConfig
Przeznaczenie:
Funkcja odczytująca konfigurację programu z pliku do globalnej struktury używanej
w programie.
Argumenty funkcji:
char* fileName – ciąg znakowy, będący ścieżką dostępu do pliku
Funkcja zwraca:
parametr typu int ze zbioru {0 – wszystko OK, 1 – błąd odczytu pliku}
int loadStatus
Przeznaczenie:
Funkcja odczytująca strukturę Status z pliku do globalnej struktury używanej w
programie.
Argumenty funkcji:
char* fileName – ciąg znakowy, będący ścieżką dostępu do pliku
Funkcja zwraca:
parametr typu int ze zbioru {0 – wszystko OK, 1 – błąd odczytu pliku}
int loadSignal
Przeznaczenie:
Funkcja odczytująca surowy sygnał EKG z pliku do globalnej struktury używanej w
programie.
Argumenty funkcji:
char* fileName – ciąg znakowy, będący ścieżką dostępu do pliku
int numOfCh – ilość kanałów sygnału EKG
Funkcja zwraca:
parametr typu int ze zbioru {0 – wszystko OK, 1 – błąd odczytu pliku}
int loadBeats
Przeznaczenie:
Funkcja odczytująca strukturę Beats z pliku do globalnej struktury używanej w
programie.
Argumenty funkcji:
char* fileName – ciąg znakowy, będący ścieżką dostępu do pliku
Funkcja zwraca:
parametr typu int ze zbioru {0 – wszystko OK, 1 – błąd odczytu pliku}
int saveBeats
Przeznaczenie:
Funkcja zapisująca strukturę Beats używaną w programie do pliku.
Argumenty funkcji: brak
Funkcja zwraca:
13
parametr typu int ze zbioru {0 – wszystko OK, 1 – błąd zapisu pliku}
int saveStatus
Przeznaczenie:
Funkcja zapisująca strukturę Status używaną w programie do pliku.
Argumenty funkcji: brak
Funkcja zwraca:
parametr typu int ze zbioru {0 – wszystko OK, 1 – błąd zapisu pliku}
int saveConfig
Przeznaczenie:
Funkcja zapisująca strukturę Config używaną w programie do pliku.
Argumenty funkcji: brak
Funkcja zwraca:
parametr typu int ze zbioru {0 – wszystko OK, 1 – błąd zapisu pliku}
int* getSample
Przeznaczenie:
Funkcja odczytująca wartość próbki dla wszystkich kanałów.
Argumenty funkcji:
int sample – numer próbki sygnału
Funkcja zwraca:
parametr typu int* - tablicę o długości równej ilości kanałów sygnału, wypełnioną
odpowiednimi wartościami zadanej próbki w danym kanale
int getSampleInChannel
Przeznaczenie:
Funkcja odczytująca wartość próbki dla zadanego kanału.
Argumenty funkcji:
int sample – numer próbki sygnału
int channel – numer kanału sygnału
Funkcja zwraca:
parametr typu int – wartość zadanej próbki w zadanym kanale
int detectArrhs
Przeznaczenie:
Główna funkcja programu, wykrywająca arytmie
Argumenty funkcji: brak
Funkcja zwraca: brak
Uzywane zmienne:
static int f;
// ilość próbek na sekundę
static int arrhCount;
// zmienna pomocnicza
static int lastArrh;
// ostatnio wykryta arytmia
static int arrhType;
// typ wykrytej arytmii
static int RR;
// ilość próbek pomiędzy kolejnymi uderzeniami
static int BPM;
// częstość uderzeń na minutę
static int meanBPM; // średnia częstość uderzeń na minutę
static int QRS;
// długość zespołu QRS
static int PP;
// długość odcinka PP
static int meanPP; // średnia długość odcinka PP
static int PQ;
// długość odcinka PQ
static int PPoint; // środek załamka P
static int* P;
// wartość sygnału dla próbki PPoint we wszystkich
kanałach
static bool* symptoms;
//
tablica
wykrytych
kryteriów
dla
klasyfikacji
poszczególnych arytmii
Struktury używane w programie:
enum ArrhType
{
NONE,
PAUSE, // pauza nadkomorowa, zahamowanie zatokowe
PACED, // przyspieszony rytm zatokowy
VENT_TACHY, // tachykardia komorowa
SALVO, // salwa komorowa
BIGEMINY,
// bigeminia komorowa (PVC)
SUPERVENT_TACHY,
// napadowy częstoskurcz nadkomorowy (PSVT)
BRADY,
// bradykardia komorowa
COUPLET,
// para komorowa
SINUS_ARRY,
// niemiarowość zatokowa
EXIT_BLOCK,
// blok zatokowo-przedsionkowy
ARTIAL_PRE_BEAT,
// ekstrasystolia przedsionkowa
LENGHT
// wielkość zbioru arytmii
};
Typ enum używany w procesie klasyfikacji arytmii
enum Symptom {
Pvalue, // załamek P jest dodatni w odprowadzeniu I i II, a ujemny w aVR
Pfail, // brak załamka P
14
PPinterval, // odcinek PP odbiega od średniej
PPdouble,
// odcinek PP jest wielokrotnością średniej odległości
PQinterval, // odcinek PQ jest dłuższy niż 0,1s
QRSinterval,// zespół QRS jest dłuższy niż 0,12s
lenght // wielkość zbioru symptomów
};
10 Dodatek D: Spis zawartości CD
SRC:
ARRH – katalog zawierający kod źródłowy aplikacji wraz z plikiem makefile
EXE:
arch.exe – plik wykonywalny aplikacji wraz z wymaganą do uruchomienia biblioteką
data – katalog z przykładowymi danymi
DOC:
Katalog zawiera raport w formacie .doc i .pdf
11 Dodatek E: Tabela objawów arytmii
BPM
przeciwstawne ST i T
brak P
Zniekształcone QRS > 0,12s
zmienne PQ
niemiarowe RR
fala f 350-600/min
fala F 250-350/min
P- w II, III i aVF
PQ > 0,1s
przerwa jest wielokrotnością PP
przerwa nie jest wielokrotnością PP
wydłużenie PP
PP > 0,16s
P+ w I i II; P- w aVR
typ arytmii / kryteria
bradykardia
X
< 60
tachykardia
X
> 100
niemiarowość zatokowa
X
X
zahamowanie zatokowe
X
blok zatokowo-przedsionkowy
X
X
X
ekstrasystolia przedsionkowa
X
rytm przedsionkowy
X
40 – 100
X
X
trzepotanie przedsionków
X
migotanie przedsionków
X
X
X
X
150 – 250
napadowy częstoskurcz nadkomorowy
100 – 250
X
wielokształtny częstoskurcz przedsionkowy
ekstrasystolia komorowa
X
zastępczy rytm komorowy
X
X
przyspieszony rytm komorowy
X
X
częstoskurcz komorowy
X
X
15
X
X
30 – 100
100 – 250