Method for monitoring infusion of intravenous fluid into a patient
TECHNICAL FIELD 
     This invention relates to a method and apparatus for monitoring the infusion of intravenous fluid into a patient. In particular, it pertains to a method and apparatus for indirectly measuring the infusion of liquids into a patient by monitoring the decreasing weight of an intravenous fluid receptacle as fluid flows from the receptacle to the patient. 
     BACKGROUND ART 
     It is often necessary, in the administration of intravenous fluids to a patient, to know exactly how much fluid a particular patient has received over a given period of time. This is particularly true in emergency resuscitation of a patient having a large blood loss. The amount of fluid accepted by a patient can give important indications as to the extent and the nature of the injury to the patient. Moreover, knowledge of the amount of fluid intravenously accepted by a patient can have a direct bearing on the nature of the treatment administered to the patient. 
     Current methods for measuring flow of intravenous fluid into a patient are labor intensive, and fraught with error. In particular, intravenous fluid such as blood, plasma, and saline solution are contained in bags in carefully metered amounts, and hung from a fluid administering support structure. The monitoring of the fluid infused in the patient is accomplished through visual observation and manual calculation by a nurse or other qualified person. The liquid volume of the bags is monitored visually as the liquid is infused into the patient. When one of the bags is emptied, it is removed and another is hung on the support structure to replace it. The replacement of bags, and the volume of each of the bags that are removed or added, are recorded on a &#34;nursing sheet&#34;. From this sheet, the volume of flow over a particular period of time is calculated. As will be appreciated, this procedure can be very cumbersome, especially in emergency situations. 
     SUMMARY OF THE INVENTION 
     The problems outlined above are in large measure solved by the method and apparatus of monitoring infusion of intravenous fluid into a patient in accordance with the present invention. Specifically, the present invention provides for automatic monitoring of the amount of fluid infused into a patient without the need for visual inspection or manual calculations. 
     The method of measuring fluid flow into a patient in accordance with the present invention broadly includes the steps of taking a plurality of samples of the weight of the receptacle, calculating the difference between succeeding weight samples, comparing the calculated weight difference against a predetermined quality control criteria to ensure against invalid samples due to changing of bags, or the like, taking additional samples if the criteria are not met, and converting the weight loss into volume of fluid infused into a patient. 
     The apparatus for practicing the method in accordance with the present invention broadly includes a transducer for measuring the weight loss of a fluid receptacle as fluid flows from the receptacle into a patient and converting the weight of the receptacle into an analog electrical signal, an amplifier for increasing the power of the electrical signal, an analog to digital converter, and a processor for manipulating the digital data received from the analog digital converter. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of an apparatus for monitoring infusion of intravenous fluid into a patient in accordance with the present invention; 
     FIG. 2 is an electrical schematic diagram of the present invention; 
     FIG. 3 is a schematic flow chart depicting the data processing methodology for monitoring the infusion of intravenous liquid into a patient in accordance with the present invention; and 
     FIGS. 4a, 4b, and 4c are interrelated portions of a detailed flow chart for implementing the methodology depicted in FIG. 3. 
    
    
     DETAILED DESCRIPTION OF THE DRAWINGS 
     Referring to the drawings, an apparatus 10 for monitoring infusion of intravenous fluid into a patient in accordance with the present invention broadly includes a weight sensing transducer 12, a transducer power supply 14, a direct current amplifier 16, an isolation and ground referencing amplifier 18 including an adjustable regulator 20, an analog to digital converter 22, and a computer and display terminal 24. A rack 26 is suspended from weight transducer 12 by hook 28. A plurality of fluid containing bags 30 are carried by rack 26. 
     The weight sensing transducer 12 generates an analog signal corresponding to the weight of the rack 26 and fluid bags 30. The signal is transmitted, via intervening circuitry, to the analog to digital converter 22. The analog to digital converter 22 provides a digital signal, to computer 24, that corresponds to the weight suspended from hook 28 of transducer 12. The circuitry of apparatus 10 will be described in greater detail, with reference to FIG. 2, after the below detailed description of the flow charts depicted in FIGS. 3 and 4. 
     The weight indicating data received by computer 24 will decrease, at an approximately linear rate, as liquid is dispensed from bags 30 and is infused into a patient. The decreasing weight information can be readily converted into the amount of fluid infused into a patient. The weight data will also change (increase) as new bags are placed on rack 26, and will change (increase or decrease) when rack 26 is jarred. The volume of fluid infused into a patient is determined in accordance with the present invention by disregarding large changes in weight (due to addition of fluid bags to rack 26 or due to jarring of rack 26), and calculating the fluid infused only from weight data that decreases in approximately linear fashion. 
     The basic steps for determining the amount of fluid infused into a patient in accordance with the present invention can be understood with reference to FIG. 3. Weight data must first be acquired from the transducer 12 and entered into the computer terminal 24 in digital format, as shown in functional block 400. The data is preferably acquired as a set of multiple readings. The multiple readings are averaged in block 402, and each reading is compared against the average to ensure the validity of each reading used to make up an individual sample. If at least two valid data samples have been acquired, block 404, an inquiry will be made as to whether the last calculation of infusion rate fell within acceptable limits, block 406. 
     The overall program flow will branch to functional block 408 to compute the fluid infusion rate, if the previous calculation of infusion rate was acceptable. Infusion rate is calculated at functional block 408 by comparing the most recent data sample with the next most recent sample, and dividing by the time elapsed between taking of the two samples. The calculated infusion rate is next compared to predetermined upper and lower limits, functional block 410. If the newly calculated infusion rate is acceptable, program flow will branch to functional block 412 to calculate the total amount of liquid infused into a patient, and to display the infusion rate and total liquid infused. 
     The infusion rate calculated at functional block 410 will fall within the predetermined acceptance levels only if the infusion rate shows a steady decline of liquid within bags 30. For instance, addition of a new bag to the rack 26 will show a sharp jump in weight, when the data sample taken immediately after a new bag 30 is added to rack 26 is compared to the next most recent data sample. Alternatively, the infusion rate will be outside of accepted limits if the rack 26 is jarred or otherwise moved at the time the weight data is being acquired. In either event, the overall program flow will be directed to functional block 414 if the infusion rate falls outside of accepted limits. 
     Functional block 414 estimates the total amount of fluid infused to a patient based on the last valid data sample, and the last computed valid infusion rate. Program flow is then directed to functional block 400 to acquire a new sample of a plurality of weight readings. 
     The program flow is directed to functional block 416 if the infusion rate calculated from the next most recent data sample fell outside of acceptable limits. Functional block 416 computes the infusion rate based on the most recent data sample and the next most recent data sample in the same manner as is done in functional block 408. The result of the comparison made in functional block 416 is compared against predetermined upper and lower limits in functional block 418. If the comparison shows an acceptable infusion rate, the program flow is directed to functional block 412 for calculation and display of the infusion rate and total liquid infused into a patient. The program flow will be transmitted from block 406 to 412, through functional blocks 416 and 418, if the next most recent data sample showed a large jump in weight, due to the addition of a new bag 30 the rack 26, and the most recent data sample shows an acceptable decrease in weight of the new bag. 
     The comparison of the most recent data sample to the next most recent data sample done in functional block 416 will be outside of acceptable limits if the next most recent data sample was invalid due to jarring of the rack 26. The jarring of the rack 26 would produce a large shift in weight data (either increase or decrease) that would hopefully have settled out by the time the most recent data sample was taken. For that reason, if the comparison of the most recent data sample to the next most recent data sample is determined not to be within acceptable limits in block 418, the program will branch to functional block 420 where the most recent data sample will be compared to two samples prior. As will be appreciated, comparison of the most recent data sample to the data sample two prior will disregard the intermediate, next most recent data sample, when calculating infusion rate. The comparison made in functional block 420 is evaluated against acceptable upper and lower limits in functional block 422. If the comparison is within acceptable criteria, the program will branch to the previously described functional block 412. If the comparison is not within the allowed criteria, the program will branch to previously described block 414. 
     FIGS. 4a, 4b, and 4c comprise a detailed flow chart of the software used to calculate the rate of infusion of intravenous fluids and the total volume of intravenous fluid infused into a patient over a two hour period. A program listing, written in BASIC, for executing the software on a PET Commodore Business Machine, is included at the end of this specification. 
     Function 505 sets up three arrays which are used to accumulate data output from the A/D converter 22. The first array is set up to acquire 100 data readings for each data sample. The program is designed to take 100 data readings to make up one data sample every 30 seconds. A second array, dimensioned V(240), is used to acquire and store the data samples taken from each set of 100 data samples over a two hour period. The third array, dimensioned X(240), is used in conjunction with array V to provide increasing numerical readings, corresponding to decreasing weight data samples, to indicate an increasing volume of fluid infused into a patient, as the weight of the bags 30 decreases. Function 510 is used to initialize variables and constants used throughout processing, as indicated in lines 60 to 140 of the program listing. 
     It takes a short period of time to acquire 100 data readings. A &#34;waste time&#34; loop, function 515, is therefore added prior to the data acquisition function 520 to bring the total elapsed time between taking of data samples to 30 seconds. The 30 second time interval is used in several places in the program. First, successive intervals are cumulatively added to determine elapsed time into the program, function 605, and to print the elapsed time, function 610. The 30 second interval is also used to limit program run time to a two hour period, functions 565 and 570. At two hours run time, the program will branch to function 740, which calculates total run time, and then to function 745 which prints total run time on the screen. The program then terminates. 
     The next part of the program is designed to eliminate invalid data readings that may have been acquired in function 520. Function 525 averages the data readings and stores the average reading. Function 530 sets up a sample test flag which is used to determine that at least 90 data samples are within an acceptable variance of the average calculated in function 525. Function 535 sets up a loop to test all 100 data points acquired and totaled in function 520. Each sample is tested to determine whether it is more than 4.1% greater (function 540) or 6.7% less than the average. The 4.1% and 6.7% values are preferred limits; the limits may vary between 25% greater and 25% less than the average. If the variance is outside the above mentioned criteria, then the data reading is disregarded and processing is directed to functions 550 and 555. Function 550 decrements the test flag set up in function 530 and function 555 decrements the total cumulative reading accumulated in function 520 by the amount of the bad sample. 
     Function 560 tests to see if all 100 data readings have been tested for validity. Function 565 increments the time variable and function 570 tests the time variable to see if it exceeds two hours. If program time does not exceed the two hour maximum, function 575 recalculates the average of the 100 data readings just acquired, using the number of valid data readings that passed through the tests in functions 540 and 545, and the total cumulative reading as amended by function 555. 
     Function 580 tests for the number of valid data readings. The entire batch of 100 data readings will be rejected, and an error flag will be set in function 590, if the number of valid sample data points is 90 or less. Function 595 sets the data sample to an improbable value which will be printed on the screen of terminal 24 as a warning device by function 620. Processing is directed to function 585 if the number of valid sample data points is greater than 90, where the numerical volume of the data sample is subtracted from a predetermined maximum. The substraction step is included so that an increasing value (representing increase of fluid infused into a patient) is generated from the decreasing value (decrease of weight) measured by transducer 12. 
     Processing is next directed to function 600 where the program determines whether or not at least two batches (samples) of data readings have been acquired. Assuming at least two samples exist, processing is directed to functions 605 and 610, both previously described. 
     The program next proceeds to function 615, where the status of the flag set by function 590 is checked to determine whether the most recent data sample is based on more than 90 data readings. The program is branched to function 620, where a warning message is printed on the screen of terminal 24, if the data sample is based on 90 or less weight readings. The flag set at function 590 is then cleared at function 625, and the program proceeds to function 515 to acquire another set of 100 readings. 
     The program next calculates infusion rate from the data samples accepted in the first part of the program. The first step in this portion of the program is to determine whether or not the last calculation of infusion rate made by the program fell within acceptable limits. The determination is made at function 630 by testing the status of a flag set by function 705. Processing is directed to function 635, if the last calculation was valid, where the subscript for the minuend of the difference calculation performed in function 640 is set to point to the previous data sample. Processing then moves to function 640 where the difference between the current sample and the next most recent sample is calculated. The difference is then tested to be within the valid range, function 645. The acceptable range as defined in the program is from zero to M=470 cc. A difference of less than zero would indicate a negative flow of fluids (i.e., more fluid in the bag than the previous reading). A difference greater than 470 cc indicates a flow of fluid that is too rapid (i.e., a flow rate of 940 cc/min, which is a faster flow rate than is possible with intravenous infusion). 
     Processing is directed to function 650 and 655 if the difference in succeeding data samples is outside the acceptable range. Function 650 calculates the (erroneous) change in volume in the IV bags, and function 655 prints the erroneous amount as a warning message on the screen. Function 705 then sets the error flag (w), to be tested at function 630 during processing of the next data sample and directs processing to function 710. Function 710 adds an estimated increment to the value representing total volume of fluid. The estimated value is based on the volume change during the previous interval. Processing is next directed to function 515 to acquire a new batch of sample readings over a 30 second period. 
     The difference calculated in function 640 is accepted for calculating the rate of infusion and the total volume infused, if the difference is within the criteria established at function 645. Processing is directed to function 660 where the actual increment in volume of fluid infused is calculated, based on the actual difference in weight of the current sample and the next most recent sample. The total fluid infused is next calculated at function 715 by adding the increment calculated in function 660 to the cumulative total. The rate of infusion is then calculated at function 720. Function 725 converts the calculations to integers, and function 730 prints the volume of intravenous fluids infused and the rate of infusion on the display of monitor 24. Function 735 resets flags to their initial value, and processing is directed back to function 515 to acquire an additional batch of data samples over the next 30 second period. 
     As described above, an error flag is set by function 705 if the difference in succeeding readings is determined to be outside the valid range at module 645. Setting of the flag will direct the program flow to function 670, when the next data sample is processed through the program. Function 670 sets two subscripts. One subscript is used to reference the next most recent data sample, and a second subscript is used to reference the data sample immediately prior to the next most recent data sample. Function 675 checks the difference between the current data sample and the next most recent data sample. Function 680 tests the difference determined in function 675 for validity in the same manner as described for function 645 above. Processing is directed to function 685 if the difference is determined to be valid, and the increment in volume is calculated at function 685 in the same manner as in function 660. The timer indicator is set at function 690 for calculation of infusion rate based on a 30 second time interval (the time between succeeding data samples). The program flow is directed to function 715 from function 690. Function 715 calculates the total fluid infused based on the actual increment calculated at function 685. 
     Program flow is directed to function 695 if the difference between the current data sample and next most recent data sample, as calculated in function 675, is outside the established criteria. At function 695, the (invalid) increment that was calculated in the previous pass, and added to the overall fluid infused value at function 710, is subtracted from the total fluid infused value. The timer indicator is reset at function 700 for calculation of infusion rate based on a 60 second time interval (the time between the first and third of three data samples). 
     Processing is next directed to function 640 for calculating the difference between data samples. The subscript for the minuend used in the difference calculation was set, by function 670, to point to the data sample prior to the next most recent data sample; i.e., to the data sample two prior to the current sample. Processing is next directed to function 645, and continues as previously described. 
     Referring to FIG. 2, the circuitry of the apparatus 10 in accordance with the present invention will be described in detail. 
     Weight sensing transducer 12 advantageously comprises a uniMeasure/80 weight testing transducer manufactured by the Unimeasure Company of 909 Williamson Loop, Grants Pass, Oreg. 97526. The weight transducer 12 comprises a variable resistor that varies in resistance from 150 to 300 ohms. The weight transducer 12 is electrically connected to power supply 14 via lead 34. 
     Power supply 14 comprises a constant current supply source for the variable resistance 32. The power supply comprises two halves 34, 36 of an LF353N wide bandwidth dual JFET input op-amp semiconductor chip manufactured by National Semiconductor Corporation of 2900 Semiconductor Drive, Santa Clara, Calif. 95051, and an LM334H 3-terminal adjustable current source semiconductor chip 38 also manufactured by National Semiconductor Corporation. Various feedback and biasing resistors 40, 42, 44, 46, 48, with values as indicated in FIG. 2, are connected to the indicated pin numbers of the chip numbers 34, 36, 38. Power supply 14 includes diodes 50, 52, 54; diode 50 being connected to a +12 volt DC power source, and diodes 52, 54 being connected to a -12 volt DC power sources. 
     Power supply 14 is connected to DC amplifier 16 via lead 56. DC amplifier 16 includes two LM310 Voltage Follower semiconductor chips 58, 60 a single op-amp LM307 semiconductor chip 62 and a single LM301A op-amp semiconductor chip 64 all manufactured by the National Semiconductor Corporation. Resistors 66, 68, 70, 72, 74, 76, 78, 80 and 82 are connected to respective chip pins as indicated in the drawing. Capacitors 84, 86 are connected to respective pins of the 301A semiconductor chip 64, as depicted in FIG. 2. The resistors and capacitors referred to above have the values shown in the drawing. A minus 12 volt DC source is connected to pin 3 of the 310 chip 58 via resistor 66. Positive 18 volts DC is provided to the variable 1K ohm resistor 70 as an offset adjustment. A 10K ohm resistor 74, and pin 3 of the 301A chip 64 are connected to ground. Power supply 16 is connected to ground referencing amplifier 18 via lead 88. 
     Ground referencing amplifier 88 comprises one-half of an LM358 low power dual op-amp semiconductor chip manufactured by National Semiconductor Corporation. The amplifier 18 includes input resistors 92, 94, 96, and feedback resistor 98. Values of the resistors are as shown in FIG. 2. Adjustable regulator 20 is connected to the ground referencing amplifier 18 via lead 100. 
     Regulator 20 is based around a LM317 3-terminal adjustable voltage regulator semiconductor chip 102 manufactured by National Semiconductor Corporation. The &#34;voltage in&#34; terminal of the LM317 chip is connected to a +12 volt DC power source. The &#34;voltage out&#34; terminal of the LM317 chip is connected, via lead 100, to the ground referencing amplifier 18. The &#34;voltage in&#34; and &#34;voltage out&#34; terminals are interconnected by diode 104. The &#34;adjustment&#34; terminal is connected to ground via convertible resistor 106 and capacitor 108. Diode 110 and resistor 112 are connected between the adjustment and voltage in terminals of the LN317 chip. The voltage out terminal is connected to ground via capacitor 114. 
     Ground referencing amplifier 18 is connected to the analog to digital converter 22 via lines 116, 118. The analog to digital converter advantageously comprises an AIM 16 analog input module manufactured by Connecticut microComputer, Inc. of 34 Delmar Drive, Brookfield, Conn. 06804. The AIM 16 analog input module is a 16 channel analog to digital converter. An analog signal input to the AIM 16 module is converted to an 8 byte digital signal. The analog to digital converter 22 is connected to the computer and display 24 via data bus 120. ##SPC1##