Skip to content

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

TablePurpose
providersProvider entities with NPI, specialty, contact info, and network status
credentialing_requestsCredentialing applications with lifecycle status (PENDING → APPROVED/REJECTED)
seq_tablesSequence tables for locator generation

API Routes

MethodPathAuthDescription
POST/providersJWTCreate a new provider record
GET/providersJWTList providers
GET/providers/{locator}JWTGet provider by locator
PATCH/providers/{locator}JWTUpdate provider details
PATCH/providers/{locator}/activateJWTActivate a provider
PATCH/providers/{locator}/deactivateJWTDeactivate a provider
POST/credentialingJWTSubmit a credentialing application
GET/credentialingJWTList credentialing requests
GET/credentialing/{locator}JWTGet credentialing request by locator
PATCH/credentialing/{locator}/approveJWTApprove a credentialing request
PATCH/credentialing/{locator}/rejectJWTReject a credentialing request
GET/credentialing/{npi}/statusJWTGet network status for an NPI
GET/internal/providers/{npi}InternalFetch 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

ServiceHow used
Policy AdminValidates 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.

Olly Health Insurance Platform