async Task <PartialPatientCountContext> GetPartialContext(LeafQuery query, CancellationToken token)
        {
            var partialIds = new HashSet <string>();

            using (var cn = new SqlConnection(clinDbOptions.ConnectionString))
            {
                await cn.OpenAsync();

                using (var cmd = new SqlCommand(query.SqlStatement, cn))
                {
                    cmd.CommandTimeout = clinDbOptions.DefaultTimeout;

                    using (var reader = await cmd.ExecuteReaderAsync(token))
                    {
                        while (reader.Read())
                        {
                            partialIds.Add(reader[0].ToString());
                        }
                    }
                }
            }
            return(new PartialPatientCountContext
            {
                PatientIds = partialIds,
                IsInclusionCriteria = query.IsInclusionCriteria
            });
        }
示例#2
0
        IReadOnlyCollection <LeafQuery> GetLeafQueries(IEnumerable <Panel> panels)
        {
            var queries = new List <LeafQuery>();

            foreach (var p in panels)
            {
                var q = new LeafQuery
                {
                    IsInclusionCriteria = p.IncludePanel,
                    SqlStatement        = compiler.BuildPanelSql(p)
                };

                queries.Add(q);
            }

            log.LogInformation("Parallel SqlStatements:{Sql}", queries);

            return(queries);
        }
示例#3
0
        IReadOnlyCollection <LeafQuery> GetLeafQueries(IEnumerable <Panel> panels)
        {
            var newline   = Environment.NewLine;
            var clientSql = new StringBuilder();
            var queries   = new List <LeafQuery>();

            foreach (var p in panels)
            {
                var q = new LeafQuery
                {
                    IsInclusionCriteria = p.IncludePanel,
                    SqlStatement        = compiler.BuildPanelSql(p)
                };

                var status = q.IsInclusionCriteria ? "Included" : "Excluded";
                clientSql.Append($"/* {p.Domain} - {status} */ {newline}{q.SqlStatement}{newline}{newline}");
                queries.Add(q);
            }

            log.LogInformation("SqlStatements:{Sql}", clientSql.ToString());

            return(queries);
        }