Ema_Insurance_Claims_Agent / adjuster_dashboard.py
bpHigh's picture
inital_mvp
76d67c5
import gradio as gr
from utils import get_mock_claims
class AdjusterDashboard:
def __init__(self):
self.claims = get_mock_claims()
def get_claims_data(self):
"""Formats claims for the dataframe."""
return [[c["id"], c["submitter"], c["date"], c["vehicle"], c["status"], c["ai_analysis"]["fraud_risk"], c["ai_analysis"].get("adjuster_classification", "Junior Adjuster")] for c in self.claims]
def get_claim_details(self, evt: gr.SelectData):
"""
Returns details for a selected claim.
Args:
evt: The selection event from the dataframe.
"""
# Get the row index selected
index = evt.index[0]
if index < len(self.claims):
claim = self.claims[index]
analysis = claim["ai_analysis"]
details_md = f"""
### Claim Details: {claim['id']}
**Submitter:** {claim['submitter']}
**Vehicle:** {claim['vehicle']}
**Date:** {claim['date']}
---
### AI Analysis
* **Damage Estimate:** {analysis['damage_estimate']}
* **Fraud Risk:** {analysis['fraud_risk']}
* **Adjuster Classification:** {analysis.get('adjuster_classification', 'Junior Adjuster')}
* **Recommendation:** {analysis['recommendation']}
**Summary:**
{analysis['summary']}
"""
return details_md, gr.update(interactive=True), gr.update(interactive=True)
return "Select a claim to view details.", gr.update(interactive=False), gr.update(interactive=False)
def add_claim(self, claim_data):
"""
Adds a new claim to the dashboard.
Args:
claim_data (dict): Extracted claim data.
"""
import datetime
new_id = f"CLM-{1000 + len(self.claims) + 1}"
new_claim = {
"id": new_id,
"submitter": claim_data.get("submitter", "Anonymous"),
"date": datetime.date.today().strftime("%Y-%m-%d"),
"vehicle": claim_data.get("vehicle", "Unknown"),
"status": "New",
"ai_analysis": {
"damage_estimate": claim_data.get("damage_estimate", "N/A"),
"fraud_risk": claim_data.get("fraud_risk", "Unknown"),
"adjuster_classification": claim_data.get("adjuster_classification", "Junior Adjuster"),
"recommendation": claim_data.get("recommendation", "Review"),
"summary": claim_data.get("summary", "")
}
}
self.claims.append(new_claim)
return self.get_claims_data()
def approve_claim(self, claim_details_text):
# Extract ID from text (simple parsing for MVP)
try:
claim_id = claim_details_text.split("Claim Details: ")[1].split("\n")[0].strip()
return f"Claim {claim_id} Approved. Payment processing initiated."
except:
return "Error approving claim."
def escalate_claim(self, claim_details_text):
try:
claim_id = claim_details_text.split("Claim Details: ")[1].split("\n")[0].strip()
return f"Claim {claim_id} Escalated to SIU for investigation."
except:
return "Error escalating claim."