columns(); if ($query->user === null) { return new AnalyticsResult($columns, []); } $payload = app(StatisticsService::class)->getStatisticsData( $query->user, $query->dateRange->startSql(), $query->dateRange->endSql(), $query->dateRange->isOneDay, ); $rows = []; foreach ($payload['data'] ?? [] as $item) { $rows[] = ! empty($item['isGroupHeader']) ? $this->groupHeaderRow($columns, $item['groupName'] ?? '') : $this->dataRow($item); } return new AnalyticsResult($columns, $rows); } /** * @param Column[] $columns * @return array */ private function groupHeaderRow(array $columns, string $name): array { $row = []; foreach ($columns as $column) { $row[$column->key] = ''; } $row['department'] = $name; return $row; } /** * @param array $item * @return array */ private function dataRow(array $item): array { return [ 'department' => $item['department'] ?? '', 'beds' => $item['beds'] ?? 0, 'rec_all' => $item['recipients']['all'] ?? 0, 'rec_plan' => $item['recipients']['plan'] ?? 0, 'rec_emergency' => $item['recipients']['emergency'] ?? 0, 'rec_transferred' => $item['recipients']['transferred'] ?? 0, 'outcome' => $item['outcome'] ?? 0, 'consist' => $item['consist'] ?? 0, 'avg_bed_days' => $item['averageBedDays'] ?? 0, 'preoperative_days' => $item['preoperativeDays'] ?? 0, 'percent_loaded' => $item['percentLoadedBeds'] ?? 0, 'lethality' => $item['lethality'] ?? 0, 'surgery_emergency' => $item['surgical']['emergency'] ?? 0, 'surgery_plan' => $item['surgical']['plan'] ?? 0, 'deceased' => $item['deceased'] ?? 0, 'staff' => $item['countStaff'] ?? 0, ]; } }