Medical::DukePTP - Calculate the Duke pre-test probability of CAD


Version 0.3


    use Medical::DukePTP;
    my $rh_params = { 
        'smoking'      => 1,
        'diabetes'     => 1,
        'age'          => 55,
        'sex'          => 'male',
        'chest_pain'   => 'typical',

    my $ptp = Medical::DukePTP::ptp( $rh_params );


Important diagnostic and prognostic outcomes can be predicted from information collected by the physician as a part of the initial assessement. Despite the fact that much of the clinical information collected by a physician is "soft" or subjective data, predictions of outcome based on the information from the initial evaluation are accurate and can be deployed in order to identify "high" and "low" risk patients.

This module implements the Duke pre-test probability of a patient having significant Coronary Artery Disease. This is accomplished by taking into consideration symptom typicality, sex, age and cardiovascular risk factors such as diabetes or high cholesterol.

The method is based on:

    Pryor D.B. et al., "Value of the history and physical in 
    identifying patients at increased risk of CAD", Ann Int Med 1993, 118:81-90

The PubMed entry for the paper:$=citationsensor



Accepts a reference to a hash with parameters and returns a scalar which denotes the pre-test probability of coronary artery disease. Note that the value is rounded upwards.

Required parameters include:

    sex : 'male' or 'female'
    age : numerical age of patient

Optional parameters

    chest_pain     : 'typical' or 'atypical'
    previous_MI    : history of previous Myocardial Infarction (1 for yes)
    ECG_Q_wave     : ECG Q waves of previous Myocardial Infarction (1 for yes) 
    ECG_ST-T_wave  : ECG ST changes at rest (1 for yes)
    smoking        : current smoker (1 for yes)
    hyperlipidemia : cholesterol > 6.5 mmol/l (>250 mg/dl) (1 for yes)
    diabetes       : diabetic (1 for yes)

This function will return undef on error.


Spiros Denaxas, <s.denaxas at>


The source code can be found on github


Please report any bugs or feature requests to bug-medical-dukeptp at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc Medical::DukePTP

You can also look for information at:


Copyright 2011 Spiros Denaxas.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See for more information.