private async Task <IFhirRequestContext> SetupAsync(HttpContext httpContext)
        {
            var fhirRequestContextAccessor = Substitute.For <IFhirRequestContextAccessor>();
            var fhirContextMiddlware       = new FhirRequestContextMiddleware(next: (innerHttpContext) => Task.CompletedTask);

            string Provider() => Guid.NewGuid().ToString();

            await fhirContextMiddlware.Invoke(httpContext, fhirRequestContextAccessor, Provider);

            Assert.NotNull(fhirRequestContextAccessor.FhirRequestContext);

            return(fhirRequestContextAccessor.FhirRequestContext);
        }
        public async Task GivenAnHttpRequest_WhenExecutingFhirRequestContextMiddleware_ThenRequestIdHeaderShouldBeSet()
        {
            const string expectedRequestId = "123";

            HttpContext httpContext = CreateHttpContext();

            var fhirRequestContextAccessor = Substitute.For <IFhirRequestContextAccessor>();
            var fhirContextMiddlware       = new FhirRequestContextMiddleware(next: (innerHttpContext) => Task.CompletedTask);

            string Provider() => expectedRequestId;

            await fhirContextMiddlware.Invoke(httpContext, fhirRequestContextAccessor, Provider);

            Assert.True(httpContext.Response.Headers.TryGetValue("X-Request-Id", out StringValues value));
            Assert.Equal(new StringValues(expectedRequestId), value);
        }