System and method for scalable ECG analysis
The efficient utilization is provided within a cloud-computing environment where a master plane executing on a master node controls spinning up and down worker nodes, with worker nodes whose output is necessary for functioning of other worker nodes being spun up before the worker nodes needing that output. By dedicating the available computational resources to the earlier-spun worker nodes, these worker nodes are able to process a greater amount of monitoring data. Once the output of these worker nodes is ready, the available resources are reallocated to the worker nodes that use the output of the earlier-spun worker nodes. Additional control over the cardiac monitoring can be provided by communicating with a monitor to increase the rate at which the monitor transmits the collected data as well as pausing generation of alerts based on the monitoring data if such alerts are likely to be inaccurate.
1 . A system for scalable ECG analysis, comprising:
a plurality of nodes, one or more of the nodes executed by at least one of one or more CPUs and one or more GPUs, the plurality of nodes further comprising:
a plurality of worker nodes, each comprising one or more containers, each container having an address and comprising a run-time environment in which one or more ECG analysis applications are executed and associated with computational resources; and
a master node comprising a control plane configured to spin up and spin down the worker nodes, wherein spinning up the worker nodes uses the computational resources, the master node further configured to coordinate instantiation and lifecycle of the one or more containers, which comprises coordinating execution of the ECG analysis applications associated with the worker nodes, comprising spinning up the nodes whose output is needed by other ones of the nodes before spinning up the other nodes needing the output, receiving a message regarding completion of the output, and spinning up the other nodes needing the output, wherein spinning up the other nodes after spinning up the nodes producing the output conserves the computational resources and allows to increase a number of the nodes producing the output that are spun up,
wherein one or more applications on one or more of the nodes is configured to:
receive cardiac data of a patient of the patient contemporaneous to the cardiac data;
analyze the received cardiac data and generate one or more alerts regarding the patient based on the analysis;
identify the alerts as being false based on user input associated with the cardiac data; and
pause analysis of further cardiac data of the patient for a predetermined amount of time.
2 . The system according to claim 1 , wherein the nodes associated with those of the ECG analysis applications utilizing artificial intelligence are executed by of the one or more of the GPUs.
3 . The system according to claim 1 , wherein the one or more containers communicate with each other via a queuing service.
4 . The system according to claim 3 , wherein spinning down one of the containers comprises retaining connection of the node associated with that container to GPU or CPU executing the node.
5 . The system according to claim 1 , wherein the ECG analysis applications comprise a beat detector application, a noise detection application, an atrial fibrillation detection application, and a premature ventricular contraction detection application, file conversion application for third party analysis applications, and a file combining application that combines the output of other ones of the applications.
6 . The system according to claim 5 , wherein the nodes associated with the beat detector application and the noise detection application are spun up before the nodes associated with the atrial fibrillation detection application, the premature ventricular contraction detection application, the file conversion application, and the file combining application.
7 . The system according to claim 1 , further comprising:
a cardiac monitor, comprising:
at least one pair of ECG sensing electrodes;
an ECG front end circuit interfaced to a microcontroller and configured to capture cardiac action potentials sensed by the pair of ECG sensing electrodes which are output as ECG signals;
a wireless transceiver interfaced to the microcontroller;
a memory interfaced to the microcontroller; and
the microcontroller operable to execute under micro programmable control and configured to sample the electrocardiographic signals, to store each of the samples into the memory, and to transmit using the wireless transceiver to a server those of the samples that have not previously been transmitted to the server at a predefined frequency;
one or more of the applications on one or more of the worker nodes configured to:
receive a request for a real-time viewing of the samples from a third party computing device;
send a command to the microcontroller via the wireless transceiver to increase the predefined frequency, wherein the microcontroller increases the frequency of the transmission upon a receipt of the command; and
output the received samples to the third party computing device upon receipt of the samples from the cardiac monitor.
8 . The system according to claim 7 , wherein the predefined frequency comprises at least one of a time interval and a number of the samples recorded since a previous one of the transmissions.
9 . The system according to claim 7 , wherein outputting the samples comprises creating a graphical representation of the samples.
10 . The system according to claim 7 , wherein the cardiac monitor transmits each of the samples after that sample is recorded at the increased frequency.
11 . The system according to claim 10 , wherein the cardiac monitor does not perform any rhythm or beat detection analysis of the samples prior to transmitting them to the server.
12 . The system according to claim 1 , one or more of the applications on one or more of the worker nodes configured to:
receive a sequence of values, each of the values representing a time difference between when a cardiac beat of a patient was recorded by a cardiac monitor and when a previous cardiac beat of the patient was recorded by the cardiac monitor;
maintain a plurality of encoding tables, each encoding table comprising a plurality of codes, each of the codes associated with an upper value threshold and a lower value threshold;
process some of the codes in the sequence, comprising the steps of:
select one of the tables for encoding that value based on the previous two codes assigned;
and encode that value with one of the codes in the selected table; and store the encoded data in a memory.
13 . A method for scalable ECG analysis, comprising:
maintaining a plurality of worker nodes, one or more of the nodes executed by at least one of one or more CPUs and one or more GPUs, each comprising one or more containers, each container having an address and comprising a run-time environment in which one or more ECG analysis applications are executed and associated with computational resources; and
executing on a master node a control plane to spin up and spin down the worker nodes, wherein spinning up the worker nodes uses the computational resources, further comprising coordinating instantiation and lifecycle of the one or more containers, which comprises coordinating execution of the ECG analysis applications associated with the worker nodes, comprising spinning up the nodes whose output is needed by other ones of the nodes before spinning up the other nodes needing the output, receiving a message regarding completion of the output, and spinning up the other nodes needing the output, wherein spinning up the other nodes after spinning up the nodes producing the output conserves the computational resources and allows to increase a number of the nodes producing the output that are spun up,
wherein one or more applications on one or more of the nodes is configured to:
receive cardiac data of a patient of the patient contemporaneous to the cardiac data;
analyze the received cardiac data and generate one or more alerts regarding the patient based on the analysis;
identify the alerts as being false based on user input associated with the cardiac data; and
pause analysis of further cardiac data of the patient for a predetermined amount of time.
14 . The method according to claim 13 , wherein the worker nodes associated with those of the ECG analysis applications utilizing artificial intelligence are executed by of the one or more of the GPUs.
15 . The method according to claim 13 , wherein the one or more containers communicate with each other via a queuing service.
16 . The method according to claim 15 , wherein spinning down one of the containers comprises retaining connection of the node associated with that container to GPU or CPU executing the node.
17 . The method according to claim 13 , wherein the ECG analysis applications comprise a beat detector application, a noise detection application, an atrial fibrillation detection application, and a premature ventricular contraction detection application, file conversion application for third party analysis applications, and a file combining application that combines the output of other ones of the applications.
18 . The method according to claim 17 , wherein the worker nodes associated with the beat detector application and the noise detection application are spun up before the nodes associated with the atrial fibrillation detection application, the premature ventricular contraction detection application, the file conversion application, and the file combining application.
19 . The method according to claim 13 , further comprising: providing a cardiac monitor, comprising:
at least one pair of ECG sensing electrodes;
an ECG front end circuit interfaced to a microcontroller and configured to capture cardiac action potentials sensed by the pair of ECG sensing electrodes which are output as ECG signals;
a wireless transceiver interfaced to the microcontroller;
a memory interfaced to the microcontroller; and
the microcontroller operable to execute under micro programmable control and configured to sample the electrocardiographic signals, to store each of the samples into the memory, and to transmit using the wireless transceiver to a server those of the samples that have not previously been transmitted to the server at a predefined frequency;
receiving by one or more of the applications a request for a real-time viewing of the samples from a third party computing device;
sending a command to the microcontroller via the wireless transceiver to increase the predefined frequency, wherein the microcontroller increases the frequency of the transmission upon a receipt of the command; and
outputting the received samples to the third party computing device upon receipt of the samples from the cardiac monitor.