111
ANALISA DAN PERANCANGAN SISTEM
3.1
Analisa Masalah
Pengenalan pola dan penganalisaan EKG secara manual memiliki persentase
resiko kegagalan yang ditimbulkan yang cukup besar yang diakibatkan karena terjadinya
ketidaktelitian dalam penginterpretasian. Hal ini disebabkan karena terdapatnya
beberapa penyakit dengan karakteristik yang nyaris sama. Selain itu, keterbatasan fisik
para ahli sebagai manusia juga dapat menimbulkan terjadinya kesalahan dalam
penginterpretasian, seperti kesalahan yang disebabkan karena kelelahan yang dialami
oleh para ahli. (Loren, K, 2000).
Selain masalah ketelitian, penganalisaan EKG secara manual juga menimbulkan
masalah waktu. Untuk meminimalisasi resiko kegagalan akibat ketidaktelitian maka
dibutuhkan waktu yang cukup lama dalam pengenalan pola serta penganalisaannya
(Zainal, H, 1978). Sehingga apabila dibutuhkan informasi dalam waktu yang cepat,
tingkat kemungkinan terjadinya kegagalan penginterpretasian menjadi sangat besar.
3.2
Pemecahan Masalah
Masalah-masalah di atas dapat diatasi dengan merancang sebuah prototipe
berbasiskan teknologi informasi yang dapat digunakan untuk mengenali pola gelombang
EKG dan pendiagnosannya. Dengan diciptakan prototipe ini diharapkan dapat
meningkatkan ketelitian dan mengurangi durasi waktu yang dibutuhkan dalam tahap
pengenalan dan penganalisaan pola.
< >
Fuzzy Logic Neural NetworK
System Error
Train Count Target Error
Alpha Train Load Weight Save Weight Analyze Analyze
Gambar 3.7 Rancangan Tampilan Utama
Layar utama terdiri dari 5 bagian, yaitu :
1. Title
Title berisi judul program “ECG Analyzer”.
2. Menu Bar
Menu Bar berisi menu-menu untuk membuka/menutup file, dan pemrosesan
sinyal. Menu bar ini terdiri dari :
- File
Berisi pilihan untuk load data dan close data, serta exit untuk keluar
dari program.
- Graph
Terdiri dari tiga bagian. Bagian pertama adalah option, yang
berfungsi untuk mengatur kecepatan animasinya, yang bila dipilih
akan menampilkan window baru seperti di bawah ini:
Settings X
Animation Speed
Close Apply
Graph Length
Gambar 3.8 Window Untuk Setting Animasi
Satu bagian lagi adalah animate, yang berfungsi untuk mengatur
tampilan gelombang (statis atau animasi). Lalu, bagian terakhir
yaitu simulation, yang berfungsi untuk menampilkan gelombang
EKG penyakit-penyakit jantung yang ada, yaitu :
o
Raw Data
o Normal
o Sinus Tachycardia
Berisi langkah-langkah pemrosesan sinyal untuk mendeteksi lokasi
QRS dan klasifikasi bentuk QRS. Langkah-langkah tersebut antara
lain
o
Bandpass Filter
o Baseline Shift Removal
o Averaging and Scaling
o
Squaring and Moving Window Integrator
o Dynamic Threshold and QRS Detection
o
Lowpass Filter
o Baseline Shift Removal
o Feature Space C1 and C2
o
Feature Space C1 and C5
o Detected QRS Complex
- About
Apabila diklik, maka akan memunculkan window baru yang
menampilkan nama-nama pembuat program.
About X
ECG Signal Analyzer
OK
Gambar ECG Signal Analyzer
Dibuat Untuk Proyek Skripsi Jenjang S1
Oleh : Ohaiyo Randy Rahmat 0700695521
Ivan Christian 0700708524
Feriko Wirajimin 0700708676
Gambar 3.9 Window About yang Menampilkan Nama-nama Pembuat
- Shortcut Button
Berisi button-button yang merupakan shortcut dari menu-menu di
dalam Menu Bar (Load, Close, Exit, Options, Animate, dan
Button-button Signal Processing).
-
Axis
Bagian ini berfungsi untuk menampilkan grafik yang dihasilkan.
-
Scroll Bar
Bagian ini berfungsi untuk menggeser grafik / tampilan gelombang
pada waktu yang diinginkan.
-
Group Fuzzy Logic
Berisi tombol Analyze yang berguna untuk memulai analisa pola
dan mendiagnosanya. Bila tombol Analyze ditekan, maka akan
Gambar 3.10 Window Analisa dan Hasil Diagnosa
-
Group Neural Network
Berisi Button Train untuk proses pembelajaran, Load Weight untuk
mengambil nilai bobot yang akan digunakan, Save Weight untuk
menyiman nilai bobot setelah di training, dan Button Analyze untuk
menganalisa dan mendiagnosa data EKG.
3.5
Spesifikasi Proses
Sebelum sinyal/data EKG di analisa, terlebih dahulu diperlukan serangkaian
proses pengenalan pola untuk mengenali karakteristik dari gelombang EKG tersebut.
Adapun langkah-langkah proses pengenalan pola tersebut seperti pada gamabar berikut:
Gambar 3.11 menunjukkan serangkaian proses untuk mengenali pola gelombang
EKG asli. Untuk data EKG yang telah dinormalisasi, proses pengenalan agak berbeda.
Ini dikarenakan data tersebut sudah dibentuk sedemikian rupa sehingga tidak lagi
memiliki noise serta tidak membutuhkan pergeseran garis dasar. Untuk itu proses digital
bandpass filter, lowpass filter, serta baseline shift removal tidak diperlukan lagi.
Langkah-langkah algoritma pengenalan polanya adalah sebagai berikut:
3.5.1 Signal Processing dan QRS Detection
Untuk penggunaan sinyal EKG berdasarkan rekaman asli, maka setelah pertama
kali di-load, akan terlihat grafik seperti berikut:
Gambar 3.13 Sinyal yang Pertama Kali Dihasilkan
Karena data ini bersasal dari rekaman langsung terhadap pasien, maka pada
sinyal masih terdapat noise yang menyebabkan kesulitan dalam melakukan analisa.
Untuk itu, sinyal harus diproses dengan algoritma pemrosesan sinyal digital.
3.5.1.1 Proses Digital Bandpass Filter
Tahap yang pertama dalam pemrosesan sinyal adalah proses digital bandpass
filter. Pada proses ini noise yang ada dihilangkan. Dengan menggunakan Discreet
Fourier Transform (DFT), respon sinyal dari proses ini dihasilkan. Berikut ini adalah
hasil dari proses digital bandpass filter
Gambar 3.14 Sinyal EKG Asli Setelah Tahap Digital Bandpass Filter
3.5.1.2 Proses Baseline Shift Removal
Dari sinyal yang dihasilkan sebelumnya, terlihat bahwa garis dasar dari
gelombang tersebut tidak berada pada titik nol. Untuk itu, perlu dilakukan pergeseran
garis dasar mendekati nol dengan menggunakan metode pengepasan kurva berdasarkan
pendekatan polinomial Chebyshev. Hasil pendekatan tersebut kemudian dikalikan
dengan fungsi pembobot (weighting function). Fungsi pembobot yang digunakan seperti
pada gambar berikut:
Gambar 3.16 Perkiraan Geseran Garis Dasar Dengan Polinomial Chebyshev
Gambar 3.17 Garis Dasar Digeser Sehingga Mendekati Nol
3.5.1.3 Proses Averaging dan Scaling
Pada proses ini, dilakukan penskalaan pada sinyal sehingga rata-rata
amplitudonya menjadi 10.
Gambar 3.18 Tahap Averaging dan Scaling
3.5.1.4 Proses Squaring dan Moving Window Integrator
Pada proses ini, sinyal dikuadratkan dan dihaluskan bentuknya dengan moving
window integrator. Lebar window integrator yang digunakan sama dengan 5.. Hasil dari
proses ini adalah sebagai berikut:
3.5.1.5 Proses Dynamic Threshold dan QRS Detection
Dengan penggunaan threshold sebagai batas acuan untuk mendeteksi kompleks
QRS, maka nilai maksimum dari sinyal pada periode tertentu dapat diketahui. Berikut
ini adalah hasilnya:
Gambar 3.20 Posisi Kompleks QRS Sudah Diketahui
3.5.2 Shape Recognition
Setelah serangkaian proses sebelumnya, maka lokasi kompleks QRS sudah
diketahui. Berikutnya adalah proses untuk menentukan normal atau tidaknya kompleks
QRS tersebut. Karena proses sebelumnya sudah banyak mendistorsi sinyal, maka pada
untuk proses selanjutnya digunakan sinyal EKG yang masih belum diolah.
3.5.2.1 Proses Digital Lowpass Filter
Hampir sama pada tahap bandpass filter, sinyal dihilangkan noise-nya, tetapi
noise pada frekuensi tinggilah yang dihilangkan.
Gambar 3.21 Sinyal EKG Asli Setelah Tahap Lowpass Filter
3.5.2.2 Proses Baseline Shift Removal
Sama seperti yang telah dibahas sebelumnya, setelah proses digital lowpass filter
maka dilakukan baseline shift removal untuk menggeser garis dasar mendekati nol.
Gambar 3.23 Penghilangan Geseran Garis Dasar
3.5.3 Pengenalan Pola
Dengan menggunakan rumus pada pendekatan polinomial Chebyshev didapatkan
koefisien-koefisien yang digunakan untuk penentuan distribusi pada feature space.
Klasifikasi jarak minimum menggunakan Euclidean distance digunakan untuk
mengenali pola kompleks QRS normal. Lalu rumus (2-55) digunakan untuk mencari
titik pusat gravitasi pada feature space. Bila ternyata pemetaan koefisien jaraknya jauh
dari pusat gravitasi normal, maka titik tersebut tergolong ventrikular.
Gambar 3.25 Distribusi Koefisien Chebyshev (c
1, c
5)
Dari hasil klasifikasi diatas, maka nilai perhitungan jaraknya dapat digambarkan
seperti berikut:
Gambar 3.26 Klasifikasi Bentuk QRS
3.5.4 Diagnosis
Setelah melalui serangkaian proses signal processing, maka kompleks
gelombang QRS dapat diklasifikasi. Jenis-jenis penyakit-pun dapat diklarifikasikan
berdasarkan kompleks gelombang tersebut. Berikut ini adalah gambar dari lima
kompleks QRS berturut-turut:
Gambar 3.27 Lima QRS yang Dijadikan Input Dalam Analisa
Setelah didapat lima QRS, maka ditentukan beberapa karakteristik yang akan
digunakan dalam diagnosis yaitu:
• Denyut jantung per menit.
• Varian interval.
• Interval antar kelima kompleks QRS (t
1, t
2, t
3, t
4) dalam satuan detik.
• Jumlah kompleks QRS ventrikular diantara lima denyut yang dianalisa.
• Waktu yang terhitung sejak kompleks QRS terakhir.
Kelima karakteristik di atas digunakan seperti layaknya sebuah expert system,
dimana untuk setiap variabel didefinisikan sebuah subset fuzzy dengan nilai yang telah
ditentukan dari berbagai sumber (Krzysztof Dubowik, 1999).
Number
of
Ventricular
Complexes Varian
[rhytm]
Time Since Last QRS
Gambar 3.28 Fuzzy Set yang Digunakan Dalam Expert System
Untuk diagnosa penyakit, diperlukan penambahan satu variabel. Untuk setiap
langkah forward chaining didefinisikan sebagai berikut:
Diagnosis
Berdasarkan informasi di atas dapat digambarkan sebuah decision tree untuk
menganalisa penyakit sebagai berikut:
Number of ventricular complexes IS none THEN Rhythm IS supraventricular
IF Rhythm IS supraventricular AND Rhythm IS regular AND
Heart rate IS normal
THEN Diagnosis normal sinus rhythm IS yes
Sinus tachycardia:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS none THEN Rhythm IS supraventricular
IF Rhythm IS supraventricular AND Rhythm IS regular AND
Heart rate IS high
THEN Diagnosis sinus tachycardia IS yes
Sinus bradycardia:
Number of ventricular complexes IS none THEN Rhythm IS supraventricular
IF Rhythm IS supraventricular AND Rhythm IS regular AND
Heart rate IS low
THEN Diagnosis sinus bradycardia IS yes
Sinus arrhythmia:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS none THEN Rhythm IS supraventricular
IF Rhythm IS supraventricular AND Rhythm IS NOT regular AND Interval shortened IS none AND Interval prolonged IS none
THEN Diagnosis sinus arrhythmia IS yes
Ventricular fibrillation:
IF Time since last QRS IS NOT normal
THEN Diagnosis ventricular fibrillation IS yes
Premature atrial complex:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS none THEN Rhythm IS supraventricular
IF Time since last QRS IS normal AND
Number of ventricular complexes IS none THEN Rhythm IS supraventricular
IF Rhythm IS supraventricular AND Rhythm IS NOT regular AND Interval shortened IS yes AND
Number of shortened interval IS more than or equal to 3 THEN Diagnosis atrial tachycardia IS yes
Premature Ventricular Complexes:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS NOT none THEN Rhythm IS ventricular
IF Rhythm IS ventricular AND
Number of ventricular complexes IS few AND Rhythm IS NOT regular AND
Interval shortened IS yes
Ventricular tachycardia:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS NOT none THEN Rhythm IS ventricular
IF Rhythm IS ventricular AND
Number of ventricular complexes IS many AND Rhythm IS regular
THEN Diagnosis ventricular tachycardia IS yes
Supraventricular escape beat:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS none THEN Rhythm IS supraventricular
IF Rhythm IS supraventricular AND Rhythm IS NOT regular AND Interval shortened IS none AND Interval prolonged IS yes
THEN Diagnosis supraventricular escape beat IS yes
Ventricular escape beat:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS NOT none THEN Rhythm IS ventricular
IF Rhythm IS ventricular AND
Number of ventricular complexes IS few AND Rhythm IS NOT regular AND
THEN Rhythm IS ventricular
IF Rhythm IS ventricular AND
Number of ventricular complexes IS few AND Rhythm IS regular
THEN Diagnosis bundle branch block IS yes
Atau:
IF Time since last QRS IS normal AND
Number of ventricular complexes IS NOT none THEN Rhythm IS ventricular
IF Rhythm IS ventricular AND
Number of ventricular complexes IS many AND Rhythm IS NOT regular
3.6
Pseudocode
3.6.1 Main Modul
Class TForm1
Prosedur RandomWeight Randomisasi
Random semua weight hidden layer Random semua weight ouput layer Akhir Prosedur
Prosedur FormCreate
Inisialisasi nilai variable-variabel
Inisialisasi jumlah input layer, hidden layer dan output layer RandomWeight
Baca nama-nama simulasi yang tersedia dan masukan ke memory Tambahkan nama-nama simulasi ke dalam menu Simulasi
Akhir Prosedur
Prosedur FormDestroy
Hentikan animasi jika berjalan
Bebaskan memory yang dialokasikan untuk simulasi Jika Signal tidak kosong maka Bebaskan memory yang
dialokasikan untuk Signal Akhir Prosedur
Prosedur SimulationClick
Set Active Graph ke index dari simulasi Jika Active Graph sama dengan nol maka
Disable MenuBandPassFilter dan ButtonBandPassFilter Disable MenuLowPassFilter dan ButtonLowPassFilter Disable MenuBaselineShiftRemoval1 dan
ButtonBaselineShiftRemoval1
Disable MenuBaselineShiftRemoval2 dan ButtonBaselineShiftRemoval2
Akhir Jika
Jika Active Signal kosong maka Disable ScrollBar
selain itu
Enable Scrollbar
Sesuaikan nilai maksimum Scrollbar dengan panjang signal Akhir Jika
Akhir Prosedur
Prosedur ExitClick Tutup Form Utama Tutup Applikasi Akhir Prosedur
Prosedur AboutClick
Hentikan Timer Animasi Tampilkan Form About
Jika Animasi aktif maka jalankan kembali Timer Animasi Akhir Prosedur
Prosedur AnimateClick
Jika Animasi aktif maka hentikan Timer Animasi selain itu Jalankan Timer Animasi
Akhir Prosedur
Prosedur OptionsClick
Set nilai-nilai Trackbar Animate Speed dan Graph Length pada Form Options
Tampilkan Form Options
Jika user menekan OK maka simpan nilai-nilai dari Trackbar tersebut
Akhir Prosedur
Prosedur LoadDataClick
Tampilkan Open File Dialog Jika User menekan Open maka
Baca data signal ke Signal Set Active Graph ke nol Set Active Signal ke Signal
Sesuaikan nilai maksimum Scrollbar dengan panjang signal Akhir Jika
Set posisi Graph ke posisi ScrollBar Akhir Prosedur
Prosedur ButtonBandPassFilterClick
Jika ButtonBandPassFilter tertekan maka Tandai MenuBandPassFilter
Selain itu
Hilangkan tanda pada MenuBandPassFilter Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Prosedur
Prosedur ButtonBaselineShift1Click
Jika ButtonBaselineShift1 tertekan maka Tandai MenuBaselineShiftRemoval1 Selain itu
Hilangkan tanda pada MenuBaselineShiftRemoval1 Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Jika Akhir prosedur
Prosedur ButtonAverageClick
Jika ButtonBaselineShiftRemoval1 tertekan maka Tandai MenuAveragingAndScaling
Selain itu
Hilangkan tanda pada MenuAveragingAndScaling Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Prosedur
Prosedur ButtonSquareClick
Jika ButtonSquare tertekan maka
Tandai MenuSquaringAndMovingWindowIntegrator Selain itu
Hilangkan tanda pada MenuSquaringAndMovingWindowIntegrator Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Prosedur
Prosedur ButtonLowPassFilterClick
Jika ButtonLowPassFilter tertekan maka Tandai MenuLowPassFilter
Selain itu
Hilangkan tanda pada MenuLowPassFilter Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Prosedur
Prosedur ButtonBaselineShift2Click
Jika ButtonBaselineShift2 tertekan maka Tandai MenuBaselineShiftRemoval2
Selain itu
Hilangkan tanda pada MenuBaselineShiftRemoval2 Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Prosedur
Prosedur ButtonFeatureSpace12Click
Jika ButtonFeatureSpace12 tertekan maka Tandai MenuFeatureSpaceC1andC2 Selain itu
Hilangkan tanda pada MenuFeatureSpaceC1andC2 Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Prosedur
Prosedur ButtonFeatureSpace15Click
Jika ButtonFeatureSpace15 tertekan maka Tandai MenuFeatureSpaceC1andC5 Selain itu
Hilangkan tanda pada MenuFeatureSpaceC1andC5 Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Hilangkan tanda pada MenuDetectedQRSComplex Akhir Jika
Panggil prosedur AdjustSignal Set parameter Graph
Jika Active Signal kosong maka disable Scrollbar selain itu enable Scrollbar
Akhir Prosedur
Prosedur AdjustSignal
Set Graph ke Signal Processing yang sedang aktif Akhir Prosedur
Prosedur AdjustEnable Jika Signal kosong maka Disable tombol Analyze
Disable semua tombol Signal Processing Selain itu
Enable tombol Analyze
Jika Signal adalah simulasi maka
Enable semua tombol Signal Processing kecuali Band Pass, Low Pass, Baseline Shift Removal 1 dan 2
Selain itu
Enable semua tombol Signal Processing Akhir Jika
Akhir Jika Akhir Prosedur
Prosedur MenuBandPassFilterClick
Jika ButtonBandPassFilter tertekan maka lepaskan selain itu tekan ButtonBandPassFilter
Panggil ButtonBandPassFilterClick Akhir Prosedur
Prosedur MenuBaselineShiftRemoval1Click
Jika ButtonBaselineShift1 tertekan maka lepaskan selain itu tekan ButtonBaselineShift1
Panggil ButtonBaselineShift1Click Akhir Prosedur
Prosedur MenuAveragingAndScalingClick
Jika ButtonAveraging tertekan maka lepaskan selain itu tekan ButtonAveraging
Panggil ButtonAverageClick Akhir Prosedur
Prosedur MenuSquaringAndMovingWindowIntegratorClick
Jika ButtonSquare tertekan maka lepaskan selain itu tekan ButtonSquare
Panggil ButtonSquareClick Akhir Prosedur
tekan ButtonLowPassFilter
Panggil ButtonLowPassFilterClick Akhir Prosedur
Prosedur MenuBaselineShiftRemoval2Click
Jika ButtonBaselineShift2 tertekan maka lepaskan selain itu tekan ButtonBaselineShift2
Panggil ButtonBaselineShift2Click Akhir Prosedur
Prosedur MenuFeatureSpaceC1andC2Click
Jika ButtonFeatureSpace12 tertekan maka lepaskan selain itu tekan ButtonFeatureSpace12
Panggil ButtonFeatureSpace12Click Akhir Prosedur
Prosedur MenuFeatureSpaceC1andC5Click
Jika ButtonFeatureSpace15 tertekan maka lepaskan selain itu tekan ButtonFeatureSpace15
Panggil ButtonFeatureSpace15Click Akhir Prosedur
Prosedur MenuDetectedQRSComplexClick
Jika ButtonDetectedQRSComplex tertekan maka lepaskan selain itu tekan ButtonDetectedQRSComplex
Panggil ButtonDetectedQRSComplexClick Akhir Prosedur
Prosedur TrainAll Ulangi
Tambah traincount
Forward input ke hidden layer
Forward hidden layer ke output layer Hitung error dari output layer
Backward output ke hidden layer Backward hidden layer ke input layer Update weight hidden layer
Update weight output layer Hitung error rata-rata
Hingga error rata-rata lebih kecil dari target error Akhir Prosedur Prosedur TrainClick Inisialisasi nPattern Jalankan Inisialisasi Graph Tambah nPattern
Hitung masing-masing input Masukkan input kedalam nPattern Hitung target dari input
Baca weight hidden layer Baca weight output layer Tutup file weight
Akhir Prosedur
Prosedur SaveWeightClick Buka file weight
Tulis jumlah traincount Tulis systemerror
Tulis weight hidden layer Tulis weight output layer Tutup file weight
Akhir Prosedur
Prosedur HitungTarget
Inisialisasi nilai variabel-variabel Hitung nilai desimal dari output layer Akhir Prosedur
Prosedur NeuralAnalyzeClick
Hitung masing-masing input
Forward input layer ke hidden layer Forward hidden layer ke output layer Panggil HitungTarget
Tampilkan Form Analyze
Panggil Prosedur NeuralNet pada form Analyze Akhir Prosedur
Prosedur FuzzyAnalyzeClick Tampilkan Form Analyze
Panggil Prosedur FuzzyL pada form Analyze Akhir Prosedur
Akhir Class
3.6.2 Modul UnitAbout
Class TForm1Prosedur FormCreate
Baca gambar animasi dan simpan ke memory Akhir Prosedur
Prosedur FormShow
Set Frame animasi ke nol Reset animasi text
Jalankan timer Akhir Prosedur
Prosedur FormHide Stop Timer
Tutup Form About Akhir Prosedur Akhir Class
3.6.3 Modul UnitOptions
Class TForm3Prosedur TForm3.AnimationSpeedChange(Sender: TObject); Set Label1 ke posisi AnimationSpeed
Akhir Prosedur
Prosedur GraphLengthChange
Set Label2 ke posisi GraphLength Akhir Prosedur Akhir Class
3.6.4 Modul UnitAnalyze
Class TForm4 Prosedur FormShow Kosongkan AnalisaAkhir Prosedur
Prosedur FormClose
Jika thread ada dan sedang berjalan maka batalkan penutupan form
Akhir Prosedur
Prosedur FuzzyL
Inisialisasi variabel dan data
Lakukan perulangan untuk setiap QRS yang terdeteksi Hitung jarak antar ke 5 posisi QRS
Hitung rata-rata jarak Hitung Variasi antar jarak
Hitung jumlah kompleks QRS Ventricular Hitung Detak Per Menit
Lakukan analisa penyakit dengan Fuzzy Subset yang tersedia Akhir perulangan
Hitung persentase tiap-tiap penyakit yang di temukan beserta Tampilkan tiap-tiap penyakit berserta persentasenya
Akhir Prosedur
Prosedur NeuralNet
Inisialisasi variabel dan data
Tampilkan hasil analisa berdasarkan nilai output layer Akhir Prosedur
Bebaskan memory linklist Akhir Destructor
Prosedur AddHeartBeat
Tambahkan Heartbeat baru ke linklist Akhir Prosedur
Fungsi GetHeartBeat
Lakukan looping hingga ke posisi yang diinginkan Kembalikan informasi HeartBeat
Akhir Fungsi
Prosedur SetInterval
Set Interval dari sampling Akhir Prosedur
Fungsi GetInterval
Kembalikan Interval dari Sampling Akhir Fungsi
Fungsi GetData
Hitung posisi yang ingin disampling Lakukan perhitungan posisi gelombang Kembalikan nilai sampling
Akhir Fungsi
Fungsi GetLength
Kembalikan panjang simulasi Akhir Fungsi
Fungsi GetCount
Kembalikan jumlah sample Akhir Fungsi
Akhir Class
3.6.6 Modul ECGData
Class TECGDataConstructor Create
Baca informasi sinyal dan simpan ke memory Akhir Constructor
Fungsi GetSignal
Buat TECGSignal berdasarkan informasi sinyal Kembalikan object tersebut
Akhir Fungsi Akhir Class
Fungsi GetData
Kembalikan nilai data sinyal Akhir Fungsi Akhir Class
3.6.7 Modul SignalProcessing
Class TSignalProcessor Constructor Create Inisialisasi variabelJika sig tidak kosong maka set Signal ke sig Akhir Constructor
Prosedur NotifyListener
Panggil prosedur Changed untuk setiap Listener Akhir Prosedur
Prosedur Changed Set Update ke True
Akhir prosedur
Prosedur UpdateData Set Update False Akhir UpdateData
Prosedur AddChangeListener
Tambahkan listener baru ke list Akhir Prosedur
Prosedur RemoveChangeListener Keluarkan listener dari list Akhir Prosedur
Prosedur SetSignal Set Signal ke sig Akhir Prosedur
Fungsi GetData
Jika Signal tidak kosong maka panggil GetData dari Signal
Selain itu
kembalikan nilai default
Akhir Jika
Akhir Fungsi
Fungsi GetTipe
Jika Enabled maka kembalikan Tipe selain itu kembalikan Tipe dari Signal
Kembalikan nilai Enabled Akhir Fungsi Akhir Class
3.6.8 Modul SignalFilter
Class LowpassFilter Constructor Create Initialisasi variabel-variabelBuat koefisien respon frekuensi pada 0-40Hz Lakukan Invers DFT untuk koefisien respon impuls Akhir Constructor
Destructor Destroy
Bebaskan memory yang dialokasi untuk Signal Akhir Destructor
Prosedur UpdateData Set Update ke False
Lakukan perkalian koefisien ke setiap sinyal dan simpan ke data signal
Akhir Prosedur
Fungsi GetData
Jika nilai Update True maka Panggil Prosedur UpdateData Kembalikan nilai data signal sesuai index
Akhir Fungsi Akhir Class
Class BandpassFilter Constructor Create
Initialisasi variabel-variabel
Buat koefisien respon frekuensi pada 8-40Hz Lakukan Invers DFT untuk koefisien respon impuls Akhir Constructor
Destructor Destroy
Bebaskan memory yang dialokasi untuk Signal Akhir Destructor
Prosedur UpdateData Set Update ke False
Lakukan perkalian koefisien ke setiap sinyal dan simpan ke data signal
Akhir Prosedur
Fungsi GetData
Jika nilai Update True maka panggil Prosedur UpdateData Kembalikan nilai data signal sesuai index
Destructor Destroy
Bebaskan memory yang dialokasi untuk Signal Akhir Destructor
Prosedur UpdateData Set Update ke False
Cari nilai maksimum dan nilai minimum Signal Simpan nilai range dari minimum dan maksimum
Bagi setiap data pada Signal dengan range dan kalikan dengan nilai Scale
Akhir prosedur
Prosedur GetData
Jika nilai Update True maka panggil Prosedur UpdateData Kembalikan nilai Signal sesuai index
Akhir Prosedur Akhir Class
3.6.10 Modul SquaredAndDynamicThreshold
Class SquaredAndMovingWindowIntegrator Constructor CreateInisialisasi variable-variabel
Set Signal ke Signal dari proses sebelumnya Akhir Constructor
Prosedur UpdateData Set Update ke False
Lakukan pengkuadratan data Signal dari index–2 hingga index+2 Bagi dengan 5 dan simpan ke memory
Ulangi pengkuadratan hingga akhir signal Akhir Prosedur
Fungsi GetData
Jika nilai Update True maka panggil prosedur UpdateData Kembalikan nilai data sesuai index
Akhir Fungsi Akhir Class
Class DynamicThreshold Constructor Create
Inisialisasi variable-variabel
Set Signal ke Signal dari proses sebelumnya Akhir Constructor
Destructor Destroy
Hitung luas dari area yang melewati garis threshold Jika lebih dari batas yang ditentukan maka catat
posisi tertinggi sebagai posisi QRS Kompleks
Selain itu
Hitung nilai berikutnya
Akhir jika
Akhir Prosedur
Fungsi GetData
Jika nilai Update True maka panggil prosedur UpdateData Kembalikan nilai data sesuai index
Akhir Fungsi Akhir Class
Class TRPeak
Constructor Create
Inisialisasi variable-variabel
Set Signal ke Signal dari proses sebelumnya Akhir Constructor
Bebaskan memory yang dialokasi untuk Signal Akhir Destructor
Prosedur UpdateData Set Update ke False
Lakukan perulangan untuk setiap signal dan simpan posisi QRS Akhir Prosedur
Fungsi GetData
Jika nilai Update True maka panggil prosedur UpdateData Kembalikan nilai posisi sesuai index
Akhir Fungsi Akhir Class
3.6.11 Modul Chebyshev
Class ChebyshevPolinomial Constructor Create Inisialisasi variable-variabelSet Signal ke Signal dari proses sebelumnya Akhir Constructor
Destructor Destroy
Bebaskan memory yang dialokasi untuk Signal Akhir Destructor
Fungsi GetData
Jika index tidak dalam range sebelumnya maka hitung kembali nilai Koefisien
Akhir Constructor
Destructor Destroy
Bebaskan memory yang dialokasi untuk Signal Akhir Destructor
Prosedur UpdateData Set Update ke False
Hitung nilai koefisien chebyshev C1, C2, dan C5 pada posisi QRS yang terdeteksi
Simpan nilai koefisien tersebut
Lakukan hingga akhir dari posisi QRS yang terdeteksi Akhir Prosedur
Fungsi GetData
Jika nilai Update True maka panggil prosedur UpdateData Kembalikan nilai koefisien chebyshev
Akhir Fungsi Akhir Class
Class TQRSComplex
Constructor Create
Inisialisasi variable-variabel
Set Signal ke Signal dari proses sebelumnya Akhir Constructor
Destructor Destroy
Bebaskan memory yang dialokasi untuk Signal Akhir Destructor
Prosedur UpdateData Set Update ke False
Lakukan looping untuk setiap koefisien chebyshev dan hitung cari jarak koefisien tersebut ke klasifikasi QRS terdekat dan simpan bentuk QRS
Akhir Prosedur
Fungsi GetData
Jika nilai Update True maka panggil prosedur UpdateData Kembalikan nilai bentuk QRS
Akhir Fungsi Akhir Class
3.6.12 Modul FuzzyLogic
Fungsi HeartRateLowHitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi IntervalShort
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi IntervalNormal
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi IntervalLong
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi VentricularNone
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Fungsi VentricularFew
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi VentricularMany
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi VarianceRegular
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi VarianceIrregular
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi TimeSinceNormal
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi TimeSinceLong
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value
Akhir Fungsi
Fungsi DiagnosisYes
Hitung membership value sesuai dengan gambar Fuzzy Set Kembalikan nilai membership value