My father died with heart attack in 2011. We had a health check just two days before the event, but nothing came out. I have been working on ECG signals ever since. For last six years I have built several algorithms for detecting individual diseases, spent a lot of time analyzing and studying the properties of ECG signals.
The condition is no different for my country India where every one out of four deaths is attributed to heart related diseases. This is due to the fact that we produce almost half a million less doctors than demanded every year. Number of cardiologists required is far below this figure.
At a time when Heart diseases is becoming almost epidemic in my country, automated diagnostics and machine learning techniques are needed for ECG prognostic. With limited healthcare facilities (especially cardio) available in rural areas, machine learning and artificial intelligence based system is almost need of the hour alongside easy and cost effective data acquisition.
Even though there have been several low cost ECG acquisition devices being introduced in last few years, a general ECG diagnostics system that can detect multiple diseases has never been achieved.
This is partly due to the fact that ECG signal is immensely complex and many diseases share common symptoms. Identifying multiple diseases in a general ECG system has never been achieved.
Most of the cloud based system only offers normal or abnormality of the parameters like if QRS complex is normal or not. But different diseases need many derived parameters, a careful algorithm to correlate them.
With over half a decade of research, I thought this is the right opportunity to build our system on cloud.
What it does
The system is pretty simple in functioning. All you need to do is record an ECG signal, place it in a cloud storage provide like dropbox and submit it's URL to Hrydyalysis along with sampling rate and ADU ( analog to digital unit, meaning how many ADC value is equivalent to 1mV)
Even if the signal is aquired with non precision ADC, Hrydyalysis filters the signal, eliminates the nose and adjusts it's baseline.
Hrydyalysis analyzes the signal and annotates all the peaks on the signal along with features like QRS complex, PR interval, ST segment, Spectral analysis of TP Segment, P amplitude, S/R, ST segment elevation, depression, QRS disperssion, QT and QT corrected. R peak variations and so on.
Then it runs a fuzzy score based algorithm to mark the signal as normal or abnormal. If the signal is found to be abnormal, it detects the abnormality.
Currently the system can process an ECG signal lead by lead ( which means one lead at a time). It supports efficient detection of following diseases.
1) Arterial Fibrillation 2) Obstructive Sleep Apnea Conditions 3) Partial Epillepsy 4) T wave Alternan 5) Coronary Arterial Diseases 6) Ventricular Techycardia 7) Ventricular Ectopy 8) T-wave alternan 9) general sinus arrhythmia ( bradycardia and tachycardia).
The system is tested with standard Physionet signals and tested signals are provided in the home page.
How I built it
I built it with Python and Flask on Visual Studio.Net. Basically I used Matlab to develop my techniques and then used Numpy to convert the algorithms in Python.
Challenges I ran into
Detecting QRS morphology change, Arterial and Ventricular diseases together from a single system was ( and still is) an extremely complex task. You refer thousands of research papers being published in ECG diagnosis, yu can't find a single paper that presents all the three forms of diseases. Therefore to be able to design and build such a complex system is something that I would mark as the biggest challenge.
Accomplishments that I'm proud of
I am proud of the specificity we achieved for our single lead diagnosis system. We want to extend this system as plug and play where a low cost device can record the signal and get the diagnosis immediately. We are also looking for more database for validating each of the algorithms to perfect them beyond computational errors.