Skip to main content

Claims Service — Failure Modes

Status: populated Owner: TBD Last updated: 2026-04-18 Companion: SERVICE_OVERVIEW · Service Template · 02 DDD

Failure Mode Register

IDFailure ModeLikelihoodImpactDetectionMitigation
FM-CLM-001Clearinghouse/payer API unavailable during claim submissionMediumHighSubmission adapter returns 5xx; circuit breaker opensRetry with exponential backoff (3 attempts); claim stored as ready for manual resubmission; alert SRE
FM-CLM-002X12 837 generation produces malformed EDILowHighClearinghouse returns 999 rejection; test suite catches EDI structure errorsEDI golden fixture tests in CI; structured validation before send; fallback to payer REST adapter if available
FM-CLM-003ERA (835) ingest fails mid-processing — partial allocations appliedLowCriticalERA processing job fails; partial paid states detectedERA processing is transactional — all allocations applied or none; idempotency key prevents re-application; dead-letter to manual review queue
FM-CLM-004Duplicate ERA submitted — same remittance processed twiceLowHighera_idempotency integration test; remittance ID uniqueness constraintREMITTANCE_ALREADY_APPLIED 409 error; duplicate ERA rejected at ingest; alert for investigation
FM-CLM-005Terminology-service unavailable — coding validation blockedMediumMediumterminology-service health check fails; HTTP 503 from upstreamCircuit breaker with configurable fallback: permissive mode allows claim with warning flag; strict mode blocks submission
FM-CLM-006RLS misconfiguration exposes cross-tenant claim dataVery LowCriticalCI tenant isolation gate (mandatory); adversarial cross-tenant integration testRLS policies reviewed on every migration; separate DB role per service; quarterly security audit
FM-CLM-007Outbox relay stops — events backlog indefinitelyLowHighoutbox_lag_seconds Prometheus alert (> 120s)Relay worker auto-restart via Kubernetes; manual replay via admin tool; lag visible on Outbox Health dashboard
FM-CLM-008Payer credential rotation not reflected — submissions rejectedLowMediumSubmission returns 401/403 from payer API; circuit breakerCredentials stored in Vault with rotation hooks; operator runbook for credential refresh; submission adapter surfaces auth errors distinctly
FM-CLM-009Version conflict storm during concurrent claim updatesLowLow409 rate visible in API metricsOptimistic locking with 409 + current body; clients retry with backoff; rate monitored on Claims Pipeline dashboard
FM-CLM-010NATS JetStream unavailable — events not publishedLowMediumHealth check /health/ready fails NATS probe; outbox relay failsTransactional outbox ensures events are not lost; relay retries on reconnect; alert SRE if lag > 2 minutes
FM-CLM-011Patient portal serves stale EOB after remittance appliedLowLowEOB read lag visible in portal; not a data integrity issueEventual consistency by design; portal consumer processes claims.remittance.applied.v1 event; lag typically < 1s
FM-CLM-012Claim assembled with invalid diagnosis pointer (line item → ICD-10 index out of range)LowMediumScrubbing validation catches at validate() stepCLAIM_VALIDATION_FAILED error with field-level errors; scrubbing unit tests in CI cover pointer range checks