this_year_label ="{group}FY{year} {metric} as of {asOf}"avg_label ="{group}FY{range} average {metric} on this day"// One icon per *kind of number*, page-wide: a count is a count whether it's// broken out by state, institute, mechanism or activity, so they all get the// same grid glyph rather than a decorative per-section one. Money gets the// payments glyph. Any Iconify name works -- the site registers <iconify-icon>// globally -- but reach for Carbon first, and only fall back to Material// Symbols' flat `-sharp` variants where Carbon has no equivalent glyph. Both// sit with the brand's flat styling where Bootstrap Icons' rounded strokes// don't.count_icon ="carbon:grid"cost_icon ="carbon:money"// The stat boxes fundingCurveStatBoxes() builds, iconed by whether the active// metric is money. Spread into its options: {...statBoxIcons(is_cost)}statBoxIcons = (isCost) => ({thisYearIcon: isCost ? cost_icon : count_icon,avgIcon: isCost ? cost_icon : count_icon})// This page shows three boxes per section: this year so far, the prior-years// average, and the % change between them. Last year's same-day figure is// dropped -- it's the one number the chart itself already reads off at a// glance, and three boxes fit one row at every width. fundingCurveStatBoxes()// emits a box per non-null field of `stats`, so removing the field is the// whole edit; nothing downstream has to know which box is which.dropLastYear = (stats) => ({ ...stats,lastYear:null })// A 3rd box: % change of "this year so far" vs. the prior-years average// above. This is a derived comparison, not a value read straight off the// data, so it's computed here rather than in gwtools -- an up arrow for a// positive change, a down arrow for a negative one. `group` should match// whatever prefix the chart's other three boxes use.pctDiffBox = (stats, group ="") => {const pct = stats.priorAvg.value? (stats.thisYear.value- stats.priorAvg.value) / stats.priorAvg.value:null;return {icon: pct ==null?"carbon:subtract": pct >=0?"carbon:arrow-up-right":"carbon:arrow-down-right",value: pct ==null?"—":formatPercent(pct),title:`${group}% change vs. average` };}
Our agency funding curves1 track the progress of federal agencies’ grantmaking activity over the fiscal year, monitoring both their compliance with Congressional appropriations laws and their actual support of their scientific missions and the research community. For more information on the source data and processing used to create these graphs see our methods page.
All AHRQ awards and Obligations
Use the metric control to switch between the cumulative number of awards (restricted to Type 1 (new) and Type 5 (non-competing continuation) grants) and cumulative obligations (all grant Types 1-9).2
Code
overview_selection =fundingCurveWatch(document.getElementById("overview-widget"))overview_is_cost = overview_selection.metric.value==="cost"// .thisYear: latest running total on record for the FY in progress now.// .lastYear: last year's running total on the SAME day of its own FY --// dropped from the boxes here (see dropLastYear above), still on the chart.// .priorAvg: mean of that same day-of-FY figure across every year <= 2024// (fixed, not "N years back" -- see fundingCurveYearStats()'s own doc).overview_stats =fundingCurveYearStats(overview_selection.rows, { valueField: overview_selection.metric.y })fundingCurveValueBoxes([...fundingCurveStatBoxes(dropLastYear(overview_stats), {formatValue:resolveValueFormat(overview_selection.metric.valueFormat),metric: overview_selection.metric.label,...statBoxIcons(overview_is_cost),thisYearLabel: this_year_label,avgLabel: avg_label }),pctDiffBox(overview_stats)], { columns:3 })
AHRQ Awards by Type
AHRQ makes new and competitive renewal awards, as well as non-competitive renewal awards, which are standard continuations of multi-year projects. Use the Award Type control below the chart to switch between the two.
New applications are requests for new projects that have not previously been funded.
Competitive Renewals are requests for continued funding after the original project period ends; these applications go through full peer review and must compete again for funding.
Non-Competitive Renewals provide continued funding for the next budget period within an already approved multi-year project.
More information about the different types of AHRQ grants can be found here.
Code
award_type_selection =fundingCurveWatch(document.getElementById("award-type-widget"))award_type_stats =fundingCurveYearStats(award_type_selection.rows, { valueField: award_type_selection.metric.y })fundingCurveValueBoxes([...fundingCurveStatBoxes(dropLastYear(award_type_stats), {formatValue:resolveValueFormat(award_type_selection.metric.valueFormat),metric: award_type_selection.metric.label,// Both award-type metrics are counts, so never the money icon....statBoxIcons(false),thisYearLabel: this_year_label,avgLabel: avg_label }),pctDiffBox(award_type_stats)], { columns:3 })