NPI Telehealth

US federal healthcare data, readable as a profile

  • Web

CMS publishes a great deal about clinicians — NPI numbers, quality scores, prescribing habits, payments from drug makers — but it is spread across dozens of files no patient will open. NPI Telehealth gathers it into one page per clinician, cites the source of every number, and leaves a field empty when the data is missing rather than guessing.

NPI Telehealth
272KClinician profiles
244Specialties
59States and territories
WeeklyRe-sync from CMS
02

Against the averages

Against the averages
Each clinician's MIPS score, opioid and generic prescribing rates sit next to the state and national averages with a percentile — a bare number tells a patient nothing about whether it is good.
03

Features

A profile per clinician

Specialty, practice location, years in practice, training, Medicare enrolment and telehealth — each field links back to its source dataset.

Quality and prescribing

MIPS score, Medicare patient counts, opioid and generic rates, compared against thousands of peers in the same state.

Sanction checks

Matched against the OIG LEIE exclusion list, with a pointer to the state medical board because NPPES does not verify licences.

By specialty and place

244 specialties, state and city pages, and a filter for clinicians who see patients remotely.

No paid ranking

Order comes from NPPES completeness and federal quality reporting, explained in the open on the methodology page.

State-by-state guides

Telehealth guides per state and per need, with an editor and an updated date on each.

04

Screenshots

05

On a phone

06

Hundreds of thousands of pages, no joins at request time

Each profile draws on five or six large tables, and search bots crawl every one of the hundreds of thousands of pages. The data is pre-joined into materialized views after each CMS import, so a page reads exactly one row; PgBouncer keeps PostgreSQL connections steady, and Redis plus the nginx cache absorb the repeats.

07

Stack and infrastructure

ApplicationNext.js 16, React 19, Tailwind CSS 4, server-rendered
DataPostgreSQL, plain SQL via postgres.js, materialized views
Connections and cachePgBouncer, Redis, nginx proxy_cache
SourcesCMS NPPES, MIPS, Medicare Part D, Open Payments, OIG LEIE, HRSA
IngestionWeekly and quarterly cron jobs pull from CMS APIs and refresh the views
SEOSplit sitemaps, IndexNow, structured data
ServersUbuntu, nginx, PM2, TLS