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