MATLAB Code
Implements the propofol model of Cortinez et al.[1]
Contributed by Jeff E Mandel
function [sys] = cortinez(Age, Weight, stepSize)
% Implements the model of Cortinez using table S2a for the pooled data
% Cortínez LI, Anderson BJ, Penna A, Olivares L, Muñoz HR, Holford NH, Struys MM, Sepulveda P.
% Influence of obesity on propofol pharmacokinetics: derivation of a pharmacokinetic model.
% Br J Anaesth. 2010;105:448-56.
% Standard volumes (Liters for 70 kg patient)
V1std = 4.48;
V2std = 21.2;
V3std = 237;
%Standard clearances (Liters/min for 70 kg patient)
CL1std = 1.92;
Q2std = 1.45;
Q3std = 0.86;
%Age correction factors
SLV2 = -0.0164;
SLQ2 = -0.0153;
wa = Weight/70;
wap = wa^0.75;
aa = Age - 50;
V1 = V1std * wa;
V2 = V2std * wa * exp(SLV2*aa);
V3 = V3std * wa;
volume = [V1 V2 V3];
CL1 = CL1std* wap;
CL2 = Q2std* wap * exp(SLQ2*aa);
CL3 = Q3std*wap;
clearance = [CL1 CL2 CL3];
% Solve for the value of ke0 which yields a time to peak effect of 1.4
% minutes. We search in the range of .1 to 2.0
tpeak = 1.6;
ike0 = [.1;2];
t=0:.0005:3;
u=zeros(size(t));
u(1)=1;
options = optimset('Display','off'); % Turn off Display
ke0 = fzero(@getKe0, ike0, options);
%disp(ke0);
function [error] = getKe0(tke0)
[sys] = mam2ss(clearance,volume,tke0);
[y,t] = lsim(sys,u,t);
s = lsiminfo(y,t,0); % final value is 0
error = tpeak - s.MaxTime;
end
sys = mam2ss(clearance,volume, ke0);
if (nargin==3)
sys=c2d(sys, stepSize,'zoh');
end
end
function [sys] = mam2ss(clearance,volume, ke0)
% returns a state space model from vectors of clearance
% and compartment volumes. All states are drug amount
% in the compartment; to get concentration, divide by compartment
% volume in the C matrix. Note that this code can handle an
% arbitrary number of compartments, but assumes the first compartment is
% the central compartment (mam is short for mamillary).
% The effect site compartment is represented as a compartment of negligible
% volume adjoined to the central compartment.
n = length(clearance);
if (nargin == 2)
k1 = clearance./volume(1);
k2 = clearance(2:n)./volume(2:n);
A = [-sum(k1) k2;transpose(k1(2:n)) -diag(k2)];
B = [1;zeros(n-1,1)]; % Direct addition of drug into the central compartment
C = [1/volume(1) zeros(1,n-1)]; % Observation of the central compartment concentration.
else
EFFECT_VOL_FACTOR=10000; % ratio of central compartment vol to effect
k1 = [clearance./volume(1) ke0/EFFECT_VOL_FACTOR];
k2 = [clearance(2:n)./volume(2:n) ke0];
A = [-sum(k1) k2;transpose(k1(2:n+1)) -diag(k2)];
B = [1;zeros(n,1)]; % Direct addition of drug into the central compartment
C = [zeros(1,n) EFFECT_VOL_FACTOR/volume(1)]; % Observation of the effect site compartment concentration.
end
C = C./1000; % All compartment volumes are in L, convert to ml
D=0;
sys = ss(A,B,C,D);
end
- Cortínez L, Anderson B, Penna A, Olivares L, Muñoz H, Holford N, Struys M, Sepulveda P: Influence of obesity on propofol pharmacokinetics: derivation of a pharmacokinetic model. Br J Anaesth 2010; 105:448–56 PMID: 20710020