Generic data compression for heart diagnosis
First Claim
1. A generic data-compression system comprising a processor, a memory coupled to the processor, two or more communications interfaces, at least one of which is wireless, and a computer-readable hardware storage device coupled to the processor and containing program code configured to be run by the processor via the memory to implement a method for generic data compression, the method comprising:
- the processor directly or indirectly receiving data captured by a medical-monitoring device, wherein the monitoring device monitors a physical condition of a patient, wherein the received data characterizes the monitored physical condition, and wherein the processor receives the data through a first interface of the two or more communications interfaces;
the processor transforming the received data, wherein the transforming comprises encoding the received data into a sequence of ASCII characters,wherein the transforming comprises encoding into printable ASCII characters, by means of a lossless compression algorithm, information represented by an array V of eight numeric data elements comprised by the received data, wherein the eight data elements are labeled V(0), V(1), V(2), V(3), V(4), V(5), V(6), and V(7) and represent eight consecutive voltage measurements, and wherein the lossless compression algorithm comprises the following steps;
the processor creating an eight-element bit array CorrPos and a five-element bit array CorrVars and initializing all elements of CorrPos and CorrVars to a value of 0;
the processor successively replacing each data element V(n) with a value equal to (V(n)−
V(n−
1)) for 0<
n<
=7;
the processor creating an 8-element bit array S of binary variables S(0), S(1), S(2), S(3), S(4), S(5), S(6), and S(7), wherein S(n)=1 if a value of a corresponding V(n) is less than zero and S(n)=0 otherwise;
the processor interpreting the resulting array S as an 8-bit binary representation of a base-10 integer;
the processor replacing each value V(n) stored in array V with an absolute magnitude of value V(n);
the processor dividing the value of V(0) by 255, storing a quotient of this division in an integer variable Q, and replacing the value of V(0) with a remainder of this division;
the processor applying a special-correction operation to the base-10 integer value stored in S, wherein the special-correction operation performs the following steps upon a value to which the operation is applied;
i) if the value to which the operation is applied is 10, 13, 26, or 255, then the processor decrements the value by one and the operation returns a value of 1;
ii) if the value to which the operation is applied inclusively falls within a range of 128 through 159, then the processor adds 32 to the value and the operation returns a value of 1; and
iii) otherwise the operation returns a value of 0;
the processor setting the first data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in S;
the processor further applying the special-correction operation upon each value V(n) stored in array V, 0<
=n<
=7, and storing a value returned by the special-correction operation upon each value V(n) in a corresponding nth position of eight-element array CorrPos;
the processor interpreting the resulting array CorrPos as an 8-bit binary representation of a base-10 integer;
the processor applying the special-correction operation to the base-10 integer value stored in CorrPos and setting the second data element of five-element array CorrVars to the value returned by the special-correction operation performed upon the value stored in CorrPos;
the processor generating three eight-element bit arrays LGRP, RGRP, and UNGRP and initializing each binary element of these arrays to a value of zero;
the processor generating a seven-element array G, comprising data elements G(0), G(1), G(2), G(3), G(4), G(5), and G(6), wherein each G(n) is set to a value according to the following rules;
i) if (V[n]*100+V[n+1])<
255, then the processor sets G(n)=(V[n]*100+V[n+1]) and the processor sets a corresponding nth element of array RGRP to a value of 1;
ii) if (V[n]+V[n+1]*100)<
255, then the processor sets G(n)=(V[n]+V[n+1]*100) and the processor sets a corresponding nth element of array LGRP to a value of 1; and
iii) Otherwise the processor sets G(n)=v(n) and the processor sets a corresponding nth element of array UNGRP to a value of 1;
the processor interpreting each of the resulting 8-bit values stored in arrays RGRP, LGRP, and UNGRP as an 8-bit binary representation of a base-10 integer;
the processor applying the special-correction operation to the base-10 integer represented by the value stored in array RGRP and setting the third data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in RGRP;
the processor applying the special-correction operation to the base-10 integer represented by the value stored in array LGRP and setting the fourth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in LGRP;
the processor applying the special-correction operation to the base-10 integer represented by the value stored in array UNGRP and setting the fifth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in UNGRP;
the processor interpreting the five-bit value stored in array CorrVars as a base-10 integer value and applying the special-correction operation to this base-10 integer value;
the processor setting a binary variable R to a value returned by the special-correction operation performed upon the base-10 representation of the value stored in CorrVars; and
the processor encoding into printable ASCII characters the resulting integer values of LGRP, RGRP, UNGRP, CorrPos, CorrVars, each data element G(n), and a value equal to (R*100)+Q; and
the processor transmitting the sequence of ASCII characters to a target device through a second interface of the two or more communications interfaces, wherein the transmitting is performed by means of a wireless text-messaging protocol, and wherein the target device is configured to reverse the transforming in order to extract from the ASCII characters a reproduction of the data captured by the medical-monitoring device.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and associated systems for generic data compression. A mobile device receives realtime data from a medical-monitoring device, such as a heart monitor, worn by a patient. The invention compresses and encodes this data into ASCII text characters, which are transmitted via a commonly available low-bandwidth text-messaging service, such as the SMS service supported by most cell phones. The text messages are received by a second mobile device, which decodes the text characters into their original form and displays them to a healthcare practitioner. More critical portions of the data are encoded by a high-precision lossless compression mechanism. In some embodiments, the two mobile devices may be cell phones and the second device may have the ability to interpret the decoded information in order to determine whether to directly or indirectly alert the practitioner or other parties of an exceptional condition detected by the medical monitor.
-
Citations
17 Claims
-
1. A generic data-compression system comprising a processor, a memory coupled to the processor, two or more communications interfaces, at least one of which is wireless, and a computer-readable hardware storage device coupled to the processor and containing program code configured to be run by the processor via the memory to implement a method for generic data compression, the method comprising:
-
the processor directly or indirectly receiving data captured by a medical-monitoring device, wherein the monitoring device monitors a physical condition of a patient, wherein the received data characterizes the monitored physical condition, and wherein the processor receives the data through a first interface of the two or more communications interfaces; the processor transforming the received data, wherein the transforming comprises encoding the received data into a sequence of ASCII characters, wherein the transforming comprises encoding into printable ASCII characters, by means of a lossless compression algorithm, information represented by an array V of eight numeric data elements comprised by the received data, wherein the eight data elements are labeled V(0), V(1), V(2), V(3), V(4), V(5), V(6), and V(7) and represent eight consecutive voltage measurements, and wherein the lossless compression algorithm comprises the following steps; the processor creating an eight-element bit array CorrPos and a five-element bit array CorrVars and initializing all elements of CorrPos and CorrVars to a value of 0; the processor successively replacing each data element V(n) with a value equal to (V(n)−
V(n−
1)) for 0<
n<
=7;the processor creating an 8-element bit array S of binary variables S(0), S(1), S(2), S(3), S(4), S(5), S(6), and S(7), wherein S(n)=1 if a value of a corresponding V(n) is less than zero and S(n)=0 otherwise; the processor interpreting the resulting array S as an 8-bit binary representation of a base-10 integer; the processor replacing each value V(n) stored in array V with an absolute magnitude of value V(n); the processor dividing the value of V(0) by 255, storing a quotient of this division in an integer variable Q, and replacing the value of V(0) with a remainder of this division; the processor applying a special-correction operation to the base-10 integer value stored in S, wherein the special-correction operation performs the following steps upon a value to which the operation is applied; i) if the value to which the operation is applied is 10, 13, 26, or 255, then the processor decrements the value by one and the operation returns a value of 1; ii) if the value to which the operation is applied inclusively falls within a range of 128 through 159, then the processor adds 32 to the value and the operation returns a value of 1; and iii) otherwise the operation returns a value of 0; the processor setting the first data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in S; the processor further applying the special-correction operation upon each value V(n) stored in array V, 0<
=n<
=7, and storing a value returned by the special-correction operation upon each value V(n) in a corresponding nth position of eight-element array CorrPos;the processor interpreting the resulting array CorrPos as an 8-bit binary representation of a base-10 integer; the processor applying the special-correction operation to the base-10 integer value stored in CorrPos and setting the second data element of five-element array CorrVars to the value returned by the special-correction operation performed upon the value stored in CorrPos; the processor generating three eight-element bit arrays LGRP, RGRP, and UNGRP and initializing each binary element of these arrays to a value of zero; the processor generating a seven-element array G, comprising data elements G(0), G(1), G(2), G(3), G(4), G(5), and G(6), wherein each G(n) is set to a value according to the following rules; i) if (V[n]*100+V[n+1])<
255, then the processor sets G(n)=(V[n]*100+V[n+1]) and the processor sets a corresponding nth element of array RGRP to a value of 1;ii) if (V[n]+V[n+1]*100)<
255, then the processor sets G(n)=(V[n]+V[n+1]*100) and the processor sets a corresponding nth element of array LGRP to a value of 1; andiii) Otherwise the processor sets G(n)=v(n) and the processor sets a corresponding nth element of array UNGRP to a value of 1; the processor interpreting each of the resulting 8-bit values stored in arrays RGRP, LGRP, and UNGRP as an 8-bit binary representation of a base-10 integer; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array RGRP and setting the third data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in RGRP; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array LGRP and setting the fourth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in LGRP; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array UNGRP and setting the fifth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in UNGRP; the processor interpreting the five-bit value stored in array CorrVars as a base-10 integer value and applying the special-correction operation to this base-10 integer value; the processor setting a binary variable R to a value returned by the special-correction operation performed upon the base-10 representation of the value stored in CorrVars; and the processor encoding into printable ASCII characters the resulting integer values of LGRP, RGRP, UNGRP, CorrPos, CorrVars, each data element G(n), and a value equal to (R*100)+Q; and the processor transmitting the sequence of ASCII characters to a target device through a second interface of the two or more communications interfaces, wherein the transmitting is performed by means of a wireless text-messaging protocol, and wherein the target device is configured to reverse the transforming in order to extract from the ASCII characters a reproduction of the data captured by the medical-monitoring device. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for generic data compression, the method comprising:
-
a processor of a generic data-compression system that comprises two or more communications interfaces directly or indirectly receiving data captured by a medical-monitoring device, wherein the monitoring device monitors a physical condition of a patient, wherein the received data characterizes the monitored physical condition, and wherein the processor receives the data through a first interface of the two or more communications interfaces; the processor transforming the received data, wherein the transforming comprises encoding the received data into a sequence of ASCII characters, wherein the transforming comprises encoding into printable ASCII characters, by means of a lossless compression algorithm, information represented by an array V of eight numeric data elements comprised by the received data, wherein the eight data elements are labeled V(0), V(1), V(2), V(3), V(4), V(5), V(6), and V(7) and represent eight consecutive voltage measurements, and wherein the lossless compression algorithm comprises the following steps; the processor creating an eight-element bit array CorrPos and a five-element bit array CorrVars and initializing all elements of CorrPos and CorrVars to a value of 0; the processor successively replacing each data element V(n) with a value equal to (V(n)−
V(n−
1)) for 0<
n<
=7;the processor creating an 8-element bit array S of binary variables S(0), S(1), S(2), S(3), S(4), S(5), S(6), and S(7), wherein S(n)=1 if a value of a corresponding V(n) is less than zero and S(n)=0 otherwise; the processor interpreting the resulting array S as an 8-bit binary representation of a base-10 integer; the processor replacing each value V(n) stored in array V with an absolute magnitude of value V(n); the processor dividing the value of V(0) by 255, storing a quotient of this division in an integer variable Q, and replacing the value of V(0) with a remainder of this division; the processor applying a special-correction operation to the base-10 integer value stored in S, wherein the special-correction operation performs the following steps upon a value to which the operation is applied; i) if the value to which the operation is applied is 10, 13, 26, or 255, then the processor decrements the value by one and the operation returns a value of 1; ii) if the value to which the operation is applied inclusively falls within a range of 128 through 159, then the processor adds 32 to the value and the operation returns a value of 1; and iii) otherwise the operation returns a value of 0; the processor setting the first data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in S; the processor further applying the special-correction operation upon each value V(n) stored in array V, 0<
=n<
=7, and storing a value returned by the special-correction operation upon each value V(n) in a corresponding nth position of eight-element array CorrPos;the processor interpreting the resulting array CorrPos as an 8-bit binary representation of a base-10 integer; the processor applying the special-correction operation to the base-10 integer value stored in CorrPos and setting the second data element of five-element array CorrVars to the value returned by the special-correction operation performed upon the value stored in CorrPos; the processor generating three eight-element bit arrays LGRP, RGRP, and UNGRP and initializing each binary element of these arrays to a value of zero; the processor generating a seven-element array G, comprising data elements G(0), G(1), G(2), G(3), G(4), G(5), and G(6), wherein each G(n) is set to a value according to the following rules; i) if (V[n]*100+V[n+1])<
255, then the processor sets G(n)=(V[n]*100+V[n+1]) and the processor sets a corresponding nth element of array RGRP to a value of 1;ii) if (V[n]+V[n+1]*100)<
255, then the processor sets G(n)=(V[n]+V[n+1]*100) and the processor sets a corresponding nth element of array LGRP to a value of 1; andiii) Otherwise the processor sets G(n)=v(n) and the processor sets a corresponding nth element of array UNGRP to a value of 1; the processor interpreting each of the resulting 8-bit values stored in arrays RGRP, LGRP, and UNGRP as an 8-bit binary representation of a base-10 integer; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array RGRP and setting the third data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in RGRP; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array LGRP and setting the fourth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in LGRP; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array UNGRP and setting the fifth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in UNGRP; the processor interpreting the five-bit value stored in array CorrVars as a base-10 integer value and applying the special-correction operation to this base-10 integer value; the processor setting a binary variable R to a value returned by the special-correction operation performed upon the base-10 representation of the value stored in CorrVars; and the processor encoding into printable ASCII characters the resulting integer values of LGRP, RGRP, UNGRP, CorrPos, CorrVars, each data element G(n), and a value equal to (R*100)+Q; and the processor transforming the received data, wherein the transforming comprises encoding the received data into a sequence of ASCII characters; and the processor transmitting the sequence of ASCII characters to a target device through a second interface of the two or more communications interfaces, wherein the transmitting is performed by means of a wireless text-messaging protocol, and wherein the target device is configured to reverse the transforming in order to extract from the ASCII characters a reproduction of the data captured by the medical-monitoring device. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. A computer program product, comprising a computer-readable hardware storage device having a computer-readable program code stored therein, the program code configured to be executed by a generic data-compression system comprising a processor, a memory coupled to the processor, two or more communications interfaces, at least one of which is wireless, and a computer-readable hardware storage device coupled to the processor and containing program code configured to be run by the processor via the memory to implement a method for generic data compression, the method comprising:
-
the processor directly or indirectly receiving data captured by a medical-monitoring device, wherein the monitoring device monitors a physical condition of a patient, wherein the received data characterizes the monitored physical condition, and wherein the processor receives the data through a first interface of the two or more communications interfaces; the processor transforming the received data, wherein the transforming comprises encoding the received data into a sequence of ASCII characters, wherein the transforming comprises encoding into printable ASCII characters, by means of a lossless compression algorithm, information represented by an array V of eight numeric data elements comprised by the received data, wherein the eight data elements are labeled V(0), V(1), V(2), V(3), V(4), V(5), V(6), and V(7) and represent eight consecutive voltage measurements, and wherein the lossless compression algorithm comprises the following steps; the processor creating an eight-element bit array CorrPos and a five-element bit array CorrVars and initializing all elements of CorrPos and CorrVars to a value of 0; the processor successively replacing each data element V(n) with a value equal to (V(n)−
V(n−
1)) for 0<
n<
=7;the processor creating an 8-element bit array S of binary variables S(0), S(1), S(2), S(3), S(4), S(5), S(6), and S(7), wherein S(n)=1 if a value of a corresponding V(n) is less than zero and S(n)=0 otherwise; the processor interpreting the resulting array S as an 8-bit binary representation of a base-10 integer; the processor replacing each value V(n) stored in array V with an absolute magnitude of value V(n); the processor dividing the value of V(0) by 255, storing a quotient of this division in an integer variable Q, and replacing the value of V(0) with a remainder of this division; the processor applying a special-correction operation to the base-10 integer value stored in S, wherein the special-correction operation performs the following steps upon a value to which the operation is applied; i) if the value to which the operation is applied is 10, 13, 26, or 255, then the processor decrements the value by one and the operation returns a value of 1; ii) if the value to which the operation is applied inclusively falls within a range of 128 through 159, then the processor adds 32 to the value and the operation returns a value of 1; and iii) otherwise the operation returns a value of 0; the processor setting the first data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in S; the processor further applying the special-correction operation upon each value V(n) stored in array V, 0<
=n<
=7, and storing a value returned by the special-correction operation upon each value V(n) in a corresponding nth position of eight-element array CorrPos;the processor interpreting the resulting array CorrPos as an 8-bit binary representation of a base-10 integer; the processor applying the special-correction operation to the base-10 integer value stored in CorrPos and setting the second data element of five-element array CorrVars to the value returned by the special-correction operation performed upon the value stored in CorrPos; the processor generating three eight-element bit arrays LGRP, RGRP, and UNGRP and initializing each binary element of these arrays to a value of zero; the processor generating a seven-element array G, comprising data elements G(0), G(1), G(2), G(3), G(4), G(5), and G(6), wherein each G(n) is set to a value according to the following rules; i) if (V[n]*100+V[n+1])<
255, then the processor sets G(n)=(V[n]*100+V[n+1]) and the processor sets a corresponding nth element of array RGRP to a value of 1;ii) if (V[n]+V[n+1]*100)<
255, then the processor sets G(n)=+V[n+1]*100) and the processor sets a corresponding nth element of array LGRP to a value of 1; andiii) Otherwise the processor sets G(n)=v(n) and the processor sets a corresponding nth element of array UNGRP to a value of 1; the processor interpreting each of the resulting 8-bit values stored in arrays RGRP, LGRP, and UNGRP as an 8-bit binary representation of a base-10 integer; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array RGRP and setting the third data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in RGRP; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array LGRP and setting the fourth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in LGRP; the processor applying the special-correction operation to the base-10 integer represented by the value stored in array UNGRP and setting the fifth data element of five-element array CorrVars to a value returned by the special-correction operation performed upon the value stored in UNGRP; the processor interpreting the five-bit value stored in array CorrVars as a base-10 integer value and applying the special-correction operation to this base-10 integer value; the processor setting a binary variable R to a value returned by the special-correction operation performed upon the base-10 representation of the value stored in CorrVars; and the processor encoding into printable ASCII characters the resulting integer values of LGRP, RGRP, UNGRP, CorrPos, CorrVars, each data element G(n), and a value equal to (R*100)+Q; and the processor transmitting the sequence of ASCII characters to a target device through a second interface of the two or more communications interfaces, wherein the transmitting is performed by means of a wireless text-messaging protocol, and wherein the target device is configured to reverse the transforming in order to extract from the ASCII characters a reproduction of the data captured by the medical-monitoring device. - View Dependent Claims (13, 14, 15, 16, 17)
-
Specification