StrokeMitra-API / src /reporting /report_builder.py
DhruvB1906's picture
Upload folder using huggingface_hub
4e9a3bc verified
"""Build report data from analysis results."""
import logging
from datetime import datetime
from uuid import uuid4
from src.reporting.schemas import ReportData, SegmentAnnotation
from src.scoring.schemas import SlurringResult
from src.risk.schemas import RiskAssessment
logger = logging.getLogger(__name__)
class ReportBuilder:
"""Build comprehensive report from analysis results."""
def build(
self,
slurring_result: SlurringResult,
risk_assessment: RiskAssessment,
acoustic_summary: dict,
segments: list[SegmentAnnotation],
processing_time_ms: float,
audio_duration_sec: float,
patient_age: int | None = None,
onset_hours: float | None = None,
) -> ReportData:
"""
Build report data.
Args:
slurring_result: Slurring analysis result
risk_assessment: Risk assessment
acoustic_summary: Acoustic features summary
segments: Annotated time segments
processing_time_ms: Total processing time
audio_duration_sec: Audio duration
patient_age: Patient age (optional)
onset_hours: Symptom onset hours (optional)
Returns:
ReportData ready for rendering
"""
report_id = str(uuid4())
logger.info(f"Building report: {report_id}")
report = ReportData(
report_id=report_id,
generated_at=datetime.utcnow(),
slurring_result=slurring_result,
risk_assessment=risk_assessment,
acoustic_summary=acoustic_summary,
segments=segments,
processing_time_ms=processing_time_ms,
audio_duration_sec=audio_duration_sec,
patient_age=patient_age,
onset_hours=onset_hours,
)
logger.info(f"Report built: {report_id}")
return report