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