Spaces:
Sleeping
Sleeping
| # API Documentation | |
| The backend service is built using FastAPI. It exposes endpoints for claim management, document upload, automated adjudication, and metrics dashboards. | |
| The server runs locally by default at `http://127.0.0.1:8000`. Full interactive Swagger UI documentation is available at `http://127.0.0.1:8000/docs`. | |
| --- | |
| ## Endpoints Overview | |
| | Method | Path | Description | Access | | |
| |--------|------|-------------|--------| | |
| | **POST** | `/api/seed` | Seeds initial members from test cases | Public | | |
| | **POST** | `/api/claims` | Creates a new claim | Public | | |
| | **POST** | `/api/claims/{claim_id}/documents` | Uploads and extracts text from a file | Public | | |
| | **POST** | `/api/claims/{claim_id}/adjudicate` | Adjudicates claim using rules & AI | Public | | |
| | **GET** | `/api/claims/{claim_id}` | Retrieves full claim details | Public | | |
| | **GET** | `/api/claims` | Searches/filters claims list | Public | | |
| | **GET** | `/api/admin/stats` | Retrieves dashboard statistics | Public | | |
| | **GET** | `/health` | API Healthcheck status | Public | | |
| --- | |
| ## 1. Seed Member Registry | |
| * **Endpoint:** `POST /api/seed` | |
| * **Request:** None | |
| * **Response (200 OK):** | |
| ```json | |
| { | |
| "message": "Seeding completed. Seeded 10 new members." | |
| } | |
| ``` | |
| --- | |
| ## 2. Create Claim | |
| * **Endpoint:** `POST /api/claims` | |
| * **Content-Type:** `application/x-www-form-urlencoded` or multipart form-data | |
| * **Fields:** | |
| - `member_id` (string, required): Member ID (e.g. `EMP001`) | |
| - `patient_name` (string, required): Name of patient | |
| - `claim_amount` (float, required): Total claim amount in INR | |
| - `treatment_date` (string, required): Date in format `YYYY-MM-DD` | |
| - `hospital_name` (string, optional): Hospital/Clinic name | |
| - `cashless_request` (boolean, optional): Default `false` | |
| * **Response (200 OK):** | |
| ```json | |
| { | |
| "id": "CLM_A5F9B2C3", | |
| "member_id": "EMP001", | |
| "patient_name": "Rajesh Kumar", | |
| "claim_amount": 1500.0, | |
| "status": "PENDING", | |
| "hospital_name": "Apollo Hospitals", | |
| "cashless_request": true, | |
| "treatment_date": "2024-11-01", | |
| "submitted_at": "2026-06-04T18:20:00Z", | |
| "documents": [], | |
| "adjudication_result": null, | |
| "audit_logs": [ | |
| { | |
| "id": 1, | |
| "action": "CLAIM_SUBMITTED", | |
| "timestamp": "2026-06-04T18:20:00Z", | |
| "details": "Claim of ₹1500.0 submitted for patient Rajesh Kumar." | |
| } | |
| ] | |
| } | |
| ``` | |
| --- | |
| ## 3. Upload Claim Document | |
| * **Endpoint:** `POST /api/claims/{claim_id}/documents` | |
| * **Content-Type:** `multipart/form-data` | |
| * **Fields:** | |
| - `document_type` (string, required): One of: `PRESCRIPTION`, `BILL`, `LAB_REPORT`, `OTHER` | |
| - `file` (binary file, required): PDF, PNG, JPG, or JPEG | |
| * **Response (200 OK):** | |
| ```json | |
| { | |
| "document_id": 12, | |
| "document_type": "BILL", | |
| "file_name": "hospital_receipt.pdf", | |
| "extracted_data": { | |
| "bill_number": "INV-10293", | |
| "bill_date": "2024-11-01", | |
| "hospital_clinic_name": "Apollo Hospitals", | |
| "patient_name": "Rajesh Kumar", | |
| "items": [ | |
| { | |
| "description": "Consultation fee", | |
| "category": "consultation", | |
| "amount": 1000.0 | |
| }, | |
| { | |
| "description": "CBC blood test", | |
| "category": "diagnostic", | |
| "amount": 500.0 | |
| } | |
| ], | |
| "total_amount": 1500.0, | |
| "tax_amount": 0.0 | |
| }, | |
| "extraction_confidence": 0.94 | |
| } | |
| ``` | |
| --- | |
| ## 4. Adjudicate Claim | |
| * **Endpoint:** `POST /api/claims/{claim_id}/adjudicate` | |
| * **Request:** None | |
| * **Response (200 OK):** | |
| ```json | |
| { | |
| "decision": "APPROVED", | |
| "approved_amount": 1350.0, | |
| "confidence_score": 0.95, | |
| "reasons": [ | |
| "Medical necessity established", | |
| "All documents valid", | |
| "Amount within limits" | |
| ], | |
| "flags": [], | |
| "notes": "Consultation fee ₹1000 subject to 10% copay (₹100). Diagnostic test ₹500 subject to 10% copay (₹50). Total copay: ₹150.", | |
| "next_steps": "Your reimbursement of ₹1350 has been approved and queued for bank transfer.", | |
| "policy_engine_log": { | |
| "eligible": true, | |
| "errors": [], | |
| "warnings": [], | |
| "notes": "Deterministic rules check complete.", | |
| "member_info": { | |
| "id": "EMP001", | |
| "name": "Rajesh Kumar", | |
| "status": "ACTIVE", | |
| "annual_limit_remaining": 48650.0 | |
| } | |
| } | |
| } | |
| ``` | |
| --- | |
| ## 5. Get Claim Details | |
| * **Endpoint:** `GET /api/claims/{claim_id}` | |
| * **Response (200 OK):** Returns the full claim schema, including documents, adjudication result, and audit log list. | |
| --- | |
| ## 6. List/Search Claims | |
| * **Endpoint:** `GET /api/claims` | |
| * **Query Parameters:** | |
| - `status` (string, optional): Filter by status (`PENDING`, `APPROVED`, etc.) | |
| - `search` (string, optional): Search string for names or IDs | |
| * **Response (200 OK):** Array of claim objects. | |
| --- | |
| ## 7. Get Admin Stats | |
| * **Endpoint:** `GET /api/admin/stats` | |
| * **Response (200 OK):** | |
| ```json | |
| { | |
| "total_claims": 24, | |
| "approved_claims": 18, | |
| "rejected_claims": 4, | |
| "manual_review_claims": 2, | |
| "approval_rate": 75.0, | |
| "average_confidence": 0.89, | |
| "claims_by_status": { | |
| "APPROVED": 16, | |
| "PARTIAL": 2, | |
| "REJECTED": 4, | |
| "MANUAL_REVIEW": 2 | |
| }, | |
| "daily_volume": [ | |
| { | |
| "date": "2026-06-04", | |
| "count": 24 | |
| } | |
| ] | |
| } | |
| ``` | |