public CosmosContainerProvider(
            CosmosDataStoreConfiguration cosmosDataStoreConfiguration,
            IOptionsMonitor <CosmosCollectionConfiguration> collectionConfiguration,
            ICosmosClientInitializer cosmosClientInitializer,
            ILogger <CosmosContainerProvider> logger,
            IEnumerable <ICollectionInitializer> collectionInitializers)
        {
            EnsureArg.IsNotNull(cosmosDataStoreConfiguration, nameof(cosmosDataStoreConfiguration));
            EnsureArg.IsNotNull(collectionConfiguration, nameof(collectionConfiguration));
            EnsureArg.IsNotNull(cosmosClientInitializer, nameof(cosmosClientInitializer));
            EnsureArg.IsNotNull(logger, nameof(logger));
            EnsureArg.IsNotNull(collectionInitializers, nameof(collectionInitializers));
            _logger = logger;

            string collectionId = collectionConfiguration.Get(Constants.CollectionConfigurationName).CollectionId;

            _client = cosmosClientInitializer.CreateCosmosClient(cosmosDataStoreConfiguration);

            _initializationOperation = new RetryableInitializationOperation(
                () => cosmosClientInitializer.InitializeDataStore(_client, cosmosDataStoreConfiguration, collectionInitializers));

            _container = new Lazy <Container>(() => cosmosClientInitializer.CreateFhirContainer(
                                                  _client,
                                                  cosmosDataStoreConfiguration.DatabaseId,
                                                  collectionId));
        }
        public DocumentClientProvider(
            CosmosDataStoreConfiguration cosmosDataStoreConfiguration,
            IDocumentClientInitializer documentClientInitializer,
            ILogger <DocumentClientProvider> logger)
        {
            EnsureArg.IsNotNull(cosmosDataStoreConfiguration, nameof(cosmosDataStoreConfiguration));
            EnsureArg.IsNotNull(documentClientInitializer, nameof(documentClientInitializer));
            EnsureArg.IsNotNull(logger, nameof(logger));

            _documentClient = documentClientInitializer.CreateDocumentClient(cosmosDataStoreConfiguration);

            _initializationOperation = new RetryableInitializationOperation(
                () => documentClientInitializer.InitializeDataStore(_documentClient, cosmosDataStoreConfiguration));
        }