437 lines
20 KiB
Plaintext
437 lines
20 KiB
Plaintext
maintenance:
|
|
|
|
title: AUC Dose Calculation Coefficient;;
|
|
mlmname: SYS_CALC_AUC_COEF;;
|
|
arden: version 2.5;;
|
|
version: 18.4;;
|
|
institution: Allscripts, System MLM;;
|
|
author: Allscripts Healthcare Solutions, Inc.;;
|
|
specialist: ;;
|
|
date: 2018-10-26;;
|
|
validation: testing;;
|
|
|
|
/* P r o p r i e t a r y N o t i c e */
|
|
/* Unpublished (c) 2013 - 2018 Allscripts Healthcare, LLC. and/or its affiliates. All Rights Reserved.
|
|
|
|
P r o p r i e t a r y N o t i c e: This software has been provided pursuant to a License Agreement, with
|
|
Allscripts Healthcare, LLC. and/or its affiliates, containing restrictions on its use. This software contains
|
|
valuable trade secrets and proprietary information of Allscripts Healthcare, LLC. and/or its affiliates and is
|
|
protected by trade secret and copyright law. This software may not be copied or distributed in any form or medium,
|
|
disclosed to any third parties, or used in any manner not provided for in said License Agreement except with prior
|
|
written authorization from Allscripts Healthcare, LLC. and/or its affiliates. Notice to U.S. Government Users:
|
|
This software is {{{SINGLE-QUOTE}}}Commercial Computer Software{{{SINGLE-QUOTE}}}.
|
|
|
|
All product names are the trademarks or registered trademarks of Allscripts Healthcare, LLC. and/or its affiliates.
|
|
*/
|
|
/* P r o p r i e t a r y N o t i c e */
|
|
|
|
library:
|
|
purpose:
|
|
The sys_calc_AUC_coef MLM determines the computation coefficient for Area Under
|
|
the Curve (AUC) dosing and returns it to the sys_calc_dosage MLM for final calculation
|
|
of the Dose, along with a text string showing the formula used.
|
|
;;
|
|
explanation:
|
|
Four different computations for carboplatin dosage are implemented by this MLM.
|
|
The Calvert formula, used mostly for adults, requires a value for a Glomerular
|
|
Filtration Rate (GFR), which is approximated by Estimated Creatinine Clearance (ECC).
|
|
The ECC is calculated by the Cockcroft-Gault or Jellife method as selected by the user
|
|
or the user may supply a measured or "Actual" value. A clinically-determined constant
|
|
value is added to ECC (or GFR), and the sum is multiplied by a value for the Area
|
|
Under the Curve (AUC). The Calvert formula is as follows:
|
|
|
|
Carboplatin dose (mg) = AUC x (GFR + 25)
|
|
|
|
For Pediatric patients less than 18 years old and weighing 10 Kg or more,
|
|
the dose calculation requires a "raw CrCl" test result or user-entered
|
|
lab value. The modified Calvert formula is:
|
|
|
|
Carboplatin Dose (mg) = AUC x [CrCl + (BSA x 15)]
|
|
|
|
For pediatric patients less than 18 years old and weighing less than 10 Kg,
|
|
the dose calculation requires a "raw CrCl" test result or user-entered
|
|
lab value. The modified Calvert formula is:
|
|
|
|
Carboplatin Dose (mg) = AUC x [CrCl + (Wt x 0.36)]
|
|
|
|
A third choice for all pediatric patients less than 18 years old is the
|
|
St. Jude{{{SINGLE-QUOTE}}}s modified Calvert formula, which requires a measured Creatinine
|
|
Clearance. The St. Jude{{{SINGLE-QUOTE}}}s modified Calvert formula is :
|
|
|
|
Carboplatin Dose (mg) = target AUC x [(0.93 x CrCl/BSA) + 15] x BSA.
|
|
|
|
The Dose Basis and BSA preference are selected by the user and determine which data elements
|
|
are used and how to calculate the ECC. The patient{{{SINGLE-QUOTE}}}s age determines whether to use Pediatric
|
|
BSA, and the patient{{{SINGLE-QUOTE}}}s height constrains the use of Ideal or Adjusted weights. The Dose Basis
|
|
strings and the calculations to which they correspond are listed:
|
|
|
|
Dose Basis string Dose Calculation Considerations
|
|
|
|
AUC (Cockcroft-Gault) Dose = AUC x (CrCl+25)
|
|
AUC (Cockcroft-Gault ideal) Dose = AUC x (CrCl+25) Ht >= 150 cm
|
|
AUC (Cockcroft-Gault adjusted) Dose = AUC x (CrCl+25)
|
|
AUC (Jelliffe) Dose = AUC x (CrCl+25)
|
|
AUC (Jelliffe ideal) Dose = AUC x (CrCl+25) Ht >= 150 cm
|
|
AUC (Jelliffe adjusted) Dose = AUC x (CrCl+25)
|
|
AUC (Jelliffe no BSA) Dose = AUC x (CrCl+25)
|
|
|
|
AUC (measured CrCl) Dose = AUC x (CrCl+25) Adult or Peds
|
|
AUC (measured CrCl) Dose = AUC x (CrCl+(BSA x 15)) Age <= 18y, Wt >= 10 kg
|
|
AUC (measured CrCl) Dose = AUC x (CrCl+(Wt x 0.36)) Age <= 18y, Wt < 10 kg
|
|
AUC (St. Jude{{{SINGLE-QUOTE}}}s modified-Peds) Dose = AUC x ((0.93 x ClCl/BSA)+15) x BSA Age <= 18y
|
|
|
|
Note that all of the above Dose Calculations have the general pattern of
|
|
|
|
Dose = AUC_value x AUC_coefficient
|
|
|
|
The AUC_value is entered by the user and this MLM determines the AUC_coefficient, which
|
|
are then used to calculate the dose.
|
|
|
|
The sys_calc_AUC_coef MLM requires the arguments listed below from the calling MLM or program.
|
|
Note that Units of measure are assumed to always be US standard: ml/min for for Creatinine
|
|
Clearance and mg/dL for Serum Creatinine. Any conversion required is done by the application.
|
|
Arguments:
|
|
|
|
ht_val - in centimeters, used in BSA and Ideal weight
|
|
wt_val - in Kg, used in BSA and Adjusted weight calcs
|
|
BSA_val - in m^2, for use in various calculations
|
|
dose_val - user entry in Requested field, to be used as AUC_value
|
|
dose_basis - string selected by user
|
|
serum_creatinine - either entered by user into ECC control or sent by application
|
|
creat_clearance - either entered by user into ECC control or sent by application
|
|
is_actual_CrCl - state of "Actual" button on the ECC control - True = set, False = clear
|
|
client_info_obj - used for accessing client demographic info as needed
|
|
|
|
|
|
The sys_calc_AUC_dose mlm returns the following values:
|
|
|
|
error_message - string, or "" if no error was generated
|
|
AUC_coef - number computed from the values received, for the chosen dose basis
|
|
dose_calc_formula - a string containing the formula by which the values are computed
|
|
|
|
|
|
;;
|
|
keywords: Carboplatin dosage, Calvert{{{SINGLE-QUOTE}}}s formula
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
|
|
data:
|
|
|
|
/* ------------------------------------------ */
|
|
/* Arguments passed in by sys_calc_dosage mlm */
|
|
/* ------------------------------------------ */
|
|
(ht_val,
|
|
wt_val,
|
|
BSA_val,
|
|
dose_val,
|
|
dose_basis,
|
|
serum_creatinine, // from ECC control via sys_dose_calc mlm
|
|
creat_clearance, // from ECC control via sys_dose_calc mlm
|
|
is_actual_CrCl, // from ECC control via sys_dose_calc mlm
|
|
client_info_obj
|
|
) := argument;
|
|
|
|
/****************** Make Changes To Spelling And Flags In This Section *****************/
|
|
/* Set to true if a decision.log is needed.*/
|
|
log_execution_info := false;
|
|
|
|
/*-----------------------------------*/
|
|
/* Declare MLMs and variables */
|
|
/*-----------------------------------*/
|
|
/* MLM to get the Estimated Creatinine Clearance. */
|
|
func_calc_estCrCl := MLM {{{SINGLE-QUOTE}}}SYS_CALC_EST_CRCL{{{SINGLE-QUOTE}}};
|
|
|
|
/* MLM to get the BSA */
|
|
func_calc_BSA := MLM {{{SINGLE-QUOTE}}}SYS_CALC_BSA{{{SINGLE-QUOTE}}};
|
|
|
|
pediatric_BSA_age_limit := 18; // years
|
|
calculate_with_BSA := true; // assume we will use BSA in Jelliffe formula
|
|
BSA_pref := "Standard"; // default BSA calculation will be done
|
|
EstCrCl_equation_pref := ""; // will be set for Cockcroft-Gault or Jelliffe only
|
|
use_ECC_mlm := true; // assume we will use the EstCrCl mlm
|
|
calc_pedi_dose := false; // assume we will do an adult dosage
|
|
error_message := ""; // to be populated if errors are found
|
|
fatal_error := false; // will be used to determine if we can continue
|
|
|
|
/*----------------------------------------------------------*/
|
|
/* define dose basis string sets for AUC dose calculations */
|
|
/*----------------------------------------------------------*/
|
|
AUC_cg_string := ("AUC (Cockcroft-Gault)", "AUC (Cockcroft-Gault ideal)",
|
|
"AUC (Cockcroft-Gault adjusted)");
|
|
AUC_jlf_string := ("AUC (Jelliffe)", "AUC (Jelliffe ideal)", "AUC (Jelliffe adjusted)",
|
|
"AUC (Jelliffe no BSA)");
|
|
AUC_mCrCl_string := ("AUC (measured CrCl)", "AUC (St. Jude{{{SINGLE-QUOTE}}}s modified-Peds)");
|
|
AUC_ideal_string := ("AUC (Cockcroft-Gault ideal)", "AUC (Jelliffe ideal)");
|
|
AUC_adjusted_string := ("AUC (Cockcroft-Gault adjusted)", "AUC (Jelliffe adjusted)");
|
|
AUC_strings := (AUC_cg_string, AUC_jlf_string, AUC_mCrCl_string);
|
|
|
|
/***************************************************************************************/
|
|
|
|
/*---------------------------*/
|
|
/* convert values to numbers */
|
|
/*---------------------------*/
|
|
ht_val := ht_val as number;
|
|
wt_val := wt_val as number;
|
|
BSA_val := BSA_val as number;
|
|
dose_val := dose_val as number;
|
|
serum_creatinine := serum_creatinine as number;
|
|
creat_clearance := creat_clearance as number;
|
|
|
|
/*----------------------------------------*/
|
|
/* set up Pediatric calculation if needed */
|
|
/*----------------------------------------*/
|
|
if exist client_info_obj
|
|
then
|
|
(birthdatetime,
|
|
birth_year,
|
|
patient_gender ):= read last
|
|
{ClientInfo: birthdatetime, BirthYearNum, GenderTypeIntlCode
|
|
REFERENCING client_info_obj};
|
|
endif;
|
|
if exist birthdatetime
|
|
and birth_year > 0
|
|
and birthdatetime is time
|
|
then
|
|
patient_age:= (NOW - birthdatetime) / (1 year);
|
|
calc_pedi_dose := (patient_age <= pediatric_BSA_age_limit);
|
|
endif; /* if exist birthdatetime */
|
|
|
|
/*------------------------------------------*/
|
|
/* set EstCrCl equation and BSA preference */
|
|
/*------------------------------------------*/
|
|
if (dose_basis is in AUC_mCrCl_string)
|
|
then
|
|
EstCrCl_equation_pref := "";
|
|
use_ECC_mlm := false;
|
|
|
|
elseif dose_basis is in AUC_cg_string
|
|
then
|
|
EstCrCl_equation_pref := "Cockcroft-Gault";
|
|
|
|
elseif dose_basis is in AUC_jlf_string
|
|
then
|
|
EstCrCl_equation_pref := "Jelliffe";
|
|
if dose_basis = "AUC (Jelliffe no BSA)"
|
|
then
|
|
calculate_with_BSA := false;
|
|
endif;
|
|
endif;
|
|
|
|
/*------------------------------*/
|
|
/* set BSA formula preference */
|
|
/*------------------------------*/
|
|
if dose_basis is in AUC_ideal_string
|
|
then
|
|
BSA_pref := "Ideal";
|
|
elseif dose_basis is in AUC_adjusted_string
|
|
then
|
|
BSA_pref := "Adjusted";
|
|
else
|
|
BSA_pref := "Standard";
|
|
endif;
|
|
|
|
/*--------------*/
|
|
/* trap errors */
|
|
/*--------------*/
|
|
if use_ECC_mlm
|
|
then
|
|
if calc_pedi_dose
|
|
then
|
|
error_message := error_message || "Est. CrCl formula not valid for pediatric patient. ";
|
|
fatal_error := true;
|
|
else // calculating adult EstCrCl
|
|
if not (exist serum_creatinine and serum_creatinine > 0)
|
|
then
|
|
error_message := error_message || "Missing or invalid Serum Creatinine value. ";
|
|
fatal_error := true;
|
|
endif; // serum Creat not given
|
|
endif; //calc_pedi_dose
|
|
|
|
else
|
|
if is_actual_CrCl
|
|
then
|
|
if not (exist creat_clearance and creat_clearance > 0)
|
|
then
|
|
error_message := error_message || "Missing or invalid measured CrCl value. ";
|
|
fatal_error := true;
|
|
else // CrCl exists, check for other errors
|
|
if (dose_basis is not in AUC_mCrCl_string)
|
|
then
|
|
error_message := error_message || "Estimated CrCl is required to calculate AUC dose. ";
|
|
fatal_error := true;
|
|
elseif (dose_basis = "AUC (St. Jude{{{SINGLE-QUOTE}}}s modified-Peds)")
|
|
then
|
|
if not calc_pedi_dose
|
|
then
|
|
error_message := error_message || "Cannot use pediatric calculation for adult dosage.";
|
|
fatal_error := true;
|
|
else
|
|
if not (exist BSA_val and BSA_val > 0)
|
|
then
|
|
error_message := error_message || "BSA is required to calculate AUC dose.";
|
|
fatal_error := true;
|
|
endif;
|
|
endif; // not pedi patient
|
|
|
|
elseif (dose_basis = "AUC (measured CrCl)")
|
|
then
|
|
if calc_pedi_dose
|
|
then
|
|
if not (exist wt_val and wt_val > 0)
|
|
then
|
|
error_message := error_message || "Weight is required to calculate AUC dose. ";
|
|
fatal_error := true;
|
|
elseif (wt_val >= 10)
|
|
then
|
|
if not (exist BSA_val and BSA_val > 0)
|
|
then
|
|
error_message := error_message || "BSA is required to calculate AUC dose. ";
|
|
fatal_error := true;
|
|
endif; // not exist BSA
|
|
endif; // not exist weight
|
|
endif; // calc pedi dose
|
|
endif; // dose basis = St. Jude{{{SINGLE-QUOTE}}}s or measured CrCl
|
|
endif; // not exist CrCl
|
|
else // is Actual CrCl = false
|
|
error_message := error_message || "Measured CrCl is required to calculate AUC dose. ";
|
|
fatal_error := true;
|
|
endif; // is Actual CrCl
|
|
endif; // using ECC_mlm
|
|
|
|
/*----------------------------------------------------------*/
|
|
/* Call EstCrCl mlm to get values if using C-G or Jelliffe */
|
|
/*----------------------------------------------------------*/
|
|
if use_ECC_mlm
|
|
then
|
|
(ECC_mlm_error_message,
|
|
EstCrCl_number_rounded,
|
|
EstCrCl_formula,
|
|
weight_used,
|
|
BSA_used) := call func_calc_estCrCl with
|
|
EstCrCl_equation_pref,
|
|
BSA_pref,
|
|
ht_val,
|
|
wt_val,
|
|
Serum_Creatinine,
|
|
calculate_with_BSA,
|
|
client_info_obj;
|
|
|
|
if ECC_mlm_error_message <> "" // and EstCrCl_number_rounded = NULL
|
|
then
|
|
error_message := error_message || ECC_mlm_error_message;
|
|
fatal_error := true;
|
|
endif; // error occured
|
|
|
|
/*-----------------------------------------------------------*/
|
|
/* otherwise set values for the calculation to be done here */
|
|
/*-----------------------------------------------------------*/
|
|
else
|
|
if (is_actual_CrCl and creat_clearance > 0)
|
|
then
|
|
weight_used := wt_val;
|
|
endif;
|
|
endif; /* using the EstCrCl mlm */
|
|
;;
|
|
evoke:
|
|
|
|
;;
|
|
logic:
|
|
/*-------------------------------------------------------------------*/
|
|
/* perform and return calculation only if no fatal errors were found */
|
|
/*-------------------------------------------------------------------*/
|
|
if not fatal_error
|
|
then
|
|
formula_tail := "";
|
|
wt_or_bsa_type := "";
|
|
|
|
/*------------------------------------------------------*/
|
|
/* dose calculation using "standard" Calvert formula */
|
|
/*------------------------------------------------------*/
|
|
if use_ECC_mlm // only for Jelliffe or Cockcroft-Gault EstCrCl
|
|
then
|
|
creat_clearance := EstCrCl_number_rounded;
|
|
AUC_coef := creat_clearance + 25;
|
|
AUC_coef_formula := "(CrCl + 25)";
|
|
|
|
if BSA_pref <> "Standard"
|
|
then
|
|
wt_or_bsa_type := "(" || BSA_pref || ")";
|
|
endif;
|
|
|
|
if EstCrCl_equation_pref = "Cockcroft-Gault"
|
|
then
|
|
formula_tail := "; Wt" || wt_or_bsa_type || " = " || weight_used;
|
|
|
|
elseif EstCrCl_equation_pref = "Jelliffe"
|
|
then
|
|
if calculate_with_BSA
|
|
then
|
|
formula_tail := "; BSA" || wt_or_bsa_type ||" = " || BSA_used;
|
|
endif;
|
|
endif;
|
|
|
|
/*---------------------------------------------*/
|
|
/* Calvert formula with measured CrCl - Adults */
|
|
/*---------------------------------------------*/
|
|
else
|
|
if not calc_pedi_dose // i.e., dose basis is measured CrCl, adult
|
|
then
|
|
AUC_coef := creat_clearance + 25;
|
|
AUC_coef_formula := "(CrCl + 25)";
|
|
|
|
/*--------------------------------------------*/
|
|
/* St. Jude{{{SINGLE-QUOTE}}}s modified Calvert formula - Peds */
|
|
/*--------------------------------------------*/
|
|
else
|
|
if (dose_basis = "AUC (St. Jude{{{SINGLE-QUOTE}}}s modified-Peds)")
|
|
then
|
|
GFR := creat_clearance / BSA_val;
|
|
AUC_coef := ((0.93 * GFR) + 15) * BSA_val;
|
|
AUC_coef_formula := "((0.93 x (CrCl/BSA)) + 15) x BSA";
|
|
formula_tail := "; BSA = " || BSA_val;
|
|
|
|
/*----------------------------------------------------------------*/
|
|
/* Modified Calvert{{{SINGLE-QUOTE}}}s formula for peds patients weighing >= 10 kg */
|
|
/*----------------------------------------------------------------*/
|
|
elseif (dose_basis = "AUC (measured CrCl)") then
|
|
if wt_val >= 10
|
|
then
|
|
AUC_coef := (creat_clearance + (BSA_val * 15));
|
|
AUC_coef_formula := "(CrCl + (BSA x 15))";
|
|
formula_tail := "; BSA = " || BSA_val;
|
|
|
|
/*----------------------------------------------------------------*/
|
|
/* Modified Calvert{{{SINGLE-QUOTE}}}s formula for peds patients weighing < 10 kg */
|
|
/*----------------------------------------------------------------*/
|
|
elseif wt_val < 10
|
|
then
|
|
AUC_coef := (creat_clearance + (wt_val * 0.36));
|
|
AUC_coef_formula := "(CrCl + (Wt x 0.36))";
|
|
formula_tail := "; Wt = " || wt_val;
|
|
endif; // wt_val
|
|
endif; // dose basis
|
|
endif; // not calc pedi
|
|
endif; // use ecc mlm
|
|
|
|
/*-------------------------------------------------------*/
|
|
/* Format Dose calc formula to return to calling program */
|
|
/*-------------------------------------------------------*/
|
|
AUC_dose_calc_formula := "formula: " || AUC_coef_formula
|
|
|| "; CrCl = " || creat_clearance
|
|
|| formula_tail;
|
|
endif; // not fatal error
|
|
|
|
conclude true; // always, to return values or error message
|
|
;;
|
|
action:
|
|
if fatal_error
|
|
then
|
|
return error_message;
|
|
else
|
|
return ( "", AUC_coef, AUC_dose_calc_formula );
|
|
endif;
|
|
|
|
;;
|
|
end:
|