wip-error-fix api post new-p

This commit is contained in:
2025-11-24 15:20:45 -05:00
parent e3cb804671
commit 9a50ce6f2a
12 changed files with 736 additions and 250 deletions
+71 -44
View File
@@ -135,36 +135,47 @@ class VitalLinkDatabase:
# PATIENT OPERATIONS
# ========================================================================
async def save_patient(self, patient_data: Dict):
"""Save new patient to database"""
await self.conn.execute(
"""
INSERT INTO patients (
patient_id, band_id, first_name, last_name, dob,
symptoms, severity, check_in_time, current_tier
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
""",
(
patient_data["patient_id"],
patient_data["band_id"],
patient_data["first_name"],
patient_data["last_name"],
patient_data["dob"],
json.dumps(patient_data["symptoms"]),
patient_data["severity"],
patient_data["check_in_time"],
patient_data.get("current_tier", "NORMAL"),
),
)
await self.conn.commit()
# Log event
await self.log_event(
"patient_checkin",
async def save_patient(self, patient_data: Dict):
"""Save new patient to database"""
# Convert datetime to ISO string if needed
check_in_time = patient_data["check_in_time"]
if isinstance(check_in_time, datetime):
check_in_time = check_in_time.isoformat()
await self.conn.execute(
"""
INSERT INTO patients (
patient_id, band_id, first_name, last_name, dob,
symptoms, severity, check_in_time, current_tier
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
""",
(
patient_data["patient_id"],
patient_data["band_id"],
patient_data,
)
patient_data["first_name"],
patient_data["last_name"],
patient_data["dob"],
json.dumps(patient_data["symptoms"]),
patient_data["severity"],
check_in_time, # Now a string
patient_data.get("current_tier", "NORMAL"),
),
)
await self.conn.commit()
# Log event with serializable data
await self.log_event(
"patient_checkin",
patient_data["patient_id"],
patient_data["band_id"],
{
"first_name": patient_data["first_name"],
"last_name": patient_data["last_name"],
"symptoms": patient_data["symptoms"],
"severity": patient_data["severity"],
},
)
async def update_patient_tier(self, patient_id: str, new_tier: str):
"""Update patient's current tier"""
@@ -315,23 +326,39 @@ class VitalLinkDatabase:
# SYSTEM EVENTS (Audit Trail)
# ========================================================================
async def log_event(
self,
event_type: str,
patient_id: Optional[str],
band_id: Optional[str],
details: Dict,
):
"""Log system event for audit trail"""
await self.conn.execute(
"""
INSERT INTO system_events (
event_time, event_type, patient_id, band_id, details
) VALUES (?, ?, ?, ?, ?)
""",
(datetime.now(), event_type, patient_id, band_id, json.dumps(details)),
)
await self.conn.commit()
async def log_event(
self,
event_type: str,
patient_id: Optional[str],
band_id: Optional[str],
details: Dict,
):
"""Log system event for audit trail"""
# Ensure details is JSON serializable
serializable_details = {}
for key, value in details.items():
if isinstance(value, datetime):
serializable_details[key] = value.isoformat()
else:
serializable_details[key] = value
await self.conn.execute(
"""
INSERT INTO system_events (
event_time, event_type, patient_id, band_id, details
) VALUES (?, ?, ?, ?, ?)
""",
(
datetime.now().isoformat(), # Convert to string
event_type,
patient_id,
band_id,
json.dumps(serializable_details),
),
)
await self.conn.commit()
async def get_events(
self,