from pydantic.main import BaseModel from enum import Enum from pydantic import BaseModel from typing import List, Optional from datetime import datetime #========================================= class Header(BaseModel): camera_id: str ward_id: str | None timestamp: str frame_id: int #========================================= #========================================= class SyestemHealth(str,Enum): ok = "OK" overload = "OVERLOAD" critical = "CRITICAL" class Summary(BaseModel): active_alerts_count: int total_objects_count: int system_health: SyestemHealth #========================================= #========================================= class Status(str,Enum): stable = "STABLE" fall_detected = "FALL_DETECTED" class StatusDetail(str,Enum): sudden_fall = "SUDDEN_FALL" slip_down = "SLIP_DOWN" class Severity(str,Enum): low = "LOW" medium = "MEDIUM" critical = "CRITICAL" class Metrics(BaseModel): velocity: float angle: float class ObjectVisualData(BaseModel): format: str has_image: bool base64_str: str class DetectedObject(BaseModel): tracking_id: int|None status: Status status_detail: StatusDetail|None severity: Severity|None location_zone: str duration: float bbox: List[int] # [x1, y1, x2, y2] skeleton: Optional[List[List[float]]] metrics: Metrics visual_data: ObjectVisualData #========================================= #========================================= class VisualData(BaseModel): format: str has_image: bool base64_str: str #========================================= #========================================= class FallDetectionSchema(BaseModel): header: Header summary: Summary objects: List[DetectedObject] visual_data: VisualData #=========================================