U.S. patent number 3,807,392 [Application Number 05/192,191] was granted by the patent office on 1974-04-30 for electro-cardiographic patient monitoring and morphology recognition method.
This patent grant is currently assigned to American Optical Corporation. Invention is credited to George J. Harris.
United States Patent |
3,807,392 |
Harris |
April 30, 1974 |
ELECTRO-CARDIOGRAPHIC PATIENT MONITORING AND MORPHOLOGY RECOGNITION
METHOD
Abstract
An electro-cardiographic patient monitoring and morphology
recognition method utilizing a digital computer which is shared by
eight patients. The ECG signal of each patient is sampled at
8-millisecond intervals, with samples of different patients being
provided to the computer at 1-millisecond intervals. The computer
is programmed to recognize atypical characteristics in the ECG
signals and to control a 3-second analog recording of the ECG
signal of any patient for whom an atypical condition is
determined.
Inventors: |
Harris; George J. (Framingham,
MA) |
Assignee: |
American Optical Corporation
(Southbridge, MA)
|
Family
ID: |
26887825 |
Appl.
No.: |
05/192,191 |
Filed: |
October 26, 1971 |
Related U.S. Patent Documents
|
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
Issue Date |
|
|
820554 |
Apr 30, 1969 |
3616791 |
|
|
|
Current U.S.
Class: |
600/515 |
Current CPC
Class: |
G16H
40/20 (20180101); G16H 10/60 (20180101); A61B
5/24 (20210101); G16H 15/00 (20180101) |
Current International
Class: |
A61B
5/04 (20060101); G06F 19/00 (20060101); G06F
17/00 (20060101); A61b 005/04 () |
Field of
Search: |
;128/2R,2.5R,2.6A,2.6F,2.6G,2.6R,2.6V,2.1R |
References Cited
[Referenced By]
U.S. Patent Documents
Primary Examiner: Kamm; William E.
Attorney, Agent or Firm: Wall; Joel Nealon; William C.
Claims
What I claim is:
1. A method to be practiced on a machine for processing digital
samples of successive electro-cardiographic waveforms of a patient
comprising the steps of:
a. generating at least two different series of digital function
values from the successive digital samples being processed,
b. performing tests on successive function values in each of said
at least two series,
c. selecting the tests which are performed on said function values
in step (b) from a predetermined group of tests to obtain selected
tests that are dependent upon the results of the tests performed on
earlier function values,
d. registering the sequences of the results of the tests performed
in step (b) on the function values generated for the
electro-cardiographic waveforms which occur during a learning
interval,
e. thereafter determining if the sequence of the results of the
tests performed in step (b) on the function values generated for a
subsequent electro-cardiographic waveform is different from all of
the sequences registered during said learning interval, and
f. characterizing the morphology of an electro-cardiographic
waveform of the patient in accordance with the results of the tests
performed in step (b).
2. A method in accordance with claim 1 wherein the tests performed
in step (b) are comparisons of said function values with threshold
levels associated with respective ones of said series of function
values.
3. A method in accordance with claim 2 further including the step
of:
d. continuously up-dating the threshold levels used in the
comparison tests in accordance with predetermined numbers of most
recent respective function values.
4. A method in accordance with claim 3 further including the steps
of:
g. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform, and
h. operating upon only particular function values in the
performance of steps (e) and (f) for each electro-cardiographic
waveform, the particular function values being those generated from
a group of successive digital samples which occur during a
predetermined time interval which brackets and has a fixed time
relationship to the time when the presence of the respective R wave
is determined.
5. A method in accordance with claim 3 wherein the function values
in one series of function values generated in step (a) are
proportional to the magnitudes of the digital samples being
processed, and the function values in a second series of function
values generated in step (a) are proportional to differences
between the magnitudes of the digital samples.
6. A method in accordance with claim 3 wherein the function values
in one series of function values generated in step (a) are
dependent upon differences between the magnitudes of respective
digital samples and the average magnitude of a predetermined number
of earlier digital samples.
7. A method in accordance with claim 3 further including the steps
of:
e. computing the sum of a group of function values in one series of
function values which are generated for each individual
electro-cardiographic cycle,
f. computing the average of the sums computed for a predetermined
number of most recent electro-cardiographic cycles, and
g. determining if the sum computed in step (e) for an individual
electro-cardiographic cycle is greater than the average computed in
step (f) by more than a predetermined amount.
8. A method in accordance with claim 3 further including the steps
of:
e. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
f. computing the time interval between the determinations of the
presence of two successive R waves,
g. computing the average of the time intervals computed in step (f)
for a predetermined number of most recent R waves, and
h. determining if the time interval computed in step (f) is greater
than the average computed in step (g) by more than a predetermined
amount.
9. A method in accordance with claim 3 further including the steps
of:
e. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
f. computing the time interval between the determinations of the
presence of two successive R waves,
g. computing the average of the time intervals computed in step (f)
for a predetermined number of most recent R waves, and
h. determining if the time interval computed in step (f) is less
than the average computed in step (g) by more than a predetermined
amount.
10. A method in accordance with claim 3 further including the steps
of:
e. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
f. computing the time interval between the determinations of the
presence of two successive R waves,
g. computing the average of the time intervals computed in step (f)
for a predetermined number of most recent R waves, and
h. determining if any time interval computed in step (f) is less
than the average computed in step (g) by more than a predetermined
amount and the immediately succeeding time interval computed in
step (f) is greater than the average computed in step (g) by more
than a predetermined amount.
11. A method in accordance with claim 3 further including the steps
of:
e. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
f. computing the time interval between the determinations of the
presence of two successive R waves, and
g. determining the presence of a premature ventricular beat in
accordance with two time intervals computed in step (f) which
separate three successive R waves and in accordance with the
characterizing in step (c) of the electro-cardiographic waveform
associated with the second of the three successive R waves.
12. A method in accordance with claim 11 further including the step
of:
h. counting the number of premature ventricular beats whose
presence are determined during a fixed time interval.
13. A method in accordance with claim 3 further including the steps
of:
e. computing the sum of a group of function values in one series of
function values which are generated for each individual
electro-cardiographic cycle,
f. computing the average of the sums computed for a predetermined
number of most recent electro-cardiographic cycles,
g. determining if the sum computed in step (e) for an individual
electro-cardiographic cycle is greater than the average computed in
step (f) by more than a predetermined amount,
h. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
i. computing the time interval between the determinations of the
presence of two successive R waves, and
j. determining the presence of a premature ventricular beat in
accordance with two time intervals computed in step (i) which
separate three successive R waves and in accordance with a
determination made in step (g) that the sum computed for the
electro-cardiographic cycle associated with the second or the third
of the three successive R waves is greater than the average by a
predetermined amount.
14. A method in accordance with claim 3 wherein each function value
in one series of function values generated in step (a) is
proportional to the sum of the magnitudes of a predetermined number
of most recent digital samples.
15. A method in accordance with claim 1 wherein the tests performed
in step (b) are comparisons of said function values with threshold
levels associated with respective ones of said series of function
values.
16. A method in accordance with claim 15 further including the step
of:
d. continuously up-dating the threshold levels used in the
comparison tests in accordance with predetermined numbers of most
recent respective function values.
17. A method in accordance with claim 16 further including the
steps of:
e. registering the sequences of the results of the tests performed
in step (b) on the function values generated for the
electro-cardiographic waveforms which occur during a learning
interval, and
f. thereafter determining if the sequence of the results of the
tests performed in step (b) on the function values generated for a
subsequent electro-cardiographic waveform is different from all of
the sequences registered during said learning interval.
18. A method in accordance with claim 16 wherein the function
values in one series of function values generated in step (a) are
proportional to the magnitudes of the digital samples being
processed, and the function values in a second series of function
values generated in step (a) are proportional to differences
between the magnitudes of the digital samples.
19. A method in accordance with claim 16 wherein the function
values in one series of function values generated in step (a) are
dependent upon differences between the magnitudes of respective
digital samples and the average magnitude of a predetermined number
of earlier digital samples.
20. A method in accordance with claim 16 further including the
steps of:
e. computing the sum of a group of function values in one series of
function values which are generated for each individual
electro-cardiographic cycle,
f. computing the average of the sums computed for a predetermined
number of most recent electro-cardiographic cycles, and
g. determining if the sum computed in step (e) for an individual
electro-cardiographic cycle is greater than the average computed in
step (f) by more than a predetermined amount.
21. A method in accordance with claim 16 further including the
steps of:
e. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
f. computing the time interval between the determinations of the
presence of two successive R waves,
g. computing the average of the time intervals computed in step (f)
for a predetermined number of most recent R waves, and
h. determining if the time interval computed in step (f) is greater
than the average computed in step (g) by more than a predetermined
amount.
22. A method in accordance with claim 16 further including the
steps of:
e. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
f. computing the time interval between the determinations of the
presence of two successive R waves,
g. computing the average of the time intervals computed in step (f)
for a predetermined number of most recent R waves, and
h. determining if the time interval computed in step (f) is less
than the average computed in step (g) by more than a predetermined
amount.
23. A method in accordance with claim 16 further including the
steps of:
e. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
f. computing the time interval between the determinations of the
presence of two successive R waves,
g. computing the average of the time intervals computed in step (f)
for a predetermined number of most recent R waves, and
h. determining if any time interval computed in step (f) is less
than the average computed in step (g) by more than a predetermined
amount and the immediately succeeding time interval computed in
step (f) is greater than the average computed in step (g) by more
than a predetermined amount.
24. A method in accordance with claim 16 wherein each function
value in one series of function values generated in step (a) is
proportional to the sum of the magnitudes of a predetermined number
of most recent digital samples.
25. A method in accordance with claim 1 further including the steps
of:
d. registering the sequences of the results of the tests performed
in step (b) on the function values generated for the
electro-cardiographic waveforms which occur during a learning
interval, and
e. thereafter determining if the sequence of the results of the
test performed in step (b) on the function values generated for a
subsequent electro-cardiographic waveform is different from all of
the sequences registered during said learning interval.
26. A method in accordance with claim 1 further including the steps
of:
d. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform, and
e. utilizing only particular test results in the performance of
step (c) to characterize each electro-cardiographic waveform, the
particular test results being those of tests performed in step (b)
on a group of successive function values which are generated for a
predetermined time interval which brackets and has a fixed time
relationship to the time when the presence of the respective R wave
is determined.
27. A method in accordance with claim 1 wherein the function values
in one series of function values generated in step (a) are
proportional to the magnitudes of the digital samples being
processed, and the function values in a second series of function
values generated in step (a) are proportional to differences
between the magnitudes of the digital samples.
28. A method in accordance with claim 1 wherein the function values
in one series of function values generated in step (a) are
dependent upon difference between the magnitudes of respective
digital samples and the average magnitude of a predetermined number
of earlier digital samples.
29. A method in accordance with claim 1 further including the steps
of:
d. computing the sum of a group of function values in one series of
function values which are generated for each individual
electro-cardiographic cycle,
e. computing the average of the sums computed for a predetermined
number of most recent electro-cardiographic cycles, and
f. determining if the sum computed in step (d) for an individual
electro-cardiographic cycle is greater than the average computed in
step (e) by more than a predetermined amount.
30. A method in accordance with claim 1 further including the steps
of:
d. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
e. computing the time interval between the determinations of the
presence of two successive R waves,
f. computing the average of the time intervals computed in step (e)
for a predetermined number of most recent R waves, and
g. determining if the time interval computed in step (e) is greater
than the average computed in step (f) by more than a predetermined
amount.
31. A method in accordance with claim 1 further including the steps
of:
d. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
e. computing the time interval between the determinations of the
presence of two successive R waves,
f. computing the average of the time intervals computed in step (e)
for a predetermined number of most recent R waves, and
g. determining if the time interval computed in step (e) is less
than the average computed in step (f) by more than a predetermined
amount.
32. A method in accordance with claim 1 further including the steps
of:
d. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
e. computing the time interval between the determinations of the
presence of two successive R waves,
f. computing the average of the time intervals computed in step (e)
for a predetermined number of most recent R waves, and
g. determining if any time interval computed in step (e) is less
than the average computed in step (f) by more than a predetermined
amount and the immediately succeeding time interval computed in
step (e) is greater than the average computed in step (f) by more
than a predetermined amount.
33. A method in accordance with claim 1 further including the steps
of:
d. performing a special test on successive function values in one
series of function values to determine the presence of an R wave in
an electro-cardiographic waveform,
e. computing the time interval between the determinations of the
presence of two successive R waves, and
f. determining the presence of a premature ventricular beat in
accordance with two time intervals computed in step (e) which
separate three successive R waves and in accordance with the
characterizing in step (c) of the electrocardiographic waveform
associated with the second of the three successive R waves.
34. A method in accordance with claim 33 further including the step
of:
g. counting the number of premature ventricular beats whose
presence are determined during a fixed time interval.
35. A method in accordance with claim 1 wherein each function value
in one series of function values generated in step (a) is
proportional to the sum of the magnitudes of a predetermined number
of most recent digital samples.
36. A method to be practiced on a machine for processing digital
samples of successive electro-cardiographic waveforms of each of a
plurality of patients comprising the steps of:
a. extending to said machine successive groups of digital samples,
each group containing a digital sample of each of said
patients,
b. generating at least two different series of digital function
values for each patient from the successive digital samples being
processed for that patient,
c. performing tests on successive function values in each of the at
least two series for each patient,
d. selecting the tests which are performed on said function values
in step (c) from a predetermined group of tests to obtain selected
tests that are dependent upon the results of the tests performed on
earlier function values,
e. registering the sequences of the results of the tests performed
in step (c) on the function values generated for the
electro-cardiographic waveform of each patient which occur during a
learning interval,
f. thereafter determining if the sequence of the results of the
tests performed in step (c) on the function values generated for a
subsequent electro-cardiographic waveform of each patient is
different from all of the sequences registered for that patient
during said learning interval, and
g. characterizing the morphology of an electro-cardiographic
waveform of each patient in accordance with the results of the
tests performed in step (c) on that patient's function values.
37. A method in accordance with claim 36 wherein the tests
performed in step (c) for each patient are comparisons of the
function values of that patient with respective threshold levels
associated with respective ones of the series of function values of
that patient.
38. A method in accordance with claim 37 further including the step
of:
e. continuously up-dating the threshold levels for each patient
used in the comparison tests in accordance with predetermined
numbers of most recent respective function values of that
patient.
39. A method in accordance with claim 38 wherein each function
value in one series of function values generated in step (a) for
each patient is proportional to the sum of the magnitudes of a
predetermined number of most recent digital samples of that
patient.
40. A method in accordance with claim 36 wherein the tests
performed in step (c) for each patient are comparisons of the
function values of that patient with respective threshold levels
associated with respective ones of the series of function values of
that patient.
41. A method in accordance with claim 40 further including the step
of:
e. continuously up-dating the threshold levels for each patient
used in the comparison tests in accordance with predetermined
numbers of most recent respective function values of that
patient.
42. A method in accordance with claim 41 further including the
steps of:
f. registering the sequences of the results of the tests performed
in step (c) on the function values generated for the
electro-cardiographic waveforms of each pateint which occur during
a learning interval, and
g. thereafter determining if the sequence of the results of the
tests performed in step (c) on the function values generated for a
subsequent electro-cardiographic waveform of each patient is
different from all of the sequences registered for that patient
during said learning interval.
43. A method in accordance with claim 41 wherein each function
value in one series of function values generated in step (a) for
each patient is proportional to the sum of the magnitudes of a
predetermined number of most recent digital samples of that
patient.
44. A method in accordance with claim 36 further including the
steps of: e. registering the sequence of the results of the tests
performed in step (c) on the function values generated for the
electro-cardiographic waveforms of each patient which occur during
a learning interval, and
f. thereafter determining if the sequence of the results of the
tests performed in step (c) on the function values generated for a
subsequent electro-cardiographic waveform of each patient is
different from all of the sequences registered for that patient
during said learning interval.
45. A method in accordance with claim 36 further including the
steps of:
e. performing a special test on successive function values in one
series of function values for each patient to determine the
presence of an R wave in an electro-cardiographic waveform of that
patient, and
f. utilizing only particular test results in the performance of
step (d) to characterize each electro-cardiographic waveform of a
patient, the particular test results being those of tests performed
in step (c) on a group of successive function values of that
patient which are generated for a predetermined time interval which
brackets and has a fixed time relationship to the time when the
presence of the respective R wave is determined.
46. A method in accordance with claim 36 wherein the function
values in one series of function values generated in step (a) for
each patient are proportional to the magnitudes of the digital
samples of that patient being processed, and the function values in
a second series of function values generated in step (a) for each
patient are proportional to differences between the magnitudes of
the digital samples of that patient.
47. A method in accordance with claim 36 wherein the function
values in one series of function values generated in step (a) for
each patient are dependent upon differences between the magnitudes
of respective digital samples of that patient and the average
magnitude of a predetermined number of earlier digital samples of
that patient.
48. A method in accordance with claim 36 further including the
steps of:
e. computing the sum of a group of function values in one series of
function values for each patient which are generated for each
individual electro-cardiographic cycle,
f. computing for each patient the average of the sums computed for
that patient for a predetermined number of most recent
electro-cardiographic cycles, and
g. determining if the sum computed in step (e) for an individual
electro-cardiographic cycle of each pateint is greater than the
average computed in step (f) for that patient by more than a
predetermined amount.
49. A method in accordance with claim 36 further including the
steps of:
e. performing a special test on successive function values in one
series of function values for each patient to determine the
presence of an R wave in a electro-cardiographic waveform of that
patient,
f. computing the time interval between the determinations of the
presence of two successive R waves of each patient,
g. computing for each patient the average of the time intervals
computed in step (f) for that patient for a predetermined number of
most recent R waves, and
h. determining if the time interval computed in step (f) for each
patient is greater than the average computed in step (g) for that
patient by more than a predetermined amount.
50. A method in accordance with claim 36 wherein each function
value in one series of function values generated in step (a) for
each patient is proportional to the sum of the magnitudes of a
predetermined number of most recent digital samples of that
patient.
51. A method for processing successive electrocardiographic
waveforms of a patient comprising the steps of:
a. generating at least two different series of sampled functions
from the successive waveforms being processed, the sampled
functions in each series being generated at a rate substantially
higher than the rate at which successive wave-forms occur,
b. performing tests on successive sampled functions in each of said
at least two series,
c. selecting the tests which are performed on said sampled
functions in step (b) from a predetermined group of tests to obtain
selected tests that are dependent upon the results of the tests
performed on earlier sampled functions,
d. registering the sequences of the results of the tests performed
in step (b) on the sampled functions generated for the
electro-cardiographic waveforms which occur during a learning
interval,
e. thereafter determining if the sequence of the results of the
tests performed in step (b) on the sampled functions generated for
a subsequent electro-cardiographic waveform is different from all
of the sequences registered during said learning interval, and
f. characterizing the morphology of an electro-cardiographic
waveform of the patient in accordance with the results of the tests
performed in step (b).
52. A method in accordance with claim 51 wherein the tests
performed in step (b) are comparisons of said sampled functions
with threshold levels associated with respective ones of said
series of sampled functions.
53. A method in accordance with claim 52 further including the step
of:
d. continuously up-dating the threshold levels used in the
comparison tests in accordance with predetermined numbers of most
recent respective sampled functions.
54. A method in accordance with claim 53 wherein each sampled
function in one series of sampled functions generated in step (a)
is proportional to the sum of the magnitudes of a predetermined
number of most recent samples of an electro-cardiographic
waveform.
55. A method in accordance with claim 51 wherein the tests
performed in step (b) are comparisons of said sampled functions
with threshold levels associated with respective ones of said
series of sampled functions.
56. A method in accordance with claim 55 further including the step
of:
d. continuously up-dating the threshold levels used in the
comparison tests in accordance with predetermined numbers of most
recent respective sampled functions.
57. A method in accordance with claim 56 further including the
steps of:
e. registering the sequences of the results of the tests performed
in step (b) on the sampled functions generated for the
electro-cardiographic waveforms which occur during a learning
interval, and
f. thereafter determining if the sequence of the results of the
tests performed in step (b) on the sampled functions generated for
a subsequent electro-cardiographic waveform is different from all
of the sequences registered during said learning interval.
58. A method in accordance with claim 56 wherein each sampled
function in one series of sampled functions generated in step (a)
is proportional to the sum of the magnitudes of a predetermined
number of most recent samples of an electro-cardiographic
waveform.
59. A method in accordance with claim 51 further including the
steps of:
d. registering the sequences of the results of the tests performed
in step (b) on the sampled functions generated for the
electro-cardiographic waveforms which occur during a learning
intervals, and
e. thereafter determining if the sequence of the results of the
tests performed in step (b) on the sampled functions generated for
a subsequent electro-cardiographic waveform is different from all
of the sequences registered during said learning interval.
60. A method in accordance with claim 51 further including the
steps of:
d. performing a special test on successive sampled functions in one
series of sampled functions to determine the presence of an R wave
in an electro-cardiographic waveform, and
e. utilizing only particular test results in the performance of
step (c) to characterize each electro-cardiographic waveform, the
particularl test results being those of tests performed in step (b)
on a group of successive sampled functions which are generated for
a predetermined time interval which brackets and has a fixed time
relationship to the time when the presence of the respective R wave
is determined.
61. A method in accordance with claim 51 wherein the sampled
functions in one series of sampled functions generated in step (a)
are proportional to the magnitudes of samples of the waveforms
being processed, and the sampled functions in a second series of
sampled functions generated in step (a) are proportional to
differences between the magnitudes of samples of the waveforms.
62. A method in accordance with claim 51 wherein the sampled
functions in one series of sampled functions generated in step (a)
are dependent upon differences between the magnitudes of respective
samples of the waveform being processed and the average magnitude
of a predetermined number of earlier samples of the waveform.
63. A method in accordance with claim 51 further including the
steps of:
d. computing the sum of a group of sampled functions in one series
of sampled functions which are generated for each individual
electro-cardiographic cycle,
e. computing the average of the sums computed for a predetermined
number of most recent electro-cardiographic cycles, and
f. determining if the sum computed in step (d) for an individual
electro-cardiographic cycle is greater than the average computed in
step (e) by more than a predetermined amount.
64. A method in accordance with claim 51 further including the
steps of:
d. performing a special test on successive sampled functions in one
series of sampled functions to determine the presence of an R wave
in an electro-cardiographic waveform,
e. computing the time interval between the determinations of the
presence of two successive R waves,
f. computing the average of the time intervals computed in step (e)
for a predetermined number of most recent R waves, and
g. determining if the time interval computed in step (e) is greater
than the average computed in step (f) by more than a predetermined
amount.
65. A method in accordance with claim 51 wherein each sampled
function in one series of sampled functions generated in step (a)
is proportional to the sum of the magntiudes of a predetermined
number of most recent samples of an electro-cardiographic waveform.
Description
This invention relates to patient monitoring and
electro-cardiographic morphology recognition methods, and more
particularly to the use of a programmable digital computer to
implement such methods. This application is a continuation-in-part
of my co-pending application Ser. No. 820,554, filed on Apr. 30,
1969, and which has matured into U.S. Pat. No. 3,616,791 and is
entitled "Electro-Cardiographic Morphology Recognition System."
It is common today, in the intensive care units of many hospitals,
to monitor continuously the ECG signal of a cardiac patient. It is,
of course, impractical to station a doctor or a trained nurse at
the bedside of the patient on a full-time basis for the purpose of
observing a trace of the ECG signal on a scope. In some cases, what
is done instead is to produce a continuous trace of the ECG signal
for periodic review by trained personnel. However, this is also
impractical not only because of the high cost but also because the
trace requires a considerable amount of time for its review. It has
been suggested to overcome these problems by triggering a short
trace only when an abnormality in the ECG signal is detected.
Various relatively unsophisticated systems have been proposed in
the prior art for determining such abnormalities, e.g., heartbeat
rate detection circuits, etc.
One of the main difficulties in the design of any system of this
type is that the "normal" ECG signal varies from patient to
patient. Most normal ECG waveforms include P,Q,R,S and T waves, the
QRS complex containing most of the useful information. But the
waveforms vary widely from patient to patient and each patient can
have a different "normal" electrocardiogram. It is for this reason
that it is exceedingly difficult to design equipment which can
detect "abnormal" heartbeats. Except for certain very pronounced
conditions, there is no such thing as a typical abnormality for all
patients.
The problem is not only with the shape of the ECG waveforms. There
is also no such thing as a normal "timing" of the ECG pulses. (Of
course, a normal range can be defined for all patients, but when a
patient is to be closely monitored it is best to detect deviations
from his particular norm, rather than rates outside the much
broader normal range.) The time periods which make a pulse
"premature" or "late" vary not only from patient to patient, but
from time to time with the same patient as well. What is important
with respect to the timing of the ECG signal of any individual
patient is that deviations from the norm for that particular time
of day be detected, rather than deviations from a broad range which
may characterize the beating of the patient's heart over a
relatively long period of time.
Similarly, the timing and shape of a patient's ECG signal may be
normal, yet the width (the integral of the rectified waveform) of
any single waveform may be excessive. Again, the normal width of
the waveform varies not only from patient to patient, but from time
to time with the same patient. All of these factors make it
exceedingly difficult to design a system which satisfactorily
detects abnormalities in the ECG signal of a patient.
In the system disclosed in my above-identified application, the ECG
signal from a patient is recorded on a two-second endless tape belt
as is known in the art. Whenever an abnormal signal is detected,
the two previous seconds of the ECG signal are recorded on a trace
together with the ECG signal during the next second. The system
includes circuitry for learning the "normal" characteristics of any
patient's ECG signal, and which thereafter detects deviations from
the learned characteristics to control the start of a three-second
recording and any other appropriate alerting actions.
A learning/detecting sub-system is provided which responds to the
shape of the QRS complex of each ECG waveform. The ECG signal is
differentiated and various analog functions of the ECG signal and
its derivative are developed. A set of flip-flops is provided to
define the system state. The flip-flops cycle from an initial state
during the period of each heartbeat. The instantaneous system state
depends both on the previous system state and the instantaneous
values of the analog functions formed from the ECG signal. The
final system state is in effect a representation of the sequence of
the function values, which sequence is in turn a function of the
shape of the QRS complex.
During a 15-second learning interval, the system registers all of
the final states which are developed for the individual ECG
wavefroms occurring during the interval, except those associated
with premature beats. Thereafter, the system compares the final
state represented by the set of flip-flops with the final states
included in the learned patterns. If any ECG waveform results in a
final state which is not one of those previously registered (or
"learned"), it is an indication that the morphology of the waveform
is of interest to the cardiologist, and a 3-second trace is
made.
The system is designed to learn eight different final system states
and to detect subsequent deviations from them. The state sequencing
is designed to terminate in a respective state for each of eight
function value sequences which correspond to respective relatively
common ECG waveshapes. While these waveshapes are the most
frequent, they are by no means universal. It is to be expected that
in some patients the "normal" ECG waveshapes will be considerably
different from all of those in mind when the state sequencing was
designed. This is of no consequence. The flip-flops still cycle in
accordance with the instantaneous values of the analog functions,
and during the 15-second learning process the system still ends up
in several final system states which can be considered normal for
that patient. Thereafter, if any final system state is different
from all of those previously learned, an abnormality is detected to
control the trace. Thus, it is not necessary to pre-program the
system with every conceivable ECG waveform. All that is necessary
is to provide a mechanism for analyzing the ECG signal and to
enable the system to remember the results of the analyses during
the learning process. Subsequent different results are treated as
abnormal.
As described above, it is not possible for the system to learn a
"normal" timing sequence even for any individual patient because
the normal time separation of the pulses for any patient can vary
from time to time. The important criterion is a deviation from the
average time separation over the preceding few beats. A circuit is
provided to determine the average time separation between
heartbeats. The instantaneous time separation between successive
pulses is then monitored and deviations by more than pre-set
percentages from the average time separation result in indications
of premature beats, late beats and compensatory pauses. These
deviations from the continuously learned normal (or average) timing
sequence can be programmed to trigger the 3-second trace.
Similar remarks apply to the width measurement. The widths (areas)
of a few successive waveforms are continuously averaged and an
instantaneous deviation from the average width can be programmed to
trigger the trace.
The major shortcoming of the system disclosed in my co-pending
application is its relatively high cost. A separate piece of
hardware must be provided for each patient whose cardiac activity
is to be monitored. The main object of the present invention is to
provide a more economical way to monitor a coronary patient.
In accordance with the principles of the present invention, instead
of providing a separate piece of hardware for each patient, a small
computer is appropriately programmed and interfaced to the
monitoring equipments of several patients (eight, in the
illustrative embodiment of the invention). The cost of the computer
per patient is much less than the cost of the hardware per patient
heretofore required. By operating the computer on a time-shared
basis, considerable economies can be achieved.
The computer is programmed to perform the same tasks (with some
differences) that are performed by the hardware disclosed in my
co-pending application, with particular stress being placed on the
detection of ventricular premature beats (VPB's). The computer
operates upon sampled data and performs its programmed functions at
very high speeds; it can therefore process a number of samples from
several different patients in the interval between two consecutive
samples from any one patient. The number of patients who may be
serviced by the same time-shared computer is limited only by the
operating speed and memory size of the computer. Additional
advantages of the computer approach are that the overall reduced
hardware for accomplishing the same task for a number of patients
is more reliable while at the same time being less costly. Also,
because the computer program can be changed if desired, the system
is considerably more flexible than the hardware embodiment.
Further objects, features and advantages of the invention will
become apparent upon a consideration of the follwoing detailed
description in conjunction with the drawings, in which:
FIG. 1 depicts schematically an overall system for monitoring the
cardiac activity of eight patients, the system including a
general-purpose digital computer 38;
FIG. 2 illustrates eight typical QRS waveforms together with
additional waveforms and information which characterize the system
operation as will be explained in detail below;
FIG. 3 depicts the interaction of the various subroutines to be
described separately below, and the manner in which they relate to
the Executive program;
FIGS. 4-22 depict flow charts for the following subroutines (the
function of each to be described below):
FIG. NO. Subroutine Name 4 DFP 5 DTP1 6 DTP2 7 RWD 8A -8B RRP 9
HFP1 10 HFP2 11 LFP 12 ARP1 13A -13B ARP2 14 TCP1 15 TCP2 16A -16B
MCP 17 LRN 18 MRP 19 MPV 20 VRP 21 FVP 22 MFP
fig. 23 depicts the flow chart for the wait loop of the Executive
program;
FIG. 24 depicts the flow chart of the Operator Interrupt Executive
program; and
FIGS. 25A-25C depict the flow chart of the External Interrupt
Executive program.
FIG. 1 -- SYSTEM HARDWARE
FIG. 1 depict an overall system comprised of several conventional
blocks of equipment. Analog multiplexer 10 is provided with eight
input lines 0-7 which are derived from conventional ECG monitors
connected to respective patients. Analog ECG signals appear on
these eight lines. Depending upon the values of three address bits
appearing on cable 24, one of the eight input lines is extended
through the multiplexer to output conductor 16. This conductor is
extended to the input of analog-to-digital converter 18 which
provides an 8-bit data word on its output cable. Gate 32 is shown
in heavy outline to indicate that it represents eight separate AND
gates. Each bit in the 8-bit output word of the converter is
extended to an input of a respective one of the gates. There are
also provided eight OR gates 36, with the output of each of gates
32 being extended to one input of a respective one of the eight
gates. The output of the eight gates, an 8-bit data word, is
extended over data line 46 to computer 38.
In the illustrative embodiment of the invention, the eight
monitored patients are represented by the numbers 170-177 (in octal
code). The three bits on cable 24 represent the numbers 0-7. The
three bits are extended to an input of adder 26, signals
representative of the octal number 170 being extended over cable 27
to other inputs of the adder. Thus the output of the adder is an
8-bit word ranging between the octal values 170-177 to represent a
respective patient. The computer operates upon the octal numbers
170-177 as representing patient numbers. The 8-bit patient number
at the output of adder 26 is extended to a set of eight gates 34.
The outputs of these gates are extended to respective ones of the
second inputs of the eight OR gates 36. Thus the 8-bit word on data
line 46 at the output of the OR gates represents a patient number
(170-177) when the eight gates 34 are enabled, and it represents
the digital value of one of the input analog signals when the eight
gates 32 are enabled. In the illustrative embodiment of the
invention, positive data values are represented by the octal
numbers 000-167 and negative data values are represented by the
octal numbers 200-377, with the remaining numbers 170-177
representing patient numbers. The assignment of patient codes is
arbitrary and it will be apparent to those skilled in the art that
other selections may be made. However, it is desirable that the
data values and patient numbers be mutually exclusive. That is,
when a patient number appears on the data line input to the
computer, it should not erroneously be interpreted as a data value;
conversely, a data value should not be treated as a patient
number.
A 1-kHz clock 22 is provided for extending step signals to the
input of patient counter 20. Each clock waveform consists of a
positive 0.5-millisecond pulse followed by a negative
0.5-millisecond pulse. The leading edge of each positive pulse sets
flip-flop 60 in the 1 state; it also advances patient counter 20,
whose three output bits cycle between 000 and 111 and then start
over again. When the flip-flop is in the 1 state, the eight gates
34 are enabled. At this time a patient number (170-177) is extended
over data line 46 to the computer. During the time that the
flip-flop is in the 1 state, inverter 28 extends a low potential to
the second input of each of gates 32. However, as soon as DONE
conductor 62 is pulsed by computer 38, the flip-flop is reset in
the 0 state, the eight gates 34 are disabled, and the eight gates
32 and converter 18 are enabled by inverter 28; an eight-bit data
word from converter 18 appears on data line 46. The computer
processes a patient number at the beginning of each 1-millisecond
cycle; at the start of the processing it pulses the DONE conductor
to make a data word available when it will be needed after a few
microseconds of patient number processing. In the illustrative
embodiment of the invention, an 8-bit patient number appears on the
data line for a few microseconds, followed by an 8-bit data value
for the respective patient which appears for the duration of the
respective 1-millisecond cycle. Thereafter, a new patient number
appears on the data line for a few microseconds, followed by a
respective data value for the duration of the 1-millisecond cycle
for the respective patient, etc.
Conductor 30 is connected to the external interrupt line input of
the computer, the computer being "interrupted" each time a positive
step appears at the interrupt line input. Consequently, the
computer is interrupted from an external source at 1-millisecond
intervals -- with the appearance of a new patient number on the
data line, the computer is ready to process a new data value for
the respective patient, as will be described below. The pulsing of
conductor 62 at the start of the patient number processing
functions to make the new data value available for processing when
it is needed.
A keyboard and printer 40 are provided, the keyboard and printer
being conventional in design and usually being supplied together
with the computer. The keyboard and printer are connected to the
computer over an interrupt line 50, and over a data line 48 which
transmits eight bits in either direction. When the operator presses
a key on the keyboard, a signal is transmitted over interrupt line
50 to the computer to interrupt its operation so that it will
examine data line 48. The 8-bit word on the data line represents
the character typed by the operator. When the computer determines
that a print-out is required, an appropriate code is transmitted
over the data line to the printer. Typically, the operator would
key in a character and, if the character is valid as determined by
the program, an "echo" signal would be sent over the data line to
the printer to cause it to type the character keyed in by the
operator. In the event the "echo" signal is not transmitted to the
printer, the operator is made aware that an invalid character has
been typed.
The computer itself can be any of many different kinds, although in
the illustrative embodiment of the invention it is a PDP -11,
marketed by the Digital Equipment Corporation. The computer is
shown as having 16 output conductors, an on/off pair being extended
to each of eight recorders 14-0 through 14-7. When an on signal is
transmitted to a recorder, it starts recording the analog signal
appearing at the output of its respective 2-second delay element.
The eight input signals are extended to respective inputs of the
eight delays 12-0 through 12-7. When each recorder is turned on, it
records the analog signal of the respective patient starting with
the signal from the patient which appeared at the input to the
multiplexer two seconds earlier. When an off signal is transmitted
by the computer to a recorder, the recorder turns off. As will be
described below, three seconds elapse between the transmission of
on and off signals to any recorder, the on signal being transmitted
as soon as the computer determines that there is something unusual
about the cardiac waveform of a respective patient and that his ECG
signal should be recorded. Each recording comprises the two seconds
immediately preceding that part of the ECG signal which triggered
the trace, and the one second immediately following. Although 16
separate outputs are provided to allow the computer to control the
eight recorders, it will be understood by those skilled in the art
that the actual implementation of the system might entail the use
of address and data buses which are extended in common to all of
the recorders; an address on the address bus enables a particular
one of the recorders, and an on or off code word on the data bus
informs the recorder of the action required of it.
The system itself is made of conventional blocks. Insofar as the
computer program is concerned, the most important point to note is
that the computer is interrupted from an external source at
1-millisecond intervals. During each 1-millisecond cycle, there
first appears a patient number on the external data line 46,
followed a few microseconds later by a data value for the
respective patient.
It should also be noted that in the system of FIG. 1 the computer
simply controls the turning on and off of the eight recorders and
the typing of verifying characters by the printer. As will be
described in detail below, the computer determines specific
information which can be of considerable value to a physician.
While in the illustrative embodiment of the invention this
information is used simply to trigger a trace, it will be apparent
to those skilled in the art that once this information is available
the computer can be programmed to control its print-out in a
conventional manner. For example, of the nine items of information
determined by the computer for each heartbeat of each patient, one
of them is the detection of two successive premature beats. A
typical print-out might consist of the patient number, the fact
that such a condition was detected, and the time of day when it
occured.
FIG. 2 -- EIGHT TYPICAL ECG WAVEFORMS AND RELATED PROGRAM-GENERATED
SIGNALS
The second line of FIG. 2 depicts eight typical ECG waveforms, the
two rightmost waveforms being those which occasionally occur with
some VPB's. The eight waveforms are those described in my
above-identified co-pending application. The waveforms are
identified by the symbol FDP; as will be described below, each time
a data word (representative of the signal amplitude of a respective
patient) is operated upon, the program develops an
amplitude-related data word called FDP which is required by the
morphology recognition subroutine. Samples of the ECG signal of
each patient are taken at 8-millisecond intervals, and the FDP
waveforms of FIG. 2 should be considered as sample values
representative of the magnitude of an ECG signal at any instant.
(The sampling rate of 125 Hz for each ECG signal is high enough to
insure that the sampled data accurately represents each signal.)
The program develops two threshold values labeled +THRESH and
-THRESH, and each instantaneous FDP signal is compared to both
threshold values. Whenever an FDP value exceeds +THRESH, a test to
be described below as the "A" test is passed. The top waveform in
FIG. 2 shows the time interval during each waveform that successive
samples exceed +THRESH to result in the passing of the A test.
Similarly, the "B" test is passed whenever the FDP value is
negative and its magnitude exceeds the magnitude of -THRESH. The
third waveform in FIG. 2 shows the time interval during each
waveform that this condition exists.
In the system disclosed in my co-pending application, an ECG input
signal is differentiated and the differentiated signal is used to
detect certain characteristics of the ECG waveform. A comparable
(digital) signal is developed in the present embodiment. This
signal is labeled DIFSUM and DIFSUM values are computed for each
patient at 8-millisecond intervals. The succession of DIFSUM values
is analogous to the derivative of the ECG signal although, in the
program implementation of the invention, the DIFSUM values are
actually derived by forming differences between successive
samples.
The DIFSUM values are also compared to the threshold values +THRESH
and -THRESH. Whenever a DIFSUM sample exceeds the +THRESH threshold
value, the "D" test is passed. The fourth line of FIG. 2 shows the
time interval during each waveform when, if a sample of the
waveform is taken, the D test is passed. Similarly, if a DIFSUM
value is negative, the "C" test is passed whenever the magnitude of
the negative DIFSUM value exceeds the magnitude of the -THRESH
threshold level. The sixth line in FIG. 2 shows the time interval
during each waveform that the C test is passed if a DIFSUM value is
formed and tested.
Beneath the sixth line of FIG. 2 there are shown eight combinations
of letters such as AD, C etc. These combinations are designed to
show the sequence in which the four tests are passed for each
waveform. For example, in the case of the ECG waveform
corresponding to the leftmost FDP waveform in FIG. 2, during the
first part of the waveform the A and D tests are passed together,
and toward the trailing end of the waveform the C test is passed
alone. This combination is shown as AD, C. As another example, in
the case of the third waveform the A and D tests are both passed
when at least one sample of the ECG signal is processed, the B and
C tests are then both passed when a later sample of the same signal
is processed, and finally the D test alone is passed when a still
later sample is processed. The combination is shown as AD, BC, D.
The passing of the A, B, C and D tests in the program
implementation of the invention is comparable to the appearance of
the A, B, C and D characteristics in the ECG signal as detected by
the hardware embodiment of the invention disclosed in my co-pending
application.
Finally, FIG. 2 depicts the "type" number of each waveform, the
type number serving to clarify the MCP program to be described
below. For example, if during the processing of the samples of the
ECG signal of a respective patient the B and C tests are both
passed when the same sample is processed, then the waveform is of
type 5. If the D test is then passed, the waveform is of type 6
instead. If the D test is passed but then the A test is also passed
together with the D test when another sample is operated upon, the
waveform is characterized by the sequence BC, AD and it is of type
7. If toward the end of the waveform the C test is passed, then the
waveform is of type 8.
The value of FIG. 2 is that it not only depicts typical ECG
waveform morphologies, but it also provides a "continuous" picture
of what the A, B, C and D tests are looking for as the tests are
performed on each input sample.
FIG. 3 -- INTERACTION OF EXECUTIVE PROGRAM AND SUBROUTINES
FIG. 3 serves primarily to indicate the relationships of the
various subroutines, each of the subroutines being contained within
an individual box in the drawing. The legend at the lower-left
corner of the drawing characterizes the times of performance of the
various subroutines. Any subroutine box which contains an inner
border (there are only two such subroutines -- RRP and TCP2) is
executed each time that the last sample for a particular patient
gave rise to a determination that an R wave is present. Any box
with two short lines in its upper-left corner represents a
subroutine which is executed every time a "data point" (or sample)
is operated upon. For example, referring to FIG. 3, when a new data
point (NDP) is received, the DFP and RWD subroutines are executed.
If the RWD subroutine determines that the present data point,
together with previously operated upon data points, constitute an R
wave, then a respective bit in the 8-bit RWORD is set to a 1. The
RWORD is operated upon by the EXECUTIVE program which, in response
to a 1 for the particular patient being present in a respective bit
position of the word, causes the RRP subroutine to be executed for
that patient. This subroutine is concerned with the time intervals
separating successive R waves.
Any subroutine whose respective box on FIG. 3 has two short lines
in its lower-left corner is executed at every strobe time. After
the detection of an R wave, a period of 232 milliseconds is
provided during which the morphology of the ECG waveform of the
patient whose R wave was just detected is still examined. The RWD
subroutine controls the setting of bits in the 8-bit STWORD 232
milliseconds following the detection of R waves -- the detection of
an R wave for a particular patient results in a 1 being placed in
the respective bit position of the STWORD. Just as the RWORD is
utilized by the EXECUTIVE program, so is the STWORD. A strobe time
for a particular patient is caused to occur 232 milliseconds after
the detection of an R wave for that patient, at which time several
of the subroutines on FIG. 3 are executed.
Any subroutine whose respective box is provided with two short
lines in the lower-right corner is executed at 2-second intervals.
There is only one such subroutine -- DTP2.
Finally, the HFP2 subroutine, the only one with two short lines in
the upper-right corner of its respective box, is executed every 256
milliseconds.
The EXECUTIVE program calls for the executions of the individual
subroutines. The keyboard and printer "input" to the EXECUTIVE
program is symbolized by the box labeled TTY. Although not shown in
FIG. 3, it is to be understood that the EXECUTIVE program also
"looks for" 8-bit data words (patient number or waveform sample) on
the external data line whenever an external Interrupt signal is
detected. Each sample is symbolized by the letter NDP, which
represent a "new data point." The NDP word which is developed by
the EXECUTIVE program is required by the DFP and HFP1 subroutines
as shown in FIG. 3.
The EXECUTIVE program also requires for its proper operation
certain other data. For example, the RWORD and the STWORD, required
by the EXECUTIVE program, are derived by the RWD subroutine as
described above. Furthermore, the EXECUTIVE program, upon receipt
of a new sample, updates three "counters" referred to as 1MINTMR,
2SECTMR and 256MSTMR. Each of these counter words is reset to zero
when it reaches a respective value indicative of a count of 1
minute, 2 seconds or 256 milliseconds. Since new data samples are
received at 1-millisecond intervals, each time one of the counter
words is incremented it is an indication that another one
millisecond has elapsed. The EXECUTIVE program includes steps for
detecting when any one of the three counter (timer) words has
reached the limit which represents the respective time interval
having elapsed. Similar remarks apply to the 3SECTMR timer words,
except that a separate 3-second timer word is provided for each
patient, as opposed to the other three timer words which are shared
by all patients. The RRTMR word is incremented by the EXECUTIVE
program every millisecond, and is an indication of real time. The
only other data word delivered by the EXECUTIVE program is ADP. As
will be described below, each time a new data point (NDP) is
received for a patient, his respective AVLEV value is subtracted
from the NDP value to produce an ADP value required by the LFP
subroutine.
Before proceeding to a detailed description of the subroutines, it
will be helpful to briefly review the function of each subroutine
so that their interactions depicted in FIG. 3 can be partially
understood at this stage. The new data points (NDP) of each
patient, when they are received at intervals of 8 milliseconds, are
utilized by the DFP subroutine which performs a function comparable
to the differentiation function described in my co-pending
application. Each new data point is stored as the last data point
(LDP) for the respective patient, and the DFP subroutine forms the
difference NDP-LDP, referred to as DIFSUM, each time a new data
point is operated upon. The DIFSUM value which is derived for each
patient when a current data point is being operated upon is an
indication of the rate of change of the magnitude of the ECG signal
of the patient.
The function of the DTP1 subroutine is to determine the maximum
value of DIFSUM for each patient during a 2-second interval. This
maximum value, called DMAX, represents the peak magnitude of the
derivative of the ECG signal of the patient. The DMAX value for
each patient is up-dated every time a new data point is operated
upon. The DTP2 subroutine functions to derive a theshold value,
called DTHRESH, for each patient. The DTHRESH threshold value for
each patient is equal to one-half of the average DMAX value for the
respective patient computed during each of the preceding eight
2-second intervals. The DTHRESH threshold value for each patient,
which is up-dated every two seconds to take into account variations
in the peak-to-peak value of the respective ECG signal, is used by
the RWD subroutine, one of whose functions is to determine whether
the current DIFSUM value for a patient exceeds his respective
DTHRESH value.
The HFP1 subroutine forms a running sum of the NDP values for each
patient; each patient has a FILTAR value which is the sum of the
last eight NDP values. The FILTAR value for each patient, while
up-dated for every data point, is not used by the HFP2 subroutine
except at intervals of 256 milliseconds. At the end of the
execution of the HFP2 subroutine for a particular patient, that
patient's FILTAR value is reset to zero. Since the HFP2 subroutine
is executed only at 256-millisecond intervals, and a new data point
is received for each patient at 8-millisecond intervals, it is
apparent that the FILTAR value which is supplied by the HFP1
subroutine for use by the HFP2 subroutine is the sum of 32 NDP
values for each respective patient. The HFP2 subroutine first
divides the FILTAR value for the current patient by 32 to derive a
number which is the average value of 32 successive NDP values for
the patient. The HFP2 subroutine further stores the last eight
average values computed, and then determines the average of these
eight average values. This overall average -- which is the average
value of the NDP values during the last 8.times.256 milliseconds,
that is, the average value over approximately the last two seconds,
is referred to as AVLEV. The EXECUTIVE program subtracts the AVLEV
value of each patient from each NDP value for that patient to
derive an ADP value. The ADP value thus represents the magnitude of
the ECG signal after its average value, or DC component, is
removed. The function of the HFP1 and HFP2 subroutines is that of a
high-pass filter.
The function of the LFP subroutine, which is executed each time a
new data point is received for a patient, is that of a low-pass
filter. The LFP subroutine derives an FDP value for each patient
which is the average value of the current ADP value and the three
previous ADP values. By summing four successive ADP values, and
dividing the sum by 4, the result -- FDP -- is less affected by
high-frequency noise than the ADP value. Of course, a new FDP value
is computed for each new data point, even though it is a function
of the value of the present data point and the three previous
ones.
The RWD subroutine compares the current DIFSUM value for each
patient to his respective DTHRESH threshold value. When three
successive DIFSUM values exceed the threshold, it is an indication
that an R wave has been detected. The RWD subroutine performs
several functions in response to the detection of an R wave. First,
a respective bit position in the RWORD is set to 1 to indicate to
the EXECUTIVE program that an R wave has been detected for the
current patient. (After the EXECUTIVE program has taken the
appropriate action for the current patient in response to the
detection of an R wave, the respective bit is reset to 0.) The RWD
program, following detection of an R wave, then counts 29
successive new data point values for the current patient. Since
they occur at 8-millisecond intervals, 232 milliseconds must elapse
before 29 new samples are counted. After the 232-millisecond period
has elapsed, the corresponding bit position in the STWORD is set to
1 to indicate to the EXECUTIVE program that the waveform in
progress has terminated; it is now "strobe" time for that
patient.
The RWD subroutine serves two other functions. The MCP subroutine,
by the time the R wave has been detected, has determined the
morphology type (MTYPE) of the waveform. The RWD subroutine sets
the MORPH word for the current patient equal to MTYPE. Also, the
real time clock word RRTMR is used by the RWD subroutine to set the
RRNEW word. Thus RRNEW represents the real time when the R wave was
detected.
The only input to the RRP subroutine is RRNEW -- the time of day
when the R wave of the current patient was detected. The RRP
program stores the eight most recent RRNEW values for each patient
so that the average time interval between R waves can be
determined. The RRP subroutine generates a LATE indication if an R
wave is late, that is, the elapsed time since the previous wave
exceeds the average interval between R waves by 11 percent. It
generates a PRE indication if the current R wave is premature, that
is, the elapsed time since the previous wave is less than the
average interval between R waves by 11 percent. The subroutine
generates a CP indication, representative of a compensatory pause,
if the current R wave was late and the previous R wave was
premature. The EPRE indication is generated in the case of an
exceptionally premature beat which results when the time interval
between the current R wave and the previous one is less than 50
percent of the running average. Finally, a SECPRE indication
results when two successive premature beats are detected.
The ARP1 subroutine operates on successive FDP values. An AREA
value for each patient is reset to zero at each strobe time and
thereafter the absolute magnitude of each FDP value is added to the
AREA value. The AREA value is a measure of the area (integral) of
each waveform. The ARP2 subroutine is provided with an 8-word
buffer for each patient in which are contained the eight last AREA
values for the patient. From these eight values, an average AREA
value, referred to as AAV is formed. If the AREA value of the
current waveform is greater than the average value by more than 25
percent, the ENLRGD indication for the patient is set equal to 1 to
indicate that the area of the current waveform is greater than the
average of the preceding eight waveforms by at least 25 percent.
(Instead of providing a separate ENLRGD word for each patient,
since the ENLRGD indicator is either a 0 or a 1, a single ENLRGD
word can be provided with one bit in the word being associated with
each patient. Similar remarks apply to the other patient
indications.) The ARP2 subroutine also generates a PENLRGD
indication which represents whether the previous R wave of the same
patient was enlarged.
The TCP1 subroutine is executed once every millisecond -- whenever
a new data point is received. The subroutine derives a MAX value
for the current patient which is the absolute magnitude of the
largest FDP value operated upon during the course of the R wave in
progress. The TCP2 subroutine utilizes the eight most recent MAX
values derived for the current patient to derive two equal (but
opposite polarity) threshold levels referred to as +THRESH and
-THRESH. The threshold values are up-dated every time a
determination is made that an R wave has been detected.
The two threshold values for each patient are utilized by the MCP
subroutine which is also called by the EXECUTIVE program whenever a
new sample is operated upon. The MCP subroutine determines the
morphology type number of the R wave which is in progress. Each FDP
value, which is a measure of the magnitude of the ECG signal, is
compared to the plus and minus threshold values to determine the
passing of the A and B tests referred to above. Similarly, each
DIFSUM value, which represents the instantaneous value of the
derivative of the ECG signal of the current patient, is also
compared to the two threshold values to determine whether the C and
D tests referred to above are passed. Depending on the sequence in
which the four tests are passed, the MCP subroutine characterizes
the waveform as being one of eight types, and sets a respective bit
in the MTYPE word for the current patient. It will be recalled that
the RWD subroutine, at strobe time for the current patient, sets
the MORPH word for the patient in accordance with the present value
of the MTYPE word. Thus the MORPH word which is used by the MRP and
LRN subroutines represents the morphology type number of the
waveform after it has terminated.
The RWD subroutine detects the occurence of an R wave when the
absolute magnitudes of three successive DIFSUM values exceed the
DTHRESH threshold value. As soon as the R wave is detected, the
corresponding bit in the RWORD is set. The EXECUTIVE program is
immediately informed of the occurrence of an R wave. However, the
MORPH word is not set equal to the MTYPE word developed by the MCP
subroutine because the morphology type of the R wave cannot be
completely determined by the time the presence of the R wave is
detected. Referring to FIG. 2, it will be seen that information
contained in the tail end of an R wave (also called the S wave) can
determine its type number. For this reason, the RWD subroutine does
not set the MORPH word until the strobe time determined by the same
subroutine, that is, until 232 milliseconds after the detection of
the R wave. By the time 232 milliseconds have elapsed after the
detection of the R wave, the MCP subroutine has fully determined
the type number of the wave.
The LRN subroutine performs the learning function. During a
learning interval (the operator starts the learning interval by
keying in a predetermined code via the keyboard) eight R waves for
the identified patient are examined as to their morphology types.
At every strobe time during the learning interval, the morphology
type number of the R wave just analyzed is stored for subsequent
comparison to morphology type numbers determined for the same
patient during monitoring. As will be described below, in the event
a learning routine is necessary, it is not begun until 2 seconds
have elapsed after the operator's request for it. This insures that
all signals settle down before any learning is begun in the event
the patient was first connected to the monitoring equipment just
prior to the learning request. The LRN program generates an LTYPE
word for each patient. Each bit in the 8-bit word for each patient
corresponds to a respective morphology type number, a 1 in any
position representing the occurrence of the respective morphology
type waveform during the learning interval for that patient.
The MRP subroutine is executed at every strobe time. It simply
compares the present morphology type number of the waveform just
analyzed to all of those learned during the learning interval. If
the morphology of the present waveform is not one of those
previously learned, an UNLRND indication is set to indicate that
the present waveform was not previously learned. The MRP subroutine
also generates a PUNLRND indication which represents whether the
previous waveform was similarly not one of those learned during the
learning interval.
The MPV program detects the occurrence of two premature beats in
succession, and is called for by the EXECUTIVE program at every
strobe time. One input to the MPV subroutine is the SECPRE
indication for the current patient -- a "MULTIPLE" condition can be
present only if two premature beats in succession have been
detected. The waveforms of the current and previous beats are then
examined to see if they are atypical as well as premature. Each of
the waveforms is considered to be atypical if it was either
enlarged or it has a morphology type other than one of those
learned during the learning interval for the current patient. Since
both the present and the previous waveforms must be examined, the
four other inputs to the MPV subroutine are the ENLRGD, PENLRGD,
UNLRND and PUNLRND indications for the current patient. If two
successive atypical premature beats are detected, the MULTIPLE
indication for the current patient is set.
The VRP subroutine, which is called by the EXECUTIVE program at
every strobe time, determines whether the previous (not the
current) waveform was a VPB. One of the criteria for the setting of
the VPB indication by the VRP subroutine is that the previous
premature beat was followed by a compensatory pause interval. In
other words, a true VPB is present only if the beat was premature
and it was followed by a late beat. The CP indication, which is
generated with the detection of the current late beat, is thus one
input to the VPR subroutine. But for the previous beat to have been
a VPB, it is also necessary that its morphology have been unusual
in the sense that its area was enlarged, or its morphology type
number was not one of those learned during the learning interval.
Consequently, two of the other inputs to the VRP subroutine are the
PUNLRND and PENLRGD indications. It will be called that the PENLRGD
indication represents the enlargement of the previous waveform. In
the case of a ventricular premature beat, however, it is possible
that the waveform will be greatly enlarged at its end -- after the
occurrence of strobe time. Consequently, the excessively enlarged
area will not actually be detected by the system until the current
waveform is analyzed, with the ENLRGD indication being set.
Consequently, the ENLRGD indication for the current waveform is
also an input to the VRP subroutine -- if the current waveform is
enlarged, it is assumed that the previous premature beat (which has
now been followed by a late beat) was a true VPB.
It would appear that the MPV subroutine -- which is designed to
detect two VPB's in succession -- could theoretically operate upon
only the VPB indication generated by the VRP subroutine for the
current waveform and the VPB indication generated for the previous
waveform of the same patient. However, this cannot be done because
the MPV subroutine does not really indicate the occurrence of of
two VPB's in succession as a VPB is defined by the VRP subroutine.
The VRP subroutine generates a VPB indication only if a premature
beat is followed by a compensatory pause interval. Consequently,
the VRP subroutine cannot possibly detect two VPB's in succession.
The VRP subroutine is designed to generate a VPB indication if a
particular condition of considerable value to a physician is
detected, namely, a premature beat followed by a compensatory pause
interval, with the premature beat having an unusual morphology. The
MPV subroutine, on the other hand, does not look for the presence
of a compensatory pause interval. The MULTIPLE indication is set
only if each of two successive premature beats have unusual
morphologies. It follows that, at any strobe time, the VRP
subroutine and the MPV subroutine together can set only one of the
VPB and MULTIPLE indications.
The FVP subroutine, also called for by the EXECUTIVE program at
every strobe time, is designed to detect an excessive number of
VPB's within any 1-minute interval. If such a condition is
detected, the FREQUENT indication is set for that patient. The MFP
subroutine, also called for by the EXECUTIVE program at every
strobe time, is designed to detect a MULTIFORM condition. The two
inputs to the subroutine are the MORPH word for the current
waveform, together with the VPB indication. Every VPB, as
determined by the VRP program, has a morphology which may be one of
those not learned during the learning interval. But it is of
interest to determine whether the VPB's themselves have more than
one type of morphology. For this reason, the MFP subroutine
maintains a record of the morphology type of the first VPB which is
detected for a patient. Thereafter, whenever another VPB is of a
different morphology type the MULTIFORM indication is set. The
occurrence of a VPB having a second morphology is then "remebered,"
and the occurrence of a VPB with a third type of morphology
similarly results in a MULTIFORM indication, etc.
With this brief description of the various subroutines and their
interactions, it is possible to analyze each of the subroutines in
detail. Thereafter, the EXECUTIVE program will be described.
FIG. 4 -- DFP SUBROUTINE
At the bottom of FIG. 4, there are symbolically depicted six memory
locations associated with each patient which are required for the
DFP subroutine. Also associated with each patient is another
location which contains a DIFFERENTIAL BUFFER POINTER. The POINTER
word is actually an address of one of the four locations for each
patient which are grouped together and referred to as a
DIFFERENTIAL BUFFER. The POINTER identifies in succession the four
locations in the BUFFER and then starts over again.
The DFP subroutine is called whenever a new data point is received.
As will be described below, the EXECUTIVE program inserts the
number of the patient whose data point has just been received in a
register (RO). The DFP subroutine first gets the DIFFERENTIAL
BUFFER POINTER for the current patient by using the RO register
contents to identify the address containing the required POINTER.
The POINTER which is thus retrieved is the address of one of the
four memory locations which comprise the DIFFERENTIAL BUFFER for
the current patient. The subroutine then gets the LDP -- the last
data point for the current patient. The last data point for the
current patient is contained in one of the six memory locations
associated with the current patient and used by the DFP subroutine.
Similarly, the DFP subroutine gains access to the NDP -- the value
of the new data point. The NDP value is made available by the
EXECUTIVE program.
After retrieving the LDP and the NDP, the DFP subroutine forms the
difference DIFF. This value simply represents the amount by which
the new data point differs from the last data point. The DFP
subroutine also stores the new data point in the LDP location
associated with the current patient. This is necessary in order
that the new data point be treated as the LDP the next time that a
sample for the current patient is operated upon.
The DIFFERENTIAL BUFFER has stored in it the last four DIFF values
computed for the current patient. The POINTER identifies the
location of the oldest DIFF value in the 4-word DIFFERENTIAL
BUFFER. This oldest DIFF value is taken from the BUFFER and is
subtracted from the DIFSUM value stored for the current patient.
The DIFSUM value, as will become apparent below, is a running sum
of the last four DIFF values. By subtracting the oldest DIFF value
from DIFSUM, the subroutine eliminates the effect of the oldest
DIFF value on the sum. In order to up-date the sum, the DIFF value
just computed (NDP-LDP) is added to DIFSUM, after the oldest DIFF
value has been subtracted from it. The new DIFSUM value is stored
in the location used for this purpose for the current patient.
Although DIFSUM has been up-dated, it is necessary to store the
just-computed DIFF value because when the fourth sample starting
from the present time for the current patient is operated upon (32
milliseconds from the present time), the present DIFF value must be
subtracted from DIFSUM in order to cancel its effect on the running
sum. The DIFF value is inserted in the DIFFERENTIAL BUFFER in the
location identified by the POINTER. Thus the new DIFF value is
placed in the same location which previously contained the oldest
DIFF value (the one computed 32-milliseconds prior to the current
sample). Thereafter, the POINTER is incremented so that it
identifies the next memory location in the DIFFERENTIAL BUFFER. The
next location must be identified because it now contains the oldest
DIFF value, and it is this value which is required at the start of
the DFP subroutine the next time that it is executed for the same
patient (8 milliseconds from the present time).
But the four memory locations which comprise the DIFFERENTIAL
BUFFER for the current patient are identified by four successive
addresses, and consequently if the POINTER is continuously
incremented eventually it will identify a location which is not one
of the four in the DIFFERENTIAL BUFFER. For this reason, a test is
performed to see if the POINTER points past the end of the BUFFER.
If it does not, then as shown in the flow chart, the POINTER is
stored for use in connection with the same patient when the DFP
subroutine is called by the EXECUTIVE program 8 milliseconds from
the present time. On the other hand, if the POINTER points past the
end of the BUFFER, then the POINTER is reset to the start of the
BUFFER so that it identifies the first location in the BUFFER. The
reset POINTER is stored, just as it is when it is incremented and
then not reset, and a RETURN is made to the EXECUTIVE program.
The function of the DFP subroutine is to operate upon each new data
point (NDP) and to use it to up-date the DIFSUM value for the
current patient. The DIFSUM value is a measure of the difference
between successive data points. It is actually a continuously
up-dated quantity which characterizes the way the new data points
are changing, and is comparable to the derivative of the ECG
signal. The reason that a running sum is used to represent the
derivative function is that this technique eliminates the effect of
high-frequency noise. Each DIFSUM value is actually the difference
between the present data point and the data point for the same
patient which was received 32 milliseconds earlier because DIFSUM
is the sum of four differences and the three intermediate data
point values cancel each other out. Thus if NDP.sub.n = data point
n, then DIFSUM = (NDP.sub.n -NDP.sub.n.sub.-1)+(NDP.sub.n.sub.-1
-NDP.sub.n.sub.-2)+(NDP.sub.n.sub.-2
-NDP.sub.n.sub.-3)+(NDP.sub.n.sub.-3 NDP.sub.n.sub.-4) = NDP.sub.n
-NDP.sub.n.sub.-4. However, samples are not taken at 32-millisecond
intervals because DIFSUM values are required at 8-millisecond
intervals. The reason that each sample is not simply subtracted
from the immediately succeeding sample to derive a DIFSUM value is
that by separating the two samples used to compute DIFSUM by 32
milliseconds, high-frequency noise pulses will have less of an
effect on the difference since the noise has a high probability of
occurring between the two samples without affecting the magnitude
of either one of them.
It should be noted that the sampling rate of one sample every 8
milliseconds for each ECG waveform is high enough (relative to the
frequencies which characterize an ECG signal) so that even using
the "filtering" technique of the DFP subroutine -- which provides a
form of difference measurement based on 32-millisecond intervals --
the DIFSUM value is still a good measure of the way the ECG signal
changes. The DIFSUM value, as shown in FIG. 3, is required by the
DTP1, RWD and MCP subroutines.
FIG. 5 -- DTP1 SUBROUTINE
The DTP1 subroutine is executed each time a new data point for any
patient is operated upon. The absolute magnitude of DIFSUM for the
current patient is compared to the DMAX value for the current
patient. If the absolute magnitude of DIFSUM is less than DMAX
then, as shown in FIG. 5, no change is made in DMAX and a RETURN is
made to the EXECUTIVE program. On the other hand, if the absolute
magnitude of DIFSUM for the current patient is greater than the
DMAX value for the current patient, then the DMAX value is changed
to the absolute magnitude of the current DIFSUM value. It is thus
apparent that the purpose of the DTP1 subroutine is simply to
derive a DMAX value which is equal to the absolute magnitude of the
largest DIFSUM detected for the current patient. It should be noted
that were DMAX never reset to zero, then it could represent the
magnitude of a very large DIFSUM value which was computed a long
time ago even though all DIFSUM values computed over the last few
minutes, or even hours, were much smaller. For this reason, DMAX is
cleared by the DTP2 subroutine of FIG. 6 -- at a time to be
described in connection with that subroutine.
FIG. 6 -- DTP2 SUBROUTINE
The DTP2 subroutine is called by the EXECUTIVE program every 2
seconds for each patient. After two seconds have elapsed, when
"housekeeping" chores for a particular patient are being attended
to, the DTP2 subroutine is executed. The subroutine is executed
eight times (over the course of 8 milliseconds, although each
execution requires only several microseconds) at the start of every
2-second interval.
A DMAX BUFFER is provided for each of the eight patients, each
BUFFER containing eight words. A POINTER is also associated with
each DMAX BUFFER and at the start of the DTP2 subroutine the DMAX
BUFFER POINTER for the current patient is retrieved. This POINTER
identifies the location in the 8-word BUFFER which contains the
oldest DMAX value for the current patient, and this oldest value is
obtained from the BUFFER. (As will become apparent, the DTP2
subroutine forms a running sum of the type formed by the DFP
subroutine, except that DMAX values are operated upon rather than
DIFF values.) This oldest DMAX value is subtracted from a DTSUM
word associated with the patient, and the new DMAX value is then
added to DTSUM. The DTSUM value is thus a running sum of eight DMAX
values. The average DMAX value could be obtained by dividing DTSUM
by 8. But what is desired is half of the average and for this
reason DTSUM is divided by 16, as indicated in FIG. 6, to derive a
DTHRESH value (see FIG. 3). The DTHRESH value is thus one-half of
the average of the eight most recent DMAX values for the current
patient. It is used as a threshold by the RWD subroutine to
determine when three successive DIFSUM values exceed the threshold.
In such a case, it is presumed that an R wave has been detected
because it is during the occurence of an R wave that successive
DIFSUM values differ from each other by considerably more than the
average difference between successive values.
In order to continuously up-date DTSUM, it is necessary to
continuously up-date the DMAX BUFFER so that the eight most recent
DMAX values are available. Thus after DTHRESH is formed, the
POINTER is used to insert the newest DMAX value in the BUFFER so
that it replaces the oldest DMAX value. The POINTER is then
incremented, and a test is made to see if it points past the end of
the BUFFER. If it does, the POINTER is reset to the start of the
DMAX BUFFER. In either case, the POINTER is then stored so that it
can be used for the same patient two seconds later when the DTP2
subroutine is called by the EXECUTIVE program. At the same time,
DMAX is cleared so that the DTP1 subroutine, which is executed
every time a new data point is received for the current patient,
can start off from zero; were DMAX not cleared, very large DIFSUM
values which occurred long ago in the past could cause DTHRESH to
be so great that no DIFSUM value might exceed the threshold in the
event the entire ECG signal, for one reason or another, is now at a
lower level.
Because the DTP2 subroutine is executed for each patient only once
every 2 seconds, and DMAX is cleared at the end of the subroutine
execution, the DTP1 subroutine determines the largest DIFSUM value
for the current patient which occurs during a 2-second interval,
and the DTP2 subroutine operates upon this value together with the
seven previously determined DMAX (largest DIFSUM) values. Thus, the
DTHRESH threshold value is based upon the DIFSUM values which occur
during the preceding 16 seconds. The threshold value is equal to
one-half of the average of the absolute magnitudes of the eight
largest DIFSUM values, each of which occurred during a respective
one of the eight preceding 2-second intervals. The averaging
technique utilized by the DTP2 subroutine is similar to that
utilized by the DFP subroutine, but it serves a different purpose.
The DFP subroutine functions to filter out the effects of noise in
each computed DIFSUM value. The DPT2 subroutine is used to
continuously up-date a threshold value to which each DIFSUM value
computed by the DFP subroutine is compared by the RWD
subroutine.
FIG. 7 -- RWD SUBROUTINE
The RWD subroutine is executed whenever a data point is received.
The basic function of the subroutine is to detect the occurrence of
an R wave. An R wave is assumed to have been detected when the
absolute magnitudes of three successive DIFSUM values exceed the
DTHRESH threshold level for the current patient. When an R wave is
first detected, as will be described below, the STRTMR (strobe
timer) word for the patient is set to 1 and it is then incremented
at 8-millisecond intervals. When the RWD subroutine is first
entered, a test is made to see if the STRTMR word is zero. If it is
not, it is an indication that the R wave was detected upon receipt
of a sample within the last 232 milliseconds and an immediate
branch is taken to the step in which STRTMR is incremented. The
STRTMR value is then examined to see if it is 30, and if it is not
an immediate branch is made to RETURN; a RETURN is made to the
EXECUTIVE program. However, if the STRTMR word has been incremented
to 30 then it is an indication of strobe time. Since it is when the
RWD subroutine is executed for a sample which is determinative of
the presence of an R wave that the STRTMR word is set to 1, and the
RWD subroutine is executed for the same patient once every 8
milliseconds, it is apparent that when the 29th sample (after the
sample determinative of the presence of an R wave) is operated upon
the value of STRTMR will be 30. Thus it is not until 232
milliseconds after a determination is made of the presence of an R
wave that the question "does STRTMR equal 30?" is answered in the
affirmative. At this time the number of the current patient is used
to set a corresponding bit in the STWORD. When a 1 is present in
this 8-bit word it is an indication that it is the strobe time for
the respective patient, that is, that the 232-millisecond
refractory period for the patient has terminated. By this time the
MCP subroutine has determined which of the eight morphology type
numbers characterizes the waveform which was detected 232
milliseconds earlier. The MORPH word for the current patient is set
equal to the MTYPE value determined by the MCP program; the MORPH
word indicates the morphology type number of the R wave just
processed.
At this time the STRTMR word of the current patient is reset to
zero because the RWD subroutine must once again start looking for R
waves in the ECG signal of the current patient. Also, the MTYPE
word for the current patient is set to zero; as will be described
in connection with the MCP subroutine, the MTYPE word for each
patient must be reset to zero at strobe time, that is, when the MCP
program should start to analyze the characteristics of a new R
wave. Also, as will be described in connection with the MCP
subroutine, each patient is provided with an MCP POINTER which
controls the processing of FDP and DIFSUM values for a patient
whenever a new sample is received. At the start of the processing
for a new R wave, the MCP POINTER for any patient must be set to
ACHK for reasons to be described below.
Following the setting to zero of the STRTMR word for the current
patient, subsequent executions of the RWD subroutine result in an
affirmative answer to the question in the first step of the
subroutine. Since an R wave is characterized by large magnitudes of
DIFSUM values, the test which is performed is to compare the
magnitude of the current DIFSUM value with the DTHRESH value for
the respective patient. (There is a different DTHRESH value for
each patient, the DTP2 subroutine being executed every 2 seconds
for each patient). If the magnitude of DIFSUM is greater than
DTHRESH, the value of TRYPOS associated with the current patient is
incremented. Initially, the value of TRYPOS is zero. After TRYPOS
is incremented a test is made to see if it equals 3. If it does
not, it is an indication that three successive, large, positive
DIFSUM values have not been detected and a RETURN is made to the
EXECUTIVE program.
The test for verifying the presence of an R wave is whether three
successive DIFSUM values of the same polarity exceed respective
positive or negative threshold levels. Two counter words -- TRYPOS
and TRYNEG -- are maintained for each patient, and each of these
counter words indicates the number of successive DIFSUM values
which exceeded a respective polarity threshold level. If DIFSUM is
greater than DTHRESH (DTHRESH is a positive value), then the TRYPOS
count is incremented, as described above, and then tested to see if
it is equal to 3. It should be noted that at the same time TRYPOS
is incremented, TRYNEG is cleared. No matter what the count of
TRYNEG, since a positive DIFSUM value has been detected, the count
of previous successive, large-magnitude, negative DIFSUM values is
no longer required.
If the result of the second test executed in the program indicates
that DIFSUM is not greater than DTHRESH, then there are two
possibilities. First, DIFSUM may be positive but less than DTHRESH:
second, DIFSUM may be negative. But, in either case, if the TRYPOS
count is not 0, it should be reset to 0 because the current DIFSUM
value does not exceed DTHRESH, and three successive large DIFSUM
values, which include the one or two immediately preceding values,
cannot possibly be detected. Thus, as shown in the flow chart,
TRYPOS is cleared.
But a test must now be performed to see if DIFSUM is a very large
negative value. It is compared with -DTHRESH, and if DIFSUM is not
less than -DTHRESH, then TRYNEG is cleared. It is only when three
successive, large, negative (or positive) DIFSUM values are
received that the presence of an R wave is assumed; as soon as a
DIFSUM value is operated upon which does not exceed the threshold,
TRYNEG is reset to 0. Since TRYPOS has previously been cleared, a
RETURN is now made to the EXECUTIVE program.
On the other hand, if the DIFSUM value is less than -DTHRESH, then
TRYNEG is incremented. A test is performed to see if it is equal to
3 and, if it is, then just as in the case where TRYPOS is equal to
3 it is assumed that an R wave has been detected.
After TRYPOS or TRYNEG has been incremented to a value of 3, the
number of the current patient (in the RO register) is used to set a
corresponding bit in the 8-bit RWORD. Each bit in this word
corresponds to a respective patient and if a bit is a 1 it is an
indication that an R wave for the respective patient has been
detected and that the EXECUTIVE program should take the appropriate
action. It is the RRP subroutine which now is called into action
but this subroutine requires the time when the R wave was detected.
The RRTMR timer word is up-dated by the EXECUTIVE program every
millisecond and thus represents the time of day to the nearest
millisecond. The value of RRNEW for the current patient is set
equal to RRTMR; the eight RRNEW words thus represent the times of
day when the last R waves were detected for the respective
patients.
When an R wave has been detected, the STRTMR word for the current
patient is set to 1 so that when the RWD subroutine is called by
the EXECUTIVE program to process a new DIFSUM value for the current
patient, the only step which will be taken will be to increment
STRTMR until after 232 milliseconds it is eventually equal to
30.
It is also necessary that the TRYPOS and TRYNEG words be set equal
to zero at the same time inasmuch as one of them has been
incremented three times to a value of 3 by the time a determination
is made of the presence of an R wave. After they are cleared, a
RETURN is made to the EXECUTIVE program.
FIGS. 8A and 8B -- RRP SUBROUTINE
The RRP subroutine, which is executed whenever an R wave is
detected, is used to determine timing information for successive R
waves of a patient. It will be recalled that the RRNEW value for
each patient set by the RWD program represents the time of day when
the last R wave of that patient was determined to be present. An
RROLD word is provided for each patient, and the value of this word
is the time of day when the previous R wave for the patient was
determined to be present. The first step in the RRP subroutine is
to subtract RROLD from RRNEW. The difference -- RRINT -- represents
the time difference (in milliseconds) between the last R wave and
the present R wave. It should be noted that in this step RRINT is
set equal to the absolute difference between RRNEW and RROLD. Since
RRTMR, from which RRNEW is derived, is incremented by the EXECUTIVE
program at 1-millisecond intervals, it is apparent that eventually
the value of RRNEW exceeds the maximum number which any word can
represent, an overflow results with RRTMR being reset to zero, and
a new timing count begins again. Thus it is possible for RROLD to
be greater in magnitude than RRNEW following an overflow condition
in RRTMR. By taking the absolute magnitude of the difference
between the two values, RRINT equals the time difference between
successive samples in all cases.
After RRINT is computed, RROLD is up-dated by making it equal to
RRNEW; thus, the next time that the RRP subroutine is executed, the
time of day when the present R wave was detected will be treated as
the time of day when the previous R wave was detected.
As will be described below, RRAV for each patient is the average
value of the time intervals between R waves. A test is made to see
if RRINT is greater than RRAV by 11 percent. If it is not, both
LATE and CP for the current patient are set to 0, and a branch is
taken to the next test. On the other hand, if RRINT is too large,
it is an indication that the present beat was late, and the LATE
indication for the current patient is set equal to 1. The PRE
indication for the current patient, as will be described below, is
equal to 1 if the previous beat was premature. Thus if PRE and LATE
are both equal to 1, it is an indication that the present beat is a
late beat which followed an early beat. That represents a
compensatory pause and the CP indication for the current patient is
set equal to 1. On the other hand, if both PRE and LATE are not
equal to 1, the CP indication is set equal to 0.
In the next test, RRINT is tested to see if it is less than RRAV by
11 percent. If it is not, it is an indication that the present beat
is not premature and both PRE and SECPRE are set equal to 0. The
SECPRE indication is used to indicate whether two premature beats
have occurred in succession, and that cannot be the case where the
present beat is not premature.
But if the present beat is premature, then a test is made to see
whether PRE -- which represents the prematurity of the previous
beat -- is 1. If it is not, it is an indication that while the
present beat is premature, the previous beat was not; accordingly,
PRE is set equal to 1 but SECPRE is set equal to 0. On the other
hand, if the previous beat was also premature and that is
represented by PRE being a 1, then SECPRE is set equal to 1 to
indicate that two premature beats in succession have been detected.
There is no need to set PRE to a 1 to indicate that the present
beat is premature since the PRE indication is already a 1 as a
result of the previous beat.
The next step which is performed determines whether the present
beat is so early that the RRINT value is less than 50 of RRAV. If
the present beat is so early that RRINT is less than 0.5RRAV, then
EPRE indication is set equal to 1; if the present beat is not less
than RRAV by more than 50 percent, then EPRE is set equal to 0.
Although the steps on FIG. 8A show the manner in which the five
indications LATE, PRE, CP, SECPRE and EPRE are derived, the various
tests are based on the value of RRAV -- the average value of the
time intervals between R waves for the current patient. The steps
depicted in FIG. 8B are those used to derive the average value
RRAV. Ordinarily, it would be expected that a type of circular
BUFFER used in several of the other subroutines could be used to
store, for example, the last eight values of RRINT, with RRAV being
computed by taking the average of the eight most recent RRINT
values. This, in fact, is done but one safeguard must be taken. It
is possible that a very long time may elapse between two R waves,
for example, if for one reason or another the monitor is
momentarily disconnected from the patient. Since the RRTMR timer
word is incremented at 1-millisecond intervals, it is possible that
when the first R wave of the patient is detected after monitoring
resumes, the value of RRTMR (RRNEW) may be very large, while RROLD
may be very small. This would give a very large value for RRINT,
and the addition of this large value to the average value of RRINT
which is being maintained might result in an overflow, with the
result that the average value (after overflow), rather than being
large, might be very small. This would result in erroneous timing
indications until enough additional RRINT samples were taken which,
after averaging, would provide a reasonable average value. For this
reason the averaging technique depicted in FIG. 8B, while very
similar to those considered above, takes into account the
possibility of an overflow as a result of a very large RRINT
value.
An 8-word RRINT BUFFER is provided for each patient, together with
a POINTER for identifying one of the eight locations in the BUFFER.
The POINTER is first used to get the oldest RRINT value from the
8-word BUFFER for the current patient. The oldest RRINT value is
then subtracted from INTSUM for the current patient, each patient's
INTSUM value being the sum of the eight RRINT values in the
respective BUFFER. After the oldest RRINT value is subtracted from
INTSUM, the difference is stored as PRTLSUM. The new RRINT value is
then added to PRTLSUM and the sum is stored as NEWSUM. The value
NEWSUM is the value which should be used in the usual case where
there is no overflow, that is, NEWSUM is not so large that it
cannot possibly be the sum of eight reasonable RRINT intervals. The
value of NEWSUM is tested to see if the addition of the new RRINT
value to PRTLSUM resulted in an overflow. If there is no overflow,
then the value INTSUM Is set equal to NEWSUM: as mentioned above,
INTSUM is the sum of the eight most recent RRINT values in the
BUFFER for the current patient and that is exactly what NEWSUM is.
The POINTER for the current patient is then used to insert the new
RRINT value in the BUFFER in the location which previously
contained the oldest RRINT value, and the POINTER is then
incremented. Since INTSUM is the sum of the eight RRINT values now
in the BUFFER, INTSUM is divided by 8 to determine RRAV -- the
desired result, namely, the average of the eight most recent
interpulse intervals.
On the other hand, if an overflow results when the new RRINT value
is added to PRTLSUM, it is an indication that something is wrong
and that the new RRINT value should not be added to PRTLSUM in the
usual manner to derive INTSUM. Thus, INTSUM is set equal to
PRTLSUM. The value INTSUM is thus the sum of only seven RRINT
values. Since the new RRINT value is not used to increase the value
of INTSUM, a zero is inserted in the location in the BUFFER
represented by the POINTER, and the POINTER is then incremented in
the usual manner. The value of RRAV is not changed and the old
value is used. During the next execution of the subroutine for the
current patient (assuming that there is no overflow) the value of
INTSUM, from which the oldest RRINT value is subtracted and to
which the new RRINT value is added, represents the sum of only
seven PRINT intervals since, as a result of the detection of an
overflow in NEWSUM during the previous execution of the subroutine
for the current patient, an RRINT value was not added to INTSUM.
But while INTSUM is less than it should be, that is not nearly as
bad as having an INTSUM which might perhaps be of a negligible
value were the overflow condition not taken into account.
It should be noted that in the case of 16-bit words, it is not
expected that there will be any overflow in NEWSUM when the new
PRINT value is added to PRTLSUM. If an 8-bit word computer is used,
two words should be used for the variables INTSUM, PRTLSUM and
NEWSUM so that a 16-bit word is available for each of these
variables. Sixteen bits can represent a maximum decimal number of
65,536. Since the number is incremented every millisecond, the
maximum number of seconds which can be represented is 65.536. Since
the number is incremented every millisecond, the maximum number of
seconds which can be represented is 65.536. Since the variables
represent the sum of at most eight inter-pulse intervals, it is
apparent that overflows under "normal" circumstances will not occur
because eight seconds will not elapse between successive
heartbeats. It is only in the unusual case of an interruption of
the processing of R waves that such a large value of RRINT might be
computed which, when added to INTSUM, would result in an overflow
condition and therefore an extraordinary low value of INTSUM and
necessarily RRAV. For this reason, the subroutine is provided with
steps to take into account an unusually large value of RRINT.
After the new RRAV value is computed and the POINTER is
incremented, a test is performed in the usual manner to see if the
POINTER points past the end of the RRINT BUFFER for the current
patient. If it does, the POINTER is reset to the start of the RRINT
BUFFER. The POINTER is then stored and a RETURN is made to the
EXECUTIVE program.
FIG. 9 -- HFP1 SUBROUTINE
The function of the HFP1 subroutine is to add together successive
NDP values for each patient. The sum is labeled FILTAR, and each
time a data point is operated upon it is added to the FILTAR value
of the respective patient. At the end of the HFP2 subroutine to be
described below, the FILTAR value for each patient is reset to zero
so that the sum of a new series of NDP values may be obtained.
FIG. 10 -- HFP2 SUBROUTINE
The function of the HFP2 subroutine, which is called by the
EXECUTIVE program every 256 milliseconds, is to obtain the average
for each patient of the previous 256 NDP samples. (These samples
are taken during an interval slightly in excess of 2 seconds). The
average, referred to as AVLEV, is used by the EXECUTIVE program to
develop an ADP value from each NDP sample. Each ADP value is the
same as the NDP sample except that the AVLEV value is subtracted
from NDP, in effect removing DC components from the ECG samples.
Subroutines HFP1 and HFP2 thus function as a high-pass filter.
At the start of the HFP2 subroutine, the FILTAR value of the
current patient is divided by 32 and labeled HF. Since the HFP2
subroutine is executed once every 256 milliseconds and the HFP1
subroutine is executed for each patient once every 8 milliseconds,
it is apparent that the final FILTAR value utilized by the HFP2
subroutine is the sum of the last 32 NDP values for the current
patient. For this reason, each HF value is obtained by dividing
FILTAR by 32 -- HF for the current patient is his average NDP, over
the last 32 samples.
An HF BUFFER POINTER for each patient is provided, and the POINTER
for the current patient is first retrieved. This POINTER points to
the location in an 8-word HF BUFFER for the current patient which
contains the oldest HF value for the patient. This value is
retrieved from the BUFFER and then subtracted from HFSUM for the
current patient, HFSUM being the sum of the eight most recent HF
values. After the oldest HF value is subtracted from HFSUM, the
newest HF value is added to it, and the POINTER is used to insert
the new HF value in the BUFFER in the location which previously
contained the oldest HF value. The POINTER is then incremented so
that it points to the now oldest HF value in the BUFFER.
The value HFSUM is thus the sum of eight average values, each
average value being the average of 32 NDP samples. The average
level of the NDP samples over eight 256-millisecond intervals is
obtained by dividing HFSUM by 8 and storing the result as AVLEV. A
separate AVLEV is provided for each patient so that the EXECUTIVE
program can subtract the AVLEV value for each patient from any one
of the patient's data points.
As is usual whenever a BUFFER is employed for averaging purposes,
the HFP2 subroutine determines whether the BUFFER POINTER points
past the end of the BUFFER. Only if it does is the POINTER reset to
the start of the HF BUFFER. The new POINTER value is stored and
FILTAR for the current patient is then cleared so that a new
32-sample average can be taken. A RETURN is then made to the
EXECUTIVE program.
When the EXECUTIVE program subtracts the AVLEV value for each
patient from that patient's new data points (NDP) to derive
adjusted data points (ADP), in effect what is being done is to
filter out DC and low-frequency components in the ECG signal.
FIG. 11 -- LFP SUBROUTINE
Each time a new data point is received for a patient, that data
point is averaged with the three preceding data points for the same
patient; it is the average value -- FDP -- of four adjusted data
points (ADP) which is used by subsequent subroutines. A four-word
ADP BUFFER is provided for each patient together with a BUFFER
POINTER which identifies one of the four words in the BUFFER. At
the start of the LFP subroutine, the POINTER for the current
patient is retrieved. The POINTER identifies the location in the
respective BUFFER containing the oldest ADP value and this value is
obtained and then subtracted from FILSUM. Thereafter, the new ADP
value is added to FILSUM. FILSUM then represents the sum of the
last four ADP values for the current patient, there being, of
course, eight FILSUM variables -- one for each patient.
By dividing FILSUM for the current patient by 4, the average ADP is
obtained; this average adjusted data point is labeled FDP.
The POINTER is then used to insert the new ADP value in the BUFFER
at the location previously containing the oldest value. The POINTER
is then incremented and tested to see if it points past the end of
the BUFFER. If it does, the POINTER is reset to the start of the
BUFFER. The POINTER is then stored for use by the LFP subroutine
eight millisecond later and a RETURN is made to the EXECUTIVE
program.
The LFP program performs a low-pass filtering function. By use of
the subroutine, the effect of high-frequency noise components is
reduced. A sudden burst of noise might affect a single sample, but
because each FDP is the average of four samples the noise
contribution to the FDP value is only one-fourth of what it
otherwise would be. Also, it is likely that noise will have
opposite effects on different samples in each group of four; by
adding four samples together, it is found that much of the noise
cancels itself out.
FIG. 12 -- ARP1 SUBROUTINE
Each FDP sample, as described above, is generated upon receipt of a
patient sample. The FDP samples represent an ECG signal which has
had both low-frequency (AVLEV) and high-frequency (LFP subroutine)
components filtered from it. The FDP samples are those used to
represent the ECG signal in subsequent processing.
The ARP1 subroutine adds the magnitude of each FDP sample to the
AREA value for the current patient. Thus AREA is the sum of the
absolute magnitudes of successive FDP samples. The AREA value is a
measure of the integral of the ECG signal, that is, the area under
the ECG signal. As shown in FIG 12, in the event of an overflow --
the result of a very large-area waveform -- the AREA value for the
current patient is not increased by the value of the absolute
magnitude of the current sample; instead, the AREA value is left
unchanged. It is already so large by the time an overflow occurs
that its value, even if no longer increased, is sufficient to
control the generation of an "enlarged area" indication.
As will be described in connection with the ARP2 subroutine, the
AREA value for each patient is examined at every strobe time and
then cleared. Since a strobe time occurs 232 milliseconds after the
detection of an R wave, at a time when it is fairly certain that
the R wave has terminated, it is apparent that the AREA value for
each patient, when it is used, represents the area under one
complete ECG waveform.
FIGS. 13A and 13B -- ARP2 SUBROUTINE
The function of the ARP2 subroutine is to generate a signal for
each patient labeled ENLRGD which represents whether the area under
the last-detected R wave is greater than a running average of the
R-wave areas. The ARP2 subroutine is called by the EXECUTIVE
program at strobe time by which time the ARP1 subroutine has
completed the latest AREA measurement. If the area of an R wave is
excessive, ENLRGD is set equal to 1. But two of the other
subroutines to be described below require area information for the
previous R wave of the current patient. For this reason, the
PENLRGD indication for the current patient is set equal to the
present value of his ENLRGD indication. The latter indication was
derived at the end of the processing of the previous R wave and it
is now transferred to PENLRGD which, if a 1, represents a
previously enlarged R wave.
Immediately after PENLRGD is set equal to ENLRGD, a test is made to
see if the AREA value for the current patient is greater than the
AAV average for the current patient by at least 25%. The value AAV
represents the average area of the eight most recent waveforms of
the current patient. If an excessive area is detected, ENLRGD is
set equal to 1. (A single 8-bit word may be used to represent the
eight ENLRGD values for the eight patients being monitored, a
different bit in the single word being associated with each
patient.) If AREA is not excessive, then ENLRGD is set equal to
0.
The remainder of the subroutine relates to the updating of the AAV
value for the current patient, and the steps which are executed are
very similar to those shown on FIG. 8B for the RRP subroutine. An
8-word BUFFER is provided for storing the eight most recent AREA
values for each patient. Similarly, a BUFFER POINTER is provided
for each patient to identify the location in the respective BUFFER
which contains the oldest AREA value. The subroutne first gets the
BUFFER POINTER for the current patient and using the POINTER
retrieves the oldest AREA value from the BUFFER. An AREASUM value
is also associated with each patient and represents the sum of the
eight entries in the AREA BUFFER of the patient. The oldest AREA
value is subtracted from AREASUM, and the difference is stored as
PRTLSUM. Then the new AREA value is added to PRTLSUM and the sum is
stored as NEWSUM.
It will be noted that the steps thus far are the same as those in
FIG. 8B. It was explained above that in connection with the RRP
subroutine it is necessary to derive PRTLSUM because it must be
used rather than NEWSUM for the setting of INTSUM in the event
there is an overflow in NEWSUM. This could arise in the case where
an R wave is not received for a long time and the RRINT value which
is generated is excessively large. The reason for the overflow test
in the ARP2 subroutine is different. Since each AREA value which is
contained in the 8-word BUFFER is the sum of the absolute
magnitudes of all FDP samples in one heartbeat cycle, it is
possible that the sum of eight of these large values might result
in an overflow even under ordinary circumstances. It is for this
reason that NEWSUM is tested for an overflow before AREASUM is
set.
In the event of no overflow, AREASUM is set equal to NEWSUM, the
POINTER is used to insert the new AREA value in the BUFFER, the
POINTER is incremented, and the average AREA -- AAV -- is set equal
to AREASUM divided by 8. On the other hand, in the case of an
overflow, AREASUM is set equal to PRTLSUM. Since the new AREA value
was not added to the running sum of the AREA value, the POINTER is
used to insert a zero in the BUFFER and AAV is not changed (just as
RRAV is not changed in FIG. 8B of the RRP subroutine). The POINTER
is then incremented.
The usual test is then performed to see if the POINTER points past
the end of the BUFFER, and if it does it is reset to the start of
the BUFFER. The POINTER is then stored so that it will point to the
oldest AREA value location in the BUFFER of the current patient the
next time the ARP2 subroutine is called by the EXECUTIVE program
for the same patient. Also, the AREA value for the current patient
is reset to zero so that a new area measurement may be made for the
next waveform. A RETURN is then made to the EXECUTIVE program.
FIG. 14 -- TCP1 SUBROUTINE
The TCP1 subroutine is every similar to the DTP1 subroutine of FIG.
5. The latter subroutine functions to set DMAX for the current
patient equal to the largest value of the absolute magnitude of
DIFSUM which is computed during every 2-second interval (since the
DTP2 subroutine resets DMAX and this subroutine is called for each
patient only once every two seconds). The TCP1 subroutine performs
a similar function but it operates on FDP values rather than DIFSUM
values. A variable MAX is provided for each patient and MAX is
compared to the absolute magnitude of each FDP value. If the
absolute magnitude of the new FDP value is greater than MAX, then
MAX is set equal to it. Since the TCP2 subroutine of FIG. 15
operates upon MAX and then clears it, and the TCP2 subroutine is
executed for each patient only once following the detection an R
wave, it is apparent that each MAX value is equal to the absolute
magnitude of the largest FDP value detected for the current patient
during one heartbeat cycle.
FIG. 15 -- TCP2 SUBROUTINE
The TCP2 subroutine is very similar to the DTP2 subroutine of FIG.
6 in that threshold values are derived from eight values stores in
a BUFFER. Referring to FIG. 15, the first step in the program is to
retrieve the POINTER value for the MAX BUFFER for the current
patient, the POINTER pointing to the oldest MAX value stored in the
BUFFER. This oldest MAX value is then obtained and subtracted from
TSUM for the current patient, TSUM representing the sum of the
eight values in the BUFFER. The new MAX value is then added to
TSUM. The value TSUM thus represents the sum of the absolute
magnitudes of eight FDP samples, each sample being the largest
during a respective heartbeat cycle. The average of the largest FDP
samples could be obtained by dividing TSUM by 8. But in order to
derive threshold values, TSUM is divided by 16. Two threshold
values are derived so that it can be determined when an FDP sample
exceeds a positive threshold or a negative threshold. The threshold
value +THRESH is set equal to TSUM divided by 16, and the threshold
value - THRESH is set equal to the negative of this value.
The POINTER is then used to insert the new MAX value in the BUFFER,
and the POINTER is incremented. As in the case of all subroutines
using buffers of this type, the POINTER is examined to see if it
points past the end of the BUFFER, and if it does it is reset to
the start of the BUFFER. The POINTER is then stored, and the MAX
value for the current patient is cleared so that the absolute
magnitude of the largest FDP sample in the next waveform can be
derived. A RETURN is then made to the EXECUTIVE program.
It should be noted that because the DTP2 subroutine is called every
two seconds for each patient, the threshold DTHRESH (used in the
RWD subroutine to determine the presence of an R wave) is an
average value based on samples which were received during the
previous 16 seconds. However, the +THRESH and -THRESH threshold
values are averages based on the ECG signal during a shorter period
of eight heartbeat cycles because the TCP2 subroutine is executed
for each patient whenever an R wave is detected. The +THRESH and
-THRESH threshold values are used by the MCP subroutine as
thresholds for both FDP and DIFSUM samples.
FIGS. 16A and 16B -- MCP SUBROUTINE
The function of the MCP subroutine is to perform four different
tests, as shown by the legend at the top of FIG. 16A, on the FDP
and DIFSUM values for each patient when a new sample for the
patient is received. The MCP subroutine "remembers" which tests
have been passed and characterizes the waveform as being one of
eight different morphology types in accordance with the sequence in
which the various tests are passed. The tests which are performed
for each new sample depend on the previous tests which were passed.
For this reason, an MCP POINTER is provided for each patient which
is used, when a new sample for the patient is received, for
branching to some point in the MCP subroutine which controls the
execution of a test in accordance with previous tests which were
passed.
The first test which is performed is the A test: does FDP exceed
+THRESH for the current patient? (Each patient has his own
threshold values since the TCP2 subroutine develops separate
threshold values for each patient). The first instruction in the
first A test which is executed is stored in location ACHK as shown
in FIG. 16A. For this reason, when the first sample for a new
patient is received, the MCP POINTER for that patient must point to
location ACHK. It will be recalled that the RWD subroutine
determines the presence of an R wave and then counts 29 new samples
before setting a corresponding bit in the STWORD to indicate strobe
time for the current patient. Referring to the RWD subroutine of
FIG. 7, it will also be seen that the morphology type of the
previous waveform of the current patient, represented by the MTYPE
word for the patient, is used to set the MORPH word of the patient.
After the strobe time, the MCP subroutine must start to analyze a
new waveform for the patient. It is for this reason that the last
step in the RWD subroutine, before the RETURN to the EXECUTIVE
program, is to load the MCP POINTER for the current patient with
location ACHK so that the test which will be performed on the first
new sample for the patient will be the A test. For the same reason,
the MTYPE word for the patient is set to zero since the
characterization of a new R wave is to begin.
Referring to FIG. 16A, the first step is to branch to a location
identified by the MCP POINTER for the current patient. The MCP
POINTER can take on any one of eight different values as indicated.
Initially, the MCP POINTER identifies location ACHK for controlling
an A test. The first FDP value for the current patient which is
received is examined to see if it exceeds the +THRESH threshold for
the patient. If it does not, a B test is performed to see if FDP is
less than -THRESH. If it is not, a RETURN is made to the EXECUTIVE
program. If the A and B tests are both failed in succession, it is
an indication that the FDP sample should not control the
characterization of the waveform. Referring to FIG. 2 and the eight
letter designations (AD, C, etc.) on top of the type number labels,
it will be seen that the first thing which is checked to
characterize a waveform in any of the eight categories is to see if
both the A and D tests are passed together, or both the B and C
tests are passed together. But if both of the A and B tests are
failed, it is apparent that neither of the combined tests AD and BC
can be passed as a result of the receipt of the present sample.
On the other hand, suppose that the A test is passed. Referring to
FIG. 2, the passing of the A test without the passing of the D test
is of no consequence. For this reason, after the A test is passed,
the D test is performed. If the D test is not passed a RETURN is
made to the EXECUTIVE program. On the other hand, if the D test is
also passed, the waveform can be characterized as being of type 1
(see FIG. 2). For this reason, the MTYPE word for the current
patient is set equal to 00000001.
But the waveform is not necessarily of type 1 because if additional
characteristics are observed it should be characterized as one of
types 2, 3 or 4. It is seen that each of types 2, 3 and 4 requires
the passing of the C test if the type number is to be changed from
1 to one of the other three numbers. For this reason, after MTYPE
is set equal to 00000001, the C test at location CCHK1 is
performed. If the test is not passed, a RETURN is not made
immediately to the EXECUTIVE program. Were a RETURN made with no
other step being performed, the MCP POINTER for the current patient
would still identify location ACHK, and upon receipt of the next
sample for the current patient the A test would be performed once
again. But since the A and D tests have been passed, the next
characteristic which should be looked for is the passing of the C
test (DIFSUM less than -THRESH). For this reason, before a RETURN
is made, the MCP POINTER is loaded with CCHK1. The next time that a
sample is processed for the same patient, the first test which will
be performed is the C test at location CCHK1. If it is not passed,
the same test will be performed for the next sample, etc.
However, if the C test is passed, then it is apparent that the
waveform is not of type 1, and instead is of type 2 since the
combination AD, C has been determined. For this reason the 1 in the
MTYPE word is shifted to the left so that the new MTYPE word
(00000010) represents type 2.
But referring to FIG. 2, once a waveform is characterized as type 2
(AD, C), it is still possible that it may be of type 3 if the B
test is passed, while the C test is once again passed, because in
such a case the combination BC will have occurred after the
combination AD. For this reason, immediately after the waveform is
determied to be of type 2 with the passing of the C test, the test
at location CBCHK is performed. This is another C test and, of
course, is passed the first time it is performed since the same
test at location CCHK1 must be passed before the program reaches
the instruction stored at location CBCHK. After the C test is
passed, the B test is performed. If it is not passed, a RETURN is
made to the EXECUTIVE program. But before the return is made the
MCP POINTER is up-dated to identify location CBCHK. The next time
that the MCP subroutine is executed for the current patient, the C
test at location CBCHK will be performed. If the C test at location
CBCHK is not passed for the next sample, there is no need to
perform the B test and a RETURN is made to the EXECUTIVE program.
(Although the MCP POINTER is once again set to represent location
CBCHK, this has no effect on the subroutine since the MCP POINTER
already identifies location CBCHK). It should be noted that there
is no need to execute the second C test for the first sample which
results in the passing of the C test at location CCHK1. The second
C test at location CBCHK is provided only for subsequent samples.
For these subsequent samples, the C test at location CCHK1 should
not be performed since the waveform has already been characterized
as type 2. Instead, the two tests for the C and B characteristics,
which start at location CBCHK, are executed.
If for any sample the C and B tests are both passed, it is an
indication that the combination CB followed the combination AD. The
waveform is thus determined to be of type 3 and the 1 in the MTYPE
word is shifted to the left so that the new MTYPE word is 00000100
to represent type 3. But referring to FIG. 2 it will be seen that
if, following the detection of the B and C characteristics, the D
test is passed, then the waveform is of type 4 rather than of type
3. For this reason, after the MTYPE word is set to represent type
3, the D test at location DCHK2 is performed. If the D test is not
passed, the MCP POINTER is set to DCHK2 so that when subsequent
samples for the current patient are received, the D test will be
performed. As soon as the D test is passed the MTYPE word is
shifted one position to the left so that the new word -- 00001000
-- characterizes the waveform as being of type 4. Once the waveform
is so characterized, it cannot be characterized as being of another
type -- the analysis of the waveform characteristics has been
completed. Therefore, the MCP POINTER is set to RETURN. For all
subsequent samples, as soon as the MCP subroutine is entered, a
branch is made right back to the EXECUTIVE program which called the
subroutine in the first place. In effect, the MCP subroutine is
skipped for all subsequent samples after that one which results in
the categorizing of the waveform in type 4.
Returning to FIG. 16A, it is only when a sample passes both of the
A and D tests together that the MTYPE word is set equal to 00000001
and that the waveform must necessarily be categorized as one of
types 1, 2, 3 or 4. But suppose that the first sample which results
in the passing of two tests is a sample which results in the
passing of the B and C tests. In other words, the FDP value for the
sample is not greater than +THRESH so that the A test at location
ACHK is failed, but the FDP value for the sample is less than
-THRESH and the DIFSUM value for the sample is also less than
-THRESH. In such a case, the waveform is of type 5 and the MTYPE
word which is originally equal to zero is set to represent type 5.
The MTYPE word is so set by setting it equal to 20.sub.8 (binary
00010000).
But the passing of the B and C tests together is not enough to
fully characterize the waveform because the waveform can still be
one of types 6, 7 or 8. Referring to FIG. 2, it will be seen that
for the waveform to be one of these three types rather than type 5
it is necessary for the D test next to be passed. Accordingly,
immediately after the MTYPE word is set equal to 20.sub.8, the D
test at location DCHK1 is performed. If the test is failed, the MCP
POINTER is set equal to DCHK1 so that subsequent samples result in
the execution of the D test at location DCHK1. If the test is
passed, then the waveform is determined (thus far) to be of type 6
(BC, D); accordingly, the MTYPE word is shifted one position to the
left so that it represents the binary number 00100000. But the
waveform might be of type 7 if after the passing of the D test, the
A and D tests are passed together. For this reason, the D test at
location ADCHK is performed immediately (and it will necessarily be
passed the first time it is performed since the D test at location
DCHK1 was passed) and then the A test is performed. If the A test
is not passed the MCP POINTER is set to ADCHK so that for the next
sample the D test at location ADCHK is executed. The reason for
providing a second D test at location ADCHK is the same as the
reason for providing a second C test at location CBCHK -- the D
test at location DCHK1 cannot be performed for subsequent samples
since the waveform has already been characterized as being of type
6; it is necessary to provide the same D test at another
location.
If for some subsequent sample the D and A tests starting at
location ADCHK are passed, the waveform is of type 7 and the MTYPE
word is shifted one position to the left so that it represents type
7.
But that, too, is not enough because if the C test is then passed,
as seen in FIG. 2 the waveform is of type 8. For this reason,
immediately after the MTYPE word is shifted so that the 1 in it
appears in the next to the most significant bit, the C test at
location CCHK2 is performed. If the test is not passed, the MCP
POINTER Is set to CCHK2 so that all subsequent samples are tested
by executing the C test. As soon as the C test is passed, if it is
passed, the MTYPE word is shifted one more position to the left so
that it represents type 8. Since once a waveform has been
characterized as being of type 8 its characterization cannot
change, the MCP POINTER is set to RETURN, and then a RETURN is made
to the EXECUTIVE program. The next time that a sample for the
current patient is received, the MCP subroutine is effectively
skipped since the final type number for the waveform in progress
has been determined.
FIG. 17 -- LRN SUBROUTINE
The LRN (learning) subroutine is only rarely executed. A LRN
POINTER is provided for each patient and can assume any one of four
values. Two of these values are used by the EXECUTIVE program to
control when a call is made for the LRN subroutine. The other two
LRN POINTER values represent locations of instructions in the LRN
subroutine. In the usual case, the LRN POINTER for each patient is
zero and, when tested by the EXECUTIVE program, results in the
skipping of the LRN subroutine.
In order to control the learning routine, the operator keys in the
number of the patient whose waveforms are to be learned, and the
EXECUTIVE program then sets the LRN POINTER of this patient to -1.
As will be described in connection with FIG. 23, after the LRN
POINTER of any patient is set equal to -1, the calling of the LRN
subroutine is delayed for 16 seconds. This allows transients to
settle in the event the patient was connected to the monitoring
system just prior to the operator command. During the 16-second
settling time, the DTHRESH threshold value for the patient settles
down to represent a valid threshold level to be used by the RWD
subroutine for the detection of R waves. After 16 seconds have
elapsed, the LRN POINTER of the patient is set equal to COUNTDOWN
and the patient's LCOUNTER word is set to zero, as will be
described below.
When the LRN subroutine is then called, as will be described in
connection with the EXECUTIVE program of FIG. 23, the first step is
a branch to either location COUNTDOWN or location LMORPH. The first
eight branches are to location COUNTDOWN. The steps beginning at
this location further delay the actual learning until another eight
R waves are detected. This is to ensure that the + THRESH and
-THRESH threshold values settle down to valid threshold levels to
be used by the MCP subroutine for the learning process.
The LCOUNTER word for the current patient is first incremented and
then tested to see if it is equal to 8. If it is not, a RETURN is
made to the EXECUTIVE program. But after 8 R waves have been
detected, as indicated in FIG. 17, the LCOUNTER word associated
with the patient is reset to zero, the LRN POINTER of the patient
is set equal to LMORPH, and the LTYPE word for the patient is set
equal to zero. The LTYPE word of each patient has eight bits, each
of which is set equal to 1 during the learning routine if a
respective one of the eight possible waveform types is detected for
the patient. Since at the start of the subroutine no waveforms have
been analyzed, all eight bits in the LTYPE word for the patient are
set equal to zero. A RETURN is then made to the EXECUTIVE
program.
At the next strobe time for the same patient, the EXECUTIVE program
again calls the LRN subroutine. The LRN POINTER of the patient is
again examined in the first step, but since it is now equal to
LMORPH a branch is made to the instruction in this location.
A test is performed to see if PRE for the patient is 1. If it is,
it is an indication that the beat just detected was premature. The
morphology of such a beat is not assumed to be "normal" and
consequently the beat is to be ignored. A RETURN is made to the
EXECUTIVE program.
But for any beat which is not premature, the LRN subroutine causes
the MORPH word for the patient to be examined. It will be recalled
that the MORPH word for the patient represents the type number
which characterizes the beat. The respective bit in the LTYPE word
for the patient is set equal to 1 to indicate that at least one
beat having the respective morphology type number was "learned" for
the patient. The LCOUNTER word for the patient is then incremented
and it is then examined to see if it is equal to 8. If it is not,
RETURN is made to the EXECUTIVE program. After eight R waves have
been detected and one or more bits in the LTYPE word for the
patient have been set accordingly, LCOUNTER is equal to 8. The
learning function has been finished and at this time the LRN
POINTER for the patient is set equal to 0. As described above, when
the LRN POINTER for any patient is equal to 0, the LRN subroutine
is not called when the EXECUTIVE program performs housekeeping
functions for that patient. After the LRN POINTER for the patient
is set equal to 0, the M1 indication for the patient is set equal
to 0. (This indication consists of a single bit which can be one
bit of a single 8-bit word shared by all eight patients.) The
setting of the M1 bit to 0 is required by the MFP subroutine shown
in FIG. 22. Basically, the setting of the M1 bit to 0 allows the
MFP subroutine to be initialized as will be described below.
Following the setting of the LRN POINTER and the M1 bit, a RETURN
is made to the EXECUTIVE program.
FIG. 18 -- MRP SUBROUTINE
Two indications (bits) are associated with each patient for
indicating whether the morphology type numbers of the present and
the previous R waves detected for the patient were of those
represented in the LTYPE word of the patient, that is, whether
these types of R waves were "learned" or "unlearned." At the start
of the MRP subroutine, the PUNLRND indication, which represents
whether the previous R wave was learned or unlearned, is set equal
to UNLRND. The UNLRND indication represents whether the last
analyzed R wave was learned or unlearned. Since the UNLRND
indication was set during the last execution of the MRP subroutine
for the patient, that is, in response to the detection of the last
R wave, the status of the UNLRND indication is transferred to the
PUNLRND indication.
It is then necessary to appropriately set the UNLRND indication to
represent whether or not the morphology type of the R wave just
analyzed was learned during the learning interval. Referring to the
MCP subroutine, it will be recalled that the MTYPE word of the
current patient has a 1 in the bit position corresponding to the
type number which is to be characterized. At the strobe time, the
RWD subroutine (FIG. 7) set the MORPH word of the patient to equal
the MTYPE word of the patient. Accordingly, the MORPH word contains
a 1 in a position which represents the morphology type of the R
wave. The basic test which is executed by the MRP subroutine is to
see if the LTYPE word of the patient -- which has a 1 in every bit
position corresponding to a learned morphology type -- has a 1 in
the same bit position in which MORPH has a 1. If it does, it is an
indication that the present morphology type is one of those which
was previously learned and the UNLRND indication for the patient is
set equal to 0; the present morphology type of the R wave was not
unlearned. On the other hand, if the LTYPE word of the patient does
not have a 1 in the same bit position in which MORPH has a 1,
UNLRND is set equal to 1. A RETURN is then made to the EXECUTIVE
program.
FIG. 19 -- MPV SUBROUTINE
The function of the MPV subroutine is to detect the occurrence of
two successive premature beats, each of which was either enlarged
or was characterized by a morphology type which was not learned
during the learning routine. At the start of the MPV subroutine,
the MULTIPLE indication for the patient (which may be a single bit
in an 8-bit word which is shared by all patients) is set equal to
0. A test is then performed on the SECPRE indication of the
patient. If SECPRE is 0, it is an indication that two successive
beats (as determined by the RRP subroutine of FIGS. 8A and 8B) were
not premature. A RETURN is immediately made to the EXECUTIVE
program.
But if SECPRE, is 1, it is an indication that the R wave which is
now to be characterized, as well as the previous R wave, were both
premature. It is then necessary to see if each of these R waves was
either enlarged or not learned during the learning interval.
First, the previous R wave is examined to see if it was enlarged.
If PENLRGD is 0, a test is made to see if the previous R wave was
not learned. If PUNLRND for the current patient is 0 then, while
both of the last two R waves were premature, the first R wave was
not atypical and MULTIPLE for the patient is not changed. On the
other hand, if either PENLRGD is 1, or PUNLRND is 1, then the first
R wave of the two was atypical, and the subroutine then proceeds to
see if the last R wave was atypical. It is the ENLRGD and UNLRND
indications for the patient which are next examined. If either of
them is equal to 1, it is an indication that the second R wave was
atypical -- along with the first. The MULTIPLE indication for the
patient is set equal to 1 and a RETURN is then made to the
EXECUTIVE program. The setting of MULTIPLE for the patient to a 1
is an indication of the occurrence of two successive atypical
premature beats. Upon the occurrence of the next strobe time for
the same patient, the MPV subroutine will be executed again and in
the first step MULTIPLE will be set equal to 0; the MULTIPLE
indication is initialized at the start of each execution of the
subroutine.
FIG. 20 -- VRP SUBROUTINE
The function of this subroutine, which is called by the EXECUTIVE
program at each strobe time, is to determine if the next-to-last
waveform of the current patient was a VPB. It will be recalled that
for a waveform to be considered a VPB, it must be premature, it
must be followed by a compensatory pause (the next beat must be
late), and it must have an atypical morphology (it must have been
one of the types not learned during the learning interval for the
patient, or it must have had an enlarged area). It is only after
the present beat has been analyzed that it is possible to determine
whether the previous beat was a VPB. If the present beat is late,
and the previous beat was premature, then the RRP subroutine (FIGS.
8A and 8B) set the CP indication of the patient to 1. At the start
of the VRP subroutine, CP is examined and if it is 0, it is an
indication that the next-to-last beat was not a VPB. Accordingly,
VPB is set equal to 0 and a RETURN is made to the EXECUTIVE
program. On the other hand, if CP is 1, it must be determined
whether the next-to-last R wave was atypical. First, a test is
performed to see if it was enlarged. If it was, PENLGD is 1 and a
branch is made to that step in which VPB is set equal to 1.
Thereafter, a RETURN is made to the EXECUTIVE program.
But even if the program did not determine that the next-to-last R
wave was enlarged, it really might have been enlarged but it might
have extended past the strobe time following the detection of the R
wave. In such a case, the area which was determined prior to the
occurrence of strobe time may not have been 25 percent greater than
the average, but the enlarged area after strobe time will cause the
next R wave to have an enlarged area. Accordingly, if ENLRGD, which
represents an enlargement of the area of the present R wave, is 1,
it is assumed that this condition resulted from the next-to-last R
wave having been enlarged. In such a case, VPB is set equal to
1.
Finally, if the last R wave and the next-to-last R wave are not
enlarged, but the next-to-last R wave was of a type which was not
learned (PUNLRND is 1), VPB is similarly set equal to 1. It is only
when the next-to-last R wave was not enlarged and was one of those
learned during the learning interval that VPB is set equal to 0
despite the fact that the next-to-last R wave was premature and was
followed by a compensatory pause.
FIG. 21 -- FVP SUBROUTINE
The FVP subroutine is used to determine if too many VPB's occur in
a 1-minute interval. If five VPB's are detected in a 1-minute
interval, the FREQUENT indication for the patient is set equal to
1.
At the start of the subroutine, the frequent indication (bit) for
the patient is set equal to 0. The VPB indication of the patient is
then examined to see if it is 1. If it is not, the previous beat
was not a VPB and a RETURN is made directly to the EXECUTIVE
program. But if the previous beat was a VPB, then the VPB COUNTER
of the current patient is incremented. Each patient is provided
with a separate VPB COUNTER word which is incremented whenever a
VPB in his ECG signal is detected. A test is then performed to see
if the VPB COUNTER word of the current patient is greater than or
equal to 5. If it is not, it is an indication that not enough VPB's
have occurred within a 1-minute interval to cause the setting of
the FREQUENT indication to 1. But if the VPB COUNTER word is
greater than or equal to 5, FREQUENT is set equal to a 1, following
which a RETURN is made to the EXECUTIVE program.
The VPB COUNTER words of all patients are reset to zero by the
EXECUTIVE program at 1-minute intervals. Accordingly, the FREQUENT
indication for each patient can be set to 1 only if five or more
VPB's are detected within a 1-minute interval. It should be noted
that after the fifth VPB is determined to have occurred within a
1-minute interval, the next R wave is analyzed and the FVP
subroutine is executed once again. At the start of the subroutine
the FREQUENT indication is set equal to 0. Since the VPB COUNTER
word of the patient has not been reset to zero (unless the
EXECUTIVE program has determined that one minute has elapsed since
the last resetting of all VPB COUNTER words), if the previous R
wave of the current patient was a VPB, the VPB COUNTER word of the
current patient will be incremented to six and the FREQUENT
indication will be set equal to 1. In fact, this will occur each
time a VPB is detected after the fifth one is detected, within the
same 1-minute interval. A succession of 1's for the FREQUENT
indication (if they are printed out) thus indicates the exact
number of VPB's which occurred during a 1-minute interval; the
number of VBB's is equal to the number of successive 1's plus
4.
FIG. 22 -- MFP SUBROUTINE
It is often desirable to determine whether the VPB's of any patient
have different morphologies. The MFP subroutine operates on a
VMORPH word for each patient. Each bit of the VMORPH word for each
patient corresponds to one of the eight morphology types. Each time
a VPB is detected, its morphology type number is used to set a
respective bit in the VMORPH word of the patient. Thereafter, the
morphology type number of each succeeding VPB is compared to the
type numbers represented in the VMORPH word of the patient; if the
morphology type number is not represented, it is an indication that
a new morphology type number characterizes the most recent VPB. At
such a time, the MULTIFORM indication of the current patient is
up-dated, to reflect the fact that if another VPB is detected
having the same (most recent) morphology type number, the MULTIFORM
indication of the patient should not be set equal to 1 because an
earlier VPB was characterized in the same way.
At the start of the MFP subroutine, the MULTIFORM indication of the
patient is set equal to 0. The VPB indication of the patient is
then examined and if it is a 0 a RETURN is made to the EXECUTIVE
program because the R wave was not a VPB in the first place. Before
the RETURN is made, however, LAST is set equal to MORPH for reasons
to be described below.
But if the R wave was a VPB, the subroutine then examines the M1
bit of the patient to see if it is 1. It will be recalled that at
the end of the LRN subroutine (FIG. 17) the M1 bit of the current
patient was set equal to 0. The MFP subroutine includes some
"learning" aspects since the VMORPH word for the patient is
up-dated to represent the morphology type numbers which
characterize all detected VPB's. The learning process for the MFP
subroutine should begin only after the patient has been connected
to the overall monitoring system. Following the setting of the M1
bit to 0 at the end of the LRN subroutine, the first time that the
VPB indication of the patient is 1 when the MFP subroutine is
executed, the test for whether the M1 bit is a 1 will be failed.
Consequently, a branch will be made to the step which sets the
VMORPH word for the current patient to zero. The M1 bit is then
changed to 1 so that during succeeding executions of the MFP
subroutine a branch will not be made to that step which resets the
VMORPH word.
After the M1 bit for the current patient is set equal to 1, the
VMORPH word which has just been reset has one of its bits changed
to 1. The bit which is set is the bit which is a 1 in the LAST word
associated with the current patient. It must be recalled that when
VPB is 1 it is an indication that it is not the present R wave
being processed which is a VPB, but rather the previous R wave. The
LAST word of each patient is always the same as the MORPH word
characterizing the previous R wave. Accoringly, it is the LAST word
which is used to set a bit in the MORPH word because it is the LAST
word which represents the morphology type number of the previous
beat whereas the MORPH word represents the morphology type number
of the present beat. After the VMORPH word is up-dated, LAST is set
equal to MORPH and a RETURN is made to the EXECUTIVE program.
After the first bit in VMORPH has been set to a 1, the next time
that a VPB occurs M1 is 1 and consequently a test is performed to
see if VMORPH for the current patient has a 1 in the bit position
in which LAST has a 1. It must be recalled that LAST has a 1 in a
position which corresponds to the morphology type number of the
previous R wave, and it is the previous R wave which is the VPB
under consideration. If VMORPH has a 1 in the same position in
which LAST has a 1, it is an indication that the present VPB has a
morphology type number which is the same as one had by a previous
VPB. Accordingly, MULTIFORM is not set equal to 1. On the other
hand, if VMORPH does not have a 1 in the same bit position in which
LAST has a 1, then MULTIFORM is set equal to 1 to indicate that a
new type of VPB has been detected.
In either case, in the next step a 1 is set in the bit position of
VMORPH which corresponds to the 1 in LAST. If MULTIFORM has not
been set equal to 1, it is because a similar VPB was detected
earlier and a 1 is already in the bit position of VMORPH which
corresponds to the 1 in LAST. However, setting the same bit to a 1
once again results in no change. It is when MULTIFORM is set equal
to 1 that the setting of a bit in VMORPH (corresponding to the 1 in
LAST) results in an up-dating of VMORPH. Thereafter, LAST is set
equal to MORPH and a RETURN is made to the EXECUTIVE program.
It should be noted that even if the beat prior to the beat being
processed was not a VPB, that is, the test to see whether VPB is 1
is failed, LAST is still set equal to MORPH. This is because it is
not until the next beat will have been analyzed that it can be
determined that the present beat is a VPB, and a record must be
maintained of the morphology type number of the present beat so
that it will be available at the end of the processing of the next
beat. It would appear, however, that in the event the first
waveform which is analyzed by the MFP subroutine (following a
learning interval) has its VPB indication set equal to 1, then a
branch would be taken to the test which examines the value of the
M1 bit and LAST will not have been set in accordance with the value
of MORPH for the previous waveform. However, this situation is
impossible because the VPB indication for the first waveform which
is operated upon following the learning interval cannot possibly be
a 1. It must be recalled that the presence of a VPB can be
determined only after the next R wave is operated upon because it
is only after the next R wave is detected that the presence of a
compensatory pause is verified. Thus, for the VPB to be 1 the PRE
indication for the previous beat must have been 1. But the test at
location LMORPH in the LRN subroutine insures that the last beat
processed by the LRN subroutine must not have been premature.
Accordingly, the VPB indication for the first waveform which is
processed following the learning interval must have a VPB
indication of 0 and LAST is set in accordance with the current
MORPH value. If the second waveform has a VPB indication of 1, it
means that the previous beat was a VPB and LAST represents its
morphology type number as required.
FIG. 23 -- EXECUTIVE WAIT LOOP PROGRAM
There are two sources of interrupt signals -- from the monitoring
equipment (which provides either a patient number of a data point)
or from the keyboard. In the absence of an interrupt signal, the
computer continues to function in accordance with the program
depicted in FIG. 23. It is only when the computer is executing
instructions in the EXECUTIVE WAIT LOOP program of FIG. 23 that
either type of interrupt can result in service. The program of FIG.
23 performs the necessary housekeeping functions and further calls
for the execution of various subroutines.
At the start of the program of FIG. 23, the STWORD is examined.
This 8-bit word has a 1 in any bit position corresponding to a
respective one of the eight patients whose strobe time has
occurred, that is, for whom an R wave was detected 232 milliseconds
earlier. In the event that strobe processing is required for two
patients, it is performed for only one during any single loop of
the EXECUTIVE program. The patient for whom strobe processing is
performed is arbitrarily selected to be that one associated with
the bit of least significance which is a 1. For example, if STWORD
is 00100010, then strobe processing is performed for the second
patient. The lowest 1 in STWORD is converted to a 0 so that the
next time STWROD is examined strobe processing for the same patient
will not take place again. Also, the lowest 1 in STWORD is
converted to the respective patient number and is stored in
register RO. It is the storage of the patient number in this
register that controls all of the various subroutines to operate
upon the variables associated with a particular patient. As a
single example, the patient number contained in register RO enables
the various subroutines which operate upon circular buffers to
select the correct one of the eight buffers by the subroutine.
After the patient number is stored in register RO, the ARP2
subroutine is executed for the respective patient and then the LRN
POINTER for the respective patient is examined to see if it is less
than zero. The LRN POINTER of a patient is set to -1 when the
operator requests a learning routine as will be described below.
The EXECUTIVE program delays the learning process for 16 seconds by
branching to the start of the WAIT LOOP each time the LRN POINTER
is tested to see if it is negative. After 16 seconds have elapsed
following the operator request, the LRN POINTER is set equal to
COUNTDOWN (a positive number) and it is only at this time that the
LRN subroutine can be called.
A test is performed to see if the LRN POINTER is zero. Since
COUNTDOWN is not zero, the LRN subroutine is called for the purpose
of either noting the occurrence of another one of the eight R waves
prior to the start of the learning interval, or the occurrence of
another one of the eight R waves which are used for learning
purposes.
On the other hand, if the LRN POINTER for the current patient is
equal to zero, it is an indication that the LRN subroutine should
not be called in the first place. (At the end of any complete
learning cycle, the LRN subroutine sets the LRN POINTER to zero.)
Instead, a complete R wave has been detected (with its morphology
characterized since it is now strobe time for the patient) and it
is not necessary to execute those subroutines which must be
executed at strobe time, except ARP2 which has already been
executed. As shown in FIG. 23, the subroutines now executed are
MRP, VRP, MPV and FVP-- the same subroutines which are shown in
FIG. 3 as being executed at the strobe time for any patient. (The
reason that the ARP2 subroutine is executed before the value of the
current patients LRN POINTER is examined is that even if the MRP,
VRP, etc. subroutines are not executed, the ARP2 subroutine is
required for up-dating the patient's AAV value so that by the end
of the learning process normal monitoring (which requires an AAV
value) can begin immediately.)
Following the execution of the five subroutines, any one of the
nine indications -- LATE, PRE, EPRE, CP, SECPRE, MULTIPLE,
MULTIFORM, VPB, FREQUENCT -- which are of interest are examined to
see if they are 1's. If none of them is 1, STWORD is examined once
again. Otherwise, a condition of interest has been detected and the
"on" signal is transmitted to the recorder associated with the
patient whose number is in register RO. Thereafter, the 3SECTMR
3-second counter word for the current patient is cleared. As will
be described below, this word is continuously incremented until it
represents the lapse of 3 seconds, at which time an "off" signal is
transmitted to the recorder. Also, the RECORD BIT for the current
patient is set equal to 1 to indicate that recording for the
patient is in progress. This bit, as will be described below, is
required for other purposes. Another examination of STWORD is then
made.
In the event that STWORD had a second 1 in it, indicating that
strobe time had occurred for another patient prior to the first
examination of STWORD, then STWORD is still not zero. The lowest 1
in the word is cleared and the respective patient number is stored
in register RO. The same operations described above now takes place
for the new patient.
When no strobe processing is required, STWORD will be zero and when
the word is tested a branch will be made to the step in which RWORD
is tested. It will be recalled that any bit position in this word
is set equal to 1 upon the detection of an R wave for the
respective patient. If there is at least one 1 in RWORD, then R
wave processing begins. The lowest 1 in RWORD is changed to 0 so
that R wave processing for the patient will occur only once for
each detected R wave. At the same time, the lowest 1 is converted
to a patient number and the patient number is stored in register
RO. The two subroutines which must be executed following the
detection of an R wave are RRP and TCP2 (see FIG. 3) and these
subroutines are executed. The process then begins all over again
with the examination of STWORD. The next time that RWORD is
examined, the next lowest 1, if there is one, is converted to 0,
and the same two subroutines are executed for the respective
patient.
It is only when no patients require strobe processing or R wave
processing, that is, when both STWORD and RWORD are zero, that the
EXECUTIVE program tests to see if FLG2SEC is zero. As will be
described below, this 8-bit word is set equal to 11111111 at the
end of each 2-second interval. The setting of the word in this
manner is an indication that the DTP2 subroutine should be executed
for each patient so that the DTHRESH threshold value for each
patient will be up-dated, and that the LRN POINTER for each patient
should be examined. If FLG2SEC is not zero, the lowest 1 in the
word is converted to the respective patient number which is stored
in register RO, and the 1 is changed to 0. The DTP2 subroutine is
then executed for the patient whose number appears in register RO.
The LRN POINTER for the same patient is then examined to see if it
is negative. If it is not (i.e., it is zero, COUNTDOWN or LMORPH),
STWORD is once again examined. On the other hand, if the LRN
POINTER for the patient is negative, it must be -1 as set following
a learning request by the operator, and the 16-second count is in
progress to determine when the LRN subroutine should first be
called. The LCOUNTER word of the patient is incremented and then
tested to see if it is equal to 8. If it is not, no further action
is taken. If the counter word is equal to 8, it is cleared and the
LRN POINTER for the current patient is set to COUNTDOWN. The LRN
subroutine will now be called when the respective bit for the
patient in STWORD is 1. The test to see if FLG2SEC is equal to zero
necessarily fails eight times in succession because, as will be
described below, when the FLG2SEC word is set, it is set equal to
11111111. After the DTP2 subroutine has been called eight times
(together with up to the same number of calls for the LRN
subroutine, if any are required), FLG2SEC is equal to zero and the
DTP2 subroutine is not called again until another two seconds have
elapsed.
In a similar manner, the FLG2SEC word is set equal to 11111111, as
will be described below, at 256-millisecond intervals. Referring to
FIG. 3, it will be recalled that the HFP2 subroutine must be
executed for each patient once every 256 milliseconds. If STWORD,
RWORD and FLG2SEC are all zero, then a test is made to see if
FLG2SEC is zero. If it is, STWORD is examined. On the other hand,
if FLG2SEC is not zero, the lowest 1 in FLG2SEC is converted to a
patient number which is stored in register RO, and the lowest 1 is
changed to a 0. Thereafter, the HFP2 subroutine is executed for the
patient whose number appears in the register. It is apparent that
the HFP2 subroutine is executed eight times in succession (unless
an interrupt occurs or one of STWORD, RWORD, or FLG2SEC is not zero
between successive examinations of FLG256) following which the HFP2
subroutine is not executed again for 256 milliseconds.
FIG. 24 -- EXECUTIVE WAIT LOOP OPERATOR INTERRUPT PROGRAM
In order to control a learning routine, the operator is required to
type the letter L, followed by the number of the patient for whom
the learning routine is necessary. An interrupt can be serviced
only when the EXECUTIVE WAIT LOOP program is being executed. (In
the event of both external and operator interrupts occurring at the
same time, the external interrupt has priority.) When an interrupt
signal is transmitted to the computer from the keyboard and it is
serviced, the character on the data line from the keyboard is read
into register RO. But before this is done all register information
is saved for the return from the interrupt-- a technique well known
to those skilled in the art. The character should be an L or one of
the numbers 170-177. If the character is an L, LFLG is set equal to
1. An "echo" signal is transmitted to the printer which simply
controls it to print the letter L. This informs the operator that
the character which he has typed has been recognized. The operator
then keys in one of the numbers 170-177.
On the other hand, suppose that the character keyed in is not an L.
This means either that the operator has made a mistake, or that an
L was previously typed in and that the new character in register RO
is one of the numbers 170-177. Following the testing of the
character in the register, after it has been determined not to be
an L, a test is made to see if LFLG is a 1. If it is not 1, it is
an indication that the previous character was not an L, and that
the present character should be ignored. Accordingly, no echo
signal is returned to the printer and a RETURN is made from the
interrupt. Before the RETURN is made, the previously "saved"
register information is restored, and the interrupt facility of the
computer is re-enabled so that another valid interrupt is allowed
to take place. The lack of the return of an echo signal to the
operator informs him that a mistake has been made.
On the other hand, if after it is determined that the character in
the register is not an L, it is determined that LFLG is a 1, that
is an indication that the preceding character was an L.
Accordingly, a test is now made to see if the character in the
register is one of the valid patient number codes 170-177. If it is
not, the registers are restored, the interrupt facility is
re-enabled, and a RETURN is made to the EXECUTIVE WAIT LOOP
program; the lack of an echo signal to the operator informs him
that a mistake has been made.
If a valid patient code number has been keyed in, then the OPERATOR
INTERRUPT program sets the LRN POINTER of the patient whose number
is now in the register to -1. It will be recalled that in order to
initiate a learning routine it is necessary for the LRN POINTER of
a patient to be set equal to -1. The actual calling of the LRN
subroutine will occur at the end of the 16-second timing interval
which is now initiated (see FIG. 23). The LCOUNTER word for the
current patient is cleared so that a new count up to 8 can begin.
In the next step, LFLG is reset to 0 in preparation for the keying
in of another learning command. An echo signal is then sent to the
operator; the number keyed in by the operator is printed to inform
him that the computer has acknowledged his command. The interrupt
facility is then reenabled and a RETURN is made to the EXECUTIVE
WAIT LOOP program.
FIGS. 25A-25C -- EXECUTIVE WAIT LOOP EXTERNAL INTERRUPT PROGRAM
Following an interrupt signal on the external data line, the data
on the external data line is placed in register RO after the
present register information is saved. The DONE pulse is then
transmitted to reset flip-flop 60 (FIG. 1) so a data value will be
available when the processor looks for it. The EXTERNAL INTERRUPT
program is designed to operate first upon a patient number and then
upon a data point. Accordingly, register RO is examined to see if a
valid one of patient number codes 170-177 has been received. If it
has not, the registers are restored, the interrupt facility is
re-enabled, and a RETURN is made to the EXECUTIVE WAIT LOOP
program.
On the other hand, if a valid patient number code has been
received, it is an indication that another 1-millisecond interval
has elapsed since the receipt of the last patient number code. At
this time, RRTMR is incremented, RRTMR representing the real time
of day in milliseconds. The next step is to increment 1MINTMR. This
is the word which is used to identify 1-minute intervals as
required by the FVP subroutine. A test is then made to see if
1MINTMR is equal to 60,000 (representing 1 minute). If it does
equal 60,000, as described in connection with the FVP subroutine,
the VPB COUNTER of each patient is reset to zero. The counter word
1MINTMR is then reset to zero so that another 1-minute interval can
be counted. If whenever a new patient number code is received and
following the incrementing of 1MINTMR it does not equal 60,000,
then a branch is taken directly to the step in which the 2-second
timer word 2SECTMR is incremented.
The 2-second timer word is then tested to see if it is equal to
2,000. Since 2SECTMR is incremented at 1-millisecond intervals, the
word will be equal to 2,000 after 2 seconds have elapsed. If two
seconds have not yet elapsed, a branch is made directly to the step
in which 256MSTMR is incremented. However, if 2SECTMR is equal to
2,000, it is an indication that the DTP2 subroutine must be
executed for each patient. Referring to FIG. 23, it will be
recalled that this is controlled by setting FLG2SEC to 11111111.
Accordingly, this is done by the EXTERNAL INTERRUPT program. Also,
2SECTMR is reset to zero so that another 2-second interval may be
measured.
Timer (counter) word 256MSTMR is then incremented. It will be
recalled that the HFP2 subroutine must be executed for each patient
once every 256 milliseconds. This is accomplished by first setting
FLG256 equal to 11111111 (see FIG. 23) after each 256-millisecond
interval has elapsed. Counter word 256MSTMR is equal to 256 after
256 milliseconds have elapsed. A test is performed to see if the
counter word equals 256, and if it does FLG256 is set accordingly
and the counter word is reset to zero so that a new 256-millisecond
timing interval can begin.
In the event the RECORD BIT for any patient has been set to 1 (see
FIG. 23), it is an indication that an "on" signal has been sent
previously to the recorder of the current patient whose number
appears in register RO. Each patient is provided with a 3SECTMR
counter word for determining when the recording has progressed for
3 seconds. It will be recalled that the 3SECTMR counter word for a
patient is reset to zero (see FIG. 23) when the "on" signal is
first sent to the respective recorder. The EXTERNAL INTERRUPT
program first tests the RECORD BIT for the current patient to see
if it is equal to 1. If it is not, it is an indication that the
respective recorder is not in operation and a branch is made
directly to the next step in which another character is read, as
will be described below. On the other hand, if the RECORD BIT for
the current patient is 1, the respective 3SECTMR counter word for
the patient is incremented to indicate that another millisecond has
elapsed. A test is then made to see if 3SECTMR for the current
patient is equal to 3,000 to indicate that recording has been in
progress for 3 seconds. If the recording should not yet terminate,
a branch is made to that step in which the next character is read.
On the other hand, if there have already been 3 seconds of
recording, then the RECORD BIT for the current patient is reset to
0 so that the steps under consideration will be skipped during
subsequent executions of the EXTERNAL INTERRUPT program when the
same patient's number code is placed in register RO. At this time
it is also necessary to transmit an "off" signal to the recorder
for the current patient and this is controlled prior to the reading
of the next character.
The computer now reads the data point for the patient whose patient
number code is in register RO. The data value appears on data line
46 (FIG. 1), the data value having been caused to appear by the
generation of the DONE pulse. The data point is read into register
R1.
FOllowing the reading of a data point into register R1, the
computer sets NDP (new data point) for the current patient (whose
patient number code is in register RO) to the value represented in
register R1. Thereafter, the AVLEV value for the current patient is
subtracted from NDP to derive the ADP value to be used by the LFP
subroutine.
Thereafter, the eight subroutines which must be executed every time
a new data point is received are executed, namely, the HFP1, DFP,
DTP1, LFP, ARP1, TCP1, RWD and MCP subroutines.
After all of the subroutines have been executed as required for the
new data point, the registers are restored, the interrupt facility
is re-enabled and a RETURN is made to the EXECUTIVE WAIT LOOP
program.
Although the invention has been described with reference to a
particular embodiment, it is to be understood that this embodiment
is merely illustrative of the application of the principles of the
invention. For example, it should be noted that the MCP subroutine
determines the morphology type number of each R wave of a patient
by processing all data points which are received between successive
strobe times. Although data points derived from P and T waves, and
from noise, should have little effect on the system due to their
small magnitudes, if the computer has a large memory capacity it is
preferable to record all of the data points for each patient until
the R wave is detected. In other words, the only subroutines which
would be executed following the characterization of the previous R
wave are those necessary to detect the next R wave. Immediately
upon the detection of the R wave, the samples for the patient which
occurred during the previous 100 milliseconds or so, together with
the samples which occur during the next 232 milliseconds (until
strobe time) could be the only ones used by the subroutines, such
as MCP, which characterize the waveform. In this way, each overall
ECG cycle of a patient could be bracketed in such a manner that
samples of only the R wave could affect its characterization. Of
course, additional memory capacity would be required in order to
store all of the data points as they arrive, until the system is
able to determine those which must be processed. As another
variation, it should be noted that in the EXECUTIVE program of FIG.
23 the RRP and TCP2 subroutines could be executed together with the
MRP, VRP, etc. subroutines under control of STWORD. In such a case
there would be no need to even form or test RWORD. Thus it is to be
understood that numerous modifications may be made in the
illustrative embodiment of the invention and other arrangements may
be devised without departing from the spirit and scope of the
invention.
* * * * *