Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
 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
     });
 }