METHOD AND APPARATUS FOR DIRECT SPECTROPHOTOMETRIC MEASUREMENTS IN UNALTERED WHOLE BLOOD

Abstract: A method and apparatus which allow accurate spectrophotometric determinations of the concentrations of various hemoglobin species in whole blood without hemolysis or dilution. To overcome complex optical properties of whole blood, the invention employs 1) an optical apparatus (10, 11, 12, 13 and 14), designed to maximize the true optical absorbance of whole blood and to minimize the effects of light scattering on the spectrophotometric measurements of concentrations of various constituent components, and 2) methods to correct the hemoglobin concentration measurements for light scattering and for the effects of the finite bandwidth of the substantially monochromatic light. In the optical apparatus, (10-14), (including an optical cuvette (11)) all optical parameters, such as sample thickness, detector size and shape, sample to detector distance, wavelengths, monochromicity, maximum angle of light capture by detector, are optimal values to minimize the contribution of light scattering to the total optical attenuation of unaltered whole blood and maximize contribution of true optical absorbance.

Description: _ χ _ DESCRIPTION METHOD AND APPARATUS FOR DIRECT SPECTROPHOTOMETRIC MEASUREMENTS IN UNALTERED WHOLE BLOOD A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. FIELD OF THE INVENTION This invention relates to a method and apparatus to assess the optical transmittance of a sample of unaltered whole blood at multiple wavelengths to attain an accurate measurement of its total hemoglobin concentration, the concentration of bilirubin, and the concentrations of oxy-, deoxy-, carboxy-, met-, and sulfhemoglobin. BACKGROUND To the best of the Applicants' knowledge, no prior art whether patented or not has ever successfully exploited the optical transmittance of unaltered whole blood to achieve an accurate measurement of the total hemoglobin concentration (THb) in a blood sample that could possibly contain as many as five different species of hemoglobin. Several different properties of whole blood have precluded such measurements. These characteristics include 1) the complex chemical mixture of as many as five individual hemoglobin species that are present in varying concentrations in a typical blood sample, and 2) the complex optical properties of whole blood that result from a combination of true optical absorbance by multiple light-absorbing compounds (including the hemoglobins, bilirubin, and other pigments) , and the pronounced light-scattering ability of the red blood cells that are present in high concentrations. Many prior methods have been devised to measure the total hemoglobin concentration in the complex chemical mixture of oxy-, carboxy-, met-, deoxy-, and sulfhemoglobin that comprise the total hemoglobin composition. For example, Loretz (U.S. Patent 4,357,105) teaches a method whereby the hemoglobin is released from the red blood cells by the process of hemolysis, i.e. by disrupting the red blood cell membrane. Simultaneously, the various hemoglobin species are diluted by reagent solutions that convert them into a single chemical form, cyanmethemoglobin, the concentration of which is then measured spectrophotometrically by conventional apparatus. Figure 1 presents a graph of the extinction coefficients (indicative of optical absorbance) as a function of radiation wavelength for five individual hemoglobin species. Because the individual hemoglobin species differ significantly from each other in their optical absorbance spectra, no method that employs a single wavelength can measure the total hemoglobin concentration spectrophotometrically. Therefore, the chief advantage of the many prior methods that convert the sundry species into a single known species is that only one wavelength is needed for the subsequent spectrophotometric measurement of the resulting single species. The disadvantages of the above-mentioned chemical conversion methods are that 1) hemolysis and accurate dilutions are needed, 2) the reagents are often toxic, 3) chemical conversion is slow, 4) the red blood cells and the chemical nature of the whole blood sample are so drastically altered that the same sample cannot be used for further subsequent analyses of other blood constituents, and 5) the chemical conversion of the various hemoglobin derivatives into a single species makes it impossible to measure the original concentrations of the several individual species. The latter disadvantage is a serious limitation because the concentrations of oxy-, carboxy-, met-, deoxy-, and sulfhemoglobin provide valuable diagnostic information in many different medical applications. In several patented methods (U.S. Patents 4,134,678; 4,013,417; 3,972,614; and 4,997,769), the need for chemical conversion of the various hemoglobin derivatives into a single hemoglobin species has been eliminated by using multiple appropriate wavelengths to measure the concentration of each species. In such methods, the blood sample is either hemolyzed and diluted (Brown et al., U.S. Patent 4,134,678; Raffaele, U.S. Patent 4,013,417) or just hemolyzed (Johansen et al., U.S. Patent 3,972,614; Lundsgaard, U.S. Patent 4,997,769) to eliminate the light scattering by the red blood cells. The hemolyzed sample is then irradiated with at least one distinct wavelength for each of the three, four, or five hemoglobin species presumed to be present in the sample. By measuring the optical density of the hemolyzed sample with at least as many different wavelengths as there are unknown individual hemoglobin species, such methods yield a set of simultaneous equations that can subsequently be solved for the relative concentration of each of the various hemoglobin derivatives. These prior methods eliminate the need for chemically converting the various hemoglobin derivatives into a single species, but they suffer from the disadvantage of requiring a complex, bulky, and expensive apparatus comprised of pumps, plumbing, associated control circuitry, and in some cases, ultrasonic hemolyzers to dilute and hemolyze the blood sample. Finally, the techniques that employ hemolysis have two additional disadvantages: 1) their complicated plumbing systems are prone to clogging by blood residue, and 2) they aspirate and destroy the blood sample so that it cannot be retrieved and subjected to further analysis of other constituents. In whole blood, the major obstacle to making optical measurements is the intense light scattering caused by the highly concentrated red blood cells, e.g. 5.4 X 10" RBCs/μl for human males. Consequently, all prior art has relied exclusively on hemolysis or on both hemolysis and dilution to reduce or eliminate the light scattering caused by red blood cells. This light scattering arises because the blood plasma and the red blood cells have different indices of refraction (B. Barer and S. Joseph, Quart. J. Microsc. Sci. 95:399,1954). Many uncontrollable factors make such light scattering unpredictable from one blood sample to another, including 1) the different plasma protein concentrations that determine the refractive index of plasma, 2) the aggregation and sedimentation of red blood cells in the sample, 3) the different hemoglobin concentrations inside the red blood cells that alter their refractive index, and 4) the size and shape of the red blood cells. The size and shape of the red blood cells differ from one animal species to another; they are also altered by disease states (e.g. sickle-cell anemia and spherocytosis) ; and they are altered by the osmotic pressure of the blood. Thus all prior methods which measure the total hemoglobin concentration and the relative concentrations of individual hemoglobin species have employed hemolysis to eliminate this intense, unpredictable light scattering caused by the red blood cells. Prior art that relies on hemolysis to eliminate the intense light scattering by the red blood cells has the further disadvantage that even after thorough hemolysis the sample can be relatively turbid (L.R. Sehgal et al., Critical Care Medicine, 12:907-909, 1984). This residual turbidity in hemolyzed blood is small compared with the intense light scattering of red blood cells in unaltered whole blood (J.M. Steinke and A.P. Shepherd, IEEE Trans. Biomed. Eng. BME-33:294-301, 1986). Nevertheless, the residual turbidity in hemolyzed blood causes troublesome errors in the hemoglobin measurements. Thus, an additional disadvantage of prior apparatus that rely on hemolysis is the residual turbidity that results from a small number of unlysed red blood cells, lipid particles such as chylomicrons (a normal constituent of plasma that persists after hemolysis) , light- scattering cell fragments produced by the hemolysis process, and other causes that are unknown. Although Lundsgaard (U.S. Patent 4,997,769) teaches a method for dealing with the residual turbidity that remains after the hemolysis process, it would be advantageous to eliminate hemolysis completely and make spectrophotometric measurements directly in unaltered whole blood. The Applicants have found that the scattering of light by unaltered (unhemolyzed) whole blood differs in five crucial ways from the turbidity of hemolyzed blood. First, as mentioned previously, the turbidity of hemolyzed blood is insignificant in magnitude in comparison with the light scattering of unhemolyzed whole blood. This conclusion is reinforced by Figure 2 which shows a measure of light scattering in whole blood before and after hemolysis. For these data, the light scattering in unaltered, whole blood is approximately 20 times greater than after hemolysis. In fact, light scattering by red blood cells in unaltered whole blood is so intense that scattered light predominates over unscattered light after it has passed through as few as 10 layers of red blood cells (C.C. Johnson. J. Assoc. Adv. Med. Instrument. 4:22-27,1970). Prior art was not designed to accommodate the greater magnitude of the scattering effects of unaltered whole blood. Second, a fundamental observation is that red blood cells scatter light at relatively large angles (J.M. Steinke and A.P. Shepherd, Applied Optics 27:4027- 4033,1988). The Applicants have discovered that, even though most of the light is scattered at small angles, the magnitude of large-angle light scattering is sufficient to cause serious errors in spectrophotometric measurements on whole blood. Prior art does not address the problem of designing practical instruments by capturing the large-angle light scattering of unhemolyzed blood. Third, the light scattering by red blood cells varies with wavelength in a complicated manner due to physical factors such as the relative size of red blood cells with respect to the wavelength, and the shape of the red blood cells. Figure 3 shows the wavelength dependence of light scattering by RBCs as predicted by optical theory (R.N. Pittman and B.R. Duling, J. Appl. Physiol. 38:315-320,1975; R.N. Pittman, Ann. Biomed. Eng. 14:119-137,1986). Prior art does not address the complex wavelength dependence of the scattering effects of unaltered whole blood. Fourth, as Figure 4 shows, the light scattering by red blood cells is not only a function of wavelength, but it also depends on the composition of the hemoglobin contained in the red blood cells, i.e. the light scattering depends on the relative concentrations of oxy-, deoxy-, carboxy-, met-, and sulfhemoglobin in the red blood cells. Prior art does not address the complex dependence of light scattering on the concentrations of the individual hemoglobin species in unaltered whole blood. Fifth, many poorly understood, uncontrolled processes occur in unaltered, whole blood that change its optical properties. Such miscellaneous causes of unpredictable light scattering include 1) the different plasma protein concentrations that determine the refractive index of plasma in one sample versus another, 2) the aggregation of red blood cells in the sample, 3) the different hemoglobin concentrations inside the red blood cells that alter their refractive index, 4) the size and shape of the red blood cells, 5) chylomicrons or other light-scattering lipid particles, 6) cell fragments, 7) microscopic clots, and 8) light-sieving effects of sedimented RBCs. As shown in the comparative example below, the apparatus of Lundsgaard, U.S. patent 4,997,769, fails to yield valid results when measuring a sample of unaltered (unhemolyzed) whole blood. Similarly, other prior art that relies on hemolysis such as Brown et al., U.S. Patent 4,134,678; Raffaele, U.S. Patent 4,013,417; and Johansen et al., U.S. Patent 3,972,614 would also fail to yield valid results on unhemolyzed whole blood because these methods also fail to capture the light scattered at large angles by the sample, and because their measurements do not take into account the magnitude, the wavelength dependence, or the hemoglobin-composition- dependence of the light-scattering effects of unaltered whole blood. SUMMARY OF THE INVENTION By making spectrophotometric measurements directly on unaltered whole blood and by correcting for the effects of light scattering on the measurements, the present invention eliminates the need to hemolyze the blood sample and the need to chemically convert the various hemoglobin derivatives to a single species. Thus, the present invention overcomes the previously mentioned disadvantages of prior art that employs hemolysis only, hemolysis and dilution, or chemical conversion. By contrast, the present invention makes appropriate measurements of the light scattering by red blood cells and of other light losses in unaltered, whole blood and then uses its assessment of these light losses to correct mathematically the measurements of total hemoglobin concentration and the concentrations of the individual hemoglobin species. By eliminating the need for a hemolyzing apparatus, the present invention avoids the problems caused by hemolysis such as the fragmentation of red and white blood cells into light- scattering particles. Furthermore, the need for pumps, plumbing, and associated control circuitry is eliminated by use of an inexpensive disposable cuvette. Therefore, the problem of clogging of the apparatus is eliminated, and the nondestructive optical test performed by the present invention preserves the blood sample (with its red blood cells intact) for further subsequent analysis. The present invention includes the following component parts that, employed together and in combination, assess the optical transmittance of a sample of unaltered whole blood to attain an accurate measurement of its total hemoglobin concentration, and the concentrations of the following pigments of interest: bilirubin, oxy-, deoxy-, carboxy-, met-, and sulfhemoglobin: 1. A spectrophotometric apparatus (including an optical cuvette) in which all optical parameters (for example, sample thickness, detector size and shape, sample-to-detector distance, wavelengths, monochromicity, and maximum angle of light capture by detector) are optimal values so as to minimize the contribution of light scattering to the total optical attenuation of unaltered whole blood and so as to maximize the contribution of true optical absorbance. 2. A method for selecting an optimal set of four wavelengths for making the measurements of the concentrations of oxy-, carboxy-, and methemoglobin with the least spectrophotometric error. 3. A set of seven measuring wavelengths, including the four selected by the aforementioned method; wherein the fifth wavelength is chosen specifically from the range of the visible spectrum in which absorption by bilirubin is especially large (475 to 500 nm) ; wherein the sixth wavelength is chosen specifically from the range of the visible spectrum in which absorption by sulfhemoglobin is especially large (615 to 625 nm) ; and wherein the seventh wavelength is chosen from that part of the spectrum where absorbance by bilirubin and each of the five hemoglobin species is as small as possible in comparison with the effects of light scattering, and small compared with the absorption by at least one of the pigments of interest at each of the other six wavelengths. The seventh wavelength, the longest wavelength, is preferably shorter than 675 nm to avoid errors due to the possible presence of indocyanine green dye in the sample and longer than 660 nm to avoid the relatively large absorbance of methemoglobin. 4. A second method to correct the aforesaid hemoglobin and bilirubin concentration measurements for the effects of light scattering by red blood cells, by other specific factors, and by nonspecific factors in unaltered whole blood, wherein the errors due to the various light-scattering losses are treated as functions of the wavelength of the measuring radiation and as mathematical functions of the concentrations of oxy-, carboxy-, met-, deoxy-, and sulfhemoglobin present in each analyzed sample. 5. A third method to correct the aforesaid concentration measurements for the effects of finite bandwidth of the substantially monochromatic measuring wavelengths, wherein the errors due to finite bandwidth of the substantially monochromatic measuring wavelengths are treated as functions of the concentrations of oxy-, carboxy-, met-, deoxy-, and sulfhemoglobin present in each analyzed sample. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 is a graph of absorbance spectra for the five primary hemoglobin species. Figure 2 is a graph comparing the light scattering of unaltered whole blood with that of hemolyzed blood. Figure 3 is a graph of the theoretical wavelength dependence of the scattering of light by red blood cells. Figure 4 is a graph of the wavelength dependence of the light scattering by red blood cells in unaltered whole blood in the present invention for varying hemoglobin compositions of whole blood. Figure 5 is a graph of the wavelength dependence of the nonspecific light-scattering losses in unaltered whole blood for varying hemoglobin compositions of whole blood. Figure 6 is a block diagram of the present invention including the optical geometry of the present invention. Figure 7 is a graph of the errors in the measurements of relative oxyhemoglobin concentration with and without the corrections for nonspecific light scattering. Figure 8 is a flow chart of the method in accordance with the present invention to select four principal measuring wavelengths. Figure 9 is a flow chart of a first method of operating the apparatus of Figure 6, in accordance with the present invention, to correct for light scattering. Figure 10 is a flow chart of a second method of operating the apparatus of Figure 6, in accordance with the present invention, to correct for light scattering. Figure lla-e includes a graphical computer program listing of an embodiment of the method of Figure 8. DETAILED DESCRIPTION 1. Glossary of Terms 1. Specific Scattering Factor: Known factor causing light scattering, and thus light losses, in unaltered whole blood, the predominant example of which is light scattering due to red blood cells (RBCs) . Other specific scattering factors include lipid particles, cell fragments, microscopic clots, and light-sieving effects of sedimented RBCs. 2. Nonspecific Scattering Factor: Unknown factor causing light scattering, and thus light losses in unaltered whole blood 3. Total Light-scattering Losses: The sum of light losses due to light scattering by red blood cells, other known causes, and unknown causes. In other words, the sum of light losses due to Specific and Nonspecific Scattering Factors. 4. a. HbC>2 = oxyhemoglobin b. HbCO = carboxyhemoglobin c. Hi = methemoglobin or hemiglobin d. Hb = reduced hemoglobin e. SHb = sulfhemoglobin f. br = bilirubin g. Tbr = [br] = total bilirubin concentration 5. Total Hemoglobin Concentration (THb) : Sum of the amounts of the various hemoglobin species divided by the volume of blood, i.e., the total amount of hemoglobin in a mixture of oxy-, carboxy-, met-, deoxy-, and sulfhemoglobin divided by the volume of blood. THb = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] + [SHb]; THb' = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] 6. Hemoglobin Fraction: Amount of a given species (such as oxyhemoglobin) divided by the sum of the amounts of oxy-, carboxy-, met-, deoxy-, and sulfhemoglobin, e.g., fraction of Hbθ2 = 0.75 7. Saturation or Relative Concentration: Hemoglobin fraction expressed as a percentage, e.g., Hbθ2 saturation = 75% 8. Apparent Optical Density (OD) or Apparent Absorbance (A) : Logarithm of the total attenuation in light intensity, i.e., OD = A = log jQ (I 0 /I) , where I 0 is the incident intensity and I is the intensity transmitted through the sample. Note that this is not a re¬ definition of Beer's Law because the apparent optical density in unaltered whole blood could be due to a combination of true Beer's Law absorbance and light losses due to scattering. 9. Error Index: The sum of the absolute values of the errors that are induced in the measurement of the relative concentration of the given hemoglobin species (either oxy-, carboxy-, or methemoglobin) due to a 1% (relative) change in each of 0D j ,...,0D . 10. Unaltered Whole Blood: Whole blood that has been neither hemolyzed nor diluted. 2. Optical Geometry,, Other Apparatus, and Mode of Operation Figure 6 shows the presently preferred embodiment of the present invention which includes a digital computer 13; a computer-controlled light source 10 capable of sequentially emitting at least seven different substantially monochromatic wavelengths; an ultra-thin disposable optical cuvette 11; a large-area light detector 12; and electronic circuitry 14 to amplify the detected signal. In operation, a sample of unaltered (undiluted and unhemolyzed) whole blood is placed in cuvette 11 and irradiated with selected wavelengths of radiation chosen in accordance with the criteria and other principles outlined below. Thus, the normal measurement cycle comprises 1) recording the dark current from the photodetector when the light source 10 is turned off, 2) recording the incident light intensity at each of the selected wavelengths, 3) placing a sample of unaltered (undiluted and unhemolyzed) whole blood in the cuvette 11 and inserting it into the light path, 4) recording the light intensity transmitted through the sample at each of the selected wavelengths, 5) computing the apparent optical densities at each of the selected wavelengths, 6) correcting the concentration measurements for the effects of light scattering by the red blood cells and for nonspecific light-scattering losses, 7) correcting for the effects of the finite spectral bandwidth of the plurality of substantially monochromatic wavelengths, and 8) reporting the final results to the operator. In one embodiment, all measurements are made at a substantially constant temperature. Following such a measurement cycle, the operator can remove the disposable cuvette from the instrument and discard the sample, or he can withdraw the blood sample from the cuvette and subject the unaltered blood sample to further hematological analyses. In one embodiment, light source 10 may be a samarium-neon hollow cathode lamp. In another embodiment, light source 10 may be a bank of light- emitting diodes (LED) arranged so that the emissions of each LED pass through a narrow-band optical interference filter before falling on the sample. In yet another embodiment, light source 10 may be a white light source such as a halogen lamp optically coupled to a computer- controlled monochromator. In the first two embodiments, light source 10 may be pulsed at a frequency of approximately 20 Hz in order to achieve a high signal-to- noise ratio by using synchronous detection. Disposable cuvette 11 has a short optical path chosen to minimize total radiation scattering relative to absorbance by minimizing the number of scattering interactions that a photon is likely to undergo with RBCs. Cuvette 11 may have an optical pathlength of 80 to 150 μm. In one embodiment, the optical pathlength is 90±10 μm. Large-area radiation detector 12 is sensitive to the selected measuring radiation frequencies and may be placed within a distance d of from 0 to 10 mm, from cuvette 11. Detector 12 has a large active area and is placed close to cuvette 11 in order to capture radiation scattered at wide angles by the whole blood sample contained within cuvette 11. In one embodiment, the distance d from cuvette 11 to detector 12 is no more than 1.0 mm, the active area of detector 12 is at least 150 mm 2 , and preferably at least 600 mm 2 , and the receiving half angle α of the detector 12, with respect to the point where the incident radiation impinges on the sample, is at least 30° and preferably at least 70°. This optical design minimizes light losses caused by light scattered at large angles. Detector 12 may be a United Detector Technology detector, PIN-25DP (active area = 613 mm 2 ) , or may be an SD-1100-11-21-181 detector from Silicon Detector Corporation. Digital computer 13 may be any type of programmable computer, for example, an Apple Macintosh computer. In order to render the apparatus as portable as possible, digital computer 13 may be a programmed microprocessor, such as one of the family of Motorola 68000 microprocessors. Thus, the overall strategy of the optical configuration of the present invention is to maximize the true optical absorbance of unaltered whole blood and to minimize the effects of light scattering so that the apparent optical density of the sample measured by the detector is due primarily to absorbance with as small a contribution by light scattering as possible. However, it should be noted that the optical geometry presented above, when used alone, does not attain commercially acceptable accuracy, i.e. it does not measure the relative hemoglobin concentrations to an accuracy of 1% or less. The optical apparatus of the present invention achieves commercially acceptable accuracy when used in combination with the corrections (described below) that correct the hemoglobin concentration measurements for the effects of light scattering by the red blood cells, for nonspecific light-scattering losses, and for the effects of the finite spectral bandwidth of the plurality of substantially monochromatic wavelengths. 3. Choice of Principal Four Wavelengths In the one embodiment of the present invention, six of the seven measuring wavelengths are chosen as measuring wavelengths for Hbθ2, HbCO, Hi, Hb, SHb, and bilirubin. Four principal wavelengths among the first six are chosen to measure Hb0 2 , HbCO, Hi and Hb and are chosen to minimize the conversion factors by which errors in the optical density measurements (OD j , ... ,OD ) convert to errors in the measurements of %Hbθ2, %HbC0, and %Hi. The method for selecting these four wavelengths is described as follows. A fixed hypothetical sample of hemolyzed blood whose hemoglobin composition is 85% Hbθ2 and 15% Hb, whose total hemoglobin concentration is 16.11 g/dl (10 mmol/L) , is considered in a hypothetical cuvette whose pathlength is 100 μm. OD 1 ,...,OD 4 are defined as the absorbances of the hypothetical sample at the four wavelengths λ j ,...,λ 4 , thus OD j = (0.85 x e 1Hb02 + 0.15 x e 1Hb )/10 0D 2 = (0.85 x e 2Hb0 2 + 0.15 X e 2Hb )/10 (1) OD3 = (0.85 x e3 jjjjQ2 + 0.15 X ©3Hb) 10 0D 4 = (0.85 x e 4Hb02 + 0.15 x e 4Hb )/10 where the extinction coefficients shown are the millimolar extinction coefficients for the two hemoglobin species at the wavelengths λ j ,...,λ . Note that once λ 1# ,λ are fixed, %Hb0 2 , %HbCO, %Hi, and %Hb are mathematical functions of 0D j ,...,0D 4 as shown in the following equations: (2) [Hbθ2 \Hb02 e lHbCO e \Hi e lHb [HbCO] -2Hb02 e 2HbCO e 2Hi e 2Hb DD2/d [Hi] -1 (3) -3Hb02 e 3HbCO e 3Hi e 3Hb ?D$/d [Hb] 5 4Hb02 e 4HbCO e 4Hi e 4Hb D 4 /d THb' = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] ; %Hb0 2 = 100 x [Hb0 2 ] / THb' ; %HbCO = 100 x [HbCO] / THb' ; %Hi = 100 x [Hi] / THb'; %Hb = 100 x [Hb] / THb'; Here THb' indicates that SHb is left out of the sum. To account for the effects of light scattering when absorbance is small, Applicants devised the following technique: Define ODj' = (max {(0.85 x β iHb02 + °* 15 e lHb^ ' 5 H 10 OD 2 ' = (max {(0.85 x e 2Hb0 2 + 0.15 x e 2Hb ) , 5})/10 OD 3 ' = (max {(0.85 x e 3Hb02 + 0.15 x e 3Hb ) , 5})/10 OD 4 ' = (max {(0.85 x e 4Hb02 + 0.15 x e 4Hb ) , 5})/10 (The extinction coefficients are the millimolar absorptivities.) Thus, whenever the millimolar absorptivity falls below 5, then, for the computation of OD j ' , it is set equal to 5. Then for each of the three species (oxy-, carboxy-, and methemoglobin) , an error index is computed as the sum of the absolute values of the errors that are induced in the measurement of the relative concentration of the given hemoglobin species (either oxy-, carboxy-, or methemoglobin) due to a 1% (relative) change in each of OD j ', ... ,OD 4 ' . Thus: Error Index for oxyhemoglobin = 0.01 ODi d(%Hb0 2 )/d(OD 1 ) |+ 0.01 OD 2 ' |d(%Hb0 2 )/d(OD 2 ) |+ 0.01 ODα |d(%Hb0 2 )/d(OD 3 ) 1+0.01 0D 4 ' |d(%Hb0 2 )/d(OD 4 ) | . Error Index for carboxyhemoglobin = 0.01 ODτ d(%HbCO)/d(OD 1 ) |+ 0.01 OD 2 ' |d(%HbCO)/d(OD 2 ) |+ 0.01 d(%HbCO)/d(OD 3 ) |+0.01 OD 4 ' |d(%HbC0)/d(OD 4 ) |. Error Index for methemoglobin = 0.01 d(%Hi)/d(OD 1 ) |+ 0.01 0D 2 ' |d(%Hi)/d(0D 2 ) |+ 0.01 OD 3 ' d(%Hi)/d(0D 3 ) 1+0.01 0D 4 ' |d(%Hi)/d(0D 4 ) | . The derivatives, e.g. d(%HbC0)/d(0D3) , are taken at the fixed values of 0D 1 ,...,0D 4 determined for the fixed hypothetical sample whose hemoglobin is comprised of 85% Hb0 2 and 15% Hb. An error criterion for the quadruple of wavelengths λ j ,...,λ 4 is then defined as the maximum of these three error indices. The mathematical criterion of the present invention consists in selecting the unique quadruple of wavelengths in the 510-630 nm range which minimizes the error criterion. The wavelengths are searched by 2 nm increments. When the extinction coefficient values determined by the inventors are used, the final four wavelengths selected by this criteria are 522, 562, 584 and 600 nm. When the extinction coefficient values of Zwart et al. are used (A. Zwart, E.J. van Kampen and W.G. Zijlstra, Clinical Chemistry 32: 972-978, 1986), the final four wavelengths selected by this criteria are 518, 562, 580, and 590 nm. Referring now to Figure 8, presented is a flow chart of the method of the present invention to select the unique quadruple of wavelengths, in accordance with the present invention. Beginning in block 81, the Best Error Criterion is set to 10^, and the first quadruple of wavelengths is selected. For example, the first quadruple may be 510, 512, 514, and 516 nm. Control then passes to block 82 where the Error Index for each of Hb0 2 , HbCO, and Hi are computed. Then, control passes to block 83 where the Error Criterion is set to the absolute value of the Error Indices calculated in block 82. Then, in decision block 84, the Error Criterion calculated in block 83 is compared with the Best Error Criterion. If the Error Criterion is less than the Best Error Criterion, control passes to block 85 where the Best Error Criterion is set equal to the Error Criterion and the best quadruple of wavelengths is set equal to the present quadruple of wavelengths. Control then passes to block 86. If, on the other hand, decision block 84 determines that the Error Criterion is not less than the Best Error Criterion, control passes directly to decision block 86. In decision block 86, it is determined whether the present quadruple of wavelengths is equal to the last quadruple of wavelengths, for example, 624, 626, 628 and 630 n . If so, control passes to block 88 where the Best Error Criterion and best quadruple of wavelengths is reported. If, on the other hand, block 86 determines that the last quadruple has not been processed, control passes to block 87 where the next quadruple of wavelengths is formed, and control returns to block 82 for continued processing. To form the next quadruple, only one of the wavelengths at a time is changed by 2 nm. This procedure results in the analysis of all possible combinations of four wavelengths between 510 and 630 nm. Any set having duplicate wavelengths is discarded. Figures lla-e hereto includes a source code listing in LabView graphical language which embodies the method of the flow chart of Figure 8. In practice, the method of Figure 8, either in the form of the source code of Figures lla-e, or in an equivalent form, is used to program a computer to perform the wavelength quadruple selecting method of the present invention. 4. Corrections for Light Scattering by RBCs and for Nonspecific Light Scattering As defined in the Glossary, a Scattering Factor is any specific or nonspecific cause of light scattering, i.e. any factor, known or unknown, that causes light scattering and hence light losses in unaltered whole blood. Examples are red blood cells, lipid particles, red blood cell aggregation, clotting, sedimentation, etc. According to the present invention, n measuring wavelengths are employed to measure k constituent components, with n > k, thereby creating an overdetermined system of equations with respect to the chemical compounds being measured. The n - k extra equations provide a means by which errors due to n - k scattering factors can be compensated. Each specific scattering factor in the above definition is assumed to contribute in a well-defined way to the apparent absorbance spectrum of unaltered whole blood placed within cuvette C. For a given scattering factor y, the contribution to the apparent optical density of unaltered whole blood at wavelength i is denoted OD iy . From these considerations, the following equations result: 0D 1 = 0D labs + 0D lyl + • • • + OD lyp OD 2 = OD j abs + OD 2yl + . . . + OD 2yp 0D n = OD J n„a Q κbcs + + OODD n„, y„ιl + . . . + + OODD,, n p where 1, ... , n are wavelength indices and 1, ... , p are scattering factor indices. Since there are k constituent light-absorbing, chemical compounds to be determined, it follows that n = p + k. 0D i a bs ~- s the P art of the total optical density due to true optical absorption by the k light-absorbing compounds, i.e., 0D iabs/ d = e ixl c xl + e ix2 c x2 + • • • + e ixk c xk where X j , ... , k denote the k chemical identities of the light-absorbing compounds to be measured and c χj , ..., c^ are their concentrations. In the context of the present invention, the attenuation of light due to the presence of the scattering factor y is assumed to obey the relationship OD iy = s iy my d where s y = {S j , s 2y , ..., s ny } is the scattering vector associated with the scattering factor y, and Π , is the magnitude of scattering caused by the scattering factor y. Thus it is possible to write the following matrix equation : e lxl e lx2 e Ltfc s lyl s ly2 e 2xl e 2x2 e 2xk s 2yl s 2y2 ψnxl e nx2 • • • e nxk s nyl s πy2 The Applicants have discovered that the scattering vectors s γ : (where j denotes the scattering factor index) vary with the hemoglobin species present in the sample under test. For example, the scattering vectors s : are different in completely oxygenated blood and blood completely saturated with carbon monoxide. Therefore, in the present invention, the scattering vectors s y] - are described as functions of the concentrations of the hemoglobin species present in the sample under test. Since each scattering vector s y : depends on the hemoglobin species composition of the sample under test, one further distinguishes such scattering vectors as s :(Hb0 2 ), s y :(HbCO), etc. For an arbitrary sample of unaltered whole blood, the appropriate vector s v W J is computed as tn + + • • • • + + '.+ to Here h is the number of hemoglobin species present among the total number k of light-absorbing compounds, and X j , ..., X jj denote the h hemoglobin species being measured. According to the present invention, the following scattering factors have been identified: 1) light scattering by red blood cells, a specific scattering factor denoted by the subscript RBC, and 2) a nonspecific scattering factor, denoted by the subscript NS. The nonspecific scattering factor, discovered unexpectedly by the Applicants, significantly increases the utility of the present invention. Data showing the utility of the nonspecific scattering factor over and above the corrections for light scattering by red blood cells are given in Figure 7 and Table II following the present disclosure of the general method to correct for light scattering. Disclosed are two embodiments of the corrections for light scattering: Embodiments A and B. In Embodiment A, the following rules hold: only light scattering by the red blood cells is considered (so the nonspecific scattering correction is ignored) , and the concentrations of six compounds are measured, namely Hb0 2 , HbCO, Hi, Hb, SHb, and br. In Embodiment B, the following rules hold: both light scattering by red blood cells and nonspecific light scattering are considered, and the concentrations of five compounds are measured, namely Hb0 2 , HbCO, Hi, Hb and br. Both embodiments use the same set of seven wavelengths. As explained above, one wavelength (488 nm) is chosen at which absorbance by bilirubin is relatively large, another wavelength (622 nm) is chosen at which absorbance by sulfhemoglobin is relatively large, and another wavelength (672 nm) is used because light scattering by red blood cells is great in comparison with absorbance by bilirubin and the hemoglobin species. In addition, the mathematical criterion selected an optimal set of four wavelengths (522,562,584, and 600 nm) for measuring Hbθ2, HbCO, Hi with maximum accuracy. If the light source is either a battery of light-emitting diodes combined with optical interference filters or a white light source with a monochromator, these seven wavelengths can be used in either Embodiment A or B of the light-scattering corrections. However, if the samarium-neon hollow-cathode lamp is used, the most appropriate wavelengths among its emission lines are 488.4, 520.1, 562.4, 585.2, 597.5, 621.7, 671.7 nm. Therefore, this set of wavelengths can be used in both Embodiments A and B of the light-scattering corrections. Once the seven wavelengths have been chosen, values for the extinction coefficients for bilirubin and the hemoglobin species can be determined. Therefore, the following equations obtain in Embodiments A and B of the light-scattering corrections. Embodiment A: 0D iabs/ d = e iHb02 CHb0 2 ] + eiHbC0 [HbCO] e iHi [Hi] + e iHb [Hb] + e iSHb [SHb] + e ibr [br] (6A) THb = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] + [SHb] 5 1ΛBC *lRBC(Hb0 2 ) S\RBC(HbCO) s lRBC(Hi) s lRBC(Hb) slRBC( SHb ) -2RBC 3 2ΛBC( HJb0 2> S2RBC(HbCO) s 2RBC(Hi) s 2RBC( Hb ) s 2RBC( SHb ) [Hb0 2 ]/THb 5 3RBC 3 3RBCi Hbo 2) s 3RBC( Hbc °) s 3RBC(Hi) s 3RBC( Hb ) s 3RBC( SHb ) \[HbCO]/THb S 4RBC HRBC( Hb °l) S4RBC(HbCO) s 4RBC(Hi) s 4RBC(Hb) s 4RBC( SHb ) [Hi] /THb *5RBC 55RBC( bθ2) S5RBClHbC0) s 5RBC(Hi) s 5RBC( Hb ) S 5RBCi SHb ) [Hb]/THb 3 6RBC 5 6RBC( Hb0 2) s 6RBC( Hbc °) s 6RBC( Hi ) ε 6RBC(Hb) [SHb] /THb S 6RBC( SHb ) 5 7RBC *7RBC(Hb0 2 ) s 7RBC( Hbc °) S 7RBc( Hi ) s 7RBC( Hb ) S 7RBC( SHb ) (7A) t I Embodiment B: 0D iabs/ d " e iHb02 [Hb0 2 ] + e iHbC0 [HbCO] e im [Hi] + e iHb [Hb] + e ibr [ fer ] ODγ/d e lHb02 e lHbCO e \Hi e \Hb e lbr ε lRBC S INS [Hb0 2 ] ~D 2 /d e 2Hb02 e 2HbCO e 2Hi e 2Hb e 2br S 2RBC S 2NS [HbCO] DD 3 /d e 3Hb02 e 3HbCO e 3Hi e 3Hb e 3br S 3RBC S 3NS [Hi ] 0D 4 /d e 4Hb02 e 4HbCO e 4Hi e 4Hb e 4br S 4RBC S 4NS [Hb] DD 5 /d [br] e 5Hb02 e 5HbCO e 5Hi e 5Hb e Sbr e 5RBC S 5NS DD 6 /d V RBCscat e 6Hb02 e 6HbCO e 6Hi e 6Hb e 6br e 6RBC e 6NS DDη/d NSscat e 7Hb02 e 7HbCO e 7Hi e 7Hb e 7br S 7RBC S 7NS t 0 I (6B) THb' = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] THB' = [HB0 2 ] + [HbCO] + [Hi] + [Hb] 5 1Λ_BC 5 lRBC( Hbo 2) SiRBc(HbCO) S lRBC(Hi) s lRBC( Hb ) S 2RBC S2BBc( b0 2 ) s 2RBC(HbCO) s 2RBC(Hi) s 2RBc( Hb ) [Hb0 2 ]/THb f 3 3RBC 53RBC( Hb 0 2 ) s 3RBCiHbCO) s 3RBC(Hi) s 3RBC(Hb) -4RBC *4RBC(Hb0 2 ) s 4RBc(HbCO) S4RBC( i) s 4RBc(Hb) [HbCO] /THb' -5RBC *5RBC(Hb0 2 ) s 5RBc(HbCO) S 5RBC( Hi ) s 5RBC(Hb) [Hi] /THb 1 3 6RBC HRBC(Hb0 2 ) SβRBCi bCO) S6RBC( i) ε 6RBC( Hb ) [Hb]/THb f '7RBC *7RBC(Hb0 2 ) s 7RBCiHbCO) s 7RBC(Hi) s 7RBC( Ht> ) (7B) to ID I 3 INS 5 lNS (Hb0 2 ) s 1NS (HbCO) S INS ( i ) SlNS iHh) 3 2NS 5 2NS (Hb0 2 ) S2NS (HbCO) S 2NS (Hi ) SiNs i b) [Hb0 2 ] /THb ' 3 3NS ~ 3NS (Hb0 2 ) S 3NS (HbCO) s 3NS (Hi ) s 3 NS (Hb) 3 4N5 S4NS(Hb0 2 ) S 4NS (HbCO) S 4 NS(Hi ) S NS ( Hb ) [HbCO] /THb ' 3 5N5 35NS(Hb0 2 ) S 5NS (HbCO) s 5NS (Hi ) S5NS (Hb) [Hi ] /THb 1 3 6N5 5 6NS (Hb0 2 ) S 6NS (HbCO) s 6NS (Hi ) S β Ns( b) [Hb ] /THb ' 3 7NS S7NS(Hb0 2 ) S 7NS (HbCO) S7NS(Hi ) s 7NS (Hb) (8B) wherein [Hb0 2 ] , [HbCO], [Hi], [Hb] , and [SHb] are the concentrations of the indicated hemoglobin species in the sample, m^^^ and m ΝSscat are magnitudes of light scattering by the red blood cells and by the nonspecific factor, THb = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] + [SHb], and THb' = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] . OD j , ..., OD 7 are the apparent optical densities of a sample of unaltered whole blood measured at each of the seven wavelengths, 488.4, 520.1, 562.4, 585.2, 597.5, 621.7, 671.7 nm, respectively. The method of finding the correct values for the scattering vectors SRBC and S NS when the relative concentrations (e.g., [Hb02]/THb) are initially unknown proceeds as follows. Default values for the scattering vectors SRBC and S NS are chosen to be the scattering vectors S RB c(Hb0 2 ) and S NS (Hb0 2 ) , i.e. those values that are valid in case the sample is comprised purely of oxyhemoglobin. With the vectors S RBC (Hb0 2 ) and S NS (Hb0 2 ) placed into the matrix equation 6A or 6B above, initial values for [Hb0 2 ], [HbCO], [Hi], [Hb], [br], mRB Q ^ t , and [SHb] (Embodiment A) or m NSscat (Embodiment B) are computed. The initial hemoglobin and bilirubin concentrations are not yet accurate enough to report as final results, but they are sufficiently close to the true values to compute more accurate Sgg. and S NS vectors for the given blood sample according to equation 7A or equations 7B and 8B. With the newly computed S j yg C vector (Embodiment A) , or the both the new B^ QQ and S NS vectors (Embodiment B) placed into the matrix equation 6A or 6B above, the quantities [Hb0 2 ], [HbCO], [Hi], [Hb], [br], mgBc^ t , and [SHb] or m N Sscat are recomputed. These quantities are more accurate than their initial values because the SRBC or both S j φc and S NS vectors used in obtaining them are more accurate than those used in the initial estimates. This procedure of using the most recently computed hemoglobin concentrations to compute more accurate -r βC or both BJ^ QQ and S NS vectors and in turn using the most recently computed SRBC or both S^^ and S NS vectors to compute more accurate hemoglobin and bilirubin concentrations provides an iterative scheme whereby the hemoglobin and bilirubin concentrations quickly converge to their final values. In both embodiments A and B, the fourth iteration of the computation of these concentrations is sufficiently accurate to report. Table I shows the values for the scattering vectors S NS (Hb0 2 ), B j røcfHbCO), S NS (HbCO), S RBC (Hb), and S NS (Hb) , which the Applicants have measured and have found to be valid for both present Embodiments A and B of the light-scattering corrections. Figures 4 and 5 show the same data graphically at each of the measuring wavelengths (488.4, 520.1, 562.4, 585.2, 597.5, 621.7, and 671.7 nm) . The present embodiment of the invention does not include measured values for the scattering vectors S RBC (Hi) , S NS (Hi) or S j ygcfSHb) because these less common hemoglobin species usually occur in low concentrations and because the most common hemoglobin species Hb0 2 , HbCO, and Hb usually dominate the blood composition in healthy and diseased patients. However, in Table I are given default values for the vectors s RBc(Hi) , S NS (Hi) and S RB (SHb) . Moreover, the equations are general, so it is within the scope of the present invention to include measured values for these scattering vectors as well. Table I. Scattering Vectors for Various Hemoglobin Species In this table the indices 1, ..., 7 refer to the seven wavelengths 488.4, 520.1, 562.4, 585.2, 597.5, 621.7, and 671.7 n , respectively. e. Scattering vector for SHb: S 1RBC (SHb) 1.000 S 2RBC (SHb) 1.000 S 3RBC (SHb) 1.000 S 4RBC (SHb) 1.000 S jj røc SHb) 1.000 S 6RBC (SHb) 1.000 S 7RBC( SHb ) 1.000 The nonspecific scattering factor (NS) discovered by the Applicants provides a refinement of the more coarse correction for scattering by the red blood cells (RBC) . Table II and Figure 7 show that the nonspecific scattering correction improves the method over and above the accuracy achieved by the RBC correction alone. Table II contains the errors in the measurement of unaltered whole blood fully saturated with carbon monoxide with and without the nonspecific scattering correction. Table II. Efficacy of the Corrections for Nonspecific Light scattering. Standard Deviation of %HbOη %HbCO %Hi %Hb Error RBC Correction only RBC & nonspecific correction 5. Corrections for the Effect of the Finite Spectral Bandwidth of the Light source According to the present invention, a method is used to correct the measurements of the concentrations of Hb0 2 , HbCO, Hi, Hb, SHb, and br for the effects of the finite bandwidth of the substantially monochromatic measuring wavelengths. This method is not necessary when the measuring wavelengths provided by light source B are sufficiently monochromatic, as is the case when the substantially monochromatic wavelengths are provided by isolated emission lines of a hollow cathode lamp. However, if the half-intensity bandwidths of the measuring wavelengths are greater than 1.0 nm, as they would be for a battery of LEDs and optical interference filters, this method proves beneficial. The corrections for the finite spectral width of the light source are necessary because the molar extinction coefficients of the hemoglobin species vary rapidly with wavelength. Thus, when a given spectral width of substantially monochromatic light is used, a range of (wavelength-dependent) extinction coefficients is represented. For fixed spectral bandwidths of the substantially monochromatic wavelengths provided by light source B and over the range of ODs encountered in operation of the apparatus of the present invention, the extinction coefficients of the hemoglobin species are linear functions of the concentrations of Hb0 2 , HbCO, Hi, Hb, SHb, and bilirubin present in the sample under test, and the corrections in concentrations (given below) are linear functions of [Hb0 2 ] , [HbCO], [Hi], [Hb] , [SHb], and Tbr. When corrections for the finite spectral bandwidth of the light source are necessary, the order of operation of the invention should be first to measure the optical densities at each of the seven wavelengths, then to apply the corrections for light scattering by the red blood cells and for nonspecific light scattering losses, and finally to make the corrections for the finite spectral bandwidth of the light source. The method for the compensation of errors due the effects of the finite bandwidths of the substantially monochromatic wavelengths emitted by light source B proceeds as follows. After values for the concentrations have been corrected for the effects of light scattering by the red blood cells and for nonspecific light- scattering losses, the corrected concentration values, [Hb02], [HbCO], [Hi], [Hb], [SHb], and Tbr, are then used to compute spectral bandwidth corrections according to the following matrix equations: [Hb0 2 ] correction ~02,02 a 02,CO a 02,Hi a 02,Hb a 02,SHb a 02,br [ff£>0 2 ] " [HbCO] correc tion -C0,02 a CO,CO a CO,Hi a CO,Hb a CO,SHb a CO,br [HJbCO] [ i ] correction -Hi,02 a Hi,CO a Hi,Hi a Hi,Hb a Hi,SHb a Hi,br [Hi ] [ H ] correction -Hb,02 a Hb,CO a Hb,Hi a Hb,Hb a Hb,SHb a Hb,br [Hb] [ SHb ] correction SHb,02 a SHb,CO a SHb,Hi a SHb,Hb a SHb,SHb a SHb,br [SHb] [br] - br 3 correction -br,02 a br,CO a br,Hi a br,Hb a br,SHb a br,br (9A) ω [Hb0 2 ] correction -02,02 a 02,C0 a 02,Hi a 02,Hb a 02,br [Hb0 2 I [ HbCO ] orrectio -C0.02 a CO,CO a CO,Hi a CO,Hb a CO,br [HbCO] [H i j correction Hi,02 a Hi,CO a Hi,Hi a Hi,Hb a Hi,br [Hi ] [ Hb ] correction -Hb,02 a Hb,CO a Hb,Hi a Hb,Hb a Hb,br [Hb] [Jbr] I "I J correction -br,02 a br,CO a br,Hi a br,Hb a br,br J (9B) The final concentrations are then computed according to the following formulae: [HbO j ]^ = [Hb0 2 ] + H 0 2 ∞mcύon [HbCO]^ ! = [HbCO] + [HbCO]^^ [Hi f oui = [Hi] + [Hi ^^ [Hb ^! = [Hb] + [Hb]^^ [SHb]^ = [SHb] + [SHb]^^ [br]^! = [br] + [br] ∞mcύon These matrix equations are completely general in that the measurement error that is due to the effects of finite bandwidth can depend on the hemoglobin composition of the sample under test. When this method is used, the extinction coefficients in matrices 6A and 6B must be the extrapolated values for the limit of small concentrations. The matrices in equations 9A and 9B depend on the values of the particular measuring wavelengths and on the individual bandwidths and spectral distributions of the light at each of these wavelengths. Referring now to Figure 9, presented is a flow chart of the method of operating the apparatus of Figure 6 to perform the method of Embodiment A, to correct for light scattering in accordance with the present invention. Beginning in block 91, the counter n is initialized to zero. Then, in block 92, scattering vector SRBC ^ S set equal to S j ^ c (Hb0 2 ) . Then, in block 93 equation 6A is used to solve for [Hb0 2 ] , [HbCO], [Hi], [Hb] , [SHb], [br] , and ^o,^. Then, control passes to block 94 where the counter n is incremented by one. In block 95, it is determined whether the counter n is greater than four. If not, control passes to block 96 where the quantities calculated for the concentrations in step 93 are inserted into equation 7A to compute a new value for S j ^. Control then returns to block 93. If, on the other hand, decision block 95 determines that counter n is greater than four, control passes to decision block 97 where it is determined whether the spectral width is greater than 1 nm. If so, control passes to block 98 where the finite bandwidth correction of equation 9A is performed. Then, in block 99, the latest values for the concentrations of the six constituent components are reported. If, on the other hand, decision block 97 determines that the spectral width is not greater than 1 nm, control passes directly to block 99 for report of the concentrations. Appendix A includes a source code listing in the C programming language which embodies the method of the flow chart of Figure 9. In practice, the method of the flow chart of Figure 9 embodied in the source code program of Appendix A or an equivalent program, is used to program computer 13 of Figure 6, to cause the apparatus of Figure 6 to perform the method of Embodiment A to correct for light scattering. Referring now to Figure 10, presented is a method of operating the apparatus of Figure 6, in accordance with the present invention, to perform the light-scattering correction of Embodiment B. Beginning in block 101, the counter n is initialized to zero. Then, in block 92, scattering vector B^ QQ is set equal to s RBC (Hb0 2 ) and s NS is set equal to s NS (Hb0 2 ) • Then, in block 103 equation 6B is used to solve for [Hbθ 2 ], [HbCO], [Hi], [Hb], [br], ^c^, and m NSscat . Then, control passes to block 104 where the counter n is incremented by one. In block 105, it is determined whether the counter n is greater than four. If not, control passes to block 106 where the quantities calculated for the concentrations in step 103 are inserted into equations 7B and 8B to compute a new value for & £££ . Control then returns to block 103. If, on the other hand, decision block 105 determines that counter n is greater than four, control passes to decision block 107 where it is determined whether the spectral width is greater than 1 nm. If so, control passes to block 108 where the finite bandwidth correction of equation 9B is performed. Then, in block 109, the latest values for the concentrations of the six constituent components are reported. If, on the other hand, decision block 107 determines that the spectral width is not greater than 1 nm, control passes directly to block 109 for report of the concentrations. Appendix B includes a source code listing in the C programming language which embodies the method of the flow chart of Figure 10. In practice, the method of the flow chart of Figure 10, embodied either in the source code program of Appendix B or an equivalent program, is used to program computer 13 of Figure 6, to cause the apparatus of Figure 6 to perform the method of Embodiment B to correct for light scattering. Neither Embodiment A nor B allows the simultaneous use of the nonspecific scattering factor and the measurement of sulfhemoglobin. A third specific embodiment. Embodiment C, which utilizes one more wavelength than Embodiments A and B, accommodates both of these features. Embodiment C uses the same first seven wavelengths as do Embodiments A and B. In Embodiment C, the following rules hold: both light scattering by red blood cells and nonspecific light scattering are considered, and the concentrations of six compounds are measured, namely Hb0 2 , HbCO, Hi, Hb, SHb, and br. In Embodiment C, the eighth wavelength is chosen so that the differences e 6Hb02 " e 8Hb02' e 6HbCO " e 8HbCO' e 6Hi " e 8Hi' e 6Hb " e 8Hb' e 6br " e 8br' e 6RBC " e 8RBC and e 6NS " e 8NS' are simultaneously small while e 6SHb - e 8SHb is quite large, i.e., in the 635 to 645 nm range. The choice of the eighth wavelength, in view of the mathematical relationship between a matrix and its inverse, assures that the computation of sulfhemoglobin concentration is primarily dependent on the 6th and 8th wavelengths and is affected very little by the other six wavelengths. Embodiment C preferably uses 638 nm as its eighth wavelength. If the samarium-neon hollow-cathode lamp is used, the preferred eighth wavelength among its emission lines is 638.3 nm. The relevant equations for Embodiment C are as follows: Embodiment C: 0D iabs = e iHbO2[Hb0 2 ] + e iHbco [HbCO] + e iffi [Hi] + e iHb [Hb] + e isHb [SHb] + e ibr [br] I -IRBC lRBC(Hb0 2 ) SlRBC(HbCO) SlRBC( i) s lRBC(Hb) SlRBC(SHb) S 2RBC 3 2RBC(Hb0 2 ) s 2RBC(HbC0) S viBc(Hi) ε 2RBc(Hb) S 2 RBC( SHb ) 3 3RBC 3 3RBC(Hb0 2 ) S3RBCiHbCO) S RBC(Hi) s 3RBc(Hb) S3RBC( SHb ) [Hb0 2 ]/THb -4RBC 3 4RBC(Hb0 2 ) S4RBC(HbCO) s 4RBC(Hi) s 4RBc(Hb) s 4 RBc( SH b) [HbCO] /THb 3 5RBC 3 5RBC(Hb0 2 ) s 5RBCiHbCO) S5RBC(Hi) s 5RBc(Hb) S5RBC( SHb ) [Hi] /THb [Hb]/THb 3 6RBC 3 6RBC(Hb0 2 ) SβRBC( bCO) SβRβrf i) s 6RBc(Hb) S 6RBC( SHb ) [SHb] /THb (7C) 3 7RBC 3 7RBC(Hb0 2 ) S7RBC(HbC0) s 7RBCiHi) s 7RBC(Hb) S7RBc( SHb ) 3 &RBC 3 SRBC( b0 2 ) s SRBc(HbCO) ε iRBC(Hi) ε iRBc(Hb) s SRBC( SHb ) I ω 3 INS 5 lNS (Hb0 2 ) s lNS (HbCO) s lNS(Hi) SiNS(Hb) Sι NS ( SHb ) 3 2N5 2Ns(Hb0 2 ) s 2NS {HbCO) s 2NS(Hi) s 2NS(Hb) s 2NS( SHb ) 3 3NS 3 3NS(Hb0 2 ) s 3NS (HbCO) s 3NS (Hi) s 3NSl Hb ) s 3Ns( SHb ) 3 4N5 3 4NS(Hb0 2 ) S 4NS (HbCO) s 4NS (Hi) s 4Ns(Hb) s Ns( SHb ) 3 5N5 3 5NS(Hb0 2 ) S 5NS (HbCO) ε 5NS (Hi) s 5NS(Hb) S5NS( SHb ) 3 6N5 3 6NS(Hb0 2 ) S 6NS (HbCO) s 6NS(Hi) s 6NS(Hb) S6Ns( s Hb) (8C) 3 7NS 3 7NS(Hb0 2 ) S 1NS (HbCO) s 7NS(Hi) s 7NS(Hb) S7NS(SHb) 3 8N5 s(Hbo 2 ) S ms (HbC0) S*NS(Hi) s ms(Hb) s SNS (SHb) [HbO) 2 ] correction a 02,02 a 02,CO a 02,Hi a 02,Hb a 02,SHb a 02,br [Hb0 2 ] ~ [ HbCO ] corT ection -CO.02 a CO,CO a C0,Hi a C0,Hb a CO,SHb a CO,br [HJbCO] l" 1 J correction ~Hi,02 a Hi,CO a Hi,Hi a Hi,Hb a Hi,SHb a Hi,br [Hi ] [ b correction ~Hb,02 a Hb,C0 a Hb,Hi a Hb,Hb a Hb,SHb a Hb,br [Hb] [SHb ] cotT ection *SHb,Vλ a SHb,CO a SHb,Hi a SHb,Hb a SHb,SHb a SHb,br [SHb] ( 9C) [br] [br] correction Hr,~2 a br,CO a br,Hi a br,Hb a br,SHb a br,br I wherein [Hb0 2 ] , [HbCO], [Hi], [Hb] , and [SHb] are the concentrations of the indicated hemoglobin species in the sample, mR jjCscat and m NSscat are magnitudes of light scattering by the red blood cells and by the nonspecific factor, and THb = [Hb0 2 ] + [HbCO] + [Hi] + [Hb] + [SHb]. OD j , ..., OD 8 are the apparent optical densities of a sample of unaltered whole blood measured at each of the eight wavelengths, 488.4, 520.1, 562.4, 585.2, 597.5, 621.7, 671.7, and 638.3 nm, respectively. Shown in the following addendum to Table I are the additional scattering parameters which are necessary (in addition to the parameters in Table I) for use in Embodiment C. Addendum to Table I. Values for s 8NS ( « )f S SRBC(')' and s NS (SHb) for Embodiment C. In this addendum the indices 1,...,8 refer specifically (and only) to the seven wavelengths 488.4, 520.1, 562.4, 585.2, 597.5, 621.7, 671.7, and 638.3 nm, respectively. CO) s 8NS (Hi) s 8NS (Hb) s 8NS ( SHb) 22 . 259 -7 .463 22 . 259 bCO) S 8RBC (Hi) s 8RBC (Hb) S 8RBC ( SHb) 1. 000 1. 202 1. 000 6. Comparative Example To demonstrate the utility of the present invention in comparison with prior art, the Applicants made measurements of the concentrations of various hemoglobin species using a Radiometer OSM3 Hemoximeter and using the present invention. The Radiometer OSM3 employs an ultrasonic hemolyzer, and is believed to embody the optical geometry of Johansen et al. (U.S. Patent 3,972,614), and the method and apparatus of Lundsgaard (U.S. Patent 4,997,769) to correct for the turbidity of hemolyzed blood. In normal operation, the OSM3 first ultrasonically hemolyses each sample, then makes measurements of the sample's optical absorbance at multiple wavelengths, and finally uses the method of Lundsgaard to correct for the residual turbidity of the hemolyzed sample. To determine whether the method and apparatus of Lundsgaard could accurately measure hemoglobin concentrations in unaltered whole blood, the Applicants analyzed blood samples with the OSM3 operating normally and then analyzed the same blood samples with the OS 3's ultrasonic hemolyzer disabled. Table III shows that the Radiometer OSM3, believed to use the method and apparatus of Lundsgaard (U.S. Patent 4,997,769), gives completely erroneous results when the blood sample is not hemolyzed. For example, measurements of the total hemoglobin concentrations with and without hemolysis differ by as much as 7.4 grams/dl. Similarly, it is physically impossible for the relative concentration of oxyhemoglobin to be 400% or for the concentration of carboxyhemoglobin to be negative (-99%) . Thus, it is readily apparent that the method and apparatus of Lundsgaard fail to yield even plausible results on unaltered, whole blood. Table III. Performance of the Radiometer 0SM3 (Lundsgaard method) on hemolyzed and unaltered, whole blood. 0 I To evaluate the present invention's ability to make accurate measurements directly on unaltered, whole blood, the Applicants employed the herein described methods and apparatus that constitute the present invention and made measurements of the concentrations of various hemoglobin species in blood samples before and after hemolysis. The results appear in Table IV. Table IV. Performance of the present invention on hemolyzed and unaltered, whole blood. Table IV shows that the measured total hemoglobin concentrations with and without hemolysis typically differ by only a few tenths of a gram/dl. Similarly, the measurements of the relative concentrations of oxy-, carboxy-, and methemoglobin are consistently in close agreement in all of the samples. In summary, the results shown in Tables III and IV demonstrate conclusively that the present invention enables one skilled in the art to make accurate measurements of the hemoglobin concentrations directly in unaltered, whole blood; whereas the method and apparatus of Lundsgaard fail to obtain satisfactory results. While the present invention has been described in connection with preferred embodiments, it will be understood that these embodiments are only examples, and should not be considered a limitation of the present invention. APPENDIX A COPYRIGHT, 1992, BOARD OF REGENTS, THE UNIVERSITY OF TEXAS SYSTEM /******* * *****************************************************/ I* FUNCTIONS: 1)voidslope_comp_LED() */ /* 2)voidOD_to_7sat_LED() */ /* 3)voidslope_recur_LED() */ /***************************************************************/ #include "C:\ATGV^VOX\C_PROG\TYPE^VOX_TYP.C" #include "C:\ATG\AVOX\C J'ROGNDEFxAVOXJDEF.C" include "C:\ATGv\VOX\C_PROGλMATf ATH_DEF.C" #include "C:\ATG\AVOX\C_PROG\PIDR\A VOX_HDR.C" extern const vector Insats_vec; extern const matrix Identity_mtx; extern const matrix Scat_mtx; extern const matrix Sulfjmtx; extern const matrix THbslp_mtx; void slope_comp_LED(Xinsat,Xscat,Xsulf,XTHb) vector *Xinsat; /* Xinsat (Input) = 'Initial %Sats' */ vector *Xscat; /* Xscat (Ouφut) = 'Scat Slopes (Vector)' */ vector *Xsulf; /* Xsulf (Output) = 'Sulf Slopes (Vector)' */ vector *XTHb; /* XTHb (Output) = 'THb Slopes (Vector)' */ { AtimesX((matrix *)Scat_mtx,Xinsat,Xscat); AtimesX((matrix *)Sulf_mtx,Xinsat,Xsulf); AtimesX((matrix *)THbslp_mtx,Xinsat,XTHb); return; } /* end slope_comp_LED0 */ void OD_to_7sat_LED(AExtC2,ACalS,ACsats,XODs,XSHbs,Xsats,XScatCF,XsatslP, xTotHb,xTHbc,EnSlp,EnTHb,EnVer) matrix *AExtC2; /* AExtC2 (Input) = 'Extinction Coeffs.2' */ matrix *ACalS; /* ACalS (Input) = 'Calibration Sats' */ matrix *ACsats; /* ACsats (Input) = 'Computed Sats' */ vector *XODs; /* XODs nput) = 'ODs' */ vector *XSHbs; /* XSHbs (Output) = 'SHb Correction Factors' */ vector *Xsats; /* Xsats (Output) = 'SATS' */ vector *XScatCF; /* XScatCF (Ouφut) = 'Scattering Corr'n Fac.' */ vector *XsatslP; /* SsatslP (Ouφut) = 'SATS.lst.Pass' */ real *xTotHb; /* xTotHb (Ouφut) = Total Hb' */ real xTHbc; /* xTHbc (Input) = 'THb constant' */ boolean EnSlp; /* EnSlp (Input) = 'Enable Slopes' */ boolean EnTHb; /* EnTHb (Input) = 'Enable THb Slopes' */ boolean EnVer, /* EnVer nput) = 'Black-Old version; Wht-'*/ { matrix Atmpl,Atmp2,Atmp3; vector Xtmpl,Xtmp2,Xtmp3,Xtmp4,Xtmp5,Xtmp6,Xtmp7,Xtmp8; Lreal Xtmpl,xtmp2,xtmp3,xtmp4,xtmp5,xtmp6,xtmp7,xtmp8,xtmp9,xsum; Lreal sulf_thb_cutoff, sulf_slp_cutoff; boolean enable_slp, enable_thb_slp; Ainverse((matrix *)ACalS, (matrix *)Atmpl); AtimesB ((matrix *)Atmpl, (matrix *)ACsats,(matrix *)Atmp2); AtimesB ((matrix *)Atmp2,(matrix *)AExtC2,(matrix *)Atmpl); Atranspose((matrix *)Atmpl, (matrix *)Atmp2); Ainverse((matrix *)Atmp2,(matπx *)Atmp3); /* switch and calculate Y from XODs - do not change Atmp3 yet */ xtmpl = getXvalue((vector *)XODs,0); xtmp2 = x_abs(xtmpl); xtmp3 = xtmpl /xtmp2; Xtimesx((vector *)XODs,xtmp3,(vector *)Xtmp 1 ); /* Xtmp 1 = Y */ AtimesX((matrix *)Atmp3,(vector *)Xtmpl, (vector *)Xtmp2); /* may discard Atmp3 now */ Xsubset((vector *)Xtmρ2,0,5,(vector *)Xtmp3); xsum = Xsum(( vector *)Xtmp3); Xdivx((vector *)Xtmp2,xsum, (vector *)Xtmpl); eep_set_var((u_long)&enable_slpJEnable_Slopes"); eep_set_var((u_long)&enable_thb_slp,"Enable_THb_Slopes"); sulf_thb_cutoff = (Lreal)- 1.0; sulf_slp_cutoff = (Lreal)- 1.0; /*******************************************/ /* slope_recur_LED #1 */ /* parameter = variable IO */ /* Xsatsf = Xtmpl */ /* Xconc = Xtmp2 */ /* Xscat = Xtmp3 (output-discarded) */ I* Xsulf = Xtmp4 (output-discarded) */ /* Xsats = Xtmp5 */ /* xsulflHb = sulf_thb_cutoff */ /* xsulfslp = sulf_slp_cutoff */ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ /* EnTHb = enable_thb_slp */ slope_recur_LED ((vector *)Xtmpl, (vector *)Xtmp2, (vector *)Xtmp3, (vector *)Xtmp4, (vector *)Xtmp5, (l_real)sulf_thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp , (boolean)enable_thb_slp) ; Xtimesx((vector *)Xtmp5,(l_real)100.0,(vector *)XsatslP); /* define SATS.lst.Pass */ /* slope_recur_LED #2 */ /* parameter = variable IO */ /* Xsatsf = Xtmp5 */ /* Xconc = Xtmp2 */ /* Xscat = Xtmp7 */ /* Xsulf = Xtmp8 */ /* Xsats = Xtmpl */ /* xsulf Hb = sulf_thb_cutoff*/ /* xsulfslp = sulf_slp_cutoff*/ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ /* EnTHb = enable_thb_slp */ ********************************* / slope_recur_LED ((vector *)Xtmp5, (vector *)Xtmp2, (vector *)Xtmp7, (vector *)Xtmp8, (vector *)Xtmpl, (l_real)sul thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp, (boolean)enable_thb_slp); /*******************************************/ /* slope_recur_LED #3 */ /* parameter = variable IO */ /* Xsatsf = Xtmpl */ /* Xconc = Xtmp2 */ /* Xscat = Xtmp3 (ouφut-discarded) */ /* Xsulf = Xtmp4 (output-discarded) */ /* Xsats = Xtmp5 */ /* xsulfTHb = sulf_thb_cutoff */ /* xsulfslp = sulf_slp_cutoff */ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ /* EnTHb = enable_thb_slp */ slope_recur_LED ((vector *)Xtmpl, (vector *)Xtmp2, (vector *)Xtmp3, (vector *)Xtmp4, (vector *)Xtmp5, (l_real)sulf_thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp, (boolean)enable_thb_slp) ; /* slope_recur_LED #4 */ /* parameter = variable IO */ /* Xsatsf = Xtmp5 */ /* Xconc = Xtmp2 */ /* Xscat =Xtmp7 */ /* Xsulf = Xtmp8 */ /* Xsats = Xtmpl */ /* xsulfTHb = sulf_thb_cutoff*/ /* xsulfslp = sulf_slp_cutoff*/ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ /* EnTHb = enable_thb_slp */ /*********************************/ slope_recur_LED ((vector *)Xtmp5, (vector *)Xtmp2, (vector *)Xtmp7, (vector *)Xtmp8, (vector *)Xtmpl, (l_real)sulf_thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp, (boolean)enable_thb_slp); Xsubset((vector *)Xtmp5,0,4,(vector *)Xtmp3); Xtimesx((vector *)Xtmpl, (Lreal) 100.0,(vector *)Xsats); /* define Xsats */ Xclear((vector *)Xtmpό); Xtmp6[0] = (l_real)0.020; Xtmp6[l] = (l_real)0.020; Xtmp6[2] = (Lreal)O.OOO; Xtmpό[3] = (l_real)0.016; xtmp4 = XY_inproduct((vector *)Xtmp3,(vector *)Xtmp6); xtmpl = Xtmp2[6]; xtmp7 = xtmpl * xtmp4; xtmp8 = Xtmp2[4]; xtmp9 = xtmp7 + xtmp 8; xtmp4 = xtmp9 / xsum; /* xtmp4 gets compared to -1.0 */ Xclear((vector *)Xtmp7); Xtmp7[0] = (l_real)-7.50; Xtmp7[l] = (l_real)-2.50; Xtmp7[2] = (Lreal) 0.00; Xtmp7[3] = (Lreal) 12.00; xtmp5 = XY_inproduct((vector *)Xtmp3, (vector *)Xtmp7); Xclear((vector *)Xtmp8); Xtmp8[0] = (l_real)-0.280; Xtmp8[l] = (l_real)-0.280; Xtmp8[2] = (Lreal) 0.000; Xtmp8[3] = (l_real)-0.150; xtmpό = XY_inproduct((vector *)Xtmp3, (vector *)Xtmp8); if (EnSlp == FALSE) { xtmp5 = (Lreal)O.O; xtmpό = (l_real)0.0; } /* end if Enable Slopes is FALSE */ if(xtmp4 > (Lreal)- 1.0) { xtmp5 = (l_real)0.0; } xtmp4 = xtmp5 * xtmp9; xtmp2 = xtmpό * xtmpl; xtmp3 = xtmp4 + xtmp2; xtmp4 = xsum + xtmp3; *xTotHb = xTHbc * xtmp4; return; } /* end OD_to_7sat_LED() */ void slope_recur_LED(Xsatsf, Xconc, Xscat, Xsulf, Xsats, xsulfTHb, xsulfslp, xTHbc, EnSlp, EnTHb) vector *Xsatsf; /* Xsatsf (Input) = 'Sats (fractional)' */ vector *Xconc; /* Xconc αnput) = 'Concentrations' */ vector *Xscat; /* Xscat (Output) = 'Scat slopes' */ vector *Xsulf; /* Xsulf (Ouφut) = 'Sulf slopes' */ vector *Xsats; /* Xsats (Ouφut) = 'SATS' */ Lreal xsulfTHb; /* xsulfTHb αnput) = 'Sulf THb Cut-off */ Lreal xsulfslp; /* xsulfslp (Input) = 'Sulf Slope Cut-off */ Lreal xTHbc; /* xTHbc αnput) = "THb constant' */ ' boolean EnSlp; /* EnSlp (Input) = 'Enable Slopes' */ boolean EnTHb; /* EnTHb (Input) = 'Enable THb Slopes' */ { vector Xtmpl,Xtmp2,Xtmp3,Xtmp4; Lreal xtmp I,xtmp2,xtmp3, xsum; long intl; /* function call: slope_comp_LED() */ /* parameter = variable I/O */ I* Xinsat = Xsatsf I */ /* Xscat = Xscat O */ /* Xsulf = Xsulf O */ /* XTHb = Xtmpl O */ slope_comp_LED((vector *)Xsatsf,(vector *)Xscat,(vector *)Xsulf, (vector *)Xtmpl); if (EnTHb == TRUE){ xtmpl = (Lreal) 1-0; } else{ xtmpl = (l_real)0.0; } Xtimesx((vector *)Xtmp 1 ,xtmp 1.(vector *)Xtmp2) ; Xsubset((vector *)Xconc,0,5,(vector *)Xtmp3); xsum = Xsum((vector *)Xtmp3); xtmpl = xTHbc * xsum; xtmp2 = xtmpl - (Lreal) 13.5; Xtimesx((vector *)Xtmp2,xtmp2,(vector *)Xtmpl); Xdivx((vector *)Xtmp 1 ,(l_real) 100.0,(vector *)Xtmp3); /* save Xtmp3 */ if (EnSlp == TRUE){ xtmpl = (Lreal) 1.0; } else{ xtmpl = (l_real)0.0; } Xtimesx((vector *)Xscat,xtmpl, (vector *)Xtmpl); xtmp2 = getXvalue( (vector *)Xconc,6); Xtimesx((vector *)Xtmpl,xtmp2,(vector *)Xtmp2); XplusY((vector *)Xtmp2,(vector *)Xconc,(vector *)Xtmpl); xtmp3 = getXvalue((vector *)Xtmpl,4); xtmp2 = xtmp3 / xsum; if(xtmp2 > xsulfTHb) { intl = 5; ) else{ intl = 4; } if(xtmp2 > xsulfslp) { xtmp2 = (l_real)0.0; } else( xtmp2 = (l_real) 1.0; } Xtimesx((vector *)Xsulf,xtmpl, (vector *)Xtmp4); Xtimesx((vector *)Xtmp4,xtmp2,(vector *)Xtmp2); Xtimesx((vector *)Xtmp2,xtmp3,(vector *)Xtmp4); XplusY((vector *)Xtmpl, (vector *)Xtmp4,(vector *)Xtmp2); Xsubset((vector *)Xtmp2,0,intl, (vector *)Xtmpl); xtmp3 = Xsum((vector *)Xtmpl); Xdivx((vector *)Xtmp2,xtmp3, (vector *)Xtmp4); xtmpl = Xtmp2[5]; xtmp2 = xTHbc * xtmpl; Xtmp4[5] = xtmp2; /* place value into vector */ XplusY((vector *)Xtmp3, (vector *)Xtmp4,(vector *)Xsats); return; } /* end slope_recur_LED() */ /* END FILE: MTX_COMP.C */ APPENDIX B COPYRIGHT , 1992 , BOARD OF REGENTS , THE UNIVERSITY OF TEXAS SYSTEM /********#****** ** ********************************************** /* FUNCTIONS: 1) void slope_comp_LED() */ I* 2) void OD_to_7sat_LED() */ /* 3) void slope_recur_LED() */ ***************************************************************/ #include "C:\ATGV\VOX\C_PROG\TYPEV^VOX_TYP.C" #include ''C:\ATG\A VOX\C > ROG\DEF\A VOX JDEF.C" #include "C:\ATG\AVOX\C_PROG\MATHMATH_DEF.C" #include "C:\ATGV^VOX\C_PROG? HDR\AVOX_HDR.C" extern const vector Insats_vec; extern const matrix Identity_mtx; extern const matrix Scat_mtx; extern const matrix Sulf_mtx; extern const matrix TΗbslp mtx; void slope_comp_LED(Xinsat,Xscat,Xsulf,XTHb) vector *Xinsat; /* Xinsat (Input) = 'Initial %Sats' */ vector *Xscat; /* Xscat (Ouφut) = 'Scat Slopes (Vector)' */ vector *Xsulf; /* Xsulf (Ouφut) = 'Sulf Slopes (Vector)' */ vector *XTΗb; /* XTHb (Ouφut) = 'THb Slopes (Vector)' */ { AtimesX((matrix *)Scat_mtx,Xinsat,Xscat); AtimesX((matrix *) S ulf_mtx,Xinsat,Xsulf) ; AtimesX((matrix *)THbslp_mtx,Xinsat,XTHb); return; } /* end slope_comp_LED() */ void OD_to_7sat_LED(AExtC2,ACalS,ACsats,XODs,XSHbs,Xsats,XScatCF,XsatslP, xTotHb,xTHbc,EnSlp,EnTHb,EnVer) matrix *AExtC2; /* AExtC2 (Input) = 'Extinction Coeffs.2' */ matrix *ACalS; /* ACalS (Input) = 'Calibration Sats' */ matrix *ACsats; /* ACsats (Input) = 'Computed Sats' */ vector *XODs; /* XODs αnput) = 'ODs' */ vector *XSHbs; /* XSHbs (Ouφut) = 'SHb Correction Factors' */ vector *Xsats; /* Xsats (Ouφut) = 'SATS' */ vector *XScatCF; /* XScatCF (Ouφut) = 'Scattering Corr'n Fac.' */ vector *XsatslP; /* SsatslP (Ouφut) = 'SATS.lst.Pass' */ Lreal *xTotHb; /* xTotHb (Ouφut) = otal Hb' */ Lreal xTHbc; /* xTHbc (Input) = 'THb constant' */ boolean EnSlp; /* EnSlp (Input) = 'Enable Slopes' */ boolean EnTHb; /* EnTHb (Input) = 'Enable THb Slopes' */ boolean EnVer, /* EnVer (Input) = 'Black-Old version; Wht-'*/ { matrix Atmpl tmp2Λ mp3; vector Xtmpl,Xtmp2,Xtmp3,Xtmp4,Xtmp5,Xtmp6,Xtmp7,Xtmp8; Lreal Xtmpl,xtmp2,xtmp3,xtmp4,xtmp5,xtmp6,xtmp7,xtmp8,xtmp9,xsum; Lreal sulf_thb_cutoff, sulf_slp_cutoff; boolean enable_slp, enable_thb_slp; Ainverse((matrix *)ACalS, (matrix *)Atmpl); AtimesB ((matrix *)Atmpl, (matrix *)ACsats,(matrix *)Atmp2); AtimesB ((matrix *)Atmp2,(matrix *)AExtC2,(matrix *)Atmpl); Atranspose((matrix *)Atmpl, (matrix *)Atmp2); Ainverse((matrix *)Atmp2,(matrix *)Atmp3); /* switch and calculate Y from XODs - do not change Atmp3 yet */ xtmpl = getXvalue((vector *)XODs,0); xtmp2 = x_abs(xtmpl); xtmp3 = xtmpl / xtmp2; Xtimesx((vector *)XODs,xtmp3,(vector *)Xtmpl); /* Xtmpl = Y */ AtimesX((matrix *)Atmp3,(vector *)Xtmpl,( vector *)Xtmp2); /* may discard Atmp3 now */ Xsubset((vector *)Xtmp2,0,5,(vector *)Xtmp3); xsum = Xsum((vector *)Xtmp3); Xdivx((vector *)Xtmp2,xsum,(vector *)Xtmpl); eep__set_var((u_long)&enable_slpJEnable_Slopes"); eep_set_var((u_long)&enable_thb_slpJEnable_THb_Slopes"); sulf_thb_cutoff = (Lreal) 1.25; sulf_slp_cutoff = (Lreal) 1.25; /*******************************************/ /* slope_recur_LED #1 */ /* parameter = variable IO */ /* Xsatsf = Xtmpl */ /* Xconc = Xtmp2 */ /* Xscat = Xtmp3 (output-discarded) */ /* Xsulf = Xtmp4 (output-discarded) */ /* Xsats = Xtmp5 */ /* xsulfTHb = sulf_thb_cutoff */ /* xsulfslp = sulf_slp_cutoff */ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ /* EnTHb = enable_thb_slp */ slope_recur_LED((vector *)Xtmpl, (vector *)Xtmp2, (vector *)Xtmp3, (vector *)Xtmp4, (vector *)Xtmp5, (l_real)sulf_thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp, (boolean)enable_thb_slp); Xtimesx((vector *)Xtmρ5,(l_real)100.0,(vector *)XsatslP); /* define SATS.lst.Pass */ /* slope_recur_LED #2 */ /* parameter = variable IO */ /* Xsatsf = Xtmp5 */ /* Xconc = Xtmp2 */ /* Xscat = Xtmp7 */ I* Xsulf = Xtmp8 */ /* Xsats = Xtmpl */ I* xsulfTHb = sulf_thb_cutoff*/ /* xsulfslp = sulf_slp_cutoff*/ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ I* EnTHb = enable_thb_slp */ ********************************* slope_recur_LED((vector *)Xtmp5, (vector *)Xtmp2, (vector *)Xtmp7, (vector *)Xtmp8, (vector *)Xtmpl, (l_real)sulf_thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp , (boolean)enable_thb_slp); /* slope_recur_LED #3 */ /* parameter = variable IO */ /* Xsatsf = Xtmpl */ /* Xconc = Xtmp2 */ /* Xscat = Xtmp3 (ouφut-discarded) */ /* Xsulf = Xtmp4 (output-discarded) */ /* Xsats = Xtmp5 */ /* xsulfTHb = sulf_thb_cutoff */ /* xsulfslp = sulf_slp_cutoff */ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ /* EnTHb = enable_thb_slp */ ******************************************* slope_recur_LED ((vector *)Xtmpl, (vector *)Xtmp2, (vector *)Xtmp3, (vector *)Xtmp4, (vector *)Xtmp5, (l_real)sulf_thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp, (boolean)enable_thb_slp); /* slope_recur_LED #4 */ /* parameter = variable IO */ /* Xsatsf =Xtmp5 */ /* Xconc = Xtmp2 */ /* Xscat =Xtmp7 */ /* Xsulf = Xtmp8 */ /* Xsats = Xtmpl */ /* xsulfTHb = sulf_thb_cutoff*/ /* xsulfslp = sulf_slp_cutoff*/ /* xTHbc = xTHbc */ /* EnSlp = enable_slp */ /* EnTHb = enable_thb_slp */ slope_recur_LED((vector *)Xtmp5, (vector *)Xtmp2, (vector *)Xtmp7, (vector *)Xtmp8, (vector *)Xtmpl, (l_real)sulf_thb_cutoff, (l_real)sulf_slp_cutoff, (Lreal)xTHbc, (boolean)enable_slp, (boolean)enable_thb_slp); Xsubset((vector *)Xtmp5,0,4,(vector *)Xtmp3); Xtimesx((vector *)Xtmpl,(l_real)100.0,(vector *)Xsats); /* define Xsats */ Xclear((vector *)Xtmpό); XtmpόfO] = (l_real)0.020; Xtmpό[l] = (l_real)0.020; Xtmpό[2] = (Lreal)O.OOO; Xtmpό[3] = (Lreal)O.Olό; xtmp4 = XY_inproduct((vector *)Xtmp3, (vector *)Xtmpό); xtmpl = Xtmp2[6]; xtmp7 = xtmpl * xtmp4; xtmpδ = Xtmp2[4]; xtmp9 = xtmp7 + xtmp 8; xtmp4 = xtmp9 / xsum; /* xtmp4 gets compared to 1.25 */ Xclear((vector *)Xtmp7); Xtmp7[0] = (l_real)-7.50; Xtmp7[l] = (l_real)-2.50; Xtmp7[2] = (Lreal) 0.00; Xtmp7[3] = (l_real)12.00; xtmp5 = XY_inproduct((vector *)Xtmp3,(vector *)Xtmp7); Xclear((vector *)Xtmp8); Xtmp8[0] = G_real)-0.280; Xtmp8[l] = (l_real)-0.280; Xtmp8[2] = (Lreal) 0.000; Xtmp8[3] = (l_real)-0.150; xtmpό = XY_inproduct((vector *)Xtmp3, (vector *)Xtmp8); if (EnSlp = FALSE) { xtmp5 = (Lreal)O.O; xtmpό = (l_real)0.0; } /* end if Enable Slopes is FALSE */ if(xtmp4 > (Lreal) 1.25) { xtmp5 = (l_real)0.0; } xtmp4 = xtmp5 * xtmp9; xtmp2 = xtmpό * xtmpl; xtmp3 = xtmp4 + xtmp2; xtmp4 = xsum + xtmp3; *xTotHb = xTHbc * xtmp4; return; ) /* end OD_to_7sat_LED0 */ void slope_recur_LED(Xsatsf, Xconc, Xscat, Xsulf, Xsats, xsulfTHb, xsulfslp, xTHbc, EnSlp, EnTHb) vector *Xsatsf; /* Xsatsf (Input) = 'Sats (fractional)' */ vector *Xconc; /* Xconc nput) = 'Concentrations' */ vector *Xscat; /* Xscat (Output) = 'Scat slopes' */ vector *Xsulf; /* Xsulf (Ouφut) = 'Sulf slopes' */ vector *Xsats; /* Xsats (Ouφut) = 'SATS' */ Lreal xsulfTHb; /* xsulfTHb (Input) = 'Sulf THb Cut-off */ Lreal xsulfslp; /* xsulfslp (Input) = 'Sulf Slope Cut-off */ Lreal xTHbc; /* xTHbc (Input) = 'THb constant' */ boolean EnSlp; /* EnSlp (Input) = 'Enable Slopes' */ boolean EnTHb; /* EnTHb (Input) = 'Enable THb Slopes' */ { vector Xtmpl,Xtmp2,Xtmp3,Xtmp4, Lreal xtmpl,xtmp2,xtmp3,xsum; long intl; /* function call: slope_comp_LED() */ /* parameter = variable I/O */ I* Xinsat = Xsatsf I */ /* Xscat = Xscat O */ /* Xsulf = Xsulf O */ /* XTHb = Xtmpl O */ slope_comp_LED((vector *)Xsatsf,(vector *)Xscat,(vector *)Xsulf,(vector *)Xtmpl); if(EnTHb = TRUE){ xtmpl = (Lreal)l.O; } else{ xtmpl = α_real)0.0; } Xtimesx((vector *)Xtmpl, xtmpl, (vector *)Xtmp2); Xsubset((vector *)Xconc,0,5,(vector *)Xtmp3); xsum = Xsum((vector *)Xtmp3); xtmpl = xTHbc * xsum; xtmp2 = xtmpl - (l_real)13.5; Xtimesx((vector *)Xtmp2,xtmp2,(vector *)Xtmpl); Xdivx((vector *)Xtmpl, (Lreal) 100.0,(vector *)Xtmp3); /* save Xtmp3 */ if (EnSlp == TRUE){ xtmpl = (Lreal) 1.0; } else{ xtmpl = (l_real)0.0; } Xtimesx((vector *)Xscat,xtmpl, (vector *)Xtmpl); xtmp2 = getXvalue((vector *)Xconc,6); Xtimesx((vector *)Xtmpl,xtmp2,(vector *)Xtmp2); XplusY(( vector *)Xtmp2,(vector *)Xconc,(vector *)Xtmpl); xtmp3 = getXvalue((vector *)Xtmpl,4); xtmp2 = xtmp3 / xsum; if(xtmp2 > xsulfTHb) { intl = 5; } else{ intl = 4; } if(xtmp2 > xsulfslp) { xtmp2 = (l_real)0.0; } else{ xtmp2 = (Lreal) 1.0; } Xtimesx((vector *)Xsulf, xtmpl, (vector *)Xtmp4); Xtimesx((vector *)Xtmp4,xtmp2,(vector *)Xtmp2); Xtimesx((vector *)Xtmp2,xtmp3,(vector *)Xtmp4); XplusY((vector *)Xtmpl, (vector *)Xtmp4,(vector *)Xtmp2); Xsubset((vector *)Xtmp2,0,intl, (vector *)Xtmpl); xtmp3 = Xsum((vector *)Xtmpl); Xdivx((vector *)Xtmp2,xtmp3,(vector *)Xtmp4); xtmpl = Xtmp2[5]; xtmp2 = xTHbc * xtmpl; Xtmp4[5] = xtmp2; /* place value into vector */ XplusY((vector *)Xtmp3, (vector *)Xtmp4,(vector *)Xsats); return; } /* end slope_recur_LED() */ /* END FILE: MTX_COMP.C */

Claims: CIAIMS : 1. A method of determining the concentrations of a plurality of constituent components of unaltered whole blood, including: generating a plurality of substantially monochromatic radiation wavelengths, each wavelength of an absorbance subset of said plurality of wavelengths having been selected by their ability to distinguish the constituent components and having been selected to minimize the effects of radiation scattering and to maximize radiation absorbance by said constituent components, and each wavelength of a scattering subset of said plurality of wavelengths having been selected to maximize the e fects of radiation scattering by unaltered whole blood relative to the effects of radiation absorbance by unaltered whole blood; irradiating a sample of unaltered whole blood with said plurality of radiation wavelengths, through a depth of said sample chosen to minimize radiation scattering by unaltered whole undiluted blood; detecting intensities of said radiation wavelengths, after passing through said depth of said sample, at a distance from said sample, and over a detecting area, both chosen to minimize the effects of radiation scattering by unaltered whole blood on the determination of concentration of said constituent components; and calculating concentrations of said plurality of constituent components of said sample of unaltered whole blood, based upon detected intensities of each of said plurality of radiation wavelengths, and based upon predetermined molar extinction coefficients for each of said constituent components at each of said radiation wavelengths of said absorbance subset. 2. The method of claim 1, wherein said depth of said sample is in the range of 80 to 150 micrometers. 3. The method of claim 2, wherein said depth of said sample is approximately 90 micrometers. 4. The method of claim 1, wherein said detecting area is at least approximately 150 square millimeters. 5. The method of claim 4, wherein said detecting area is at least approximately 600 square millimeters. 6. The method of claim 1, wherein said distance from said sample is within the range of 0 to 10 millimeters. 7. The method of claim 6, wherein said distance from said sample is approximately 1 millimeter. 8. The method of claim 1, wherein said step of detecting is performed over a half-aperture angle of radiation emanating from said sample of at least approximately 30 degrees. 9. The method of claim 8, wherein said step of detecting is performed over a half-aperture angle of radiation emanating from said sample of at least approximately 70 degrees. 10. The method of claim 1, further comprising: correcting said calculated concentrations of constituent components for the effects of finite spectral bandwidth of the substantially monochromatic wavelengths on the extinction coefficients of each constituent component. 11. The method of claim 1, said plurality of constituent components including Hb0 2 , HbCO, Hi and Hb, said method further comprising: before said generating step, selecting four radiation wavelengths by computing an error index for each of Hb0 2 , HbCO and Hi as the sum of the absolute values of the errors that are induced in the measurement of relative concentrations of Hb0 2 , HbCO and Hi due to a change in optical density measurements; and selecting a quadruple of radiation wavelengths having minimum error indices. 12. The method of claim 11, said quadruple of radiation wavelengths each being within the range of 510 to 630 nanometers. 13. The method of claim 12, said quadruple of radiation wavelengths comprising 522, 562, 584 and 600 nanometers. 14. The method of claim 12, said quadruple of radiation wavelengths comprising 518, 562, 580 and 590 nanometers. 15. The method of claim 12, said quadruple of radiation wavelengths comprising 520.1, 562.4, 585.2 and 597.5 nanometers. 16. The method of claim 12, said constituent components further including bilirubin, said method further comprising: before said generating step, selecting a radiation wavelength within the range of 475 to 500 nanometers as the radiation wavelength for the measurement of bilirubin. 17. The method of claim 16, said radiation wavelength for the measurement of bilirubin being 488.4 nanometers. 18. The method of claim 12, said constituent components further including sulfhemoglobin, said method further comprising: before said generating step, selecting a radiation wavelength within the range of 615 to 625 nanometers as the radiation wavelength for the measurement of sulfhemoglobin. 19. The method of claim 18, said radiation wavelength for the measurement of sulfhemoglobin being 621.7 nanometers. 20. The method of claim 1, further comprising: correcting said calculated concentrations of constituent components for the effects of light scattering by red blood cells. 21. The method of claim 20, said correcting step comprising, correcting said calculated concentrations of constituent components as a function of the relative concentrations of the constituent components. 22. The method of claim 21, said correcting step further comprising: iteratively determining a red blood cell scattering vector for the particular composition of the whole blood sample being analyzed; and using said red blood cell scattering vector to correct said calculated constituent component concentrations. 23. The method of claim 1, further comprising: correcting said calculated constituent component concentrations for the effects of non-specific light scattering. 24. The method of claim 23, said correcting step comprising, correcting said calculated concentrations of constituent components as a function of the relative concentrations of the constituent components under consideration. 25. The method of claim 24, said correcting step further comprising: iteratively determining a non-specific scattering vector for the particular composition of the whole blood sample being analyzed; and using said non-specific scattering vector to correct said calculated constituent component concentrations. 26. The method of claim 1, further comprising, correcting said calculated concentrations of constituent components for the effects of light scattering by red blood cells and for the effects of non-specific light scattering. 27. The method of claim 26, said correcting step comprising, correcting said calculated concentrations of constituent components as a function of the relative concentrations of the constituent components under consideration. 28. The method of claim 27, said correcting step further comprising: iteratively determining a red blood cell scattering vector for the particular composition of the whole blood sample being analyzed; iteratively determining a non-specific scattering vector for the particular composition of the whole blood sample being analyzed; and using said non-specific scattering vector and said red blood cell scattering vector to correct said calculated constituent component concentrations. 29. The method of claim 28, said plurality of constituent components including Hb0 2 , HbCO, Hi and Hb, said method further comprising: before said generating step, selecting four radiation wavelengths by computing an error index for each of Hb0 2 , HbCO and Hi as the sum of the absolute values of the errors that are induced in the measurement of relative concentrations of Hb0 2 , HbCO and Hi due to a change in optical density measurements; and selecting a quadruple of radiation wavelengths having minimum error indices. 30. The method of claim 29, said quadruple of radiation wavelengths each being within the range of 510 to 630 nanometers. 31. The method of claim 30, said constituent components further including bilirubin, said method further comprising: before said generating step, selecting a radiation wavelength within the range of 475 to 500 nanometers as the radiation wavelength for the measurement of bilirubin. 32. The method of claim 31, said constituent components further including sulfhemoglobin, said method further comprising: before said generating step, selecting a radiation wavelength within the range of 615 to 625 nanometers as the radiation wavelength for the measurement of sulf emoglobin. 33. The method of claim 32, further comprising, before said generating step, selecting a radiation wavelength within the range of 635 to 645 nanometers as an additional radiation wavelength for the measurement of sulfhemoglobin.

Inventors: SHEPHERD ALBERT P, STEINKE JOHN M, SHEPHERD, ALBERT, P., STEINKE, JOHN, M.
Applicants: UNIV TEXAS, BOARD OF REGENTS, THE UNIVERSITY OF TEXAS SYSTEM
Application year: 1993
Main classification: G01N33
IPC codes: G01N21, G01N33