wip-error-fix api post new-p

This commit is contained in:
Raika Furude 2025-11-24 15:20:45 -05:00
parent e3cb804671
commit 9a50ce6f2a
12 changed files with 736 additions and 250 deletions

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,

View File

@ -365,14 +365,176 @@ function App() {
)}
</>
) : (
/* Wristbands tab - your existing code stays the same */
<div className="space-y-6">
{/* ... your existing wristband code ... */}
<div className="bg-white rounded-lg shadow-sm p-6">
<h2 className="text-2xl font-bold mb-4">Wristband Inventory</h2>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{wristbands.map(band => (
<div
key={band.band_id}
onClick={() => setSelectedWristband(band)}
className={`p-4 rounded-lg border-2 cursor-pointer transition-all ${
band.status === 'in_use'
? 'bg-blue-50 border-blue-300 hover:border-blue-400'
: 'bg-gray-50 border-gray-300 hover:border-gray-400'
}`}
>
<div className="flex items-center justify-between mb-2">
<span className="font-mono font-bold text-lg">
{band.type === 'real' ? '🔵' : '🟢'} {band.band_id}
</span>
<span className={`px-2 py-1 rounded text-xs font-semibold ${
band.status === 'in_use' ? 'bg-blue-600 text-white' :
band.status === 'available' ? 'bg-green-600 text-white' :
'bg-gray-400 text-white'
}`}>
{band.status.toUpperCase().replace('_', ' ')}
</span>
</div>
{band.patient_id && (
<div className="text-sm text-gray-600 mb-2">
Patient: <span className="font-mono font-semibold">{band.patient_id}</span>
</div>
)}
<div className="text-xs text-gray-500 flex justify-between">
<span>Packets: {band.packet_count}</span>
{band.is_monitoring && (
<span className="text-green-600 font-semibold"> LIVE</span>
)}
</div>
</div>
))}
</div>
{wristbands.length === 0 && (
<p className="text-gray-500 text-center py-8">No wristbands configured</p>
)}
</div>
{selectedWristband && selectedWristband.last_raw_packet && (
<div className="bg-white rounded-lg shadow-lg p-6">
<div className="flex items-center justify-between mb-4">
<h3 className="text-xl font-bold flex items-center gap-2">
<span>Packet Details: {selectedWristband.band_id}</span>
{selectedWristband.type === 'simulated' && (
<span className="text-sm bg-green-100 text-green-800 px-2 py-1 rounded">MOCK</span>
)}
</h3>
<button
onClick={() => setSelectedWristband(null)}
className="text-gray-500 hover:text-gray-700 text-2xl font-bold"
>
</button>
</div>
<div className="mb-4">
<h4 className="font-semibold text-sm text-gray-600 mb-2">Raw Packet (16 bytes, Hex):</h4>
<div className="bg-gray-900 text-green-400 p-4 rounded font-mono text-sm overflow-x-auto">
{selectedWristband.last_raw_packet.hex.toUpperCase().match(/.{1,2}/g).join(' ')}
</div>
<p className="text-xs text-gray-500 mt-1">
Format: [ver][seq][timestamp][flags][hr][spo2][temp_x100][activity_x100][checksum][rfu]
</p>
</div>
{selectedWristband.last_raw_packet.decoded && (
<>
<div className="mb-4">
<h4 className="font-semibold text-sm text-gray-600 mb-3">Decoded Fields:</h4>
<div className="grid grid-cols-2 md:grid-cols-4 gap-3">
<div className="bg-gray-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">Version</div>
<div className="font-mono text-lg font-bold">0x{selectedWristband.last_raw_packet.decoded.version.toString(16).padStart(2, '0')}</div>
</div>
<div className="bg-gray-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">Sequence #</div>
<div className="font-mono text-lg font-bold">{selectedWristband.last_raw_packet.decoded.sequence}</div>
</div>
<div className="bg-gray-50 p-3 rounded border col-span-2">
<div className="text-xs text-gray-600 mb-1">Timestamp (ms)</div>
<div className="font-mono text-lg font-bold">{selectedWristband.last_raw_packet.decoded.timestamp_ms.toLocaleString()}</div>
</div>
<div className="bg-blue-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">Heart Rate</div>
<div className="font-mono text-2xl font-bold text-blue-600">{selectedWristband.last_raw_packet.decoded.hr_bpm}</div>
<div className="text-xs text-gray-500">bpm</div>
</div>
<div className="bg-green-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">SpO₂</div>
<div className="font-mono text-2xl font-bold text-green-600">{selectedWristband.last_raw_packet.decoded.spo2}</div>
<div className="text-xs text-gray-500">%</div>
</div>
<div className="bg-orange-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">Temperature</div>
<div className="font-mono text-2xl font-bold text-orange-600">{selectedWristband.last_raw_packet.decoded.temperature_c.toFixed(2)}</div>
<div className="text-xs text-gray-500">°C</div>
</div>
<div className="bg-purple-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">Activity</div>
<div className="font-mono text-2xl font-bold text-purple-600">{selectedWristband.last_raw_packet.decoded.activity.toFixed(2)}</div>
<div className="text-xs text-gray-500">RMS</div>
</div>
<div className="bg-gray-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">Checksum</div>
<div className="font-mono text-lg font-bold">{selectedWristband.last_raw_packet.decoded.checksum}</div>
</div>
<div className="bg-gray-50 p-3 rounded border">
<div className="text-xs text-gray-600 mb-1">Flags (raw)</div>
<div className="font-mono text-lg font-bold">0x{selectedWristband.last_raw_packet.decoded.flags.raw.toString(16).padStart(2, '0')}</div>
</div>
</div>
</div>
{selectedWristband.last_raw_packet.decoded.flags && (
<div className="mt-4">
<h4 className="font-semibold text-sm text-gray-600 mb-2">Status Flags:</h4>
<div className="flex flex-wrap gap-2">
{selectedWristband.last_raw_packet.decoded.flags.emergency && (
<span className="px-3 py-1 bg-red-100 text-red-800 rounded-full text-sm font-semibold border border-red-300">
🚨 Bit 4: Emergency
</span>
)}
{selectedWristband.last_raw_packet.decoded.flags.alert && (
<span className="px-3 py-1 bg-yellow-100 text-yellow-800 rounded-full text-sm font-semibold border border-yellow-300">
Bit 3: Alert
</span>
)}
{selectedWristband.last_raw_packet.decoded.flags.sensor_fault && (
<span className="px-3 py-1 bg-purple-100 text-purple-800 rounded-full text-sm font-semibold border border-purple-300">
Bit 2: Sensor Fault
</span>
)}
{selectedWristband.last_raw_packet.decoded.flags.low_battery && (
<span className="px-3 py-1 bg-orange-100 text-orange-800 rounded-full text-sm font-semibold border border-orange-300">
🔋 Bit 1: Low Battery
</span>
)}
{selectedWristband.last_raw_packet.decoded.flags.motion_artifact && (
<span className="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-sm font-semibold border border-blue-300">
👋 Bit 0: Motion Artifact
</span>
)}
{!Object.values(selectedWristband.last_raw_packet.decoded.flags).some(v => v === true) && (
<span className="px-3 py-1 bg-gray-100 text-gray-600 rounded-full text-sm font-semibold">
No flags set (all normal)
</span>
)}
</div>
</div>
)}
</>
)}
</div>
)}
</div>
)}
</div>
{/* Patient Detail Modal - ADD THIS */}
{/* Patient Detail Modal */}
{selectedPatient && (
<PatientDetailModal
patient={selectedPatient}

View File

@ -1,4 +1,4 @@
62558
62574
62581
62616
68221
68237
68245
68281

View File

@ -1,4 +1,4 @@
INFO: Started server process [62558]
INFO: Started server process [68221]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
@ -10,195 +10,492 @@ API Documentation: http://localhost:8000/docs
WebSocket Endpoint: ws://localhost:8000/ws
Database: vitallink.db
================================================================================
INFO: 127.0.0.1:53128 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:53136 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:53142 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:53156 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:53160 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:53172 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43394 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43396 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43410 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43424 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43438 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43452 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55612 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55626 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:55632 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55634 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:55644 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:55646 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:59532 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:59542 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:59552 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:59566 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:59576 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:59580 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:45636 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45640 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45642 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:45644 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45652 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:45662 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:48820 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48834 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:48850 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48852 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48862 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:48868 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44082 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44088 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44090 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:44104 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44108 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:44112 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:40312 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40322 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40334 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40348 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:40358 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:40364 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:57108 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:57120 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:57128 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:57136 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:57144 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:57154 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48928 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48944 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48960 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:48964 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48978 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:48992 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:60772 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60788 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60790 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60802 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:60804 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60808 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:58250 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58262 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:58272 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58288 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58294 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:58298 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:35286 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:35294 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43408 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:35306 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:54608 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:54624 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:54630 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:54642 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54656 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37292 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37304 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37318 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37322 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:54604 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37324 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37334 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:58836 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58838 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58854 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58862 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:58866 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58878 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60090 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:60098 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60110 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60114 - "OPTIONS /api/checkin HTTP/1.1" 200 OK
INFO: 127.0.0.1:60114 - "POST /api/checkin HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1133, in __call__
await super().__call__(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 93, in __call__
await self.simple_response(scope, receive, send, request_headers=headers)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 144, in simple_response
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 736, in app
await route.handle(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 290, in handle
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 123, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 109, in app
response = await f(request)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 389, in app
raw_response = await run_endpoint_function(
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
return await dependant.call(**values)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py", line 211, in check_in_patient
await db.save_patient(patient.dict())
AttributeError: 'VitalLinkDatabase' object has no attribute 'save_patient'
INFO: 127.0.0.1:60130 - "GET /api/queue HTTP/1.1" 200 OK
/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py:320: PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/
patient.last_vitals = data.dict()
INFO: 127.0.0.1:60142 - "POST /api/vitals HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1133, in __call__
await super().__call__(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 85, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 736, in app
await route.handle(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 290, in handle
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 123, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 109, in app
response = await f(request)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 389, in app
raw_response = await run_endpoint_function(
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
return await dependant.call(**values)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py", line 323, in receive_vitals
await db.save_vitals(data.dict())
AttributeError: 'VitalLinkDatabase' object has no attribute 'save_vitals'
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:60152 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:60156 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37100 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37104 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37118 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37130 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:37146 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37154 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37158 - "OPTIONS /api/checkin HTTP/1.1" 200 OK
INFO: 127.0.0.1:37158 - "POST /api/checkin HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1133, in __call__
await super().__call__(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 93, in __call__
await self.simple_response(scope, receive, send, request_headers=headers)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 144, in simple_response
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 736, in app
await route.handle(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 290, in handle
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 123, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 109, in app
response = await f(request)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 389, in app
raw_response = await run_endpoint_function(
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
return await dependant.call(**values)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py", line 211, in check_in_patient
await db.save_patient(patient.dict())
AttributeError: 'VitalLinkDatabase' object has no attribute 'save_patient'
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39068 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:39070 - "POST /api/vitals HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1133, in __call__
await super().__call__(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 85, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 736, in app
await route.handle(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 290, in handle
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 123, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 109, in app
response = await f(request)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 389, in app
raw_response = await run_endpoint_function(
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
return await dependant.call(**values)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py", line 323, in receive_vitals
await db.save_vitals(data.dict())
AttributeError: 'VitalLinkDatabase' object has no attribute 'save_vitals'
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39082 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39092 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:39094 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39106 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39120 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:42204 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42212 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42218 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42224 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:42240 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:42252 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:49566 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:49582 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:49590 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:49600 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:49612 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:49620 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51080 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51086 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51096 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:51098 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51100 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51106 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:50966 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50978 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50984 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:50986 - "POST /api/vitals HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1133, in __call__
await super().__call__(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 85, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 736, in app
await route.handle(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 290, in handle
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 123, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 109, in app
response = await f(request)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 389, in app
raw_response = await run_endpoint_function(
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
return await dependant.call(**values)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py", line 323, in receive_vitals
await db.save_vitals(data.dict())
AttributeError: 'VitalLinkDatabase' object has no attribute 'save_vitals'
INFO: 127.0.0.1:50992 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:51008 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51020 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39962 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:39970 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39976 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39978 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:39992 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:39996 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58090 - "POST /api/vitals HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1133, in __call__
await super().__call__(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 85, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 736, in app
await route.handle(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/routing.py", line 290, in handle
await self.app(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 123, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 109, in app
response = await f(request)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 389, in app
raw_response = await run_endpoint_function(
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
return await dependant.call(**values)
File "/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py", line 323, in receive_vitals
await db.save_vitals(data.dict())
AttributeError: 'VitalLinkDatabase' object has no attribute 'save_vitals'
INFO: 127.0.0.1:58100 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58110 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58124 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:58134 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58140 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:58142 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:51668 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51684 - "POST /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51690 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37290 - "GET /api/wristband-details HTTP/1.1" 200 OK
INFO: 127.0.0.1:51704 - "GET /api/queue HTTP/1.1" 200 OK
INFO: 127.0.0.1:51712 - "GET /api/queue HTTP/1.1" 200 OK

View File

@ -1 +1 @@
62558
68221

View File

@ -3,7 +3,7 @@
> vite
VITE v7.1.10 ready in 225 ms
VITE v7.1.10 ready in 219 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose

View File

@ -1 +1 @@
62581
68245

View File

@ -4,7 +4,7 @@
Port 5173 is in use, trying another one...
VITE v7.1.10 ready in 215 ms
VITE v7.1.10 ready in 250 ms
➜ Local: http://localhost:5174/
➜ Network: use --host to expose

View File

@ -1 +1 @@
62616
68281

View File

@ -1 +1 @@
62574
68237

Binary file not shown.