← All projects
NHA × IISc · Top 3 Runner-Up · $3,100MLHealthcare/AI

PM-JAY Claim Adjudication

Automated Evidence Verification for Ayushman Bharat

PM-JAY Claim Adjudication - Automated Evidence Verification for Ayushman Bharat

Problem

AB-PMJAY hospitals submit claim packets as blurry scans, photos, and multilingual PDFs — Hindi, Bengali, Gujarati, Assamese mixed with English, handwriting, rubber stamps, and 20+ document types where pre- vs post-treatment reports look alike. Manual Standard Treatment Guideline (STG) review cannot scale; missed negations (e.g. "no pallor"), hallucinated dates, and weak visual proof directly affect reimbursement.

Approach

Five-stage claim adjudication pipeline: (1) ingest and normalize pages via PyMuPDF rasterization at 1.5× → 1024px JPEG; (2) multimodal extraction with dual cached Gemma 3 12B calls — primary for doc_type, OCR snippet, entities, and visual flags; secondary for 3–4 per-package clinical binary flags; (3) reconstruct episode timeline from earliest event occurrences; (4) negation-aware keyword layer + intersection fusion (VLM proposes → rules verify → both must agree, with numeric vitals bypass); (5) STG rule engine aggregates per-page outputs into case-level Pass (0.95), Conditional (0.75), or Fail (0.90) with full provenance (page · doc_type · confidence · evidence_excerpt).

At a glance

Placement

Top 3 Runner-Up · ₹3L

Clinical F1 gain

+3.4 pts (hybrid)

Pure VLM → Hybrid

0.7567 → 0.7909

STG packages

4 modules

VLM calls

2 / page (cached)

Token budget

~750k total

Tech decisions

  • Intersection fusion (keyword ∧ Gemma) over pure VLM

    Pure VLM hallucinates dates and confuses similar doc types; pure keywords miss handwriting and multilingual context. Intersection commits only when both agree — +3.4 clinical F1 on the live strict-label evaluator.

  • Two-tier prompt-versioned disk cache (vlm_cache + vlm_clinical_cache)

    Cache hits cost zero tokens and zero latency; reruns stay within the ~750k token budget across 4 packages, cases, and pages.

  • Laplacian blur score (threshold 80) + pyzbar visual detect

    Flags poor-quality pages without dropping them; stamps, signatures, and QR/barcodes feed mandatory visual proof checks.

  • 40-char negation-aware keyword lookback + numeric gates

    Stops false positives from "no pallor" / "denies fever"; Severe Anemia requires Hb < 7.0 g/dL on any page, not diagnosis text alone.

  • RANK_MAP + SG039C continuity + per-package schema strip

    Multi-page PDFs share canonical file rank when titles appear only on page 1; output must match PACKAGE_SCHEMAS key order exactly for compliance grading.

Stack

Gemma 3 12BPyMuPDFOpenCVPillowpyzbarPydanticjson-repairpandasPython
GitHub