$intervals */ public function calculate(iterable $intervals): MetricAggregate { $totalDays = 0; $patientCount = 0; foreach ($intervals as $interval) { if ($interval->operationAt < $interval->admittedAt) { continue; } $totalDays += $interval->admittedAt->setTime(0, 0)->diff($interval->operationAt->setTime(0, 0))->days; $patientCount++; } return new MetricAggregate( total: $totalDays, count: $patientCount, average: $patientCount > 0 ? round($totalDays / $patientCount, 1) : 0.0, ); } }