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 2-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, and additional columns are permitted. 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 must 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.
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:
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.
You may be wondering why the age-range for these charts begins at age 2y when the AAP report includes tables for children as young as 1y. The calculator will in fact return percentile estimates for children as young as 1y. However, these results are based on measurements in a very small number of children < 2y of age (Table 1, Rosner 2008). Caveat Emptor.