Профиль хирургии

This commit is contained in:
brusnitsyn
2026-03-25 17:37:32 +09:00
parent 52a80ccd3b
commit f566ab96df
75 changed files with 3841 additions and 1009 deletions

View File

@@ -0,0 +1,43 @@
<?php
// app/Factories/MetricCalculatorFactory.php
namespace App\Factories;
use App\Contracts\MetricCalculatorInterface;
use App\Services\MetricCalculators\PreoperativeDaysCalculator;
use App\Services\MetricCalculators\LethalityCalculator;
use App\Services\MetricCalculators\AverageBedDaysCalculator;
use RuntimeException;
class MetricCalculatorFactory
{
protected array $calculators = [];
public function __construct()
{
$this->calculators = [
18 => AverageBedDaysCalculator::class,
19 => LethalityCalculator::class,
21 => PreoperativeDaysCalculator::class,
];
}
public function getCalculator(int $metricId): MetricCalculatorInterface
{
if (!isset($this->calculators[$metricId])) {
throw new RuntimeException("No calculator for metric ID: {$metricId}");
}
$class = $this->calculators[$metricId];
return app($class);
}
public function getAllCalculators(): array
{
$calculators = [];
foreach (array_keys($this->calculators) as $metricId) {
$calculators[$metricId] = $this->getCalculator($metricId);
}
return $calculators;
}
}