-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdemo.py
More file actions
122 lines (99 loc) · 4.27 KB
/
Copy pathdemo.py
File metadata and controls
122 lines (99 loc) · 4.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
"""
Demo script for LiabilityIQ MVP.
Generates synthetic claims and processes them through the full pipeline.
"""
import os
import sys
import json
from datetime import datetime
# Add project root to Python path
project_root = os.path.dirname(os.path.abspath(__file__))
if project_root not in sys.path:
sys.path.insert(0, project_root)
from src.data_generators.synthetic_claim_generator import SyntheticClaimGenerator
from src.document_processing.document_retriever import DocumentRetriever
from src.liability_processor import LiabilityProcessor
def main():
"""Run the demo."""
print("=" * 80)
print("LiabilityIQ MVP - Motor Segment Liability Determination")
print("=" * 80)
print()
# Initialize components
print("Initializing components...")
claim_generator = SyntheticClaimGenerator()
document_retriever = DocumentRetriever()
processor = LiabilityProcessor()
# Create output directories
os.makedirs("data/synthetic", exist_ok=True)
os.makedirs("output", exist_ok=True)
print("\n" + "=" * 80)
print("STEP 1: Generating Synthetic Claims")
print("=" * 80)
print()
# Generate multiple synthetic claims
num_claims = 3
claim_ids = []
for i in range(num_claims):
print(f"\nGenerating claim {i+1}/{num_claims}...")
# Generate pre-adjudication claims (no repair quotes)
claim_data = claim_generator.generate_full_claim(include_optional=True, pre_adjudication=True)
claim_id = claim_data["claim_id"]
claim_ids.append(claim_id)
# Save claim documents
documents = []
for doc_data in claim_data["documents"]:
from src.models import Document
doc = Document(**doc_data)
documents.append(doc)
document_retriever.save_claim_documents(claim_id, documents)
print(f" [OK] Claim {claim_id} generated with {len(documents)} documents")
print(f" Incident Date: {claim_data['incident_date']}")
print("\n" + "=" * 80)
print("STEP 2: Processing Claims Through LiabilityIQ Pipeline")
print("=" * 80)
print()
# Process each claim
dossiers = []
for claim_id in claim_ids:
print(f"\n{'='*80}")
print(f"Processing Claim: {claim_id}")
print(f"{'='*80}\n")
try:
dossier = processor.process_claim(claim_id)
dossiers.append((claim_id, dossier))
# Export dossier
output_format = processor.config.get("output", {}).get("dossier_format", "html")
extension = "html" if output_format == "html" else "md"
output_path = f"output/dossier_{claim_id}.{extension}"
processor.export_dossier(dossier, output_path)
print(f"\n✓ Dossier exported to: {output_path}")
except Exception as e:
print(f"✗ Error processing claim {claim_id}: {e}")
import traceback
traceback.print_exc()
print("\n" + "=" * 80)
print("STEP 3: Summary Report")
print("=" * 80)
print()
# Generate summary report
print("Claim Processing Summary:")
print("-" * 80)
for claim_id, dossier in dossiers:
print(f"\nClaim: {claim_id}")
print(f" Readiness Index: {dossier.readiness_index.overall_score:.1f}/100")
print(f" Confidence Level: {dossier.readiness_index.confidence_level}")
print(f" Gaps: {len(dossier.gaps)} ({len([g for g in dossier.gaps if g.severity == 'High'])} High)")
print(f" Conflicts: {len(dossier.conflicts)} ({len([c for c in dossier.conflicts if c.severity == 'High'])} High)")
print(f" Risks: {len(dossier.risks)} ({len([r for r in dossier.risks if r.severity == 'High'])} High)")
print(f" Recommendations: {len(dossier.recommendations)} ({len([r for r in dossier.recommendations if r.priority == 'High'])} High)")
print(f" Dossier: output/dossier_{claim_id}.md")
print("\n" + "=" * 80)
print("Demo Complete!")
print("=" * 80)
print("\nGenerated Files:")
print(" - Synthetic claims: data/synthetic/*.json")
print(" - Dossiers: output/dossier_*.md")
print("\nYou can now review the generated dossiers to see the full analysis.")
if __name__ == "__main__":
main()