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 { // } }