public async Task <Result> GetConceptDatasetAsync(QueryRef queryRef, IPanelItemDTO panelitem, long?early, long?late, CancellationToken cancel) { log.LogInformation("ConceptDataset extraction starting. ConceptRef:{@ConceptRef}, PanelItem:{@PanelItem}, Early:{@Early}, Late:{@Late}", queryRef, panelitem, early, late); var request = new ConceptDatasetExecutionRequest(queryRef, panelitem, early, late); var result = new Result(); var validationContext = await contextProvider.GetCompilerContextAsync(request); log.LogInformation("ConceptDataset compiler validation context. Context:{@Context}", validationContext); result.Context = validationContext; if (validationContext.State != CompilerContextState.Ok) { log.LogError("ConceptDatasetCompilerContext error. State:{State}", validationContext.State); return(result); } var exeContext = conceptDatasetSqlCompiler.BuildConceptDatasetSql(validationContext.Context); log.LogInformation("Compiled ConceptDataset execution context. Context:{@Context}", exeContext); var data = await executor.ExecuteDatasetAsync(exeContext, cancel); log.LogInformation("ConceptDataset complete. Patients:{Patients} Records:{Records}", data.Results.Keys.Count, data.Results.Sum(d => d.Value.Count())); result.Dataset = data; return(result); }
public ConceptDatasetExecutionRequest(QueryRef qr, IPanelItemDTO panelItem, long?early = null, long?late = null) { QueryRef = qr; PanelItem = panelItem; if (early.HasValue) { EarlyBound = DateTimes.FromUTCTicks(early.Value); } if (late.HasValue) { LateBound = DateTimes.FromUTCTicks(late.Value); } }
public static PanelItem PanelItem(this IPanelItemDTO dto, Concept concept) { return(new PanelItem { Concept = concept, NumericFilter = dto.NumericFilter, RecencyFilter = dto.RecencyFilter, Index = dto.Index, SubPanelIndex = dto.SubPanelIndex, PanelIndex = dto.PanelIndex, Specializations = concept.SpecializationGroups != null && dto.Specializations != null ? (from g in concept.SpecializationGroups from s in g.Specializations from d in dto.Specializations where s.Id == d.Id || d.UniversalId != null && s.UniversalId.ToString() == d.UniversalId select s).ToList() : null }); }