Skip to content

Commit 683f121

Browse files
authored
Create decentralized_insurance.py
1 parent de2a6f3 commit 683f121

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
import json
2+
import os
3+
from datetime import datetime
4+
from collections import defaultdict
5+
6+
class DecentralizedInsurance:
7+
def __init__(self, storage_file='insurance_data.json'):
8+
self.storage_file = storage_file
9+
self.policies = []
10+
self.claims = []
11+
self.load_data()
12+
13+
def load_data(self):
14+
"""Load insurance policies and claims from a JSON file."""
15+
if os.path.exists(self.storage_file):
16+
with open(self.storage_file, 'r') as file:
17+
data = json.load(file)
18+
self.policies = data.get('policies', [])
19+
self.claims = data.get('claims', [])
20+
21+
def save_data(self):
22+
"""Save insurance policies and claims to a JSON file."""
23+
with open(self.storage_file, 'w') as file:
24+
json.dump({
25+
'policies': self.policies,
26+
'claims': self.claims
27+
}, file)
28+
29+
def create_policy(self, user_id, policy_type, premium, coverage_amount):
30+
"""Create a new insurance policy."""
31+
policy_id = len(self.policies) + 1
32+
policy = {
33+
'policy_id': policy_id,
34+
'user_id': user_id,
35+
'policy_type': policy_type,
36+
'premium': premium,
37+
'coverage_amount': coverage_amount,
38+
'status': 'active',
39+
'created_at': datetime.now().isoformat()
40+
}
41+
self.policies.append(policy)
42+
self.save_data()
43+
return f"Policy #{policy_id} created for {user_id}."
44+
45+
def file_claim(self, user_id, policy_id, claim_amount):
46+
"""File a claim against an insurance policy."""
47+
policy = next((p for p in self.policies if p['policy_id'] == policy_id and p['user_id'] == user_id), None)
48+
if not policy:
49+
return "Policy not found or does not belong to the user."
50+
51+
if claim_amount > policy['coverage_amount']:
52+
return "Claim amount exceeds coverage amount."
53+
54+
claim_id = len(self.claims) + 1
55+
claim = {
56+
'claim_id': claim_id,
57+
'policy_id': policy_id,
58+
'user_id': user_id,
59+
'claim_amount': claim_amount,
60+
'status': 'pending',
61+
'filed_at': datetime.now().isoformat()
62+
}
63+
self.claims.append(claim)
64+
self.save_data()
65+
return f"Claim #{claim_id} filed for Policy #{policy_id}."
66+
67+
def process_claim(self, claim_id, approve=True):
68+
"""Process a claim and approve or deny it."""
69+
claim = next((c for c in self.claims if c['claim_id'] == claim_id), None)
70+
if not claim:
71+
return "Claim not found."
72+
73+
if approve:
74+
claim['status'] = 'approved'
75+
return f"Claim #{claim_id} approved."
76+
else:
77+
claim['status'] = 'denied'
78+
return f"Claim #{claim_id} denied."
79+
80+
def get_policy_details(self, policy_id):
81+
"""Get details of a specific insurance policy."""
82+
policy = next((p for p in self.policies if p['policy_id'] == policy_id), None)
83+
if not policy:
84+
return "Policy not found."
85+
return policy
86+
87+
def get_claim_details(self, claim_id):
88+
"""Get details of a specific claim."""
89+
claim = next((c for c in self.claims if c['claim_id'] == claim_id), None)
90+
if not claim:
91+
return "Claim not found."
92+
return claim
93+
94+
# Example usage
95+
if __name__ == "__main__":
96+
insurance_system = DecentralizedInsurance()
97+
98+
# Create a new insurance policy
99+
print(insurance_system.create_policy("user123", "Health Insurance", 200, 5000))
100+
101+
# File a claim
102+
print(insurance_system.file_claim("user123", 1, 3000))
103+
104+
# Process the claim
105+
print(insurance_system.process_claim(1, approve=True))
106+
107+
# Get policy details
108+
policy_details = insurance_system.get_policy_details(1)
109+
print(f"Policy Details: {policy_details}")
110+
111+
# Get claim details
112+
claim_details = insurance_system.get_claim_details(1)
113+
print(f"Claim Details: {claim_details}")

0 commit comments

Comments
 (0)