Calculator: AAP 2017 pediatric blood pressure percentiles

This page is running a macro package for R hosted on a Shiny server. It calculates percentiles for both systolic and diastolic blood pressure for children aged 1-18 years based on the new Clinical Practice Guidelines published by the American Academy of Pediatrics in 2017. In computational details, our R macro code implements the natural spline quantile regression model of Rosner et al, 2008. Readers interested in the impact of the new guidelines on the prevalence and severity of high BP in healthy North American children are referred to our study in JAMA Pediatrics, 2018.

For those wanting to enter individual data in their browser, there is also mobile version of this app.

In creating your input data, column order is immaterial, but names are case sensitive. The variable agemons is age in months. The variable height is in cm, systolic (sbp) and diastolic (dbp) are measured by auscultation in mmHg, and sex is coded as M/F, m/f, or 1 (male)/2 (female). The identifier id should be unique for each observation (row). The following sample file shows the expected variable names and formats.

A spreadsheet with comma separated variables (.csv) may be created using the 'Save As' .csv option in Excel and uploaded using the sidebar on the left. The output dataset will contain the calculated percentiles for SBP (syspct) and DBP (diapct). Once results are displayed, download by clicking the <Download> button, which will typically save them to your Download folder with 'out_' prepended to the original dataset name.




Download Results

Blood pressure measurements are rounded to the nearest whole number before calculating percentiles. NB: Quantile regression is computationally intensive, since it must calculate centiles 1-99 for both SBP and DBP to compare with measured BP, and the code may (will) run slowly on large datasets. Dr. Rosner's algorithm does not assign BP percentiles for outlier heights i.e. HtZ < -3.09 (0.1%) or HtZ > 3.09 (99.9%), which are returned as ht1 and ht2, respectively. The output file also contains the variable 'stage', which assigns a diagnosis of normal, elevated, stage 1, or stage 2 based on the 2017 AAP guidelines, which represent a mixture of percentiles and absolute thresholds:

Diagnostic categories:

We also return sex-, age-, and height-specific 90th and 95th percentile values for SBP (fxsys) and DBP (fxdia). Users should exercise caution and confirm important results using published charts, particularly for assignment of BP stages. For example, in the table above, a small number of children < 13y will be normal with BP < 90th percentile, but have high BP because they exceed static thresholds (> 120/80). This should not be confused with another statistical issue inherent in quantile regression, which is well-described by the WHO Expert Panel (Borghi, 2006): Since each centile is fitted separately without additional constraints, centile curves may actually cross, and it is theoretically possible for the 95th percentile to be less than the 90th percentile! While we have yet to find an example of 'crossed percentiles', we have seen cases where the 87th and 90th percentiles are equal, which may lead to a diagnosis of elevated blood pressure even though the assigned percentile is less than the 90th. As recommended by the AAP subcommittee, we generally apply the 'lesser of' condition when dealing with ambiguity.

As explained in our general FAQ, European computers sometimes use a semicolon to separate columns even though you asked for comma separated variables, which is easy to diagnose by opening your .csv file in a text editor, such as NotePad or TextEdit. If you encounter this problem, there is now a selector in the sidebar for comma, semicolon, or tab delimiters. Please refresh your browser page before changing this selection.