Patent Publication Number: US-5840049-A

Title: Medical pumping apparatus

Description:
FIELD OF THE INVENTION 
     The present invention relates generally to medical pumping apparatus, more particularly to such an apparatus having an inflatable bag for applying compressive pressures to separate portions of a patient&#39;s limb extremity, such as a foot, and even more particularly, to such an apparatus having a compressor for inflating the bag and a control system for controlling and regulating the operation of the compressor. 
     BACKGROUND OF THE INVENTION 
     Medical pumping apparatus have been employed to increase or stimulate blood flow in a limb extremity, such as a hand or a foot. Such pumping devices typically include a bag adapted for being inflated with compressed air to effect such an increase in venous blood flow. An electrically powered air compressor is typically used to provide the necessary compressed air. The compressor provides a certain amount of air pressure which is determined by the requirements associated with the particular application. Normally, the compressor is operated continuously even after the required pressure has been obtained. The problem with this approach is that the compressor can only be operated for a finite period of time before requiring service or replacement. The life span of the compressor is also affected by heat build-up, which is exacerbated by continuous operation. 
     Accordingly, there is a need for an improved medical pumping apparatus having a bag inflated with compressed air from an electrically or otherwise powered air compressor, where the pumping apparatus can be operated for longer periods of time before having to service or replace the compressor. 
     SUMMARY OF THE INVENTION 
     This need is met by providing an improved medical pumping apparatus which includes a fluid supply mechanism for applying pressurized fluid to an inflatable bag, according to the principles of the present invention, where the bag is adapted to be fitted upon the foot or other limb extremity of a patient. The bag has at least one fluid bladder, and preferably separate first and second fluid bladders. Each fluid bladder is adapted to engage a different portion of the limb extremity. The fluid supply mechanism applies pressurized fluid to each bladder such that a compressive pressure is applied upon each portion of the limb extremity engaged by a fluid bladder. The fluid supply mechanism includes a compressor for providing the pressurized fluid, and a reservoir for storing pressurized fluid from the compressor. The fluid supply mechanism is operatively adapted so that the medical pumping apparatus can be operated for longer periods of time before the compressor has to be serviced or replaced. 
     In one aspect of the present medical pumping apparatus, this improvement in the service life of the compressor can be accomplished by adapting the fluid supply mechanism to include a pressure control unit operatively adapted for controlling the operation of the compressor. By controlling the compressor, the control unit controls the pressure of the fluid in the reservoir. The pressure control unit can control the operation of the compressor in a number of ways understood by those skilled in the art, and the present invention is not intended to be limited to any particular method or apparatus for accomplishing this control. 
     One way the operation of the compressor can be controlled is in response to changes in the fluid pressure in the reservoir. Such a pressure control unit can include the feature of a pressure sensor for detecting a fluid pressure that is at least indicative of the fluid pressure in the reservoir, if not directly measuring the reservoir fluid pressure. In order to detect the fluid pressure in the reservoir, the pressure sensor can be connected to a fluid line, providing fluid communication between the compressor and the reservoir, or connected directly into the reservoir. The pressure sensor can be electrical or mechanical in design. 
     An additional feature of such a pressure control unit is a mechanical or electrical switching mechanism for controlling the operation of the compressor by controlling the supply of power from a power source (e.g., a standard electric outlet) to the compressor. The switching mechanism can be used for turning the compressor on or off, or for cycling the compressor on and off (e.g., by using a duty cycle). For a pressure control unit which controls the compressor in response to fluid pressure in the reservoir, the switching mechanism can be adapted to turn the compressor on when the pressure in the reservoir drops to a desired low pressure level or below that low pressure level. This switching mechanism can also be adapted to turn the compressor off when the pressure in the reservoir reaches or exceeds a desired high pressure level. Either or both of the low and high pressure levels can be preset. Thus, the pressure control unit can automatically shut the compressor off when the pressure required for proper operation of the pumping device is obtained and automatically turn the compressor back on when additional air compression is needed. 
     In another aspect of the present medical pumping apparatus, for at least some compressors, the present medical pumping apparatus can be operated for longer periods of time before the compressor has to be serviced or replaced by adapting the compressor in the fluid supply mechanism to include an exhaust valve, with an exhaust filter disposed so as to filter the air before it is forced out through the exhaust valve. It has been discovered that a compressor, which internally generates airborne particulate matter during its operation and includes an exhaust valve sensitive to such particulate, can be run continuously for longer periods of time without having to be serviced or replaced by using such an exhaust filter. 
     Automatically cycling the compressor on and off can allow the compressor to rest for a majority of the time that the present medical pumping apparatus is in use. For at least some compressors, filtering internally generated dust and other particulate from the air before the particulate has a chance to accumulate in significant amounts on the exhaust valve can enable the compressor to significantly maintain its efficiency and output for longer periods of time, even while being run continuously. In this way, using either or both of the above aspects of the present invention can greatly increase the effective life span of the compressor and reduce the maintenance it may require during its service life. 
     The type of medical pumping device which can benefit from using the fluid supply mechanism according to the principles of the present invention includes those devices having a generator for cyclically generating fluid pulses during periodic inflation cycles and a fluid conductor connected to communicate the fluid pulses to the one or more bladders. It can also be desirable for the medical pumping device to include a safety vent port associated with the inflatable bag and/or the fluid conductor to vent pressurized fluid from one or more of the bladders. 
     The present invention can be used with various portions of the human foot or other limb extremities including the plantar arch, the heel, a forward portion of the sole and the dorsal aspect of the foot. 
     The inflatable bag can be formed from two panels of flexible material, such as polyurethane or polyvinyl chloride. 
     The inflatable bag can be secured in place, for example, with a boot which receives the bag and includes first and second tabs adapted to connect with one another after the boot and the bag are fitted upon a foot to hold the boot and the bag to the foot. 
     Accordingly, it is an object of the present invention to provide an improved medical pumping apparatus having an inflatable bag which engages a substantial portion of a patient&#39;s limb extremity to achieve optimum blood flow at an acceptable patient comfort level. 
     It is another object of the present invention to provide a medical pumping apparatus which can be operated for longer overall periods of time before its compressor has to be serviced or replaced. 
     It is an additional object of the present invention to provide such an improved medical pumping apparatus having a compressor which can be operated continuously and/or periodically and still maintain the pressure of the fluid in its reservoir at an appropriate level. 
     These and other objects, features and advantages of the present invention will be apparent from the following description, the accompanying drawings and the appended claims. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a perspective view of medical pumping apparatus constructed and operable in accordance with the present invention; 
     FIG. 2 is a perspective view of the boot and inflatable bag of the present invention; 
     FIG. 3 is a cross-sectional view of the inflatable bag and the lower portion of the boot with the upper portion of the boot and a patient&#39;s foot shown in phantom; 
     FIG. 4 is a plan view of the inflatable bag shown in FIG. 2 and illustrating in phantom a patient&#39;s foot positioned over the inflatable bag; 
     FIG. 4A is a side view, partially in cross-section, of a Y-connector forming part of a conducting line constructed in accordance with a second embodiment of the present invention; 
     FIG. 4B is a plan view of an inflatable bag and a portion of a conducting line constructed in accordance with the second embodiment of the present invention; 
     FIG. 4C is an enlarged view of a portion of the Y-connector shown in FIG. 4A; 
     FIG. 4D is a plan view of an inflatable bag and a portion of a conducting line constructed in accordance with a third embodiment of the present invention; 
     FIG. 4E is a plan view of an inflatable bag and a portion of a conducting line constructed in accordance with a fourth embodiment of the present invention; 
     FIG. 5 is a cross-sectional view taken along section line 5--5 in FIG. 4; 
     FIG. 6 is a schematic illustration of the controller of the fluid generator illustrated in FIG. 1; 
     FIG. 7 is a graphical representation of an inflation cycle and vent cycle for an inflatable bag; 
     FIG. 8 is a block diagram of one embodiment of a compressor, air reservoir, manifold, pressure sensor and reservoir pressure control unit of the fluid generator illustrated in FIG. 1; 
     FIG. 8A is a schematic diagram of one embodiment of the reservoir pressure control unit illustrated in FIG. 8; 
     FIG. 8B is a partially exploded perspective view of one example of a compressor which can be used in the fluid generator of FIG. 8; 
     FIG. 8C is an enlarged and partially sectioned plan view of the reed valve assembly used in the compressor of FIG. 8B; 
     FIG. 9 is a circuit diagram for the infrared sensor illustrated in FIG. 1; 
     FIG. 10 is an example LRR curve for a normal patient; 
     FIG. 11 is a flow chart depicting steps performed to determine stabilization of the infrared sensor signal; and, 
     FIG. 12 is a flow chart depicting steps performed to determine the endpoint on the LRR curve and the LRR refill time. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     A medical pumping apparatus 10 constructed and operable in accordance with the present invention is shown in FIG. 1. The apparatus includes a boot 20 adapted to be fitted upon and secured to a patient&#39;s foot. The boot 20 is provided with an inflatable bag 30 (see FIGS. 2 and 4) which, when inflated, serves to apply compressive pressures upon the patient&#39;s foot to stimulate venous blood flow. The apparatus 10 further includes a fluid generator 40 which cyclically generates fluid pulses, air pulses in the illustrated embodiment, during periodic inflation cycles. The fluid pulses are communicated to the bag 30 via a first conducting line 50. The generator 40 also serves to vent fluid from the bag 30 to atmosphere during periodic vent or deflation cycles between the periodic inflation cycles. 
     Referring to FIGS. 2-5, the inflatable bag 30 is constructed from first and second panels 32 and 34 of flexible material such as polyurethane, polyvinyl chloride or the like. The panels 32 and 34 are heat sealed or otherwise secured to one another to form first and second fluid bladders 36 and 38, respectively. As best shown in FIG. 3, the first fluid bladder 36 engages a patient&#39;s foot 60 approximately at the plantar arch 62, which extends between the metatarsal heads and the heel 64. The second fluid bladder 38 engages the foot approximately at the dorsal aspect 66, the heel 64 and a forward portion 67 of the sole 68 of the foot 60 beneath toe phalanges. As should be apparent, the exact foot portions engaged by the two bladders will vary somewhat from patient to patient. 
     As best shown in FIGS. 2 and 3, the boot 20 comprises a flexible outer shell 22 made from a flexible material, such as vinyl coated nylon. The inflatable bag is placed within the shell 22 and is adhesively bonded, heat sealed or otherwise secured thereto. Interposed between the outer shell 22 and the inflatable bag 30 is a stiff sole member 24a formed, for example, from acrylonitrile butadiene styrene. The outer shell 22 is provided with first and second flaps 22a and 22b which, when fastened together, secure the boot 20 in a fitted position upon a patient&#39;s foot. Each of the flaps 22a and 22b is provided with patches 24 of loop-pile fastening material, such as that commonly sold under the trademark Velcro. The patches 24 of loop-pile material permit the flaps 22a and 22b to be fastened to one another. A porous sheet of lining material (not shown) comprising, for example, a sheet of polyester nonwoven fabric, may be placed over the upper surface 30a of the inflatable bag 30 such that it is interposed between the bag 30 and the sole 68 of the foot when the boot 20 is secured upon the foot 60. 
     The fluid generator 40 includes an outer case 42 having a front panel 42a. Housed within the outer case 42 is a controller 44 which is schematically illustrated in FIG. 6. The controller 44 stores an operating pressure value for the fluid pulses, an operating time period for the periodic inflation cycles and an operating time period for the periodic vent cycles. In the illustrated embodiment, the operating time period for the periodic inflation cycles is fixed at 3 seconds. The other two parameters may be varied. 
     The front panel 42a of the outer case 42 is provided with a keypad 42b for setting a preferred pressure value to be stored by the controller 44 as the operating pressure value. By way of example, the preferred pressure value may be selected from a range varying from 3 to 7 psi. The keypad 42b is also capable of setting a preferred time period to be stored by the controller 44 as the operating time period for the periodic vent cycles. For example, the preferred vent cycle time period may be selected from a range varying from 4 to 32 seconds. As an alternative to setting a time period for just the vent cycles, a combined time period, determined by adding the time period for the inflation cycles with the time period for the vent cycles, may be set via the keypad 42b for storage by the controller 44. A graphical representation of an inflation cycle followed by a vent cycle for the inflatable bag 30 is shown in FIG. 7. 
     In the illustrated embodiment, a processor 70 is provided (e.g., at a physician&#39;s office) for generating a preferred pressure value for the fluid pulses and a preferred time period for the vent cycles. The processor 70 is coupled to the fluid generator 40 via an interface cable 72 and transmits the preferred pressure value and the preferred time period to the controller 44 for storage by the controller 44 as the operating pressure value and the operating time period. The processor 70 also transmits a disabling signal to the controller 44 to effect either partial or complete disablement of the keypad 42b. As a result, the patient is precluded from adjusting the operating pressure value or the operating time period or both via the keypad 42b, or is permitted to adjust one or both values, but only within predefined limits. An operator may reactivate the keypad 42b for setting new operating parameters (i.e., to switch from the processor input mode to the keypad input mode) by actuating specific keypad buttons in a predefined manner. 
     The controller 44 further provides for producing and saving patient compliance data (e.g., time, date and duration of each use by the patient), which data can be transmitted by the controller 44 to the processor 70 for storage by the same. 
     Further housed within the outer case 42 is an air compressor 45, an air reservoir 46, a pressure sensor 47, a reservoir pressure control unit 52 and a manifold 48, as shown in FIG. 8. Extending from the manifold 48 are left and right fluid lines 48a and 48b which terminate at left and right fluid outlet sockets 49a and 49b. The left fluid socket 49a extends through the front panel 42a of the outer case 42 for engagement with a mating connector 51 located at the proximal end of the conducting line 50, see FIG. 1. The conducting line 50 is secured at its distal end to the inflatable bag 30. The right socket 49b likewise extends through the front panel 42a for engagement with a mating connector located at the proximal end of a second conducting line (not shown) which is adapted to be connected at its distal end to a second inflatable bag (not shown). 
     The compressor 45 is preferably a small electrically powered air compressor. Compressed air generated by the compressor 45 is supplied to the reservoir 46 for storage via fluid line 45a. The reservoir 46 communicates with the manifold 48 via a fluid line 46a. In the past, the compressor 45 ran continuously during the operation of the medical pumping apparatus 10 to maintain the air pressure in the reservoir 46 at or above a desired minimum level and to insure that the manifold 48 was always supplied with the necessary air pressure. It has been found that the compressor 45 need not be operated continuously in order to insure that the necessary air pressure will be available. On the contrary, the compressor 45 can be operated periodically. For example, in the specific embodiment of the medical pumping apparatus 10, described in detail here, the compressor 45 runs only when the air pressure in the reservoir 46 drops below a preset lower level. 
     The operation of the compressor 45 is controlled by the reservoir pressure control unit 52. In this embodiment, the pressure control unit 52 operates independently of the controller 44 and the processor 70, but unit 52 could be otherwise designed. For example, the pressure control unit 52 could be incorporated into the processor 70. The control unit 52 basically includes a fluid pressure sensor 54 of mechanical or electrical design for sensing the air pressure in the reservoir 46. The fluid pressure sensor 54 is in fluid communication with the fluid line 45a between the compressor 45 and the reservoir 46 through a fluid line 54a, forming a &#34;T&#34; or &#34;Y&#34; connection therewith. Thus, through the line 54a, the sensor 54 samples the air pressure in line 45a, which is representative of the air pressure in the reservoir 46. The sensor 54 is interconnected to a control switch 55 operatively disposed between the motor of the compressor 45 and its source of power, such as a standard 115 VAC electrical outlet 56. Depending on its design, the sensor 54 can be connected to the switch 55 either electrically or mechanically. 
     The reservoir pressure control unit 52 is operatively adapted so that the switch 55 electrically connects the motor of the compressor 45 with the motor&#39;s source of power 56, when the pressure in the reservoir 46 is below the preset lower level. The compressor 45 then turns on and begins increasing the air pressure in the reservoir 46. This increase in air pressures is constantly being monitored by the pressure sensor 54. Once the air pressure in the reservoir 46 reaches or exceeds a preset high level, the sensor 54 causes the switch 55 to open, which disconnects the motor of the compressor 45 from its power source 56 and causes the compressor 45 to stop pumping. As long as the air pressure in the reservoir 46 remains above the lower level, the compressor 45 will remain off. The pressure in reservoir 46 falls below the preset lower limit after enough of the pressurized air is utilized by apparatus 10 to inflate one or more of the bladders 36 and 38. Once the air pressure in the reservoir 46 drops below this lower level, the compressor 45 will start pumping again and the cycle described above will repeat itself for as long as the medical pumping apparatus 10 continues to be operated. 
     This technique of automatically cycling (i.e., duty cycling) the compressor 45 on and off by the pressure levels in the reservoir 46 can allow the compressor 45 to rest up to 2/3 of the time that the pumping apparatus 10 is in use. Duty cycling the compressor 45 greatly increases the life span of the compressor 45 and reduces the maintenance the compressor 45 may require during its service life. The life span of the motor of compressor 45, like other electric motors, can be adversely impacted by heat build-up, which is often exacerbated by continuous use. As is well known, a cooling fan (not shown) can be used to cool-off the compressor 45 when it is run continuously. However, by cycling the compressor 45 according to the principles of the present invention, it is believed that any need for such a fan can be eliminated, or at least a smaller fan can be used. 
     Referring to FIG. 8A, one specific embodiment of the reservoir pressure control unit 52, that is adapted to operate as above described, is supplied with 12 Volts DC at the points indicated by the reference symbol +V. This specific pressure control unit 52 includes an air pressure sensor 54 in the form of a transducer, such as that manufactured by Motorola, part no.: MPX-100 or MPX-200. Two 820 ohms resistors R 1  and R 2  connect the power supply to the pressure transducer 54 to provide increased linearity for the control unit 52 over a wider temperature range, and thereby minimize the error in pressure readings caused by temperature variations. 
     In response to the air pressure in the line 54a, the transducer 54 transmits an electrical signal, representative of the pressure in the reservoir 46. This electrical pressure signal is transmitted through an integrated circuit 58 which has both an amplifier 59 and a comparator 61 with hysteresis, such as the LT-1078 (dual) or half of the LM-324 (quad) operational amplifier manufactured by National Semiconductor. The non-inverting input of the amplifier 59 is connected to the reference voltage +V through a 33 Kohm resistor R 3  connected in series with a 50 Kohm variable resistor or potentiometer R 4 . The potentiometer R 4  is used to set the offset of the amplifier 59, and hence, the sensitivity or high pressure trip-level of the control unit 52. The gain of the amplifier 59 is set by a 100 Kohm resistor R 5  and the output impedance of the transducer 54. The impedance of the transducer 54 is nominally 1000 ohms. Thus, the gain for this stage is approximately 100,000/1000 or 100. A 0.10 μf capacitor C 1  is connected in parallel with resistor R 5  to prevent high frequency noise or oscillations from creating related problems for the control unit 52. 
     When the signal on the inverting input of the comparator 61 exceeds the level of its reference voltage connected to its non-inverting input, the output of the comparator 61 exhibits a negative transition from a high logic state to a low logic state. When this negative transition occurs, current flows through the control switch 55, such as a solid state AC voltage relay PS2401, manufactured by CP Claire Corp., Wakefield, Mass., a light emitting diode 63 and a 1.1 Kohm resistor R 6 . The relay switch 55 controls the connection of the 115 VAC line power from outlet 56 to the motor of compressor 45. The negative or high-to-low transition from the comparator 61 serves to turn on the relay switch 55 and allow power to reach the compressor 45. A 910 Kohm resistor R 7  provides a measure of hysteresis for the circuit 58, providing a dual trip-point to prevent the control unit 52 from oscillating. 
     When the compressor 45 is of the type rated for 12 VDC, such as that manufactured by the company Medo, Hanover Park, Ill., part no.: AC 0110-A1053-D2-0511, the compressor 45 and the pressure control unit 52 can be powered from the same 12 VDC supply. In such a case, the 115 VAC is transformed to the 12 VDC in a conventional manner, and the switch 55 still controls the power to compressor 45. In this embodiment, the diode 63 operates as a troubleshooting light. If light is generated by the diode 63, then the motor of the compressor 45 should also be running. The control switch 55 could also be a light activated solid state relay which is optically coupled to a light emitting diode. 
     When the pressure in the air reservoir 46, as measured by the transducer 54, falls below an &#34;on&#34; trip-point, the comparator 61 switches to a low level output. When the comparator 61 switches low, the solid state relay 55 is activated, which causes the compressor 45 to turn on. The compressor 45 then begins pumping air into the reservoir 46, restoring the desired pressure level. The applied pressure increases until the comparator 61 switches to a high level output. The hysteresis resistor R 7  can be varied to provide hysteresis ranging from about 1% to about 49% of the trip-point value. 
     With this dual trip-point scheme, after the pressure in reservoir 46 exceeds the &#34;on&#34; trip-point, the compressor 45 continues to run, building the pressure in reservoir 46 until a second &#34;off&#34; trip-point is reached. At this point, the relay switch 55 is deactivated and power to the compressor 45 turned off. A slight amount of pressure typically leaks from the air delivery system. However, even if the pressure falls below the point where the compressor 45 was just turned off, the control unit 52 will not turn the compressor 45 back on again until the &#34;on&#34; trip-point is reached. This prevents oscillation of the control unit 52 which would cause excessive cycling, defeating the purpose of the control unit 52 to effect a controlled duty cycling of the compressor 45. 
     The trip-point can be varied by adjusting the variable resistor R 4 . Adjusting resistor R 4  causes a voltage division between the wiper R 4  and the transducer 54 takes place. When amplified, this voltage division establishes a DC offset or pedestal level for the output of the amplifier 59. For the embodiment disclosed, this DC offset varies, for example, from about 0 to about 5 VDC. Typically, each circuit 58 has to be calibrated for each transducer 54. By observing the polarity of the transducer output and op-amp circuits, it can be seen that the amplifier output will go toward ground with an increase in pressure. The positive value at which the amplifier 59 starts its high-to-low transition is determined by the setting of the wiper resistor R 4 . Therefore, the wiper resistor R 4  establishes the pedestal level from which the negative transition begins. 
     Using the Medo compressor 45 described above, it has been found desirable to preset the lower pressure level at about 12 psi. The National Semiconductor amplifier/comparator 58, described above, has a deadband in the range of about 1-4 psi and typically about 1.5 psi. Thus, with this amplifier/comparator 58, the relay switch 55 turns the compressor 45 on at a pressure of about 12 psi and turns the compressor 45 off at a pressure of about 13.5 psi. 
     Referring to FIGS. 8B and 8C, a Medo air compressor 65, like the one described above, includes an air exhaust port 69 and valve 71, and a TEFLON coated piston 73. Piston 73 draws air in through an intake port (not shown) and forces air out through the exhaust port 69, past valve 71, into a sealed air chamber 101 and out a pump outlet port 103 to the air reservoir 46 through an air outlet tube 105 connected to the air line 45a. An intake filter (not shown) is disposed in the path of the air passing through the intake port (not shown). The exhaust port 69 and valve 71 used with this particular Medo compressor 65 forms part of a reed valve assembly 76. It has been discovered that a Medo compressor 65, like that described above, can be run continuously for longer periods of time without having to be serviced or replaced by disposing an exhaust filter 74 in the path of the exhaust port 69 so as to filter the air before it is forced out through the reed valve 71. 
     The exhaust filter 74 can be disposed in the path of the exhausted air in a number of ways, according to the present invention, including drilling or otherwise forming a bore hole 78, in the assembly 76, transverse to and cutting completely through the previously continuous exhaust port 69, before the reed valve 71 (see FIG. 8C). The exhaust filter 74 is disposed in the bore hole 78 so that any air exiting the compressor 65 has to pass through the filter 74 before being exhausted out through the reed valve 71. The bore hole 78 can be up to about 5 times or more as large in diameter and/or up to about 3 times or more as long as the exhaust port 69. The open end of the hole 78 is plugged, such as with a threaded cap 79, to keep the filter 74 in place. The threaded cap 79, and any other means for plugging hole 78, is preferably air tight so that all the generated air pressure passes through the filter material 74 and out past the reed valve 71. 
     It appears that this exhaust filter 74 significantly prevents dust and other particulate, coming from inside the compressor 65 (e.g., wear particles generated by the action of the piston 73), from reaching the reed valve 71. The output of the Medo compressor 65 drops significantly as such particulate accumulates on the reed valve 71. It has been found that by using an exhaust filter 74, the life span of a continuously run Medo compressor 65, or any similar compressor, can be extended by a significant amount. It is believed that the life span of a Medo compressor 65, or any similar compressor, can be extended by as much as 4 to 5 times or even more. Satisfactory results have been obtained by using the same filter material for the exhaust filter 74 as is used for the intake filter (not shown) of the above described type of Medo compressor 65. This filter material is an open cell foam with small cells and can be obtained from Medo. It is believed desirable to use such an exhaust filter 74 on any compressor 45 having any type of exhaust valve 71 which is sensitive to particulate accumulation. 
     An inflate solenoid, a vent solenoid, a channel solenoid and associated valves are provided within the manifold 48. The inflate solenoid effects the opening and closing of its associated valve to control the flow of fluid into the manifold 48 from the air reservoir 46 via fluid line 46a. The vent solenoid effects the opening and closing of its associated valve to control the flow of fluid from the manifold 48 to atmosphere via a vent line 48c. The channel solenoid effects the opening and closing of its associated valve to control the flow of fluid from the manifold 48 to fluid line 48a or fluid line 48b. 
     Actuation of the solenoids is controlled by the controller 44, which is coupled to the solenoids via conductors 44a. During inflation cycles, the controller 44 actuates the vent solenoid to prevent the venting of fluid in the manifold 48 to atmosphere via vent line 48c. The controller 44 further actuates the inflate solenoid to allow pressurized air to pass from the air reservoir 46, through the manifold 48 to either the fluid line 48a or the fluid line 48b. 
     During vent cycles, the controller 44 initially causes the inflate solenoid to stop pressurized fluid from passing into the manifold 48 from the reservoir 46. It then causes the vent solenoid to open for at least an initial portion of the vent cycle and vent the fluid in the manifold 48 to atmosphere. 
     Depending upon instructions input via the keypad 42b or the processor 70, the controller 44 also serves to control, via the channel solenoid, the flow of fluid to either line 48a or line 48b. If only a single boot 20 is being employed, the processor 70 does not activate the channel solenoid and line 48a, which is normally in communication with the manifold 48, communicates with the manifold 48 while line 48b is prevented from communicating with the manifold 48 by the valve associated with the channel solenoid. If two boots 20 are being employed, the controller 44 activates and deactivates the channel solenoid to alternately communicate the lines 48a and 48b with the manifold 48, thereby simulating walking. As should be apparent, when two boots 20 are used in an alternating manner, each boot will have its own separate inflation and vent cycles. Thus, during the vent cycle for the bag 30, an inflation cycle takes place for the other bag (not shown). The inflate solenoid allows pressurized fluid to pass from the air reservoir 46, through the manifold 48 and into the fluid line 48b associated with the other bag, while the channel solenoid has been activated to prevent communication of the fluid line 48a associated with the bag 30 with the manifold 48. 
     The air pressure sensor 47 communicates with the manifold 48 via an air line 47a and senses the pressure level within the manifold 48, which corresponds to the pressure level which is applied to either the fluid line 48a or the fluid line 48b. The pressure sensor 47 transmits pressure signals to the controller 44 via conductors 47b. Based upon those pressure signals, the controller 44 controls the operation of the inflate solenoid, such as by pulse width modulation or otherwise. Pulse width modulation for this application comprises activating the inflate solenoid for one pulse per cycle, with the pulse lasting until the desired pressure is achieved. The length of the pulse is based upon an average of the fluid pressure level during previous inflation cycles as measured by the pressure sensor 47. Pulse length and hence pressure level is iteratively adjusted in small steps based on each immediately preceding pulse. In this way, the fluid pressure within the manifold 48, and thereby the pressure which is applied to either fluid line 48a or fluid line 48b, is maintained substantially at the stored operating pressure value with no sudden changes in pressure level. 
     In an alternative embodiment, the pressure sensor 47 is replaced by a force sensor (not shown) secured to the bag 30 so as to be interposed between the first bladder 36 and the sole 68 of the foot 60. The force sensor senses the force applied by the bladder 36 to the foot 60 and transmits force signals to the controller 44 which, in response, controls the operation of the inflate solenoid to maintain the fluid pressure within the manifold 48, and thereby the pressure which is applied to either fluid line 48a or fluid line 48b, at the stored operating pressure level. 
     In the embodiment illustrated in FIGS. 1, 2 and 4, the conducting line 50 comprises a first tubular line 50a connected at its distal end to the first bladder 36, a second tubular line 50b connected at its distal end to the second bladder 38, a third tubular line 50c connected at its distal end to a proximal end of the first tubular line 50a, a fourth tubular line 50d connected at its distal end to a proximal end of the second tubular line 50b, and a fifth tubular line 50e integrally formed at its distal end with proximal ends of the third and fourth tubular lines 50c and 50d. The fourth tubular line 50d is provided with a restrictive orifice 53 for preventing delivery of fluid into the second bladder 38 at the same rate at which fluid is delivered into the first bladder 36. More specifically, the restrictive orifice 53 is dimensioned such that the fluid pressure in the first bladder 36 is greater than the fluid pressure level in the second bladder 38 during substantially the entirety of the inflation cycle. 
     A conducting line 150 and inflatable bag 30, formed in accordance with a second embodiment of the present invention, are shown in FIG. 4B, where like reference numerals indicate like elements. In this embodiment, the conducting line 150 (also referred to herein as a fluid conductor) comprises a first tubular line 152 connected at its distal end 152a to the first bladder 36, a second tubular line 154 connected at its distal end 154a to the second bladder 38, a Y-connector 160 connected at its first distal end 162 to a proximal end 152b of the first tubular line 152 and at its second distal end 164 to a proximal end 154b of the second tubular line 154, and a third tubular line 156 connected at its distal end 156a to a proximal end 166 of the Y-connector 160. The Y-connector 160 further includes a restrictive orifice 168 for preventing delivery of fluid into the second bladder 38 at the same rate at which fluid is delivered into the first bladder 36, see FIGS. 4A and 4C. The restrictive orifice 168 is dimensioned such that the fluid pressure in the first bladder 36 is greater than the fluid pressure level in the second bladder 38 during substantially the entirety of the inflation cycle. The proximal end of the third tubular line 156 is provided with a mating connector (not shown) which is substantially similar to mating connector 51 described above. 
     A safety vent port 170 is provided in the Y-connector 160, see FIGS. 4A and 4C. Should a power failure occur during an inflation cycle with the vent valve in its closed position, pressurized fluid within the first and second bladders 36 and 38 will slowly decrease with time due to venting of the pressurized fluid through the safety vent port 170. The vent port 170 also serves to vent pressurized fluid to atmosphere in the unlikely event that the fluid generator 40 malfunctions such that the fluid generator inflate and vent solenoids and associated valves permit unrestricted flow of pressurized fluid into the bag 30. 
     Referring to FIGS. 4A and 4C, an example Y-connector 160 formed in accordance with the second embodiment of the present invention will now be described. The passage 160a of the Y-connector 160 has an inner diameter D 1  =0.09 inch. The passage 160b has an inner diameter D 2  =X inch. The restrictive orifice 168 has an inner diameter D 3  =0.020 inch. The vent port 170 has an inner diameter D 4  =0.013 inch. Of course, the dimensions of the Y-connector passages 160a and 160b, the restrictive orifice 168 and the vent port 170 can be varied in order to achieve desired inflation and vent rates. 
     A conducting line 180 and inflatable bag 30, formed in accordance with a third embodiment of the present invention, are shown in FIG. 4D, where like reference numerals indicate like elements. In this embodiment, the conducting line 180 (also referred to herein as a fluid conductor) comprises a first tubular line 182 connected at its distal end 182a to the first bladder 36, a second tubular line 184 connected at its distal end 184a to the second bladder 38, a Y-connector 190 connected at its first distal end 192 to a proximal end 182b of the first tubular line 182 and at its second distal end 194 to a proximal end 184b of the second tubular line 184, and a third tubular line 186 connected at its distal end 186a to a proximal end 196 of the Y-connector 190. The Y-connector 190 further includes a restrictive orifice (not shown) which is substantially similar to restrictive orifice 168 shown in FIGS. 4A and 4C. The restrictive orifice is dimensioned such that the fluid pressure in the first bladder 36 is greater than the fluid pressure level in the second bladder 38 during substantially the entirety of the inflation cycle. A safety vent port 200 is provided in the first tubular line 182 and functions in substantially the same manner as vent port 170 described above. The proximal end of the third tubular line 186 is provided with a mating connector (not shown) which is substantially similar to mating connector 51 described above. 
     A conducting line 220 and inflatable bag 30, formed in accordance with a fourth embodiment of the present invention, are shown in FIG. 4E, where like reference numerals indicate like elements. In this embodiment, the safety vent port 200&#39; is provided in the second panel 34 of the bag 30 such that the vent port 200&#39; communicates directly with the second bladder 38. 
     The front panel 42a is further provided with a liquid crystal display (LCD) 42c for displaying the stored operating pressure value and the stored operating time period. The LCD 42c also serves to indicate via a visual warning if either or both of the first or second conducting lines are open or obstructed. Light-emitting diodes 42d are also provided for indicating whether the generator 40 is operating in the keypad input mode or the processor input mode. Light-emitting diodes 42f indicate which fluid outlets are active. 
     When a fluid pulse is generated by the generator 40, pressurized fluid is transmitted to the bag 30 via the conducting line 50. This results in the first fluid bladder 36 applying a first compressive pressure generally at the plantar arch 62 and the second bladder 36 applying a second, distinct compressive pressure generally at the dorsal aspect 66, the heel 64 and the forward portion 67 of the sole 68 of the foot 60. Application of compressive pressures upon these regions of the foot 60 effects venous blood flow in the deep plantar veins. When a second boot (not shown) is employed, pressurized fluid pulses are transmitted by the generator 40 to its associated inflatable bag so as to effect venous blood flow in the patient&#39;s other foot. 
     The apparatus 10 further includes an infrared sensor 75, see FIGS. 1 and 9. The sensor 75 can be used in combination with the fluid generator 40 and the processor 70 to allow a physician to prescreen patients before prescribing use of one or two of the boots 20 and the fluid generator 40. The prescreening test ensures that the patient does not have a venous blood flow problem, such as deep vein thrombosis. The prescreening test also allows the physician to predict for each individual patient a preferred time period for vent cycles. 
     In the illustrated embodiment, the sensor 75 is operatively connected through the generator 40 via cable 77 to the processor 70, see FIGS. 1, 6 and 9. The sensor 75 comprises three infrared-emitting diodes 75a which are spaced about a centrally located phototransistor 75b. The sensor 75 further includes a filtering capacitor 75c and three resistors 75d. 
     The sensor 75 is adapted to be secured to the skin tissue of a patient&#39;s leg approximately 10 cm above the ankle via a double-sided adhesive collar (not shown) or otherwise. The diodes 75a emit infrared radiation or light which passes into the skin tissue. A portion of the light is absorbed by the blood in the microvascular bed of the skin tissue. A remaining portion of the light is reflected towards the phototransistor 75b. An analog signal generated by the phototransistor 75b varies in dependence upon the amount of light reflected towards it. Because the amount of light reflected varies with the blood volume in the skin tissue, the analog signal can be evaluated to determine the refill time for the microvascular bed in the skin tissue (also referred to herein as the LRR refill time). Determining the microvascular bed refill time by evaluating a signal generated by a phototransistor in response to light reflected from the skin tissue is generally referred to as light reflection rheography (LRR). 
     To run the prescreening test, the sensor 75 is first secured to the patient in the manner described above. The patient is then instructed to perform a predefined exercise program, e.g., 10 dorsiflexions of the ankle within a predefined time period, e.g., 10 seconds. In a normal patient, the venous blood pressure falls due to the dorsiflexions causing the skin vessels to empty and the amount of light reflected towards the phototransistor 75b to increase. The patient continues to be monitored until the skin vessels are refilled by the patient&#39;s normal blood flow. 
     The signals generated by the phototransistor 75b during the prescreening test are buffered by the controller 44 and passed to the processor 70 via the interface cable 72. A digitizing board (not shown) is provided within the processor 70 to convert the analog signals into digital signals. 
     In order to minimize the effects of noise, the processor 70 filters the digital signals. The processor 70 filters the digital signals by taking 7 samples of sensor data and arranging those samples in sequential order from the lowest value to the highest value. It then selects the middle or &#34;median&#34; value and discards the remaining values. Based upon the median values, the processor 70 then plots a light reflection rheography (LRR) curve. As is known in the art, a physician can diagnose whether the patient has a venous blood flow problem from the skin tissue refill time taken from the LRR curve. An example LRR curve for a normal patient is shown in FIG. 10. 
     When the sensor 75 is initially secured to the patient&#39;s leg, its temperature increases until it stabilizes at approximately skin temperature. Until temperature stabilization has occurred, the signal generated by the sensor 75 varies, resulting in inaccuracies in the LRR curve generated by the processor 70. To prevent this from occurring, the processor 70 monitors the signal generated by the sensor 75 and produces the LRR curve only after the sensor 75 has stabilized. Sensor stabilization is particularly important because, during the stabilization period, the signals generated by the sensor 75 decline at a rate close to the rate at which the skin vessels refill. 
     FIG. 11 shows in flow chart form the steps which are used by the processor 70 to determine if the signal generated by the sensor 75 has stabilized. The first step 80 is to take 100 consecutive samples of filtered sensor data and obtain an average of those samples. After delaying approximately 0.5 second, the processor 70 takes another 100 consecutive samples of sensor data and obtains an average of those samples, see steps 81 and 82. In step 83, the processor 70 determines the slope of a line extending between the averages of the two groups sampled. In step 84, the processor 70 determines if the magnitude of the slope is less than a predefined threshold value T s , e.g., T s  =0.72. If it is, stabilization has occurred. If the magnitude of the slope is equal to or exceeds the threshold value T s , the processor 70 determines whether 3 minutes have passed since the sensor 75 was initially secured to the patient&#39;s skin, see step 85. Experience has shown that stabilization will occur in any event within 3 minutes. If 3 minutes have passed, the processor 70 concludes that stabilization has occurred. If not, it repeats steps 80-85. 
     After generating the LRR curve, the processor 70 further creates an optimum refill line L r  and plots the line L r  for comparison by the physician with the actual LRR curve, see FIG. 10. The optimum refill line L r  extends from the maximum point on the plotted LRR curve to a point on the baseline, which point is spaced along the X-axis by a selected number of seconds. It is currently believed that this time along the X-axis should be 30 seconds from the X-component of the maximum point; however other times close to 30 seconds may ultimately prove superior. 
     The processor 70 generates the endpoint of the LRR curve and the LRR refill time. FIG. 12 shows in flow chart form the steps which are used by the processor 70 to determine the endpoint on the LRR curve and the refill time. 
     In step 90, all filtered samples for a single prescreening test are loaded into the processor 70. In step 91, two window averages are determined. In a working embodiment of the invention, each window average is determined from 30 filtered data points, and the two window averages are separated by 5 filtered data points. Of course, other sample sizes for the windows can be used in accordance with the present invention. Further, the number of data points separating the windows can be varied. In step 92, the slope of a line extending between the two window averages is found. In step 93, if the slope is less than 0, the processor 70 moves the windows one data point to the right and returns to step 91. If the slope is greater than or equal to zero, the processor 70 determines the endpoint, see step 94. The endpoint is determined by identifying the lowest and highest data points from among all data points used in calculating the two window averages and taking the centerpoint between those identified data points. The processor then determines if the magnitude of the endpoint is less than a threshold value T p  (e.g., T p  = peak value--(0.9) (peak value--baseline value)!), see step 95. If the endpoint is greater than or equal to the threshold value T p , the processor 70 moves the windows one data point to the right and returns to step 91. If the endpoint is less than the threshold value T p , the processor 70 identifies the endpoint and calculates the LRR refill time, see step 96. The LRR refill time is equal to the time between the maximum point on the LRR curve and the endpoint. 
     Further in accordance with the present invention, the processor 70 determines a preferred time period for the periodic vent cycles by estimating the refill time period for the patient&#39;s deep plantar veins based upon the determined LRR refill time. In order to determine the refill time period for the deep plantar veins, an equation is generated in the following manner. 
     LRR plots for a group of patients are generated in the manner described above using the boot 20, the inflatable bag 30, the fluid generator 40, the processor 70 and the sensor 75. The group must include patients ranging, preferably continuously ranging, from normal to seriously abnormal. The LRR refill time is also generated for each of these patients. 
     Refill times for the deep plantar veins are additionally determined for the patients in the group. The refill time is determined for each patient while he/she is fitted with the boot 20 and the inflatable bag 30 has applied compressive pressures to his/her foot. An accepted clinical test, such as phlebography or ultrasonic doppler, is used to determine the refill time for the deep plantar veins. 
     Data points having an X-component equal to the LRR refill time and a Y-component equal to the refill time for the deep plantar veins are plotted for the patients in the group. From those points a curve is generated. Linear regression or principal component analysis is employed to generate an equation for that curve. The equation is stored in the processor 70. 
     From the stored equation, the processor 70 estimates for each patient undergoing the prescreening test the patient&#39;s deep plantar veins refill time based upon the LRR refill time determined for that patient. The preferred time period for the periodic vent cycles is set equal to the deep plantar veins refill time and that preferred time period is transmitted by the processor 70 to the controller 44 for storage by the controller 44 as the operating time period for the periodic vent cycles. 
     It is further contemplated by the present invention that a look-up table, recorded in terms of LRR refill time and deep plantar veins refill time, could be stored within the processor 70 and used in place of the noted equation to estimate the preferred time period for the periodic vent cycles. 
     A program listing (written in Basic) in accordance with the present invention including statements for (1) determining stabilization of the sensor 75; (2) median filtering; and (3) determining the endpoint of the LRR curve is set forth below: 
     
         __________________________________________________________________________
5   REM                                                                   
    rem                                                                   
    rem                                                                   
    rem                                                                   
    rem                                                                   
    rem                                                                   
    rem                                                                   
    rem                                                                   
    rem                                                                   
    dim stemp(100),wrd(4),tword(7)                                        
out &amp;h02f0,&amp;h04                                                           
               `reset the A/D&#39;s                                           
for dly=1 to 5000:next dly                                                
out &amp;h02f0,&amp;h18                                                           
            `get ready for sampling                                       
open &#34;I&#34;,#4,&#34;CVI.INI&#34;                                                     
cls:screen 9                                                              
line (0,0)-(639,439),15,b                                                 
line (3,3)-(636,346),15,b                                                 
input #4,cport                                                            
input #4,d$:input #4,pth$                                                 
close #4                                                                  
locate 4,5:input &#34;Patients Name (First initial and Last):&#34;;iname$         
iname$=iname$ + &#34;   `add padding spaces for short names                   
iname$=left$(iname$,10)                                                   
8 locate 5,5:input &#34;Patients Age:&#34;;iage                                   
if iage&gt;100 then 8                                                        
locate 6,5:input &#34;Which leg (right, left):&#34;;ileg$                         
ileg$=ileg$ + &#34; +&#34;  `add space padding                                    
ileg$=left$(ileg$,5)                                                      
calflag=0                                                                 
9   gosub 8000   `Wait on sensor temperature stabilization                
10  CLS                                                                   
15  DIM CVT(1441),overlay(1441)                                           
16  XORG=75:YORG=278:PI=3.1415927#                                        
17  FLAG=1:F$=&#34;##.##&#34;:G$=&#34;##.#&#34;                                           
    rem &lt;&lt;Initialize the gain settings and D.P. variables&gt;&gt;               
G#=25.00#      `initial gain setting                                      
bias#=75.00#   `set this where you want the trace bottom                  
ybase#=-1000.00#                                                          
               `trigger the calibration message on 1st pass               
gmax#=25.00#   `sets the maximum allowable gain (35 orig.)                
maxdelta#=0.00#                                                           
               `setup max and min for actual range                        
mindelta#=210.00#                                                         
fillchk=0                                                                 
80  gosub 11000  `display setup                                           
LOCATE 23,5                                                               
PRINT &#34;X=RETURN TO DOS  &lt;Spc Bar&gt;=CVI TEST  O=OVERLAY  S=STORE/RETRIEVE   
188 GOSUB 1000                                                            
190 gosub 11100 `display blanking                                         
280 REM  DATA DISPLAY ROUTINE                                             
320 REM **** Get input and display point ****                             
325 erase CVT:sum=0:yavg#=0.0#:calflag=1:maxdelta#=0.0#;mindelta#=210.0#  
name$=iname$:leg$=ileg$:age=iage                                          
patdat$=date$:pattim$=time$                                               
locate 3,5:print patdat$;&#34;| | &#34;;pattim$;                
locate 3,31:print &#34;Patient: &#34;;name$;:locate 3,53:print &#34;Age: &#34;;age;       
locate 3,64:print &#34;&lt;&#34;;leg$;&#34; Leg&gt;&#34;;                                       
locate 24,28:print &#34;Refill Time (SEC): &#34;;using &#34;##.#&#34;;0.0;                
rem &lt;&lt; DO the Baseline Request (BRQ) &gt;&gt;                                   
for j=1 to 5                                                              
gosub 2000                                                                
yavg#=yavg#+temp#                                                         
next j                                                                    
ybase#=yavg#/5.0#                                                         
330 FOR I=1 TO 1440:skip=0                                                
    if i&gt;480 then skip=1                                                  
331 for jx=1 to skip:gosub 2000:next jx   `wait skip sample intervals     
    rem *** Standard plot for reference - (green line)***                 
    if i&lt;=504 then 332                                                    
    ystep=ystep-(CVT(504)-bias#)/720                                      
if ystep&lt;bias# then ystep=bias#                                           
if i=505 and CVT(504)&lt;203 then                                            
 circle(XORG+I/1440*490,yorg-Ystep),7,12    `ident fillrate start         
 circle(XORG+I/1440*490,yorg-Ystep),8,12                                  
 fillchk=1                                                                
end if                                                                    
if CVT(504)&gt;131 then pset (XORG+I/1440*490,york-Ystep),10                 
332 k$=inkey$:if k$=&#34;&#34;then 333                                            
    rem *** Interrupt Sequence ***                                        
    for rmdr=i to 1440:CVT(rmdr)=yval:next rmdr                           
    colr=15                                                               
    ovlflg=0  `disable any overlaying on an abort sequence                
    fillchk=0:fillrate=0                                                  
    gosub 7000                                                            
    goto 420  `escape sequence                                            
333 rem metronome setup for 10 dorsiflexions                              
    rem start signal                                                      
    if i=48 then sound 500,10                                             
    iraw=i/39:iint=int(i/39)                                              
    if i&gt;80 and i&lt;470 and iraw=iint then sound 1200,1                     
335 gosub 2000   `gosub 2000 get input subroutine                         
336 CVT(I)=yval                                                           
    if i=504 then ystep=yval                                              
    if ydelta#&gt;maxdelta# then maxdelta#=ydelta#                           
    if ydelta#&lt;mindelta# then mindelta#=ydelta#                           
400 LINE (XORG+(I-1)/1440*490,YORG-CVT(I-1))-(XORG+I/1440*490,YORK-CVT(I))
    ,15                                                                   
408 NEXT I                                                                
    rem *** Routine to find trace endpoint and calculate filltime ***     
if fillchk=1 then                                                         
            `find the trace endpoint                                      
for i=505 to 1410                                                         
            `scan through all saples                                      
cvtsum1=0:cvtsum2=0                                                       
for n=1 to 30:cvtsum1=cvtsum1+cvt(i+n-35):cvtsum2=cvtsum2+cvt(i+n):next   
cvtavg1=cvtsum1/30:cvtavg2=cvtsum2/30                                     
diff=(cvtavg2-cvtavg1)                                                    
if diff &gt; -.50 and cvt(i) &lt; .10 * (cvt(504)-bias#) + bias# then           
for n=1 to 30                                                             
if abs(cvt((i-15)+n)-cvt(i))&gt;9 then 409   `artifact rejection             
next n                                                                    
fulptr=i                                                                  
if cvt(fulptr)&lt;7 then 410  `don&#39;t print endpoint circle (bottom)          
circle(XORG+fulptr/1440*490,YORG-CVT(fulptr)),7,12   `ident fillrate sto  
circle(XORG+fulptr/1440*490,YORG-CVT(fulptr)),8,12                        
goto 410                                                                  
end if                                                                    
409 next i                                                                
       fulptr=1419                                                        
       if cvt(fulptr)&lt;7 then 410  `don&#39;t print endpoint circle (bottom)   
       circle(XORG+fulptr/1440*490,YORG-CVT(fulptr)),7,12   `ident        
       fillrate sto                                                       
       circle(XORG+fulptr/1440*490,YORG-CVT(fulptr)),8,12                 
410    fillrate= (fulptr-504)/24                                          
       fillrate=int(fillrate*10)/10                                       
       fillchk=0                                                          
end if                                                                    
locate 24,28:print &#34;Refill Time (SEC): &#34;;using &#34;##.#&#34;;fillrate;           
deltamax#=(maxdelta#-mindelta#)                                           
if deltamax#=0 then deltamax#=1                                           
gosub 2600  `do the nominal gain adjust                                   
420 rem &lt;end of pass&gt;                                                     
422 LET K$=INKEY$:IF K$=&#34;x&#34; OR K$=&#34;X&#34; THEN STOP                           
424 IF K$=&#34;S&#34; OR K$=&#34;s&#34; THEN GOSUB 5000 ` FILE ROUTINE                    
425 IF K$=&#34;O&#34; OR K$=&#34;o&#34; THEN gosub 9000 ` overlay handler                 
427 IF K$=&#34;&#34; THEN 422   `wait for keypress                                
460 GOTO 4522                                                             
465 rem                                                                   
       DIRECTORY                                                          
       cls                                                                
       files d$+pth$                                                      
       locate 24,5:print&#34;Press any key to continue:&#34;;                     
468    k$=inkey$:if k$=&#34;&#34; then 468                                        
       cls                                                                
       gosub 11000  `display setup                                        
       if vect=2 then goto 9000                                           
                  `return to overlay routine                              
       goto 5000  `return to file routine                                 
1000                                                                      
    REM introduction                                                      
1004                                                                      
    LOCATE 10,27:PRINT&#34;CVI TEST AND STORE OPTION&#34;                         
1006                                                                      
    LOCATE 15,15:PRINT&#34;PRESS SPC BAR TO START TEST, ESC TO RETURN TO      
    SYSTEM&#34;                                                               
1010                                                                      
    LET K$=INKEY$:IF K$=&#34;&#34; THEN 1010                                      
1020                                                                      
    IF asc(K$)=27 THEN SYSTEM                                             
1024                                                                      
    IF K$=&#34;S&#34; OR K$=&#34;s&#34; THEN GOSUB 5000:goto 420  `FILE ROUTINE           
1025                                                                      
    IF K$=&#34;x&#34; OR K$=&#34;X&#34; THEN CLS:STOP                                     
1030                                                                      
    if k$=&#34; &#34; then RETURN                                                 
1040                                                                      
    goto 10010                                                            
1500                                                                      
    rem *** Calibrate message ***                                         
1520                                                                      
    line(130,195)-(500,255),15,bf                                         
1530                                                                      
    locate 16,23:print &#34; Attention|| System is Calibratine &#34;              
1540                                                                      
    locate 17,23:print &#34; Wait until finished, then Retest. &#34;              
1545                                                                      
    calflag=0                                                             
1560                                                                      
    return                                                                
2000                                                                      
    REM ***Get input value from A/D converter***                          
    `includes software fixes for lousy a/d converter equipment            
for smpl=1 to 5  `take 5 samples                                          
out &amp;h02f0,&amp;h08  `strobe HOLD and take a sample                           
out &amp;h02f0,&amp;h18  `reset for next sample                                   
for dly=1 to 86:next dly                                                  
let msb=inp(&amp;h02f6)                                                       
let lsb=inp(&amp;h02f6)                                                       
tword(smpl)=(256*msb+lsb)                                                 
next smpl                                                                 
for g=1 to 4     `bubble sort for median value                            
for h=1 to 4                                                              
if tword(h)&gt;tword(h+1) then                                               
temp=tword(h)                                                             
tword(h)=tword(h+1)                                                       
tword(h+1)=temp                                                           
end if                                                                    
next h                                                                    
next g                                                                    
2047                                                                      
    csword#=tword(3)                                                      
                    `choose median value                                  
    TEMP#=cswored#/65536.0#*210.0#                                        
    ydelta#=(temp#-ybase#)                                                
    yval=G#*ydelta#+bias#                                                 
    if yval&gt;210 then yval=210                                             
    if yval&gt;207 and calflag=1 then gosub 1500                             
    if yval&lt;0 then yval=0                                                 
2050                                                                      
    RETURN                                                                
2600                                                                      
    rem &lt;&lt; Nominal Gain adjust &gt;&gt;                                         
    maxpixel#=195.00#                                                     
    G#=(maxpixel#-bias#)/deltamax#                                        
                   `set the new gain                                      
    if G#&gt;gmax# then G#=gmax#                                             
2610                                                                      
    return                                                                
4005                                                                      
    gosub 11100  `redraw cvi display                                      
4060                                                                      
    FOR I=1 TO 1440                                                       
4070                                                                      
    LINE(XORG+(I-1)/1440*490,YORG-CVT(I-1))-(XORG+I/1440*490,YORG-CVT(I)),
    15                                                                    
4080                                                                      
    NEXT I                                                                
4085                                                                      
    LOCATE 23,5:PRINT&#34;X=RETURN TO DOS  &lt;Spc Bar&gt;=CVI TEST  O=OVERLAY      
    S=STORE/R                                                             
    locate 3,5:color 15:print patdat$;&#34; | | &#34;;pattim$;  
    locate 3,31:print &#34;Patient: &#34;;name$;:locate 3,53:print &#34;Age: &#34;;age;   
    locate 3,64:print &#34;&lt;&#34;;leg$;&#34; Leg&gt;&#34;;                                   
    locate 24,28:print &#34;Refill Time (SEC): &#34;;using &#34;##.#&#34;;fillrate;       
4090                                                                      
    K$=&#34;&#34;:RETURN                                                          
5000                                                                      
    REM FILE HANDLER                                                      
5001                                                                      
    c=0                                                                   
5005                                                                      
    LINE(75,68)-(565,278),12,bf                                           
5010                                                                      
    LOCATE 23,5:PRINT&#34;                                                    
5170                                                                      
    LOCATE 8,14:PRINT&#34;&lt;S&gt;AVE FILE&#34;                                        
5175                                                                      
    LOCATE 10,15:PRINT &#34;FILE NAME&#34;                                        
5177                                                                      
    LOCATE 12,13:PRINT d$;&#34;     .DAT&#34;                                     
5190                                                                      
    LOCATE 15,12:PRINT&#34;&lt;R&gt;ETRIEVE FILE&#34;                                   
5210                                                                      
    LOCATE 17,15:PRINT&#34;FILE NAME&#34;                                         
5230                                                                      
    LOCATE 19,13:PRINT d$;&#34;     .DAT&#34;                                     
5340                                                                      
    LOCATE 6,14:PRINT&#34;&lt;M&gt;AIN MENU&#34;:locate 6,50:print&#34;&lt;D&gt;irectory&#34;         
5400                                                                      
    REM ** Input handler **                                               
5410                                                                      
    LET K$=INKEY$:IF K$=&#34;&#34; THEN 5410                                      
5420                                                                      
    IF K$=&#34;M&#34; OR K$=&#34;m&#34; THEN colr=11:GOTO 7000  `REDRAW DISPLAY           
5430                                                                      
    IF K$=&#34;R&#34; OR K$=&#34;r&#34; THEN GOTO 5510                                    
5440                                                                      
    IF K$=&#34;S&#34; OR K$=&#34;s&#34; THEN GOTO 5460                                    
    if k$=&#34;D&#34; or k$=&#34;d&#34;0 then vect=1:goto 465                             
5450                                                                      
    GOTO 5410                                                             
5460                                                                      
    LOCATE 12,15,1   `SAVE                                                
5465                                                                      
    PRINT &#34;*&#34;;                                                            
5470                                                                      
    I$=INKEY$:IF I$=&#34;&#34; THEN 5470                                          
5474                                                                      
    IF ASC(I$)=13 THEN c=0:goto 5600                                      
5475                                                                      
    IF ASC(I$)=8 THEN GOSUB 6750:goto 5470                                
5476                                                                      
    IF ASC(I$)=27 THEN 5000                                               
5477                                                                      
    IF ASC(I$)&lt;48 OR ASC(I$)&gt;122 THEN 5470                                
5478                                                                      
    IF ASC(I$)&gt;57 AND ASC(I$)&lt;64 THEN 5470                                
5479                                                                      
    IF ASC(I$)&gt;90 AND ASC(I$)&lt;97 THEN 5470                                
5490                                                                      
    IF C&lt;8 THEN sd$=sd$%+I$:PRINT I$;:C=C+1                               
5500                                                                      
    GOTO 5470                                                             
5510                                                                      
    LOCATE 19,15,1   ` RETRIEVE ROUTINE                                   
5520                                                                      
    PRINT &#34;*&#34;;                                                            
5530                                                                      
    I$=INKEY$:IF I$=&#34;&#34; THEN 5530                                          
5540                                                                      
    IF ASC(I$)=13 THEN c=0:goto 6600                                      
5550                                                                      
    IF ASC(I$)=8 THEN GOSUB 6750:goto 5530                                
5560                                                                      
    IF ASC(I$)=27 THEN 5000                                               
5570                                                                      
    IF ASC(I$)&lt;48 OR ASC(I$)&gt;122 THEN 5530                                
5580                                                                      
    IF ASC(I$)&gt;57 AND ASC(I$)&lt;64 THEN 5530                                
5590                                                                      
    IF ASC(I$)&gt;90 AND ASC(I$)&lt;97 THEN 5530                                
5595                                                                      
    IF C&lt;8 THEN rt$=rt$+I$:PRINT i$;:C=C+1                                
5597                                                                      
    GOTO 5530                                                             
5600                                                                      
    REM ** Output file to Disk **                                         
5605                                                                      
    ON ERROR GOTO 6710                                                    
5610                                                                      
    FILE$=d$+pth$+SD$+&#34;.DAT&#34;:SD$=&#34;&#34;                                       
5620                                                                      
    OPEN &#34;O&#34;,#1,FILE$                                                     
5630                                                                      
    FOR SAMPLE=1 TO 1440                                                  
5640                                                                      
    WRITE #1,CVT(SAMPLE)                                                  
5650                                                                      
    NEXT SAMPLE                                                           
    write #1,kname$,age,leg$,patdat$,pattim$,fillrate                     
5660                                                                      
    CLOSE #1                                                              
    colr = 15                                                             
5670                                                                      
    ovlflg=0:GOTO 7000 ` REDRAW DISPLAY                                   
6600                                                                      
    REM **** INPUT FILE FROM DISK *******                                 
6610                                                                      
    FILE$=d$+pth$+RT$+&#34;.DAT&#34;:RT$=&#34;&#34;                                       
6620                                                                      
    OPEN &#34;I&#34;,#1,FILE$                                                     
6630                                                                      
    FOR SAMPLES =1 TO 1440                                                
6640                                                                      
    INPUT #1,CVT(SAMPLE)                                                  
6650                                                                      
    NEXT SAMPLE                                                           
    input #1,name$,age,leg$,patdat$,pattim$,fillrate                      
6660                                                                      
    CLOSE 1                                                               
    colr = 11                                                             
6670                                                                      
    ovlflg=0:GOTO 7000   ` DISPLAY NEW DATA                               
6700                                                                      
    REM *** Error Handling **                                             
6705                                                                      
    LOCATE 23,5:PRINT &#34;FILE NOT FOUND|&#34;:GOTO 6720                         
6710                                                                      
    LOCATE 23,5:PRINT &#34;DISK DRIVE NOT READY|&#34;                             
6720                                                                      
    FOR DLY=1 TO 55000:NEXT DLY                                           
    close 1                                                               
6730                                                                      
    RESUME 5000                                                           
6740                                                                      
    END                                                                   
6750                                                                      
    REM ***CORRECTION ALGORITHM***                                        
6760                                                                      
    IF POS(X)&lt;=16 THEN RETURN                                             
6770                                                                      
    C=C-1                                                                 
6780                                                                      
    SD$=LEFT$(SD$,C)                                                      
6785                                                                      
    RT$=LEFT$(RT$,C)                                                      
6790                                                                      
    BKS=POS(X)                                                            
6795                                                                      
    BKY=CSRLIN                                                            
6800                                                                      
    LOCATE BKY,(BKS-1)                                                    
6805                                                                      
    PRINT&#34;.sub.-- &#34;;                                                      
6810                                                                      
    LOCATE BKY,(BKS-1)                                                    
6820                                                                      
    RETURN                                                                
7000                                                                      
    REM reconstruct display and data routines                             
7001                                                                      
    CVT(0)=0                                                              
    gosub 11100  `redraw cvi display                                      
7060                                                                      
    for i=1 to 1440                                                       
7070                                                                      
    LINE(XORG+(I-1)/1440*490,YORG-CVT(I-1))-(XORG+I/1440*490,YORG-CVT(I)),
    15                                                                    
    if ovlflg=1 then                                                      
    LINE(XORG+(I-1)/1440*490,YORG-overlay(I-1))-(XORG+1/1440*490,YORG-over
    lay(I                                                                 
    end if                                                                
7080                                                                      
    NEXT I                                                                
7085                                                                      
    LOCATE 23,5:PRINT&#34;X=RETURN TO DOS  &lt;Spc Bar&gt;=CVI TEST  O=OVERLAY      
    S=STORE/R                                                             
    locate 3,5:color colr:print patdat$;&#34; | | &#34;;pattim$;
    8                                                                     
    locate 3,31:print &#34;Patient: &#34;;name$;:locate 3,53:print &#34;Age: &#34;;age;   
    locate 3,64:print &#34;&lt;&#34;;leg$;&#34; Leg&gt;&#34;;                                   
    locate 24,28:print &#34;Refill Time (SEC): &#34;;using &#34;##.#&#34;;fillrate;       
    color 15                                                              
7090                                                                      
    K$=&#34;&#34;:RETURN                                                          
8000                                                                      
    rem *** Wait on sensor temperature stabilization ***                  
       cls:screen 9                                                       
       line (0,0)-(639,349),15,b                                          
       line (3,3)-(636,346),15,b                                          
       G#=10.00#   `set gain value                                        
       bias#=75.00#  `sets bias to active range                           
       locate 2,5                                                         
       print &#34;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; CVI Test                   
       &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;                                         
       locate 4,5                                                         
       print &#34;Attach the optical sensor to the patient&#39;s leg using the    
       adhesive                                                           
       locate 5,5                                                         
       print &#34;collar. Locate the sensor four inches above the ankle on    
       the                                                                
       locate 6,5                                                         
       print &#34;interior side of the leg.&#34;                                  
       locate 8,5                                                         
       print &#34;Plug the sensor into the connector on the Powerpoint        
       Hemopulse un                                                       
       locate 10,5                                                        
       print &#34;&lt;Press any key when finished, (B) to Bypass warmup&gt;&#34;        
8010   k$=inkey$:if k$=&#34;&#34; then 8010                                       
       if k$=&#34;B&#34; or k$=&#34;b&#34; then return                                    
       locate 15,5                                                        
       print &#34;Please remain stationary while the sensor temperature       
       stabilizes.                                                        
8020   locate 18,25                                                       
       print &#34;Calibrating - please wait.&#34;                                 
       let stime|=timer                                                   
8025   k$=inkey$:if k$=&#34;B&#34; or k$=&#34;b&#34; then return                          
       if (timer-stime|) &lt;15 then 8025    `start 15 second minimum wait   
8027   rem stabilization routines                                         
       locate 18,25                                                       
       print &#34;Temperature now stabilizing&#34;                                
       for i=1 to 100   `get 100 conseq. samples                          
       gosub 2000   `get input                                            
       let stemp(i)=temp#*g#                                              
       next i                                                             
       for dly=1 to 50000:next dly                                        
       locat 18,25                                                        
       print &#34;        &#34;  `toggle the prompt                               
       k$=inkey$:if k$=&#34;B&#34; or k$=&#34;b&#34; then return                          
8030   rem &lt;&lt; Average Filter &gt;&gt;                                           
       for j=1 to 100                                                     
       let savg=savg+stemp(j)                                             
       next j                                                             
       savg=savg/100                                                      
       if abs(savg-lastavg) &lt; .720 then return                            
       lastavg=savg:savg=0                                                
       if (timer-stime) &gt;180 then return                                  
       for dly=1 to 35000:next dly                                        
       yavg#=0   `reset for next try                                      
       goto 8027                                                          
9000                                                                      
    rem ** Handle Overlay routine **                                      
9001                                                                      
    c=0                                                                   
9005                                                                      
    LINE(75,68)-(565,278),12,bf                                           
9010                                                                      
    LOCATE 23,5:PRINT&#34;                                                    
9190                                                                      
    LOCATE 15,15:PRINT&#34;&lt;O&gt;VERLAY FILE&#34;                                    
9210                                                                      
    LOCATE 17,15:PRINT&#34;FILE NAME&#34;                                         
9230                                                                      
    LOCATE 19,13:PRINT d$;&#34;     .DAT&#34;                                     
9340                                                                      
    LOCATE 6,14:PRINT&#34;&lt;M&gt;AIN MENU&#34;:locate 6,50:print&#34;&lt;D&gt;irectory&#34;         
9400                                                                      
    REM ** Input handler **                                               
9410                                                                      
    LET K$=INKEY$:IF K$=&#34;&#34; THEN 9410                                      
9420                                                                      
    IF K$=&#34;M&#34; OR K$=&#34;m&#34; THEN colr=11:GOTO 7000  ` REDRAW DISPLAY          
9430                                                                      
    IF K$=&#34;O&#34; OR K$=&#34;o&#34; THEN GOTO 9510                                    
    IF K$=&#34;D&#34; or k$=&#34;d&#34; then vect=2:goto 465                              
9440                                                                      
    goto 9410                                                             
9510                                                                      
    LOCATE 19,15,1    ` overlay ROUTINE                                   
9520                                                                      
    PRINT &#34;*&#34;;                                                            
9530                                                                      
    I$=INKEY$:IF I$=&#34;&#34; THEN 9530                                          
9540                                                                      
    IF ASC(I$)=13 THEN c=0:goto 9600                                      
9550                                                                      
    IF ASC(I$)=8 THEN GOSUB 6750:goto 9530                                
9560                                                                      
    IF ASC(I$)=27 THEN 9000                                               
9570                                                                      
    IF ASC(I$)&lt;48 OR ASC(I$)&gt;122 THEN 9530                                
9580                                                                      
    IF ASC(I$)&gt;57 AND ASC(I$)&lt;64 THEN 9530                                
9590                                                                      
    IF ASC(I$)&gt;90 AND ASC(I$)&lt;97 THEN 9530                                
9595                                                                      
    IF C&lt;8 THEN rt$=rt$+I$:PRINT I$;:C=C+1                                
9597                                                                      
    GOTO 9530                                                             
9600                                                                      
    REM **** INPUT FILE FROM DISK *******                                 
9605                                                                      
    ON ERROR GOTO 10700                                                   
9610                                                                      
    FILE$=d$+pth$+RT$+&#34;.DAT&#34;:RT$=&#34;&#34;                                       
9620                                                                      
    OPEN &#34;I&#34;,#1,FILE$                                                     
9630                                                                      
    FOR SAMPLE =1 TO 1440                                                 
9640                                                                      
    INPUT π1,overlay(SAMPLE)                                           
9650                                                                      
    NEXT SAMPLE                                                           
    `input #1,nothing$,nothing$                                           
9660                                                                      
    CLOSE 1                                                               
    colr = 11                                                             
9670                                                                      
    ovlflg=1:GOTO 7000   ` DISPLAY NEW DATA                               
10700                                                                     
    rem ** Error Handler for overlay **                                   
10705                                                                     
    LOCATE 23,5:PRINT &#34;FILE NOT FOUND|&#34;                                   
10720                                                                     
    FOR LDY=1 TO 55000:NEXT DLY                                           
    close 1                                                               
11000                                                                     
    REM DISPLAY SETUP                                                     
       LOCATE 1,33:PRINT CHR$(3) CHR$(3)  &#34; CVI DISPLAY &#34;  CHR$(3)        
       CHR$(3)                                                            
       LINE (28,48)-(590,298),15,B                                        
       LINE (74,67)-(566,279),15,B                                        
       LOCATE 21,8:PRINT USING G$;0: LOCATE 21,29:PRINT USING G$;10       
       locate 21,18:print using g$;5                                      
       LOCATE 21,50:PRINT USING G$;30 : LOCATE 21,69:PRINT USING G$;50    
       locate 21,39:print using g$;20 : locate 21,59:print using g$;40    
       LOCATE 5,15:PRINT&#34;1.00&#34; : LOCATE 8,5:PRINT&#34;0.80&#34;                   
       LOCATE 11,5:PRINT&#34;0.60&#34;: LOCATE 14,5:PRINT&#34;0.40&#34;                   
       LOCATE 17,5:PRINT&#34;0.20&#34;: LOCATE 20,5:PRINT &#34;0.00&#34;                  
       LOCATE 2,28:PRINT&#34; &lt;LR Rheography vs Seconds&gt; &#34;                    
return                                                                    
11100                                                                     
    REM display area - blanking                                           
       LINE (76,58)-(565,278),0,BF                                        
       FOR I=0 TO 8:LINE(I*490/12+238.334,68)-(I*490/12+238.334,278),11:NE
       XT I                                                               
       for i=0 to 10:line(i*163/10+75,68)-(i*163/10+75,278),11:next i `10 
       secon                                                              
       FOR I=0 TO 10:LINE(75,I*210/10+68)-(565,I*210/10+68),11:NEXT I     
       `grid                                                              
       LINE (75,173)-(565,173),12           `center black line            
       LOCATE 1,33:PRINT CHR$(3) CHR$(3)                                  
       LOCATE 1,48:PRINT CHR$(3) CHR$(3)                                  
return                                                                    
__________________________________________________________________________
 
    
     From the above disclosure of the general principles of the present invention and the preceding detailed description, those skilled in this art will readily comprehend the various modifications to which the present invention is susceptible. Therefore, the scope of the invention should be limited only by the following claims and equivalents thereof.