Getting Started
CMS TEAM Analyzer runs in your dbt project alongside The Tuva Project. If Tuva is already installed and your claims data is conformed to Tuva core models, installation is a standard dbt package workflow.
Add The Package
Add CMS TEAM Analyzer to packages.yml in the dbt project where Tuva is already installed:
packages:
- package: tuva-health/the_tuva_project
version: [">=0.17.0", "<1.0.0"]
- git: "https://github.com/illuminatehealth/cms-team-analyzer.git"
revision: main
Then run:
dbt deps
dbt seed --full-refresh --select package:cms_team_analyzer
dbt run --select +package:cms_team_analyzer
dbt test --select package:cms_team_analyzer
If your project already imports Tuva elsewhere in packages.yml, do not add a duplicate Tuva entry. Add CMS TEAM Analyzer alongside the existing Tuva package entry.
Configuration Defaults
No vars are strictly required for the package to compile because defaults are built in. Production teams should still set the reporting-period and spend-basis vars deliberately so business users know exactly what period and payment basis the marts represent.
Common starter configuration:
vars:
team_baseline_start_date: "2023-01-01"
team_baseline_end_date: "2025-12-31"
team_performance_year: 2026
team_performance_start_date: "2026-01-01"
team_performance_end_date: "2026-12-31"
team_census_division: CENS_DIV_8
team_spend_basis: paid_amount
Default values:
| Var | Default | Required to set? | Notes |
|---|---|---|---|
team_baseline_start_date | 2023-01-01 | No | Used for local directional baseline estimates |
team_baseline_end_date | 2025-12-31 | No | Used for local directional baseline estimates |
team_performance_year | 2026 | No | Used for target-price lookup and reporting |
team_performance_start_date | 2026-01-01 | No | Used by performance-period marts |
team_performance_end_date | 2026-12-31 | No | Used by performance-period marts |
team_census_division | CENS_DIV_8 | No | Used for public CMS regional target-price fallback |
team_spend_basis | paid_amount | No | Recommended starting point for CCLF-based installs |
team_snapshot_date | null | No | When unset, package logic uses the current run context for snapshot reporting |
For CCLF-based projects, start with paid_amount or a CCLF net-paid proxy if your connector provides one. Standard CCLF allowed amount fields are not populated consistently across claim settings; in particular, allowed amounts are generally not a usable complete episode-spend basis for institutional claims.
Run The Dashboard
After package marts are built, launch the Streamlit dashboard:
cd cms-team-analyzer
pip install -r requirements-streamlit.txt
PYTHONPATH=. streamlit run streamlit_app/Home.py
The app can read connection details from direct environment variables or from a dbt profile.
Local DuckDB builds (development and demos):
TEAM_STREAMLIT_DUCKDB_PATH="/path/to/your.duckdb"
DuckDB allows one writer at a time, so stop the dashboard before rebuilding the database with dbt, then relaunch.
Cloud warehouse connections:
TEAM_STREAMLIT_ODBC_CONNECTION_STRING="..."
TEAM_STREAMLIT_DATABASE="..."
TEAM_STREAMLIT_SCHEMA="..."
Useful profile overrides:
TEAM_STREAMLIT_DBT_PROFILE="illuminate_fabric_dev"
TEAM_STREAMLIT_DBT_TARGET="dev"
If the selected dbt profile target is a duckdb target, the app uses its path
automatically.