public void Load()

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();
            }
        }