From: W. Trevor King Date: Thu, 23 Feb 2012 18:05:01 +0000 (-0500) Subject: Convert pulse oxymetry post from LaTeX to Markdown/itex (avoid external build). X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=71bfefb05d27f1021a1da11c60ea3bcd70ebf6ae;p=blog.git Convert pulse oxymetry post from LaTeX to Markdown/itex (avoid external build). --- diff --git a/Makefile b/Makefile index c734fa8..7c0aafa 100644 --- a/Makefile +++ b/Makefile @@ -5,23 +5,10 @@ SUBDIRS = posts/drexel-thesis posts/problempack \ posts/XSLT/chapter posts/XSLT/code TARGETS = all clean -SCONS_SUBDIRS = posts/Pulse_oxymetry - - -all : make-all scons-all -clean : make-clean scons-clean +all : make-all +clean : make-clean $(TARGETS:%=make-%) : @for i in $(SUBDIRS); do \ echo "make ${@:make-%=%} in $$i..."; \ (cd $$i; $(MAKE) $(MFLAGS) ${@:make-%=%}); done - -scons-all : - @for i in $(SCONS_SUBDIRS); do \ - echo "scons in $$i..."; \ - (cd $$i; scons); done - -scons-clean : - @for i in $(SCONS_SUBDIRS); do \ - echo "scons -c in $$i..."; \ - (cd $$i; scons -c); done diff --git a/local.css b/local.css index 5cda467..c61564d 100644 --- a/local.css +++ b/local.css @@ -84,3 +84,8 @@ code { color: gray; font-family: monospace; } + +.center { + margin-left: auto; + margin-right: auto; +} diff --git a/posts/Pulse_oxymetry.mdwn b/posts/Pulse_oxymetry.mdwn deleted file mode 100644 index 2e11910..0000000 --- a/posts/Pulse_oxymetry.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -My wife was recently reviewing some [pulse oxymeter][pox] notes while -working a round of anesthesia. It took us a while to trace the logic -through all the symbol changes and notation shifts, and my wife's -math-discomfort and my bio-discomfort made us more cautious than it -turns out we needed to be. There are a number of nice [review -articles][art] out there that I turned up while looking for explicit -derivations, but by the time I'd found them, my working notes had -gotten fairly well polished themselves. So here's -[[my_contribution|main.pdf]] to the pulse-ox noise ;). Highlights -include: - -* Short and sweet (with pictures) -* Symbols table -* Baby steps during math manipulation - -[pox]: http://en.wikipedia.org/wiki/Pulse_oximeter -[art]: http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx - -[[!tag tags/theory]] diff --git a/posts/Pulse_oxymetry.mdwn_itex b/posts/Pulse_oxymetry.mdwn_itex new file mode 100644 index 0000000..755daab --- /dev/null +++ b/posts/Pulse_oxymetry.mdwn_itex @@ -0,0 +1,560 @@ +My wife was recently reviewing some [pulse oxymeter][pox] notes while +working a round of anesthesia. It took us a while to trace the logic +through all the symbol changes and notation shifts, and my wife's +math-discomfort and my bio-discomfort made us more cautious than it +turns out we needed to be. There are a number of nice [review +articles][art] out there that I turned up while looking for explicit +derivations, but by the time I'd found them, my working notes had +gotten fairly well polished themselves. So here's my contribution to +the pulse-ox noise ;). Highlights include: + +* Short and sweet (with pictures) +* [Symbols table](#nomenclature) +* Baby steps during math manipulation + +Oxygen content +============== + +The circulatory system distributes oxygen ([O₂](#O2)) throughout the +body. The amount of O₂ at any given point is measured by the O₂ +content ([O₂]), usually given in $\frac{\text{mL O₂ at BTP}}{\text{dL +blood}}$ ([BTP](#BTP) is my acronym for body temperature and +pressure). Most transported O₂ is bound to [hemoglobin][] +([Hb](#Hb)), but there is also free O₂ disolved directly in the plasma +and cytoplasm of suspended cells. + + + + +\[ [\text{O₂}] = a\text{[Hb]}\text{S}_\text{O₂} + b\text{P}_\text{O₂} \;, \] + +where [$\text{S}_\text{O₂}$](#S-O2) is the Hb's O₂ saturation and +[$\text{P}_\text{O₂}$](#P-O2) is the O₂ partial pressure. Don't worry +about the coefficients $a$ and $b$ yet, we'll get back to them in a +second. + +The amound of dissolved O₂ is given by its [partial pressure][partial] +($\text{P}_\text{O₂}$). Partial pressures are generally given in mm +of mercury ([Hg](#Hg)) at standard temperature and pressure +([STP](#STP)). Because the partial pressure changes as blood flows +through the body, an additional specifier $i$ may be added +([$\text{P}i_\text{O₂}$](#Pi-O2)) to clarify the measurement location. + + + + + + + + + + + +
$i$Full symbolLocation descriptor
a$\text{Pa}_\text{O₂}$arterial
p$\text{Pp}_\text{O₂}$peripheral or pulsatile
t$\text{Pt}_\text{O₂}$tissue
v$\text{Pv}_\text{O₂}$venous
+ +O₂ is carried in the blood primarily through binding to hemoglobin +monomers (Hb), with each monomer potentially binding a single O₂. +Oxygen saturation ($\text{S}_\text{O₂}$) is the fraction of hemoglobin +monomers (Hb) that have bound an oxygen molecule (O₂). + + + +\[ \text{S}_\text{O₂} = \frac{\text{[HbO₂]}}{\text{[Hb]}} \;. \] + +The ratio of concentrations, $\text{S}_\text{O₂}$, is unitless. It +is often expressed as a percentage. [Hb] is often given in g/dL. As +with partial pressures, an additional specifier $i$ may be added +([$\text{S}i_\text{O₂}$](#Si-O2)) to clarify the measurement location +($\text{Sa}_\text{O₂}$, $\text{Sp}_\text{O₂}$, …). + +Now we can take a second look at our [O₂ content +formula](#eq:O2-symbolic). The coefficient $a$ must convert g/dL +to $\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$. Using the molecular +weight of Hb and the [volume of a mole of gas at STP][mole-volume]: + + + +\[ +\begin{aligned} + \text{[Hb]} &= \chi \frac{\text{g Hb}}{\text{dL blood}} + \cdot\frac{1\text{ mol Hb}}{17\text{ kg Hb}} + \cdot\frac{1\text{ mol O₂}}{1\text{ mol Hb}} + \cdot\frac{\sim1\text{ mol ideal gas}}{1\text{ mol O₂}} + \cdot\frac{22.4\text{ L ideal gas at STP}}{1\text{ mol ideal gas}} + \cdot\frac{\sim1\text{ L ideal gas at BTP}}{1\text{ L ideal gas at STP}} + \\ + &\approx + \chi \frac{\text{g Hb}}{\text{dL blood}} + \cdot 1.32 \frac{\text{mL O₂ at BTP}}{\text{g Hb}} + = 1.32\chi \frac{\text{mL O₂ at BTP}}{\text{dL blood}} \;, +\end{aligned} +\] + +where $\chi$ is a pure number (we're just working out the unit +conversion here, not converting a particular Hg concentration). +Therefore, $a=1.32 \frac{\text{mL O₂ at BTP}}{\text{g Hb}}$. The +powers that be seem to have used a slightly different density, since +the more commonly used value is 5% higher at $1.39$. Possibly someone +actually measured the density of O₂ at BTP, because BTP is not STP, +and O₂ is not an ideal gas. + +The coefficient $b$ must convert mm Hg at STP +to $\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$. Empirical +experiments (?) give a value +of $b=0.003\frac{\text{mL O₂ at BTP}}{\text{dL blood ⋅ mm Hg at STP}}$. +Now we can write out the familiar form + + + +\[ \text{[O₂]} + = 1.39 \frac{\text{mL O₂ at BTP}}{\text{g Hb}} [Hb] \text{S}_\text{O₂} + + 0.003\frac{\text{mL O₂ at BTP}} + {\text{dL blood } \cdot \text{ mm Hg at STP}} + \text{P}_\text{O₂} \;. \] + +Reasonable levels are + + + + + + + +
[Hb]$14\frac{\text{g Hb}}{\text{dL blood}}$
$\text{S}_\text{O₂}$98%
$\text{P}_\text{O₂}$100 mm Hg at STP
$1.39 \frac{\text{mL O₂}}{\text{g Hb}}\text{[Hb]}\text{S}_\text{O₂}$ $19.1\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$
$0.003\frac{\text{mL O₂ at BTP}} + {\text{dL blood } \cdot \text{ mm Hg at STP}}\text{P}_\text{O₂}$ + $0.300\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$
+ +Because the dissolved O₂ has such a tiny contribution (1.5% of the +total in my example), it is often measured at STP rather than BTP. +Sometimes it is dropped from the calculation entirely. We focus on +the more imporant $\text{[Hb]}\text{S}_\text{O₂}$ in the next section. + +Oxygen saturation +================= + +The [preceding](#eq:S-O2) [discussion](#eq:O2) +used $\text{[Hb]}\text{S}_\text{O₂}$ to represent the concentration of +HbO₂ complexes. This was useful while we were getting our bearings, +but now we will replace that term with a more detailed model. Let us +sort the Hb monomers into species: + +* [Hb](#Hb): all hemoglobin monomers +* [HbO₂](#HHb): monomers complexed with O₂ +* [HHb](#HHb): reduced Hb (not complexed with O₂) +* [dysHb](#dysHb): dys-hemoglobin (cannot complex with O₂) +* [MHb](#MHb): methemoglobin +* [HbCO](#HbCO): carboxyhemoglobin + +These species are related as follows + +\[ +\begin{aligned} + \text{[Hb]} &= \text{[HbO₂]} + \text{[HHb]} + \text{[dysHb]} \\ + \text{[dysHb]} &= \text{[MHb]} + \text{[HbCO]} + \text{other broken forms} +\end{aligned} +\] + +Because modern two-color pulse-oximeters don't +measure $\text{S}_\text{O₂}$ exactly, the related quantity that they +*do* measure has been given a name of its own: the *functional* +saturation ([$\text{Sf}_\text{O₂}$](#Sf-O2)). + + + +\[ + \text{Sf}_\text{O₂} = \frac{\text{[HbO₂]}}{\text{[HbO₂]} + \text{[HHb]}} \;. +\] + +Rephrasing our [earlier saturation](#eq:S-O2), we see + + + +\[ + \text{S}_\text{O₂} = \frac{\text{[HbO₂]}}{\text{[Hb]}} + = \frac{\text{[HbO₂]}}{\text{[HbO₂]} + \text{[HHb]} + \text{[dysHb]}} \;. +\] + +To avoid confusion with $\text{Sf}_\text{O₂}$, our +original $\text{S}_\text{O₂}$ is sometimes referred to as the +*fractional* saturation. + +The Beer-Labmert law +==================== + +So far we've been labeling and defining attributes of the blood. The +point of this excercise is to understand how a pulse oximeter measures +them. People have known for a while that different hemoglobin +complexes (HbO₂, HHb, MHb, HbCO, …) have differnt absorbtion +spectra (Fig.~\ref{fig:absorbtion}), and they have been using this +difference since the 1930's to make pulse-oximeters based on two-color +transmittance measurements (see [Tremper 1989][T89]). + +[[!img absorbtion.png + size="600x418" + alt="Absorbance spectra for assorted hemoglobin species" + caption="Absorbance spectra for assorted hemoglobin species (Tremper 1989)"]] + +By passing different wavelengths of light through perfused tissue, we +can measure the relative quantities of the different Hb species. +The basis for this analysis comes from the [Beer-Lambert law][BL]. + + + +\[ I = I_0 e^{-c \epsilon L} \;, \] + +where [$I_0$](#I0) is the incident intensity (entering the tissue), +[$I$](#I0lambda) is the tranmitted intensity (leaving the tissue), +[$c$](#c) is the tissue density (concentration), +[$\epsilon$](#eilambda) is the extinction coefficient (molar +absorbtivity), and [$L$](#L) is the tissue thickness. Rephrasing the +math as English, this means that the intensity drops off exponentially +as you pass through the tissue, and more tissue (higher $c$ or $L$) or +more opaque tissue (higher $\epsilon$) mean you'll get less light out +the far side. This is a very simple law, and the price of the +simplicity is that it brushes all sorts of things under the rug. +Still, it will help give us a basic idea of what is going on in a +pulse-oximeter. + +Rather than treat the the tissue as a single substance, lets use the +Beer-Labmert law on a mixture of substances with +concentrations $c_1$, $c_2$, … and extinction +coefficients $\epsilon_1$, $\epsilon_2$, …. + +\[ I = I_0 e^{-(c_1 \epsilon_1 + c_2 \epsilon_2 + \ldots) L} \;. \] + +We also notice that the intensities and extinction coefficients may +all depend on the wavelength of light $\lambda$, so we should really +write + + + +\[ + I_\lambda = I_{0\lambda} e^{-(c_1 \epsilon_{1\lambda} + + c_2 \epsilon_{2\lambda} + \ldots) L} \;. +\] + +Once isolated, a simple spectroscopy experiment can measure the +extinction coefficient [$\epsilon_{i\lambda}$](#eilambda) of a given +species across a range of $\lambda$, and this has been done for all of +our common Hb flavors. We need to play with the last equation to find +a way to extract the unknown concentrations, which we can then use to +[calculate the $\text{Sf}_\text{O₂}$](#eq:Sfunc-O2) and +[$\text{S}_\text{O₂}$](#eq:Sfrac-O2) which we can use in turn to +calculate [$\text{[O₂]}$](#eq:O2). + +Note that by increasing the number of [LEDs](#LED) (adding +new $\lambda$) we increase the number of constraints on the +unknown $c_i$. A traditional pulse-oximeter uses two LEDs, at 660 nm +and 940 nm, to measure $\text{Sf}_\text{O₂}$ (related to [HbO₂] and +[HHb]). More recent designs called [pulse CO-oximeters][CO-ox] use +more wavelengths to allow measurement of quanties related to +additional species (approaching the end goal of +measuring $\text{S}_\text{O₂}$). + +Let us deal with the fact that there is a lot of stuff absorbing light +that is not arterial blood (e.g. venous blood, other tissue, bone, +etc). The good thing about this stuff is that it's just sitting there +or moving through in a smooth fasion. Arterial blood is the only +thing that's pulsing. Here's another figure from [Tremper][T89]: + + + +[[!img ac-dc.png + size="600x204" + alt="AC and DC transmission components" + caption="AC and DC transmission components (Tremper)"]] + +During a pulse, the pressure in the finger increases and non-arterial +tissue is compressed, changing $L$ and $c_i$ from their trough values +to peak values $L'$ and $c_i'$. Since the finger is big, the +fractional change in width $\mathrm{d} L/L=(L'-L)/L$ is very small. +Assuming the change in concentration is even smaller (since most +liquids are fairly incompressible), we have + + + +\[ +\begin{aligned} + \frac{\mathrm{d} I_\lambda}{\mathrm{d} L} + &= \frac{\mathrm{d}}{\mathrm{d}L} + \left(I_{0\lambda} + e^{-(c_1 \epsilon_{1\lambda} + + c_2 \epsilon_{2\lambda} + \ldots) L}\right) + = \frac{\mathrm{d}}{\mathrm{d} L} \left( I_{0\lambda} e^{-X L} \right) + = -X I_{0\lambda} e^{-X L} + = -XI_\lambda \\ + \frac{\mathrm{d} I_\lambda}{I_\lambda} + &= -X \mathrm{d} L \;, +\end{aligned} +\] + +where $X=c_1 \epsilon_{1\lambda} + c_2 \epsilon_{2\labmda} + \ldots$ +is just a placeholder to reduce clutter. $\mathrm{d} I_\lambda$ is +the AC amplitude (height of wiggle top of the detected light intensity +due to pulsatile arterial blood), while $I_\lambda$ is the DC ampltude +(height of the static base of the detected light intensity due to +everything else). This is actually a fairly sneaky step, because if +we can also use it to drop the DC compents. Because we've assumed +fixed concentrations (incompressible fluids), and there is no more DC +material coming in during a pulse (by definition), the effective $L$ +for the DC components does not change. Separating the DC and AC +components and running through the derivative again, we have + + + +\[ +\begin{aligned} + \frac{\mathrm{d} I_\lambda}{\mathrm{d} L} + &= \frac{\mathrm{d}}{\mathrm{d} L} \left( + I_{0\lambda} + e^{-(c_{\text{DC}1}\epsilon_{\text{DC}1\lambda} + +c_{\text{DC}2}\epsilon_{\text{DC}2\lambda} + \ldots) + L_\text{DC} + -(c_{\text{AC}1}\epsilon_{\text{AC}1\lambda} + +c_{\text{AC}2}\epsilon_{\text{AC}2\lambda} + \ldots) + L_\text{AC}} + \right) \\ + &= I_{0\lambda} + e^{-(c_{\text{DC}1}\epsilon_{\text{DC}1\lambda} + +c_{\text{DC}2}\epsilon_{\text{DC}2\lambda} + \ldots) + L_\text{DC}} + \frac{\mathrm{d}}{\mathrm{d} L} \left( + e^{-(c_{\text{AC}1}\epsilon_{\text{AC}1\lambda} + +c_{\text{AC}2}\epsilon_{\text{AC}2\lambda} + \ldots) + L_\text{AC}} + \right) \\ + &= I_{0\lambda} Y \frac{\mathrm{d}}{\mathrm{d} L} \left( + e^{-Z L_\text{AC}} \right) + = -Z I_{0\lambda} Y e^{-Z L_\text{AC}} + = -Z I_\lambda \\ + \frac{\mathrm{d} I_\lambda}{I_\lambda} &= -Z \mathrm{d} L \;, +\end{aligned} +\] + +where $Y=e^{-(c_{\text{DC}1}\epsilon_{\text{DC}1\lambda} + +c_{\text{DC}2}\epsilon_{\text{DC}2\lambda} + \ldots) + L_\text{DC}}$ +and $Z=c_{\text{AC}1}\epsilon_{\text{AC}1\lambda} + +c_{\text{AC}2}\epsilon_{\text{AC}2\lambda} + \ldots)$ +are just placeholders to reduce clutter. Note that the [last +equation](#eq:dI-I) looks just like the [previous one](#eq:dI-I-naive) +with the translation $X\rightarrow Z$. This means that if we stick to +using the AC-DC intensity ratio ($\frac{\mathrm{d} \Il}{\Il}$) we can +forget about the DC contribution completely. + +If the changing-$L$-but-static-$L_\text{DC}$ thing bothers you, you +can imagine insteadthat $L_\text{DC}$ grows with $L$, +but $c_{\text{DC}i}$ shrinks proportially (to conserve mass). With +this proportionate stretching, there is still no change in absorbtion +for that component +so $\frac{\mathrm{d}}{\mathrm{d}L}\exp(-c_{\text{DC}i}\epsilon_{\text{DC}i\lambda}L)=0$ +and we can still pull the DC terms out of the integral as we +[just did](#eq:dI-I). + +Taking a ratio of these amplitudes at two different wavelengths, we +get optical density ratio ([R](#R)) + + + +\[ + R = \frac{\frac{\text{AC}_{660}}{\text{DC}_{660}}} + {\frac{\text{AC}_{940}}{\text{DC}_{940}}} + = \frac{\frac{\mathrm{d} I_{660}}{I_{660}}} + {\frac{\mathrm{d} I_{940}}{I_{940}}} + = \frac{-Z_{660} \mathrm{d} L}{-Z_{940} \mathrm{d} L} + = \frac{Z_{660}}{Z_{940}} \;, +\] + +because $\mathrm{d} L$ (the amount of finger expansion during a pulse) +obviously doesn't depend on the color light you are using. Plugging +back in for $Z$, + + + +\[ + R = \frac{c_{\text{AC}1}\epsilon_{\text{AC}1,660} + + c_{\text{AC}2}\epsilon_{\text{AC}2,660} + \ldots} + {c_{\text{AC}1}\epsilon_{\text{AC}1,940} + + c_{\text{AC}2}\epsilon_{\text{AC}2,940} + \ldots} +\] + +Assuming, for now, that there are only two species of Hb—HbO₂ and +HHb—we can solve for $c_{\text{AC}1}/c_{\text{AC}2}$. + +\[ +\begin{aligned} + R &= \frac{c_{\text{AC}1}\epsilon_{\text{AC}1,660} + + c_{\text{AC}2}\epsilon_{\text{AC}2,660}} + {c_{\text{AC}1}\epsilon_{\text{AC}1,940} + + c_{\text{AC}2}\epsilon_{\text{AC}2,940}} \\ + R(c_{\text{AC}1}\epsilon_{\text{AC}1,940} + + c_{\text{AC}2}\epsilon_{\text{AC}2,940}) + &= c_{\text{AC}1}\epsilon_{\text{AC}1,660} + + c_{\text{AC}2}\epsilon_{\text{AC}2,660} \\ + c_{\text{AC}1} (R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}) + &= c_{\text{AC}2} (\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}) + \\ + \frac{c_{\text{AC}1}}{c_{\text{AC}2}} + &= \frac{\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}} + {R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}} + \;. +\end{aligned} +\] + +So now we know [HbO₂]/[HHb] in terms of the measured quantity $R$ and +the empirical values $\epsilon$. + +Plugging in to our [equation for $\text{Sf}_\text{O₂}$](#eq:Sfunc-O2) +to find the functional saturation: + + + +\[ +\begin{aligned} + \text{Sf}_\text{O₂} &= \frac{\text{[HbO₂]}}{\text{[HbO₂]} + \text{[HHb]}} + = \frac{1}{1 + \frac{\text{[HHb]}}{\text{[HbO₂]}}} + = \frac{1}{1 + \frac{c_{\text{AC}2}}{c_{\text{AC}1}}} + = \frac{1} + {1 + \frac{R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}} + {\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}}} + \;. +\end{aligned} +\] + +As a check, we can rephrase this as + +\[ +\begin{aligned} + \text{Sf}_\text{O₂} + &= \frac{1} + {1 + \frac{R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}} + {\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}}} + = \frac{\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}} + {\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940} + + R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}} \\ + &= \frac{\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}} + {\epsilon_{\text{AC}2,660} - \epsilon_{\text{AC}1,660} + + (\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}2,940})R} + = \frac{-\epsilon_{\text{AC}2,660} + \epsilon_{\text{AC}2,940}R} + {\epsilon_{\text{AC}1,660} - \epsilon_{\text{AC}2,660} + + (\epsilon_{\text{AC}2,940} - \epsilon_{\text{AC}1,940})R} + \;, +\end{aligned} +\] + +which matches [Mendelson 1989][M89], Eq. 8 with the translations: + +* $\text{Sf}_\text{O₂}\rightarrow Sp\text{O₂}$, +* $R\rightarrow R/IR$, +* $\epsilon_{\text{AC}2,660}\rightarrow\epsilon_R(\text{Hb})$, +* $\epsilon_{\text{AC}2,940}\rightarrow\epsilon_IR(\text{Hb})$, +* $\epsilon_{\text{AC}1,660}\rightarrow\epsilon_R(\text{HbO₂})$, and +* $\epsilon_{\text{AC}1,940}\rightarrow\epsilon_IR(\text{HbO₂})$. + +And that is the first-order explaination of how a pulse-oximeter +measures the functional saturation! + +Reading extinction coefficients off the [absorbtion +figure](#fig:absorbtion), I get + +\[ +\begin{aligned} + \epsilon_{\text{HbO₂},660} &= \epsilon_{\text{AC}1,660} = 0.10 \\ + \epsilon_{\text{HHb},660} &= \epsilon_{\text{AC}2,660} = 0.83 \\ + \epsilon_{\text{HbO₂},940} &= \epsilon_{\text{AC}1,940} = 0.29 \\ + \epsilon_{\text{HHb},940} &= \epsilon_{\text{AC}2,940} = 0.17 +\end{aligned} +\] + +which are comfortingly close to those given by [Mendelson][M89] in +Table 1. The corresponding $\text{Sf}_\text{O₂}(R)$ plot (from +[Tremper][T89]) is: + +[[!img SPO2vR.png + size="400x330" + alt="Experimental SpO₂ vs. R" + caption="Experimental SpO₂ vs. R (Tremper)"]] + +[[!img SfO2vR-theory.png + size="300x300" + alt="Theoretical SfO₂ vs. R" + caption="Theoretical SfO₂ vs. R."]] + +The theoretical plot was calculated using [[SfO2vR-theory.py]] and +[our $\text{Sf}_\text{O₂}$ equation](#eq:Sfunc-O2-R). This is why +it’s a good idea to use an empirical calibration curve! The concave +theoretical curve is supported by [Mendelson's figure 4][M89]. + + + + + +Nomenclature +============ + +
+
O₂
Molecular oxygen
+
[$x$]
Concentration of $x$ in the blood
+
BTP
Body temperature and pressure
+
STP
+
+ Standard temperature and pressure
+
$\text{P}_\text{O₂}$
O₂ partial pressure
+
$\text{P}i_\text{O₂}$
+
O₂ partial pressure at location $i$
+
$\text{S}_\text{O₂}$
+
Fractional O₂ saturation
+
$\text{S}i_\text{O₂}$
+
O₂ fractional saturation at location $i$
+
$\text{Sf}_\text{O₂}$
+
Functional O₂ saturation
+
Hg
Mercury
+
Hb
Hemoglobin monomer
+
HbO₂
Hemoglobin monomers complexed with O₂
+
HHb
Reduced hemoglobin (not complexed with O₂)
+
dysHb
Dys-hemoglobin (cannot complex with O₂)
+
MHb
+
+ Methemoglobin
+
HbCO
+
+ Carboxyhemoglobin
+
$I_{0\lambda}$
+
Intensity of incident light at wavelength $\lambda$
+
$I_\lambda$
+
Intensity of transmitted light at wavelength $\lambda$
+
$c_i$
+
Concentration of light-absorbing species $i$
+
$c_{\text{DC}i}$
+
Concentration of the $i$th DC species at wavelength $\lambda$
+
$c_{\text{AC}i}$
+
Concentration of the $i$th AC species at wavelength $\lambda$
+
$\epsilon_{i\lambda}$
+
Extinction coefficient of species $i$ at wavelength $\lambda$
+
$\epsilon_{\text{DC}i\lambda}$
+
Extinction coefficient of the $i$th DC species + wavelength $\lambda$
+
$\epsilon_{\text{DC}i\lambda}$
+
Extinction coefficient of the $i$th DC species + wavelength $\lambda$
+
$L$
Length of tissue through which light must pass
+
$L_\text{DC}$
Diastolic finger width
+
$R$
Optical density ratio}
+
LED
Light emitting diode
+
+ + +[pox]: http://en.wikipedia.org/wiki/Pulse_oximeter +[art]: http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx +[hemoglobin]: http://en.wikipedia.org/wiki/Hemoglobin +[partial]: http://en.wikipedia.org/wiki/Partial_pressure +[mole-volume]: http://hyperphysics.phy-astr.gsu.edu/hbase/kinetic/idegas.html +[T89]: http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx +[BL]: http://en.wikipedia.org/wiki/Beer\%E2\%80\%93Lambert_law +[CO-ox]: http://en.wikipedia.org/wiki/Co-oximeter +[M89]: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=30810 + +[[!tag tags/theory]] diff --git a/posts/Pulse_oxymetry/SConstruct b/posts/Pulse_oxymetry/SConstruct deleted file mode 100644 index 306becd..0000000 --- a/posts/Pulse_oxymetry/SConstruct +++ /dev/null @@ -1,11 +0,0 @@ -import os - -env = Environment(ENV=os.environ) - -main = env.PDF('main.tex') -SfO2vR_theory = env.Command( - 'fig/SfO2vR-theory.png', 'fig/SfO2vR-theory.py', 'python $SOURCE') -env.Depends(main, SfO2vR_theory) - -view = env.Alias('view', [main], 'xpdf -z page $SOURCE') -env.AlwaysBuild(view) diff --git a/posts/Pulse_oxymetry/fig/SPO2vR.png b/posts/Pulse_oxymetry/SPO2vR.png similarity index 100% rename from posts/Pulse_oxymetry/fig/SPO2vR.png rename to posts/Pulse_oxymetry/SPO2vR.png diff --git a/posts/Pulse_oxymetry/SfO2vR-theory.png b/posts/Pulse_oxymetry/SfO2vR-theory.png new file mode 100644 index 0000000..f1b7229 Binary files /dev/null and b/posts/Pulse_oxymetry/SfO2vR-theory.png differ diff --git a/posts/Pulse_oxymetry/fig/SfO2vR-theory.py b/posts/Pulse_oxymetry/SfO2vR-theory.py similarity index 100% rename from posts/Pulse_oxymetry/fig/SfO2vR-theory.py rename to posts/Pulse_oxymetry/SfO2vR-theory.py diff --git a/posts/Pulse_oxymetry/fig/absorbtion.png b/posts/Pulse_oxymetry/absorbtion.png similarity index 100% rename from posts/Pulse_oxymetry/fig/absorbtion.png rename to posts/Pulse_oxymetry/absorbtion.png diff --git a/posts/Pulse_oxymetry/fig/ac-dc.png b/posts/Pulse_oxymetry/ac-dc.png similarity index 100% rename from posts/Pulse_oxymetry/fig/ac-dc.png rename to posts/Pulse_oxymetry/ac-dc.png diff --git a/posts/Pulse_oxymetry/main.bib b/posts/Pulse_oxymetry/main.bib deleted file mode 100644 index 3ab909e..0000000 --- a/posts/Pulse_oxymetry/main.bib +++ /dev/null @@ -1,25 +0,0 @@ -@article { tremper1989, - author = "Tremper, Kevin K. and Barker, Steven J.", - title = "Pulse Oximetry", - year = 1989, - month = jan, - journal = "Anesthesiology", - issn = "0003-3022", - volume = 70, - number = 1, - pages = "98--108", - url = "http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx", -} - -@article { mendelson1989, - author = "Mendelson, Yitzhak and Kent, Joel C.", - title = "Variations in Optical Absorbtion Spectra of Aduly and Fetal Hemoglobins and ITs Effect on Pulse Oximetry", - year = 1989, - month = aug, - journal = "IEE Transactions on Biomedical Engineering", - issn = "0018-9294", - volume = 36, - number = 8, - pages = "844--848", - url = "http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=30810", -} diff --git a/posts/Pulse_oxymetry/main.tex b/posts/Pulse_oxymetry/main.tex deleted file mode 100644 index 8a4a7b7..0000000 --- a/posts/Pulse_oxymetry/main.tex +++ /dev/null @@ -1,499 +0,0 @@ -\documentclass{article} - -\usepackage{amsmath} % align and other math niceties -\usepackage{makeidx} % indexing -\makeindex % we don't actually use indexing, but having this here - % triggers Scons' call to makeindex -\usepackage[intoc]{nomencl} % nomenclature/symbol/abbreviation indexing -\makenomenclature - -\usepackage[super,sort&compress,comma]{natbib} % fancy citation extensions -% super selects citations in superscript mode -% sort&compress automatically sorts and compresses compound citations -% (\citep{a,b,...}) -% comma seperates multiple citations with commas rather than the -% default semicolons. -\bibliographystyle{unsrtnat} % number citations in the order referenced - -\usepackage{subfig} % compound figures -\usepackage{graphicx} % include graphics - -\usepackage[final]{hyperref} % hyper-links -\hypersetup{colorlinks} -\hypersetup{pdfauthor={W. Trevor King}} -\hypersetup{pdftitle={Pulse Oximetry}} -\hypersetup{pdfsubject={Pulse Oximetry}} -\title{Pulse Oximetry} -\date{\today} -\author{W. Trevor King} - -% parenthesis, for example (some stuff] would be \p({some stuff}] -\newcommand{\p}[3]{\left#1 #2 \right#3} -% concentration shortcut -\newcommand{\C}[1]{\ensuremath{\p[{#1}]}} -% the proper d to be used in derivatives and integrals -\newcommand{\dd}{\ensuremath{\mathrm d}} -% derivative of #2 with respect to #1 -\newcommand{\deriv}[2]{\ensuremath{\frac{\dd{#2}}{\dd{#1}}}} -% average of #1 -\newcommand{\avg}[1]{\ensuremath{\left\langle {#1} \right\rangle}} % average -% units without preceding value -\newcommand{\bareU}[1]{\textnormal{#1}} -% units shortcut -\newcommand{\U}[1]{\textnormal{\ \bareU{#1}}} - -% chemicals and molecules -\newcommand{\Ox}{\ensuremath{\mathrm O_2}} -\newcommand{\Hb}{\ensuremath{\mathrm{Hb}}} -\newcommand{\HHb}{\ensuremath{\mathrm{HHb}}} -\newcommand{\dysHb}{\ensuremath{\mathrm{dysHb}}} -\newcommand{\MHb}{\ensuremath{\mathrm{MHb}}} -\newcommand{\CO}{\ensuremath{\mathrm{CO}}} -\newcommand{\Hg}{\ensuremath{\mathrm{Hg}}} - -\newcommand{\xO}[1]{\ensuremath{{\mathrm{#1}}_{\Ox}}} - -% partial pressure PiO2 -\newcommand{\PxO}[1]{\xO{P#1}} -\newcommand{\PO}{\PxO{}} -\newcommand{\PiO}{\PxO{\mathit i}} - -% saturation SiO2. Also O2Sat -\newcommand{\SxO}[1]{\xO{S#1}} -\newcommand{\SO}{\SxO{}} -\newcommand{\SiO}{\SxO{\mathit i}} - -% functional saturation -\newcommand{\SOf}{\xO{S_{\mathit f}}} - -% content CoO2. Also O2CT. -\newcommand{\CoO}{\xO{Co}} - -% Beer-Lambert law coefficients -\newcommand{\Iol}{\ensuremath{I_{0 \lambda}}} -\newcommand{\Il}{\ensuremath{I_\lambda}} -\newcommand{\Iacl}{\ensuremath{I_{AC\lambda}}} -\newcommand{\Idcl}{\ensuremath{I_{DC\lambda}}} -\newcommand{\exl}[1]{\ensuremath{\epsilon_{#1 \lambda}}} -\newcommand{\eil}{\exl{i}} -\newcommand{\cdcx}[1]{\ensuremath{c_{DC#1 \lambda}}} -\newcommand{\cdci}{\cdcx{i}} -\newcommand{\cacx}[1]{\ensuremath{c_{AC#1}}} -\newcommand{\caci}{\cacx{i}} -\newcommand{\edcxl}[1]{\ensuremath{\epsilon_{DC#1 \lambda}}} -\newcommand{\edcil}{\edcxl{i}} -\newcommand{\eacxl}[1]{\ensuremath{\epsilon_{AC#1 \lambda}}} -\newcommand{\eacil}{\eacxl{i}} -\newcommand{\eiA}[1]{\ensuremath{\epsilon_{AC#1,660}}} -\newcommand{\eiB}[1]{\ensuremath{\epsilon_{AC#1,940}}} -\newcommand{\Ldc}{\ensuremath{L_{\mathrm{DC}}}} - -% use most of the page -\topmargin -0.5in -\headheight 0.0in -\headsep 0.0in -\textheight 9.5in % leave a bit of extra room for page numbers -\oddsidemargin -0.5in -\textwidth 7.5in - -\begin{document} - -\maketitle - -\section{Oxygen content} - -The circulatory system distributes oxygen (\Ox) throughout the body. -The amount of \Ox\ at any given point is measured by the \Ox\ content -(\CoO), usually given in $\frac{\bareU{mL \Ox at BTP}}{\bareU{dL blood}}$ -(BTP is my acronym for body temperature and pressure). Most -transported \Ox\ is bound to -\href{http://en.wikipedia.org/wiki/Hemoglobin}{hemoglobin} (\Hb), but -there is also free \Ox\ disolved directly in the plasma and cytoplasm -of suspended cells. -\nomenclature{\Ox}{Molecular oxygen} -\nomenclature{\CoO}{Oxygen content of blood} -\nomenclature{BTP}{Body temperature and pressure} -\nomenclature{\Hb}{Hemoglobin monomer} -\nomenclature{\SO}{Fractional \Ox\ saturation} -\nomenclature{\PO}{\Ox\ partial pressure} -\begin{equation} - \CoO = a\C{\Hb}\SO + b\PO \;, \label{eq:CoO-symbolic} -\end{equation} -where \SO is the \Hb's \Ox\ saturation and \PO is the \Ox\ partial -pressure. Don't worry about the coefficients $a$ and $b$ yet, we'll -get back to them in a second. - -The amound of dissolved \Ox is given by its -\href{http://en.wikipedia.org/wiki/Partial_pressure}{partial pressure} -(\PO). Partial pressures are generally given in \bareU{mm} of mercury -(\Hg) at standard temperature and pressure -(\href{http://en.wikipedia.org/wiki/Standard_conditions_for_temperature_and_pressure}{STP}). -Because the partial pressure changes as blood flows through the body, -an additional specifier $i$ may be added (\PiO) to clarify the -measurement location. \nomenclature{\Hg}{Mercury} -\nomenclature{STP}{Standard temperature and pressure} -\nomenclature{\PiO}{\Ox\ partial pressure at location $i$} -\begin{center} -\begin{tabular}{ccl} - $i$ & Full symbol & Location descriptor \\ - a & \PxO{a} & arterial \\ - p & \PxO{p} & peripheral or pulsatile \\ - t & \PxO{t} & tissue \\ - v & \PxO{t} & venous \\ -\end{tabular} -\end{center} - -\Ox\ is carried in the blood primarily through binding to hemoglobin -monomers (\Hb), with each monomer potentially binding a single \Ox. -Oxygen saturation (\SO) is the fraction of hemoglobin monomers (\Hb) -that have bound an oxygen molecule (\Ox). -\begin{equation} - \SO = \frac{\C{\Hb\Ox}}{\C{\Hb}} \;. \label{eq:SO} -\end{equation} -\SO, as a ratio of concentrations, is unitless. It is often expressed -as a percentage. \C{\Hb} is often given in \bareU{g/dL}. As with -partial pressures, an additional specifier $i$ may be added (\SiO) to -clarify the measurement location (\SxO{a}, \SxO{p}, \ldots). -\nomenclature{\SiO}{\Ox\ saturation at location $i$} - -Now we can take a second look at our \Ox\ content formula -(Eq.~\ref{eq:CoO-symbolic}). The coefficient $a$ must convert -\bareU{g/dL} to $\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$. -Using the molecular weight of \Hb\ and the -\href{http://hyperphysics.phy-astr.gsu.edu/hbase/kinetic/idegas.html}{volume - of a mole of ideal gas at STP}. -\begin{align} - \C{\Hb} &= \chi\frac{\bareU{g \Hb}}{\bareU{dL}} - \cdot\frac{1\U{mol \Hb}}{17\U{kg \Hb}} - \cdot\frac{1\U{mol \Ox}}{1\U{mol \Hb}} - \cdot\frac{22.4\U{L ideal gas}}{1\U{mol ideal gas}} \\ - &= 1.32 \frac{\bareU{mL \Ox}}{\bareU{g \Hb}} \cdot \chi -\end{align} -where $\chi$ is a pure number. Therefore, $a=1.32 \frac{\bareU{mL - \Ox}}{\bareU{g \Hb}}$. The powers that be seem to have used a -slightly different STP, since the more commonly used value is 5\% -higher at $1.39$. - -The coefficient $b$ must convert \bareU{mm \Hg\ at STP} to -$\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$. Empirical -experiments (?) give a value of -$b=0.003\frac{\bareU{mL \Ox\ at BTP}} - {\bareU{dL blood $\cdot$ mm \Hg\ at STP}}$. -Now we can write out the familiar form -\begin{equation} - \CoO = - 1.39 \frac{\bareU{mL \Ox}}{\bareU{g \Hb}} \C{\Hb}\SO - + 0.003\frac{\bareU{mL \Ox\ at BTP}} - {\bareU{dL blood $\cdot$ mm \Hg\ at STP}} - \PO \;. \label{eq:CoO} -\end{equation} -Reasonable levels are -\begin{center} -\begin{tabular}{rl} - $\C{\Hb}$ & $14\frac{\bareU{g \Hb}}{\bareU{dL blood}}$ \\ - $\SO$ & 98\% \\ - $\PO$ & $100\U{mm \Hg\ at STP}$ \\ - $1.39 \frac{\bareU{mL \Ox}}{\bareU{g \Hb}} \C{\Hb}\SO$ & - $19.1\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$ \\ - $0.003\frac{\bareU{mL \Ox\ at BTP}} - {\bareU{dL blood $\cdot$ mm \Hg\ at STP}} - \PO$ & - $0.299\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$ -\end{tabular} -\end{center} -Because the dissolved \Ox\ has such a tiny contribution (1.5\% of the -total in my example), it is often measured at BTP rather than STP. -Sometimes it is dropped from the calculation entirely. We focus on -the more imporant $\C{\Hb}\SO$ in the next section. - -\section{Oxygen saturation} - -The preceding discussion used $\C{\Hb}\SO$ to represent the -concentration of \Hb\Ox\ complexes (Eqs.~\ref{eq:SO} and -~\ref{eq:CoO}). This was useful while we were getting our bearings, -but now we will replace that term with a more detailed model. Let us -sort the \Hb\ monomers into species -\begin{center} -\begin{tabular}{ll} - \Hb & all hemoglobin monomers \\ - \Hb\Ox & monomers complexed with \Ox \\ - \HHb & reduced \Hb\ (not complexed with \Ox) \\ - \dysHb & dys-hemoglobin (cannot complex with \Ox) \\ - \MHb & \href{http://en.wikipedia.org/wiki/Methemoglobin}{methemoglobin} \\ - \Hb\CO & \href{http://en.wikipedia.org/wiki/Carboxyhemoglobin} - {carboxyhemoglobin} -\end{tabular} -\end{center} -\nomenclature{\Hb\Ox}{\Hb\ monomers complexed with \Ox} -\nomenclature{\HHb}{Reduced \Hb\ (not complexed with \Ox)} -\nomenclature{\dysHb}{Dys-hemoglobin (cannot complex with \Ox)} -\nomenclature{\MHb}{Methemoglobin} -\nomenclature{\Hb\CO}{Carboxyhemoglobin} -These species are related as follows -\begin{align} - \C{\Hb} &= \C{\Hb\Ox} + \C{\HHb} + \C{\dysHb} \\ - \C{\dysHb} &= \C{\MHb} + \C{\Hb\CO} + \text{other broken forms} -\end{align} - -Because modern two-color pulse-oximeters don't measure \SO exactly, -the related quantity that they \emph{do} measure has been given a name -of its own: the \emph{functional} saturation (\SOf). -\nomenclature{\SOf}{Functional \Ox\ saturation} -\begin{equation} - \SOf = \frac{\C{\Hb\Ox}}{\C{\Hb\Ox} + \C{\HHb}} \;. \label{eq:funcSO} -\end{equation} -Rephrasing our earier saturation in Eq.~\ref{eq:SO}, we see -\begin{equation} - \SO = \frac{\C{\Hb\Ox}}{\C{\Hb}} - = \frac{\C{\Hb\Ox}} - {\C{\Hb\Ox} + \C{\HHb} + \C{\dysHb}} \;. \label{eq:fracSO} -\end{equation} -To avoid confusion with \SOf, our original \SO\ is sometimes referred -to as the\emph{fractional} saturation. - -\section{The Beer-Labmert law} - -So far we've been labeling and defining attributes of the blood. The -point of this excercise is to understand how a pulse oximeter measures -them. People have known for a while that different hemoglobin -complexes (\Hb\O, \HHb, \MHb, \Hb\CO, \ldots) have differnt absorbtion -spectra (Fig.~\ref{fig:absorbtion}), and they have been using this -difference since the 1930's to make pulse-oximeters based on two-color -transmittance measurements\citep{tremper1989}. - -\begin{figure} - \begin{center} - \includegraphics[width=0.6\textwidth]{fig/absorbtion} - \end{center} - \caption{Absorbance spectra for assorted hemoglobin - species\citep{tremper1989}.\label{fig:absorbtion}} -\end{figure} - -By passing different wavelengths of light through perfused tissue, we -can measure the relative quantities of the different \Hb\ species. -The basis for this analysis comes from the -\href{http://en.wikipedia.org/wiki/Beer\%E2\%80\%93Lambert_law}{Beer-Lambert - law} -\begin{equation} - I = I_0 e^{-c \epsilon L} \;, \label{eq:BL} -\end{equation} -where $I_0$ is the incident intensity (entering the tissue), $I$ is -the tranmitted intensity (leaving the tissue), $c$ is the tissue -density (concentration), $\epsilon$ is the extinction coefficient -(molar absorbtivity), and $L$ is the tissue thickness. Rephrasing the -math as English, this means that the intensity drops off exponentially -as you pass through the tissue, and more tissue (higher $c$ or $L$) or -more opaque tissue (higher $\epsilon$) mean you'll get less light out -the far side. This is a very simple law, and the price of the -simplicity is that it brushes all sorts of things under the rug. -Still, it will help give us a basic idea of what is going on in a -pulse-oximeter. - -Rather than treat the the tissue as a single substance, lets use the -Beer-Labmert law on a mixture of substances with concentrations $c_1$, -$c_2$, \ldots and extinction coefficients $\epsilon_1$, $\epsilon_2$, -\ldots. -\begin{equation} - I = I_0 e^{-(c_1 \epsilon_1 + c_2 \epsilon_2 + \ldots) L} \;. -\end{equation} - -We also notice that the intensities and extinction coefficients may -all depend on the wavelength of light $\lambda$, so we should really -write -\begin{equation} - \Il = \Iol e^{-(c_1 \exl{1} + c_2 \exl{2} + \ldots) L} - \;. \label{eq:BL-lambda} -\end{equation} -\nomenclature{\Iol}{Intensity of incident light at wavelength $\lambda$} -\nomenclature{\Il}{Intensity of transmitted light at wavelength $\lambda$} -\nomenclature{$c_i$}{Concentration of species $i$} -\nomenclature{\eil}{Extinction coefficient of species $i$ at - wavelength $\lambda$} -\nomenclature{$L$}{Length of tissue through which light must pass} - -Once isolated, a simple spectroscopy experiment can measure the -extinction coefficient $\eil$ of a given species across a range of -$\lambda$, and this has been done for all of our common \Hb\ flavors. -We need to play with Eq.~\ref{eq:BL-lambda} to find a way to extract -the unknown concentrations, which we can then use to calculate the -\SO\ (Eqs.~\ref{eq:funcSO} and \ref{eq:fracSO}) which we can use in -turn to calculate \CoO\ (Eq.~\ref{eq:CoO}). - -Note that by increasing the number of LEDs (adding new $\lambda$) we -increase the number of constraints on the unknown $c_i$. A -traditional pulse-oximeter uses two LEDs, at $660\U{nm}$ and -$940\U{nm}$, to measure \SOf (related to $\C{\Hb\Ox}$ and $\C{\HHb}$). -More recent designs called -\href{http://en.wikipedia.org/wiki/Co-oximeter}{pulse CO-oximeters} -use more wavelengths to allow measurement of quanties related to -additional species (approaching the end goal of measuring \SO). -\nomenclature{LED}{Light emitting diode} - -Let us deal with the fact that there is a lot of stuff absorbing light -that is not arterial blood (e.g. venous blood, other tissue, bone, -etc). The good thing about this stuff is that it's just sitting there -or moving through in a smooth fasion. Arterial blood is the only -thing that's pulsing (Fig.~\ref{fig:ac-dc}). - -\begin{figure} - \begin{center} - \includegraphics[width=0.6\textwidth]{fig/ac-dc} - \end{center} - \caption{AC and DC transmission - components\citep{tremper1989}.\label{fig:ac-dc}} -\end{figure} - -During a pulse, the pressure in the finger increases and non-arterial -tissue is compressed, changing $L$ and $c_i$ from their trough values -to peak values $L'$ and $c_i'$. Since the finger is big, the -fractional change in width $\dd L/L=(L'-L)/L$ is very small. Assuming -the change in concentration is even smaller (since most liquids are -fairly incompressible), we have -\begin{align} - \deriv{L}{\Il} - &= \deriv{L}{}\p({\Iol e^{-(c_1 \exl{1} + c_2 \exl{2} + \ldots) L}}) - = \deriv{L}{}\p({\Iol e^{-X L}}) - = -X \Iol e^{-X L} - = -X\Il \\ - \frac{\dd \Il}{\Il} &= -X \dd L \;, \label{eq:dI-I-naive} -\end{align} -where $X=c_1 \exl{1} + c_2 \exl{2} + \ldots$ is just a placeholder to -reduce clutter. \dd \Il is the AC amplitude (height of wiggle top of -the detected light intensity due to pulsatile arterial blood), while -\Il is the DC ampltude (height of the static base of the detected -light intensity due to everything else). This is actually a fairly -sneaky step, because if we can also use it to drop the DC compents. -Because we've assumed fixed concentrations (incompressible fluids), -and there is no more DC material comming in during a pulse (by -definition), we can pull out the effective $L$ for the DC components -does not change. Separating the DC and AC components and running -through the derivative again, we have -\nomenclature{\cdci}{Concentration of the $i$th DC species at - wavelength $\lambda$} \nomenclature{\caci}{Concentration of the - $i$th AC species at wavelength $\lambda$} -\nomenclature{\edcil}{Extinction coefficient of the $i$th DC species - at waveleng th $\lambda$} \nomenclature{\eacil}{Extinction - coefficient of the $i$th AC species at waveleng th $\lambda$} -\nomenclature{\Ldc}{DC finger width} -\begin{align} - \deriv{L}{\Il} - &= \deriv{L}{}\p({ - \Iol e^{-(\cdcx{1}\edcxl{1} + \cdcx{2}\edcxl{2} + \ldots) \Ldc - -(\cacx{1}\eacxl{1} + \cacx{2}\eacxl{2} + \ldots) L}}) \\ - &= \Iol e^{-(\cdcx{1}\edcxl{1} + \cdcx{2}\edcxl{2} + \ldots) \Ldc} - \deriv{L}{}\p({e^{-(\cacx{1}\eacxl{1} + \cacx{2}\eacxl{2} + \ldots) L} - }) \\ - &= \Iol Y \deriv{L}{}\p({e^{-Z L}}) - = -Z \Iol Y e^{-Z L} - = -Z \Il \\ - \frac{\dd \Il}{\Il} &= -Z \dd L \;, \label{eq:dI-I} -\end{align} -where $Y=e^{-(\cdcx{1}\edcxl{1} + \cdcx{2}\edcxl{2} + \ldots) \Ldc}$ -and $Z=\cacx{1}\eacxl{1} + \cacx{2}\eacxl{2} + \ldots$ are just -placeholders to reduce clutter. Note that Eq.~\ref{eq:dI-I} looks -just like Eq.~\ref{eq:dI-I-naive} with the translation $X\rightarrow -Z$. This means that if we stick to using the AC-DC intensity ratio -($\frac{\dd \Il}{\Il}$) we can forget about the DC contribution -completely\footnote{ -If the changing-$L$-but-static-$\Ldc$ thing bothers you, you can -imagine insteadthat $\Ldc$ grows with $L$, but \cdci shrinks -proportially (to conserve mass). With this proportionate stretching, -there is still no change in absorbtion for that component so -$\deriv{}{L}\exp(-\cdci\edcil L)=0$ and we can still pull the DC -terms out of the integral as we did for Eq.~\ref{eq:dI-I}.}. - -Taking a ratio of these amplitudes at two different wavelengths, we -get optical density ratio -\nomenclature{$R$}{Optical density ratio} -\begin{equation} - R = \frac{\frac{AC_{660}}{DC_{660}}}{\frac{AC_{940}}{DC_{940}}} - = \frac{\frac{\dd I_{660}}{I_{660}}}{\frac{\dd I_{940}}{I_{940}}} - = \frac{-Z_{660} \dd L}{-Z_{940} \dd L} - = \frac{Z_{660}}{Z_{940}} \;, -\end{equation} -because $\dd L$ (the amount of finger expansion during a pulse) -obviously doesn't depend on the color light you are using ;). -Plugging back in for $Z$, -\begin{equation} - R = \frac{\cacx{1}\eiA{1} + \cacx{2}\eiB{2} + \ldots} - {\cacx{1}\eiB{1} + \cacx{2}\eiB{2} + \ldots} \;. -\end{equation} -Assuming, for now, that there are only two species of \Hb, \Hb\Ox and -\HHb, we can solve for $\cacx{1}/\cacx{2}$. -\begin{align} - R &= \frac{\cacx{1}\eiA{1} + \cacx{2}\eiA{2}} - {\cacx{1}\eiB{1} + \cacx{2}\eiB{2}} \\ - R(\cacx{1}\eiB{1} + \cacx{2}\eiB{2}) - &= \cacx{1}\eiA{1} + \cacx{2}\eiA{2} \\ - \cacx{1} (R\eiB{1} - \eiA{1}) &= \cacx{2} (\eiA{2} - R\eiB{2}) \\ - \frac{\cacx{1}}{\cacx{2}} &= \frac{\eiA{2} - R\eiB{2}}{R\eiB{1} - \eiA{1}} - \;. -\end{align} -So now we know $\C{\Hb\Ox}/\C{\HHb}$ in terms of the measured quantity -$R$. - -Plugging in to Eq.~\ref{eq:funcSO} to find the functional saturation -\begin{align} - \SOf &= \frac{\C{\Hb\Ox}}{\C{\Hb\Ox} + \C{\HHb}} - = \frac{1}{1 + \frac{\C{\HHb}}{\C{\Hb\Ox}}} - = \frac{1}{1 + \frac{\cacx{2}}{\cacx{1}}} - = \frac{1}{1 + \frac{R\eiB{1} - \eiA{1}}{\eiA{2}-R\eiB{2}}} - \;. \label{eq:SOfvR} -\end{align} - -As a check, we can rephrase this as -\begin{align} - \SOf &= \frac{1}{1 + \frac{R\eiB{1} - \eiA{1}}{\eiA{2} - R\eiB{2}}} - = \frac{\eiA{2} - R\eiB{2}}{\eiA{2} - R\eiB{2} + R\eiB{1} - \eiA{1}} \\ - &= \frac{\eiA{2} - \eiB{2}R}{\eiA{2} - \eiA{1} + (\eiB{1} - \eiB{2})R} - = \frac{-\eiA{2} + \eiB{2}R}{\eiA{1} - \eiA{2} + (\eiB{2} - \eiB{1})R} - \;, -\end{align} -which matches \citet{mendelson1989}, Eq.~8 with the translations -$\SOf\rightarrow\SxO{p}$, $R\rightarrow R/IR$, -$\eiA{2}\rightarrow\epsilon_R(\HHb)$, -$\eiB{2}\rightarrow\epsilon_IR(\HHb)$, -$\eiA{1}\rightarrow\epsilon_R(\Hb\Ox)$, and -$\eiB{1}\rightarrow\epsilon_IR(\Hb\Ox)$. - -And that is the first-order explaination of how a pulse-oximeter -measures the functional saturation! - -Reading extinction coefficients off Fig.~\ref{fig:absorbtion}, I get -\begin{align} - \epsilon_{\Hb\Ox,660} &= \eiA{1} = 0.10 \\ - \epsilon_{\HHb,660} &= \eiA{2} = 0.83 \\ - \epsilon_{\Hb\Ox,940} &= \eiB{1} = 0.29 \\ - \epsilon_{\HHb,940} &= \eiB{2} = 0.17 -\end{align} -which are comfortingly close to those given by \citet{mendelson1989} -in their Table~1. The corresponding $\SOf(R)$ plot can be seen in -Fig.~\ref{fig:SfOvR-theory}. - -\begin{figure} - \begin{center} - \subfloat[]{\label{fig:SfOvR-experiment} - \includegraphics[width=0.48\textwidth]{fig/SPO2vR}} - \subfloat[]{\label{fig:SfOvR-theory} - \includegraphics[width=0.40\textwidth]{fig/SfO2vR-theory}} - \end{center} - \caption{Comparison of (a) an experimental calibration - curve\citep{tremper1989} with (b) a theoretical calibration curve - calculated using Eq.~\ref{eq:SOfvR}. This is why it's a good idea - to use an empirical calibration curve ;).\label{fig:SfOvR}} - % concave theoretical SfO2vR theory curve supported by - % mendelson1989, Fig. 4. -\end{figure} - -%, because LEDs are finicky, it's hard to know how bright they are -%without looking ;). Therefore, we'd like to work $\Iol$ out of the -%picture. As blood pulses through the finger, imagine that the -%concentrations - -\printnomenclature - -\phantomsection -\addcontentsline{toc}{section}{References} -\bibliography{main} - -\end{document}