Provider
Owns the provider directory, credentialing workflow, and network participation status.
Overview
The Provider service is the authoritative registry for healthcare providers (physicians, facilities, labs) that participate in Olly's network. It stores provider entities with their NPI numbers, specialties, and contact information, and manages the credentialing lifecycle that a provider must complete before being marked as in-network.
Credentialing requests capture the application, supporting documentation references, and approval or rejection decisions. The service integrates with Policy Admin to validate network participation requirements against plan configurations. Once a provider is credentialed and activated, other services (Claims, Care) look up providers via the internal NPI endpoint.
Responsibilities
- Maintain the provider master directory (create, update, activate, deactivate providers)
- Accept and process credentialing applications with approval/rejection workflows
- Report network status (in-network / out-of-network) for a given NPI
- Serve internal provider lookups by NPI for Claims and Care
- Support provider search for member-facing and admin interfaces
Database
Schema: provider
| Table | Purpose |
|---|---|
providers | Provider entities with NPI, specialty, contact info, and network status |
credentialing_requests | Credentialing applications with lifecycle status (PENDING → APPROVED/REJECTED) |
seq_tables | Sequence tables for locator generation |
API Routes
| Method | Path | Auth | Description |
|---|---|---|---|
POST | /providers | JWT | Create a new provider record |
GET | /providers | JWT | List providers |
GET | /providers/{locator} | JWT | Get provider by locator |
PATCH | /providers/{locator} | JWT | Update provider details |
PATCH | /providers/{locator}/activate | JWT | Activate a provider |
PATCH | /providers/{locator}/deactivate | JWT | Deactivate a provider |
POST | /credentialing | JWT | Submit a credentialing application |
GET | /credentialing | JWT | List credentialing requests |
GET | /credentialing/{locator} | JWT | Get credentialing request by locator |
PATCH | /credentialing/{locator}/approve | JWT | Approve a credentialing request |
PATCH | /credentialing/{locator}/reject | JWT | Reject a credentialing request |
GET | /credentialing/{npi}/status | JWT | Get network status for an NPI |
GET | /internal/providers/{npi} | Internal | Fetch provider by NPI (no JWT) |
Events
Publishes
The Provider service does not currently publish Kafka events.
Consumes
The Provider service does not consume Kafka events.
Dependencies
| Service | How used |
|---|---|
| Policy Admin | Validates network tier and plan participation requirements during credentialing |
Key Design Decisions
NPI as the lookup key: The internal GET /internal/providers/{npi} endpoint uses the National Provider Identifier rather than an internal locator. This is because upstream systems (Claims EDI, Care appointment booking) receive NPI values from external sources and need to resolve them to Olly provider records.
Credentialing as a first-class entity: Rather than a simple boolean flag on the provider record, credentialing is modelled as a separate entity with its own lifecycle. This allows multiple credentialing rounds, partial approvals, and a full audit trail of the credentialing history.