in src/Microsoft.Health.Dicom.Core/Modules/ServiceModule.cs [36:209]
public void Load(IServiceCollection services)
{
EnsureArg.IsNotNull(services, nameof(services));
services.AddFellowOakDicomServices(skipValidation: true);
services.Add<DicomInstanceEntryReaderManager>()
.Singleton()
.AsSelf()
.AsImplementedInterfaces();
services.Add<StoreDatasetValidator>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<StoreService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces()
.AsFactory();
services.Add<StoreOrchestrator>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Decorate<IStoreOrchestrator, LoggingStoreOrchestrator>();
services.Add<DicomInstanceEntryReaderForMultipartRequest>()
.Singleton()
.AsSelf()
.AsImplementedInterfaces();
services.Add<DicomInstanceEntryReaderForSinglePartRequest>()
.Singleton()
.AsSelf()
.AsImplementedInterfaces();
services.Decorate<IDicomInstanceEntryReader, LoggingDicomInstanceEntryReader>();
services.Add<DicomInstanceEntryReaderManager>()
.Singleton()
.AsSelf()
.AsImplementedInterfaces();
services.Decorate<IDicomInstanceEntryReaderManager, LoggingDicomInstanceEntryReaderManager>();
services.Add<StoreResponseBuilder>()
.Transient()
.AsSelf()
.AsImplementedInterfaces();
services.Add<RetrieveMetadataService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<RetrieveResourceService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<FrameHandler>()
.Transient()
.AsSelf()
.AsImplementedInterfaces();
services.Add<RetrieveTransferSyntaxHandler>()
.Transient()
.AsSelf()
.AsImplementedInterfaces();
services.Add<Transcoder>()
.Transient()
.AsSelf()
.AsImplementedInterfaces();
services.Add<QueryService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<DicomTagParser>()
.Singleton()
.AsSelf()
.AsImplementedInterfaces();
services.AddTransient<IQueryParser, QueryParser>();
services.Add<DeleteService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<ChangeFeedService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<ElementMinimumValidator>()
.Singleton()
.AsSelf()
.AsImplementedInterfaces();
services.Add<ETagGenerator>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<QueryTagService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<OperationStatusHandler>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.AddSingleton<BackgroundServiceHealthCheckCache>();
services.AddHealthChecks().AddCheck<BackgroundServiceHealthCheck>(name: "BackgroundServiceHealthCheck");
services.AddSingleton<PartitionCache>();
services.Add<PartitionService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
if (_featureConfiguration.EnableExtendedQueryTags)
{
services.Add<ExtendedQueryTagEntryValidator>()
.Singleton()
.AsSelf()
.AsImplementedInterfaces();
services.Add<GetExtendedQueryTagsService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<AddExtendedQueryTagService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<DeleteExtendedQueryTagService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<UpdateExtendedQueryTagService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<ExtendedQueryTagErrorsService>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<ReindexDatasetValidator>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
services.Add<InstanceReindexer>()
.Scoped()
.AsSelf()
.AsImplementedInterfaces();
}
}