arrh det - agh university of science and technology · 2011. 8. 30. · [2,3,4] rozpoznanie arytmie...
Post on 13-Feb-2021
1 Views
Preview:
TRANSCRIPT
-
AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w KRAKOWIE
MIĘDZYWYDZIAŁOWA SZKOŁA INŻYNIERII BIOMEDYCZNEJ
Przedmiot: Dedykowane algorytmy diagnostyki medycznej
Numer projektu: Arrh_det
Temat projektu: Detekcja arytmii
Spis treści:
1. ABSTRAKT .............................................................................................................................................2
2. WSTĘP .....................................................................................................................................................3
3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA .......................................................................... 12
4. REZULTATY I WNIOSKI...................................................................................................................... 18
5. PODSUMOWANIE ................................................................................................................................ 19
6. LITERATURA ........................................................................................................................................ 20
7. DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA ........................ 21
8. DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA ................................................. 24
9. DODATEK C. OPIS INFORMATYCZNY PROCEDUR......................................................................... 25
10. DODATEK D. SPIS ZAWARTOŚCI DOŁĄCZONYCH NOŚNIKÓW (DYSKIETEK, CD ROMU) ....... 38
Wykonali: Magdalena Igras
Jacek Kwaśniak
IV rok IB_EIM
konsultant: prof. dr hab. Piotr Augustyniak
Wersja 1.1.
Kraków, grudzień 2010
-
1. Abstrakt
Wykrywanie i klasyfikacja arytmii pracy serca mogą być zautomatyzowane dzięki
odpowiedniemu przetworzeniu sygnałów elektrokardiograficznych.
Realizacja projektu polega na zaimplementowaniu algorytmu detekcji podstawowych arytmii
na podstawie sekwencji morfologii zespołu QRS. Zaprojektowano i zaimplementowano algorytm,
pozwalający odnaleźć w przebiegu sygnału holterowskiego fragmenty wyróżniające się
nieregularnością pracy serca i zidentyfikowanie występujących w nich typów arytmii.
Zastosowano klasyczną metodę przeglądania rezultatów przetwarzania zapisanego
elektrokardiogramu pod kątem odszukania oczekiwanej sekwencji pobudzeń. Znając cechy pobudzeń
występujących przy poszczególnych typach arytmii, wyznacza się rodzaj występującej arytmii
(algorytm pozwala wykrywać następujące typy arytmii: pojedyncze przedwczesne pobudzenie
nadkomorowe, napadowy czestoskurcz nadkomorowy PSVT, tachykardia nadkomorowa, bradykardia,
nadkomorowy rytm nieregularny, pauza, pojedyncze przedwczesne pobudzenie komorowe,
tachykardia komorowa, zastepczy rytm komorowy IVR , salwa komorowa, bigeminia, trigeminia,
para pobudzen komorowych), moment jej wystąpienia oraz następujące cechy ważne z punktu
widzenia diagnostyki: czas trwania, liczbę pobudzeń, częstość rytmu oraz minimalną/maksymalną
częstość rytmu serca.
W ustalaniu rodzaju wykrytej arytmii kierowano się podziałem arytmii na grupy istotności z
diagnostycznego punktu widzenia.
Możliwość detekcji arytmii jest istotną zaletą diagnostyczną metod holterowskich, ponieważ
interpretacja kardiologiczna tych zjawisk prowadzi bezpośrednio do wykrycia współzależności
automatyzmu komórek rozrusznikowych różnych ośrodków bodźcotwórczych serca i oceny ryzyka
pojawienia się tachykardii u pacjenta.
Zaimplementowany algorytm jest metodą podstawową, wykrywającą arytmie tylko na
podstawie morfologii i momentów wystąpienia zespołów QRS. Wzięcie pod uwagę również innych
cech sygnału holterowskiego doprowadziłoby do polepszenia skuteczności i niezawodności procesu
detekcji.
-
2. Wstęp
Definicja arytmii
Arytmia serca to stan, w którym skurcze mięśnia sercowego są nieregularne, a ich
częstotliwość wychodzi poza bezpieczny zakres 60-100 uderzeń na minutę. Stan taki często stanowić
może zagrożenie dla życia, chociaż nie jest to regułą.
Normalny rytm pracy serca jest wyznaczany przez węzeł zatokowy. Jeżeli węzeł zatokowo-
przedsionkowy nie funkcjonuje prawidłowo, może to prowadzić do aktywizacji drugorzędowych
ośrodków pobudzenia i w efekcie do zmiany rytmu pracy serca.
Istotne znaczenie mają też drogi przewodzenia impulsu z ośrodka pobudzenia: przy ich
nieprawidłowej funkcji lub gdy istnieją dodatkowe drogi przewodzenia, może dochodzić do zaburzeń
rytmu serca. [3]
Rodzaje arytmii
Wzrost tempa bicia serca ponad 100 uderzeń na minutę nosi nazwę tachykardii, a spadek
poniżej 50 uderzeń na minutę – bradykardii.
Podział arytmii:
a) Arytmie nadkomorowe:
-pauza
-bradykardia nadkomorowa
-tachykardia nadkomorowa
-napadowy częstoskurcz nadkomorowy
-nadkomorowy rytm nieregularny
b) Arytmie komorowe:
-para
-czynny rytm komór
-salwa
-tachykardia komorowa
-bigeminia
http://pl.wikipedia.org/wiki/Cykl_pracy_sercahttp://pl.wikipedia.org/wiki/Sercehttp://pl.wikipedia.org/wiki/W%C4%99ze%C5%82_zatokowo-przedsionkowy
-
Przyczyny arytmii
1. Przyczyny tachykardii
Najczęściej akcja serca przyspiesza wskutek zdenerwowania lub wysiłku fizycznego (tachykardia
zatokowa). Inne przyczyny tachykardii to między innymi:
gorączka ( wzrost temperatury o 1° C powoduje wzrost akcji serca o 10-12 uderzeń /min),
nadmierna nerwowość
działanie kofeiny, alkoholu albo nikotyny
zażywanie narkotyków, np.: amfetaminy
nadczynność tarczycy
zawał lub inne postaci choroby niedokrwiennej serca
niewydolność oddechowa
anemia
reakcja anafilaktyczna
różne choroby serca
niewydolność serca
niedokrwistości pokrwotoczne
przyjmowanie leków zwierających w składzie: atropinę, efedrynę lub pseudoefedrynę.
niedocukrzenie
odwodnienie
niskie ciśnienie
używki. [3]
2. Przyczyny bradykardii
Bradykardia fizjologiczna występuje:
u sportowców
u osób z wagotonią (nadmierna aktywność nerwu błędnego).
Bradykardia patologiczna:
bradykardia zatokowa – zaburzenia powstawania bodźca w układzie bodźcotwórczym
bloki przewodzenia – zaburzenia przewodnictwa
http://pl.wikipedia.org/wiki/Gor%C4%85czkahttp://pl.wikipedia.org/wiki/Kofeinahttp://pl.wikipedia.org/wiki/Alkoholhttp://pl.wikipedia.org/wiki/Nikotynahttp://pl.wikipedia.org/wiki/Narkotykhttp://pl.wikipedia.org/wiki/Amfetaminahttp://pl.wikipedia.org/wiki/Tarczycahttp://pl.wikipedia.org/wiki/Zawa%C5%82_mi%C4%99%C5%9Bnia_sercowegohttp://pl.wikipedia.org/wiki/Choroba_niedokrwienna_sercahttp://pl.wikipedia.org/wiki/Niewydolno%C5%9B%C4%87_oddechowahttp://pl.wikipedia.org/wiki/Reakcja_anafilaktycznahttp://pl.wikipedia.org/w/index.php?title=Choroby_serca&action=edit&redlink=1http://pl.wikipedia.org/wiki/Niewydolno%C5%9B%C4%87_sercahttp://pl.wikipedia.org/wiki/Atropinahttp://pl.wikipedia.org/wiki/Efedrynahttp://pl.wikipedia.org/wiki/Pseudoefedrynahttp://pl.wikipedia.org/wiki/Nerw_b%C5%82%C4%99dnyhttp://pl.wikipedia.org/w/index.php?title=Bradykardia_zatokowa&action=edit&redlink=1
-
działanie leków.
Wśród stanów patologicznych powodujących bradykardię można wymienić:
zmiany zwyrodnieniowe w układzie bodźcoprzewodzącym
choroba niedokrwienna serca
niedoczynność tarczycy
przedawkowanie beta-adrenolityków, glikozydów
hiperkaliemia – nadmierne stężenie potasu we krwi.
Objawy i skutki
Objawy arytmii serca są różnorakie i zależą od rodzaju arytmii oraz mogą być odczuwane
odmiennie. Najczęściej pacjenci chorzy na arytmie uskarżają się na szybkie bądź niemiarowe bicie
serca lub na zwolnione alb mocne bicie serca. Jeśli tachykardia obniża ciśnienie krwi, to może
spowodować zawroty głowy, a nawet omdlenia. Większość tachykardii nie jest niebezpieczna. Każdy
czynnik podnoszący poziom adrenaliny lub wzmagający jej działanie może spowodować
przyspieszenie akcji serca i wywołać tachykardię z towarzyszącym uczuciem kołatania. Bradykardia
zazwyczaj nie zagraża życiu, ale może dawać objawy niepożądane (Leczenia wymaga tylko
bradykardia objawowa, tzn. powodująca np. omdlenia, utraty przytomności itp. ) i wtedy konieczne
okazać się może wszczepienie stałego rozrusznika. Z kolei tak zwane skurcze dodatkowe polegają na
uczuciu „przeskakiwania” w klatce piersiowej, „zatrzymywania się” serca na chwilę lub kłucia w
okolicy serca. Arytmia serca może się objawić osłabieniem, dusznością, bólem w klatce piersiowej,
uczuciem gorąca. Arytmia może zatem obniżać jakość życia, powodować poważne powikłania które
mogą prowadzić do przedwczesnej śmierci pacjenta. [2,3,4]
Rozpoznanie
Arytmie są często wykrywane za pomocą niespecyficznych środków, takich jak: osłuchiwanie tonów
serca stetoskopem, a także pośrednio przez badanie tętna obwodowego. Te sposoby zazwyczaj nie
mogą zdiagnozować konkretnych arytmii, ale dają określenie akcji serca oraz wskazują czy rytm jest
regularny czy nie. Nie każda czynność elektryczna daje skurcz, który byłby słyszalny czy wyczuwalny
na obwodzie jako fala tętna i dlatego pobudzenia przedwczesne czy nie dające prawidłowego cyklu
pracy serca, są odbierane jako "opuszczone" skurcze.
Najprostszą specyficzną metodą diagnostyczną dającą ocenę rytmu serca jest elektrokardiogram. Do
wykrycia krótkotrwałych i nieprzewidywalnych arytmii, stosuje się monitorowanie holterowskie.
http://pl.wikipedia.org/wiki/Choroba_niedokrwienna_sercahttp://pl.wikipedia.org/wiki/Niedoczynno%C5%9B%C4%87_tarczycyhttp://pl.wikipedia.org/wiki/Leki_%CE%B2-adrenolitycznehttp://pl.wikipedia.org/wiki/Glikozydy_nasercowehttp://pl.wikipedia.org/wiki/Hiperkaliemiahttp://pl.wikipedia.org/wiki/Adrenalinahttp://pl.wikipedia.org/wiki/Omdleniehttp://pl.wikipedia.org/wiki/Utrata_przytomno%C5%9Bcihttp://pl.wikipedia.org/wiki/Sta%C5%82a_elektrostymulacja_sercahttp://pl.wikipedia.org/wiki/Stetoskophttp://pl.wikipedia.org/wiki/Elektrokardiografiahttp://pl.wikipedia.org/wiki/Holter_EKG
-
Stosowane jest także monitorowanie ekg przez telefon stacjonarny lub komórkowy. Różni się od
monitorowania holterowskiego tym, że pacjent dzwoni wtedy gdy czuje niepokój i nie jest
ograniczony okresem 24 godzinnym.
Elektrokardiogram obrazuje jedynie elektryczną aktywność serca. Przy PEA w badaniu EKG może nie
być zaburzeń, a serce nie wykazuje czynności hemodynamicznej. [3],[4]
Kryteria EKG rozpoznania tachykardii zatokowej
1. częstotliwość większa niż 100 uderzeń na minutę;
2. rytm miarowy;
3. załamek P dodatni, o prawidłowej morfologii;
4. odstęp PQo czasie trwania 0,12-0,20 s (zmniejsza się proporcjonalnie do zwiększenia
częstości serca);
5. Zespół QRS o prawidłowej morfologii i czasie trwania poniżej 0,12 s.
Leczenie arytmii
Oprócz leczenia farmakologicznego stosuje się również terapie elektrycznością. Kardiowersja jest
zastosowaniem prądu elektrycznego biegnącego poprzez klatkę piersiową w przypadku częstoskurczu
nadkomorowego lub napadowego częstoskurczu komorowego. Defibrylacja różni się od kardiowersji
tym, że stosuje się ją w trzepotaniu komór lub migotaniu komór bez tętna, a także użyciem większego
ładunku elektrycznego. W przypadku kardiowersji pacjent jest poddawany działaniu leków o działaniu
sedatywnym, natomiast defibrylacja jest stosowana przy utraconej świadomości i nie ma potrzeby
zastosowania sedacji.
W ramach leczenia dysrytmii elektrycznością stosuje się również kardiostymulację. Czasowe użycie
rozruszników stosuje się w przypadku bradykardii z powodu przedawkowania leków, a także przy
zawale serca. Kardiostymulator jest na stałe wszczepiany pod skórę u pacjentów, u których schorzenie
będące przyczyną bradykardii nie daje się usunąć.
Bradykardię u pacjentów w ciężkim stanie leczy się podając 0,5 mg atropiny dożylnie (dawkę można
powtarzać do dawki całkowitej 3 mg). [3],[4]
http://pl.wikipedia.org/wiki/Aktywno%C5%9B%C4%87_elektryczna_bez_t%C4%99tnahttp://pl.wikipedia.org/wiki/Elektrokardiografiahttp://pl.wikipedia.org/wiki/Za%C5%82amek_Phttp://pl.wikipedia.org/wiki/Odst%C4%99p_PQhttp://pl.wikipedia.org/wiki/Zesp%C3%B3%C5%82_QRShttp://pl.wikipedia.org/wiki/Kardiowersja_elektrycznahttp://pl.wikipedia.org/wiki/Cz%C4%99stoskurcz_nadkomorowyhttp://pl.wikipedia.org/wiki/Cz%C4%99stoskurcz_nadkomorowyhttp://pl.wikipedia.org/wiki/Cz%C4%99stoskurcz_komorowyhttp://pl.wikipedia.org/wiki/Defibrylacjahttp://pl.wikipedia.org/wiki/Sta%C5%82a_elektrostymulacja_sercahttp://pl.wikipedia.org/wiki/Zawa%C5%82_mi%C4%99%C5%9Bnia_sercowegohttp://pl.wikipedia.org/wiki/Atropina
-
Przykłady zapisu EKG arytmii
a) Arytmie nadkomorowe:
-pauza
-bradykardia nadkomorowa
-tachykardia nadkomorowa
-napadowy częstoskurcz nadkomorowy
-nadkomorowy rytm nieregularny
-
b) Arytmie komorowe:
-para
-czynny rytm komór
-salwa
-tachykardia komorowa
-bigeminia
Źródło: [1]
-
Metodologia detekcji arytmii
Uwagi ogólne
Arytmie stanowią sekwencje pobudzeń o ustalonych wzorcach, zdefiniowanych przez:
następstwo zespołów o określonej morfologii,
interwał międzyuderzeniowy RR;
niekiedy liczbę zespołów w sekwencji.
Detekcja arytmii jest istotną zaletą diagnostyczną metod holterowskich, ponieważ
interpretacja kardiologiczna tych zjawisk prowadzi bezpośrednio do:
1. wykrycia współzależności automatyzmu komórek rozrusznikowych różnych ośrodków
bodżcotwórczych serca
2. oceny ryzyka pojawienia się tachykardii.
Detekcja arytmii ogranicza sie do oceny zapisu elektrokardiogramu ze wzgledu na sekwencje
pobudzen. Należy znalezc poczatek, kiedy spełnione sa założenia arytmii oraz jej koniec. Dzieki temu
możemy wyznaczyc czas trwania arytmii, który jest podstawowym parametrem diagnostycznym.
Odnalezienie sekwencji startowej dla innej arytmii znosi (kończy) wystepowanie poprzedniej. [1]
Algorytmy detekcji arytmii
Od strony informatycznej detekcja sprowadza się do porównania sygnałów wejsciowych do
zebranej już bazy arytmii.
Detekcja arytmii polega na przeglądzie rezultatów przetwarzania zapisanego elektrokardiogramu pod
kątem odszukania oczekiwanej sekwencji pobudzeń. Istotne jest odnalezienie początku, kiedy po raz
pierwszy spełnione są założenia arytmii oraz końca, kiedy założenia arytmii przestają być spełnione.
Pozwala to wyznaczyć czas trwania arytmii - podstawowy parametr diagnostyczny. Wystąpienie
sekwencji pobudzeń, charakterystycznej dla innej arytmii oznacza koniec arytmii trwającej
dotychczas, podobnie, wystąpienie zespołu odmiennego typu morfologicznego oznacza również
zakończenie poprzedniej arytmii. [1]
-
1. Detekcja arytmii dotyczy wszystkich zarejestrowanych kanałów jednocześnie,
ponieważ zarówno określenie interwału międzyuderzeniowego, jak i określenie
morfologii dokonywane jest wspólnie. Ponieważ detekcja ma raczej charakter
procedury przeszukiwania bazy danych niż przetwarzania sygnałów, nie sprawia
większych kłopotów. Jedynym problemem wymagającym komentarza jest
rozwiązywanie konfliktów w przypadku pojawienia się sekwencji
charakterystycznych dla różnych arytmii na tym samym przedziale czasowym.
Przykłady konfliktów:
-wystąpienie pauzy w sekwencji bradykardii;
- wystąpienie pary na zakończenie bigeminii itp.
Rozwiązywanie konfliktów opiera się na podziale, który z diagnostycznego punktu widzenia wyróżna
arytmie o różnym stopniu istotności:
- pierwszego rodzaju: pauza, częstoskurcz nadkomorowy, tachykardia komorowa;
- drugiego rodzaju: salwa, czynny rytm komór, bigeminia;
- trzeciego rodzaju: tachykardia (nadkomorowa), bradykardia, rytm nieregularny i pary.[1]
2. Jednokrotna analiza sekwencyjna
Niektóre detektory arytmii dokonują jednokrotnie sekwencyjnej analizy pól zespołów QRS
zawierających dane o morfologii i interwału RR. W przypadku gdy podczas trwania arytmii
niższego rodzaju wykryta jest sekwencja właściwa dla arytmii wyższego rodzaju, trwająca
arytmia kończy się, ustępując miejsca nowo zidentyfiukowanej arytmii. W przypadku gdy
trwa arytmia określonego rodzaju, wykrywanie arytmii niższych rodzajów jest
zablokowane.[1]
3. Detekcja w trzech etapach.
Alternatywne podejście polega na trzykrotnym przeglądaniu pól tablicy zespołów QRS
zawierających dane morfologii i interwału RR. Za pierwszym razem wykrywane są tylko
arytmie pierwszego rodzaju. Drugi przegląd wyodrębnia arytmie drugiego rodzaju, przy
czym odcinki przyporządkowane zidentyfikowanym uprzednio arytmiom pierwszego
rodzaju są omijane. Trzeci przegląd identyfikuje arytmie trzeciego rodzaju na pozostałych
fragmentach sygnału. [1]
-
4. Użycie metody transformacji falkowej, PCA oraz sieci neuronowych do wykrycia i
zaklasyfikowania arytmii. [5]
Wstępne przetwarzanie sygnału (filtracja, ekstrakcja cech sygnału przy pomocy
transformacji falkowej, redukcja wymiarów metodą PCA)
Klasyfikacja za pomocą sieci neuronowych.
5. Wykrywanie arytmii przez analizę cech morfologicznych sygnału wykorzystaniu
współczynników korelacji sygnału. [6]
-
3. Koncepcja proponowanego rozwiązania
Do zaprezentowania detekcji arytmii w sygnale holterowskim wybrano metodę wielokrotnego
przeglądania rezultatów przetwarzania zapisanego elektrokardiogramu pod kątem odszukania
oczekiwanej sekwencji pobudzeń. Jest to metoda najbardziej klasyczna i czytelnie ukazuje logikę
sposobu działania zmierzającego do osiągnięcia postawionego celu przy użyciu dostępnych danych.
Etapy postępowania:
1. Pobranie danych wejściowych
Wykorzystano bazę sygnałów holterowskich założoną na potrzeby laboratorium studenckiego
AGH przez Piotra Augustyniaka, wersja 1.0, grudzień 2010. Baza zawiera 10 plików trzykanałowych
zapisów holterowskich (sygnał o częstotliwości próbkowania 128 Hz i skali amplitudowej
1mV=45LSB (5,7mV pełnej skali, 1 LSB=22uV) zapisany jest 8-bitowo bez znaku). Długość zapisów
wynosi 15, 30 lub 60 min.
Dla wykonanego w niniejszym projekcie detektora arytmii argumentem wejściowym jest plik
qrs_attr.out o następującej strukturze:
struct QRS_ATTR
{
int DetPt; //punkt detekcji
// numer probki w sygnale oryginalnym przy ktorym nastapila detekcja QRS
char AMax; //wartosc korekcji maksimum zalamka R
// ilosc ms od punktu detekcji do maksymalnej 3D wartosci R
short localRR; //lokalna wartosc interwalu miedzyuderzeniowego [ms]
// odstep w [ms] biezacego maksimum R od poprzedniego maksimum R
Uchar HR; //wartosc HR (heart rate)
// interwal miedzyuderzeniowy obliczany z ostatnich QRS_NBR_FOR_HR odstepow RR
char MorfT; //typ morfologii (wypelniany po klasyfikacji)
// -1 - zespol oznaczony jako nieznanej morfologii
-
// 0 - dominujacy
// 1 - nadkomorowy
// 2 - komorowy
// 3 - inny
// 4 - artefakt typu uskok
// 5 - artefakt typu szum
short cl; //numer klasy morfologii
// >=0 - numer klasy,
// -1 - nie klasyfikowany, czesc "rozbiegowa" klasyfikatora (ok. 70 QRS'ow)
// -2 - nie klasyfikowany, przekroczenie dopuszczalnej ilosci klas
// -3 - nie klasyfikowany, przekroczony prog SNR
// -4 - nie klasyfikowany, odrzucony przez operatora
// -5 - nie klasyfikowany, zaznaczony przez system jako artefakt
// -6 - nie klasyfikowany, migotanie komor
// -7 - nie klasyfikowany, nadmiarowo wykryty T-end
// -8 - nie klasyfikowany, morfologia zdefiniowana przez operatora
char str[2*3]; // rezultat obliczen ST
// indeksy parzyste: poziom S-T w kanalach: 1, 2, 3 [10uV]
// indeksy nieparzyste: nachylenie S-T w kanalach: 1, 2, 3 [10uV/s]
// -128 w rezultatach ST oznacza brak danych (np. bieżący lub sąsiedni zespół jest
komorowy)
};
-
Z pliku wejściowego wyodrębniono kolumnę 1. i 5. I na ich podstawie prowadzono dalsze obliczenia:
Kolumna 1 zawiera informację o punkcie detekcji zespołu QRS (numer próbki w
sygnale oryginalnym przy ktorym nastapila detekcja QRS)
Kolumna 4 zawierająca wartość pulsu serca
Kolumna 5 zawiera informację o typie morfologii zespołu QRS:
// -1 - zespol oznaczony jako nieznanej morfologii
// 0 - dominujacy
// 1 - nadkomorowy
// 2 - komorowy
// 3 - inny
// 4 - artefakt typu uskok
// 5 - artefakt typu szum
2. Detekcja miejsc wystąpienia arytmii i określenie rodzajów arytmii
Dla każdego z rodzajów wykrywanych arytmii przyjęto kryteria pozwalające
zaklasyfikować nieregularny fragment sygnału do jednej z grup arytmii na podstawie
morfologii zespołu QRS bądź parametrów wystąpienia pobudzeń:
pojedyncze przedwczesne pobudzenie nadkomorowe – obecność pojedynczego
wystąpienia zespołu nadkomorowego;
tachykardia nadkomorowa – rytm pobudzeń nadkomorowych powyżej 100/min;
bradykardia – rytm serca poniżej 50/min;
pauza - czas przerwy pomiędzy pobudzeniami powyżej 2 s;
pojedyncze przedwczesne pobudzenie komorowe – obecność pojedynczego
zespołu komorowego nie będącego częścią salwy, pauzy, bigeminii ani trigeminii;
tachykardia komorowa – rytm pobudzeń komorowych powyżej 100/min
-
zastepczy rytm komorowy IVR – więcej niż 5 następujących po sobie zespołów
komorowych;
salwa komorowa - od 3 do 5 kolejnych pobudzeń komorowych;
bigeminia – na zmianę pobudzenie nadkomorowe i komorowe;
trigeminia – co trzecie pobudzenie jest komorowe;
para pobudzen komorowych – 2 występujące po sobie pobudzenia komorowe.
Zastosowany algorytm polega na wielokrotnym przeglądaniu pól tablicy zespołów QRS
zawierających dane morfologii QRS i sprawdzaniu, które kryteria spełnia dany fragment sygnału. Za
pierwszym razem wykrywane są tylko arytmie o najwyższym priorytecie, a przy kolejnych
przeglądach wyodrębniane są arytmie o kolejnych stopniach istotności, przy czym odcinki
przyporządkowane zidentyfikowanym uprzednio arytmiom są omijane.
Rozwiązywanie konfliktów opiera się na podziale, który z diagnostycznego punktu widzenia
wyróżna arytmie o różnym stopniu istotności:
- pierwszego rodzaju:
pauza,
częstoskurcz nadkomorowy,
tachykardia komorowa;
- drugiego rodzaju:
salwa,
czynny rytm komór,
bigeminia;
- trzeciego rodzaju:
tachykardia (nadkomorowa),
bradykardia,
rytm nieregularny,
pary,
pojedyncze przedwczesne pobudzenie komorowe.
-
Jako wynik klasyfikacji otrzymujemy tablicę, w której rodzaje arytmii oznaczone są następująco:
// Wymagana kolejnosc arytmi w tablicy ArhArray
// se=0, sp=1, st=2, br=3, si=4, pz=5, ve=6, vt=7, vr=8, vs=9, bi=10, tr=11, pr=12,
rt=13,
#define A_SE 0 // pojedyncze przedwczesne pobudzenie nadkomorowe
#define A_ST 2 // tachykardia nadkomorowa
#define A_BR 3 // bradykardia
#define A_PZ 5 // pauza
#define A_VE 6 // pojedyncze przedwczesne pobudzenie komorowe
#define A_VT 7 // tachykardia komorowa
#define A_VR 8 // zastepczy rytm komorowy IVR
#define A_VS 9 // salwa komorowa
#define A_BG 10 // bigeminia
#define A_TG 11 // trigeminia
#define A_PR 12 // para pobudzen komorowych
Dla wykrytych arytmii obliczono wymagane parametry diagnostyczne: moment wystąpienia, czas
trwania, liczbę pobudzeń, częstość rytmu oraz maksymalną/minimalną częstość rytmu.
Ostatecznie wynik operacji ma postać tablicy o strukturze:
struct ARH_ATTR_ITEM
{
Int Arh // Rodzaj arytmii
int Beg; // Moment wystapienia
int Dur; // Czas trwania
short BNr; // Liczba pobudzen
-
Uchar Hr0; // Czestosc rytmu
Uchar Hr4; // max/min z 4 czestosci rytmu }
3.Zapisanie wyników do pliku wyjściowego arh_attr.out
-
4. Rezultaty i wnioski
W wyniku zastosowania zaimplementowanego algorytmu otrzymano detektor arytmii, który
komunikuje się z pozostałymi projektami za pomocą plików:
na wejście pobiera plik qrs_attr.out,
przeprowadza detekcję podstawowych rodzajów arytmii,
na wyjściu zwraca plik arh_attr.out zawierający wykryte arytmie i ich parametry
diagnostyczne.
Przykładowe fragmenty danych wraz z interpretacją:
Fragment pliku qrs_attr.out:
7325 4 656 82 2 1 -128 -128 -128 -128 -128 -128 // pobudzenie komorowe w 7325. próbce
7473 12 1164 79 0 0 -128 -128 -128 -128 -128 -128 // pobudzenie dominujące w 7473 próbce
sygnału
Fragment pliku arh_attr.out
11 373 8 8 51 0 // trigeminia w 373 wierszu pliku qrs_attr.out, trwająca 8 pobudzeo, o częstości
rytmu 51/min
6 384 -1 0 0 0 // pojedyncze przedwczesne pobudzenie komorowe wykryte w 384 wierszu pliku
qrs_attr.out
Działanie opracowanego detektora testowano na sygnałach z bazy danych sygnałów
holterowskich, otrzymując wyniki tylko w nielicznych miejscach odbiegające od wzorców sygnałów
wyjściowych ( co jest spowodowane przyjęciem innych kryteriów klasyfikacji arytmii niż przyjęte
przez autorów niniejszego projektu).
Przyjęta metoda okazała się skuteczna, jednak daleko lepsze rezultaty można by było osiągnąć
biorąc pod uwagę również inne cechy sygnału (długość interwału RR, długość i kształt zespołu QRS,
parametry pozostałych załamków), a nie jedynie morfologię zespołu QRS i wartość HR. Byłoby to
bliższe realnemu procesowi diagnostycznemu, który realizują lekarze diagnozując arytmie u pacjenta.
Obiecujące może okazać się wykorzystanie metod sztucznej inteligencji – sieci neuronowych do
detekcji i klasyfikacji wzorców. Jednakże metody te wymagałyby większej ilości argumentów
wejściowych oraz bazy rozpoznań wzorcowych, którymi w tym projekcie nie dysponowano.
-
5. Podsumowanie
Cel projektu został osiągnięty – powstał funkcjonalny detektor wykrywający i identyfikujący typy
arytmii na podstawie danych o morfologii zespołu QRS. Pozwala to na zautomatyzowanie procesu
wykrywania anomalii w rytmie serca.
Dla lekarza może to stanowić cenną pomoc w diagnozowaniu, zwracając jego uwagę na fragmenty
sygnału, które świadczą o nieprawidłowościach. Detektor pełni więc funkcję pomocniczą, a
ostatecznej interpretacji i ustanowienia diagnozy musi dokonać lekarz, posiłkując się nie tylko
obliczonymi parametrami diagnostycznymi, ale również swoją wiedzą i doświadczeniem
wynikającym z analizy i interpretacji sygnałów elektrodiagnostycznych, by odnieść wyniki badań do
stanu konkretnego pacjenta. Konsultacje z lekarzem dowiodły, że proces decyzyjny lekarza
diagnozującego arytmię jest często intuicyjny i opiera się nie tylko na obliczonych parametrach
diagnostycznych.
Detektor jest stosunkowo prosty, natomiast dalszą optymalizację podjętego zagadnienia można
kierować w stronę bardziej zaawansowanych metod przetwarzania sygnału, jak np. sztuczne sieci
neuronowe. Dodatkowo w dalszych pracach nad rozwijaniem zagadnienia warto wziąć pod uwagę
korzystanie z innych parametrów sygnału obok informacji o morfologii QRS i wartości pulsu serca.
-
6. Literatura
[1] Piotr Augustyniak, Przetwarzanie sygnałów elektrodiagnostycznych, Wydawnictwa AGH, Kraków
2001
[2] http://www.poradnikmedyczny.pl/mod/archiwum/7022_arytmia_kiedy_twoje.html
[3] http://pl.wikipedia.org/wiki/Zaburzenia_rytmu_serca
[4] http://www.kardioserwis.pl/page.php/1/1/show/41
[5] Heart Arrhythmia detection Using Continuous Wavelet Transform and Principal Component
Analysis with Neural Network Classifier, P. Ghorbanian, A. Ghaffari, A. Jalali, C. Nataraj
[6] Using correlation coefficient in ecg waveform for arrhythmia detection, Chuang-chien Chiu, Tong-
hong Lin and Ben-yi Liau
[7] Choroby wewnętrzne – podręcznik multimedialny oparty na zasadach EBM, pod red. Prof.dr hab.
Andrzeja Szczeklika, Kraków 2005
[8] http://www.physionet.org/physiobank/database/mitdb/
http://www.poradnikmedyczny.pl/mod/archiwum/7022_arytmia_kiedy_twoje.htmlhttp://pl.wikipedia.org/wiki/Zaburzenia_rytmu_sercahttp://www.kardioserwis.pl/page.php/1/1/show/41http://www.physionet.org/physiobank/database/mitdb/
-
7. DODATEK A: Opis opracowanych narzędzi i metody
postępowania
Do testowania opracowanego detektora arytmii wystarczy dowolny system operacyjny ze
środowiskiem umożliwiającym uruchomienie plików .cpp
(Używane przez autorów projektu: System Windows 7, środowisko DevC++, v. 4.9.9.2)
Testowanymi plikami muszą być przetworzone wyniki badań holterowskich zapisane do plików
qrs_attr.out o strukturze:
struct QRS_ATTR
{
int DetPt; //punkt detekcji
// numer probki w sygnale oryginalnym przy ktorym nastapila detekcja QRS
char AMax; //wartosc korekcji maksimum zalamka R
// ilosc ms od punktu detekcji do maksymalnej 3D wartosci R
short localRR; //lokalna wartosc interwalu miedzyuderzeniowego [ms]
// odstep w [ms] biezacego maksimum R od poprzedniego maksimum R
Uchar HR; //wartosc HR (heart rate)
// interwal miedzyuderzeniowy obliczany z ostatnich QRS_NBR_FOR_HR odstepow RR
char MorfT; //typ morfologii (wypelniany po klasyfikacji)
// -1 - zespol oznaczony jako nieznanej morfologii
// 0 - dominujacy
// 1 - nadkomorowy
// 2 - komorowy
// 3 - inny
// 4 - artefakt typu uskok
-
// 5 - artefakt typu szum
short cl; //numer klasy morfologii
// >=0 - numer klasy,
// -1 - nie klasyfikowany, czesc "rozbiegowa" klasyfikatora (ok. 70 QRS'ow)
// -2 - nie klasyfikowany, przekroczenie dopuszczalnej ilosci klas
// -3 - nie klasyfikowany, przekroczony prog SNR
// -4 - nie klasyfikowany, odrzucony przez operatora
// -5 - nie klasyfikowany, zaznaczony przez system jako artefakt
// -6 - nie klasyfikowany, migotanie komor
// -7 - nie klasyfikowany, nadmiarowo wykryty T-end
// -8 - nie klasyfikowany, morfologia zdefiniowana przez operatora
char str[2*3]; // rezultat obliczen ST
// indeksy parzyste: poziom S-T w kanalach: 1, 2, 3 [10uV]
// indeksy nieparzyste: nachylenie S-T w kanalach: 1, 2, 3 [10uV/s]
// -128 w rezultatach ST oznacza brak danych (np. bieżący lub sąsiedni zespół jest
komorowy)
};
Zaimplementowany algorytm zawarty jest w pliku detektor_arytmii.cpp. Pliki niezbędne do
uruchomienia detektora to: qrs_attr.h, arhh_attr.h.
Uruchamianie detekcji:
Aby przeprowadzić detekcję, należy w używanym środowisku programistycznym
stworzyć projekt zawierający pliki detektor_arytmii.cpp, qrs_attr.h, arhh_attr.h,
qrs_attr.out a następnie skompilować i uruchomić plik detektor_arytmii.cpp.
Plik detektor_arytmii.cpp otwiera plik qrs_attr, przeprowadza obliczenia i zapisuje je w pliku
wynikowym arh_attr.out.
-
Pliki te można przeglądać w dowolnym edytorze tekstowym.
Aby przeprowadzić detekcję na innym pliku qrs_atrr.out z innego badania/dla innego pacjenta, należy
powtórzyć punkt Uruchamianie detekcji.
-
8. DODATEK B: Realizacja proponowanego rozwiązania
Detektor arytmii został zaimplementowany w języku C/C++ przy użyciu środowiska DevC++
(v. 4.9.9.2) i może być modyfikowany i rozwijany dzięki modularności kodu.
Detektor arytmii składa się z następujących modułów:
1) Część służąca do pobrania danych wejściowych.
2) Część służąca do przetwarzania danych.
a) Funkcje przeglądania tablicy danych wejściowych ze względu na kolejne
rodzaje arytmii:
Ustalenie kryterium detekcji danego rodzaju arytmii
Znalezienie fragmentów sygnału, które spełniają kryterium
Ustawienie statusu w wybranym fragmencie (przypisanie mu
wykrytego rodzaju arytmii)
Przeglądanie tablicy pod kątem detekcji arytmii zaczyna się od arytmii o
wyższym priorytecie.
Algorytm można uzupełniać o kolejne rodzaje arytmii (pamiętając o zachowaniu
ich priorytetu). Można również doskonalić kryteria klasyfikowania
poszczególnych rodzajów arytmii.
b) Obliczenie parametrów diagnostycznych wykrytych arytmii
c) Generowanie tablicy wyników.
3) Część służąca do zapisania tablicy wyników do pliku wyjściowego.
Opracowany detektor arytmii (plik detektor_arytmii.cpp) może być łatwo wcielony w całość
projektu przetwarzania sygnału EKG przy odpowiednim wywołaniu detektora jako funkcji.
-
9. DODATEK C. Opis informatyczny procedur
Plik detektor_arytmii.cpp
#include
#include
#include
#include
#include
#include
#include
#include "qrs_attr.h"
#include
using namespace std;
//ZMIENNE GLOBALNE
vector ecgAttr;
//wczytanie danych wejściowych
void loadAttributes(char *attrFilename){
ifstream attrFile;
attrFile.open(attrFilename,fstream::binary);
if (attrFile == NULL){
cout tempAttr.DetPt >> AMaxShort >> tempAttr.localRR >> HRShort >> MorfTShort >>
tempAttr.cl >> strShort[0] >> strShort[1] >> strShort[2] >> strShort[3] >> strShort[4] >> strShort[5];
-
tempAttr.AMax = static_cast(AMaxShort);
tempAttr.HR = static_cast(HRShort);
tempAttr.MorfT = static_cast(MorfTShort);
tempAttr.str[0] = static_cast(strShort[0]);
tempAttr.str[1] = static_cast(strShort[1]);
tempAttr.str[2] = static_cast(strShort[2]);
tempAttr.str[3] = static_cast(strShort[3]);
tempAttr.str[4] = static_cast(strShort[4]);
tempAttr.str[5] = static_cast(strShort[5]);
ecgAttr.push_back(tempAttr);
}
}
attrFile.close();
ecgAttr.pop_back();
}
int main() {
loadAttributes("qrs_attr.out");
cout
-
// funkcja wykrywania 2 02 oraz 002 w sygnale
int tmp[3][x];
for (int w=0;w
-
//wykrywanie pary salwy i IVR para
int n=0;
int licznik=0; // zmienna licząca ilość kolejnych powtórzeń pobudzenia komorowego (2)
while (tmp[0][n+1] != -128)
{
//cout
-
licznik=0;
}
}
}
n++;
}
// Znajdź bigeminie
n=0;
while (tmp[1][n+1] != -128)
{
if (tmp[1][n+1] - tmp[1][n] == 2)
{
tab[3][tmp[1][n]-1]=10; //ustaw status na bigeminie
tab[3][tmp[1][n]]=10; //ustaw status na bigeminie
tab[3][tmp[1][n]+1]=10; //ustaw status na bigeminie
tab[3][tmp[1][n]+2]=10; //ustaw status na bigeminie
}
n++;
}
// Znajdź Trigeminie
n=0;
while (tmp[2][n+1] != -128)
{
if (tmp[2][n+1] - tmp[2][n] == 3)
{
tab[3][tmp[1][n]-2]=11; //ustaw status na trigeminie
-
tab[3][tmp[1][n]-1]=11; //ustaw status na trigeminie
tab[3][tmp[1][n]]=11; //ustaw status na trigeminie
tab[3][tmp[1][n]+1]=11; //ustaw status na trigeminie
tab[3][tmp[1][n]+2]=11; //ustaw status na trigeminie
tab[3][tmp[1][n]+3]=11; //ustaw status na trigeminie
cout
-
// Pauza
for (int w=0;w2 ) { //pauza czas przerwy powyżej 2 s
tab[3][w]=5; //ustaw status na Pauza
}
};
// Pojedyncze pobudzenie komorowe
for (int w=0;w
-
//Generowanie tablicy wyników
int wynik[6][x];
for (int w=0;w
-
break;
}
case 2:{ // wpisanie reszty danych do tach nadkomorowej
int max=0;
int suma=0;
for(int d=w+1-licznik;d
-
wynik[5][k]=min;
k++;
licznik=0;
break;
}
case 5:{ //wpisanie reszty danych do pauzy
wynik[2][k]=-1;
wynik[3][k]=0;
wynik[4][k]=0;
wynik[5][k]=0;
k++;
licznik=0;
break;
}
case 6: { //wpisanie reszty danych do poj przedwcz pob komor
wynik[2][k]=-1;
wynik[3][k]=0;
wynik[4][k]=0;
wynik[5][k]=0;
k++;
licznik=0;
break;
}
case 8:{ //wpisanie reszty danych do zast rytm kom
int min=900;
int suma=0;
for(int d=w+1-licznik;dtab[2][d]){
min=tab[2][d];
}
}
wynik[2][k]=(tab[0][w]-tab[0][w+1-licznik])/128;
-
wynik[3][k]=licznik;
wynik[4][k]=suma/licznik;
wynik[5][k]=min;
k++;
licznik=0;
break;
}
case 9: { //wpisanie reszty danych do salwy
wynik[2][k]=-1;
wynik[3][k]=0;
wynik[4][k]=0;
wynik[5][k]=0;
k++;
licznik=0;
break;
}
case 10: { //wpisanie reszty danych do trigeminii
wynik[2][k]=(tab[0][w]-tab[0][w+1-licznik])/128;
wynik[3][k]=licznik;
wynik[4][k]=0;
wynik[5][k]=0;
k++;
break;
licznik=0;
}
case 11: { //wpisanie reszty danych do bigemini
wynik[2][k]=(tab[0][w]-tab[0][w+1-licznik])/128;
wynik[3][k]=licznik;
wynik[4][k]=0;
wynik[5][k]=0;
k++;
break;
licznik=0;
-
}
case 12:{ //wpisanie reszty danych do para
wynik[2][k]=-1;
wynik[3][k]=0;
wynik[4][k]=0;
wynik[5][k]=0;
k++;
break;
licznik=0;
}
}
}
licznik=0;
}
}
}
-
//Zapisywanie do pliku wynikowego
int w=0;
FILE* arh_attr;
arh_attr=fopen("arh_attr.out", "at");
while (wynik[0][w] != -128){
fprintf(arh_attr, "%d ", wynik[0][w]);
fprintf(arh_attr, "%d ", wynik[1][w]);
fprintf(arh_attr, "%d ", wynik[2][w]);
fprintf(arh_attr, "%d ", wynik[3][w]);
fprintf(arh_attr, "%d ", wynik[4][w]);
fprintf(arh_attr, "%d ", wynik[5][w]);
fprintf(arh_attr, "\n");
w++;
}
fclose(arh_attr);
system("PAUSE");
}
-
10. DODATEK D. Spis zawartości dołączonych nośników
(dyskietek, CD ROMu)
Baza zapisów kardiologicznych baza.rar
Plik zawierający detektor arytmii: detektor_arytmii.cpp
top related