61 lines
2.3 KiB
PHP
61 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use App\Application\Reports\CompareLegacyAndNewReportUseCase;
|
|
use App\Application\Reports\GenerateReportUseCase;
|
|
use App\Application\Reports\ReportInputFactory;
|
|
use App\Domain\Reports\Contracts\AuditLogger;
|
|
use App\Domain\Reports\Contracts\PatientSource;
|
|
use App\Domain\Reports\Contracts\ReportRepository;
|
|
use App\Infrastructure\Reports\Adapters\LegacyReportServiceAdapter;
|
|
use App\Infrastructure\Reports\Logging\ReportsAuditLogger;
|
|
use App\Infrastructure\Reports\Repositories\EloquentReportRepository;
|
|
use App\Infrastructure\Reports\Sources\LegacyAutoFillPatientSource;
|
|
use App\Services\Cache\CacheInvalidator;
|
|
use App\Services\Cache\CacheKeyBuilder;
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Register any application services.
|
|
*/
|
|
public function register(): void
|
|
{
|
|
$this->app->singleton(CacheKeyBuilder::class, function () {
|
|
return new CacheKeyBuilder(version: 'v1');
|
|
});
|
|
|
|
$this->app->singleton(CacheInvalidator::class);
|
|
$this->app->singleton(ReportRepository::class, EloquentReportRepository::class);
|
|
$this->app->singleton(AuditLogger::class, ReportsAuditLogger::class);
|
|
$this->app->singleton(PatientSource::class, LegacyAutoFillPatientSource::class);
|
|
$this->app->singleton(CompareLegacyAndNewReportUseCase::class, function ($app) {
|
|
return new CompareLegacyAndNewReportUseCase(
|
|
$app->make(ReportRepository::class),
|
|
$app->make(LegacyReportServiceAdapter::class),
|
|
);
|
|
});
|
|
$this->app->singleton(ReportInputFactory::class);
|
|
$this->app->singleton(GenerateReportUseCase::class, function ($app) {
|
|
return new GenerateReportUseCase(
|
|
reportRepository: $app->make(ReportRepository::class),
|
|
auditLogger: $app->make(AuditLogger::class),
|
|
comparator: $app->make(CompareLegacyAndNewReportUseCase::class),
|
|
patientSource: $app->make(PatientSource::class),
|
|
calculators: [],
|
|
compareBeforeCutover: (bool) config('reports.use_new_arch.compare_before_cutover', true),
|
|
);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Bootstrap any application services.
|
|
*/
|
|
public function boot(): void
|
|
{
|
|
//
|
|
}
|
|
}
|