public async Task <Guid> Handle(SubmitBatchCommand request, CancellationToken cancellationToken)
        {
            using (var scope = _tracer.BuildSpan("batch-submit-command").StartActive(true))
            {
                var span = scope.Span.SetTag(Tags.SpanKind, Tags.SpanKindServer);

                var dictionary = new Dictionary <string, string>();
                _tracer.Inject(span.Context, BuiltinFormats.TextMap, new TextMapInjectAdapter(dictionary));

                var batchId  = Guid.NewGuid();
                var batchUri = _batchUriGenerator.GenerateBatchUri(request.HealthcareProviderId, batchId);

                using (var stream = request.BatchJsonFile.OpenReadStream())
                {
                    var batch = new Batch(
                        batchId,
                        batchUri,
                        stream);

                    await _batchRepository.AddBatchAsync(batch);
                }

                await _batchRepository.SaveChangesAsync(cancellationToken);

                EnqueueFeedbackGenerationBackgroundJob(batchId, dictionary);

                return(batchId);
            }
        }