Keeping clinicians’ credentials current
The health system and every number in this exercise are fictional, made up for practice.
Background
A regional health system uses our credentialing platform for 25,000 clinicians. Each clinician holds several credentials: state licenses, controlled substance registrations, board certifications and others. Every credential must be re-verified with its primary source before it expires. If a credential lapses, the clinician cannot see patients until it is verified again, so a missed check takes a clinician off the schedule.
| Item | Value |
|---|---|
| Clinicians | 25,000 |
| Credentials per clinician (average) | 6 |
| Average validity of a credential | 24 months |
| Share verified through a primary source API | 85% |
| Share verified by hand (no API: phone, email or portal) | 15% |
| Staff time per hand verification | 12 minutes |
| Hours a full-time verification specialist works on this per month | 150 |
| Slowest source API limit | 60 requests a minute |
Your task
- How many verifications does the platform need to run in an average month? How many are done by hand, and how much staff time do they take?
- Sketch the design: how the platform decides what to verify and when, how it calls the sources, and what happens when a check fails.
- What would you monitor so that no clinician is taken off the schedule by surprise?
One way to approach it
The numbers. 25,000 × 6 = 150,000 credentials. With an average validity of 24 months, about 150,000 ÷ 24 = 6,250 verifications a month. 15% are by hand: 937.5, or about 940 a month, at 12 minutes each = 11,250 minutes = 187.5 hours a month, or 1.25 specialists at 150 hours. The API side is about 5,300 calls a month; even at the slowest source’s 60 a minute, a month’s worth takes under 90 minutes of calls. Throughput is not the problem. Timing and the manual queue are.
The design. A scheduler creates a verification task for each credential well before it expires, for example 90 days ahead, with reminders at 60 and 30 days. Tasks go on a queue per source, with rate limits set per source and retries with backoff. Each task carries an idempotency key (credential and expiry date) so a retry or a duplicate schedule cannot create a second record. Every result, including the raw response or the specialist’s notes and the evidence document, is stored with who verified it and when, because accrediting bodies and payers will ask. Tasks that cannot be done by API go to a work queue for specialists, ordered by expiry date, not arrival.
When a check fails. Distinguish between “the source said no” (the credential is not valid: alert the medical staff office at once) and “we could not get an answer” (the source is down or changed its format: retry, then escalate to a specialist). Never treat a failed call as a pass.
What to monitor. The number of credentials expiring in the next 30 days without a completed verification, by source; the age of the oldest task in the manual queue against the specialists’ capacity; API error rates by source; and a daily check that every active clinician has every required credential on record. The first of these is the one that matters to the hospital: it should be zero, and someone should be paged if it is not.
Strong answers also ask how expiries are distributed. If a state renews every license on the same date, the monthly average hides a peak, and the manual queue needs to be planned for that month, not the average.