Exemple #1
0
 public Task <PagedCollection <IValueSet> > GetValueSetsAsync(
     IPagerSettings pagerSettings,
     IEnumerable <string> codeSystemCodes,
     bool includeAllValueSetCodes = false)
 {
     return(this.FindValueSetsAsync(string.Empty, pagerSettings, codeSystemCodes, includeAllValueSetCodes));
 }
Exemple #2
0
 public Task <PagedCollection <ICodeSystemCode> > GetCodeSystemCodesAsync(
     IPagerSettings settings,
     IEnumerable <Guid> codeSystemGuids,
     bool includeRetired = false)
 {
     return(this.GetCodeSystemCodesAsync(string.Empty, settings, codeSystemGuids, includeRetired));
 }
Exemple #3
0
        public Task <PagedCollection <IValueSetBackingItem> > GetValueSetBackingItemsAsync(
            string filterText,
            IPagerSettings pagerSettings,
            IEnumerable <Guid> codeSystemGuids,
            IEnumerable <ValueSetStatus> statusCodes,
            bool latestVersionsOnly = true)
        {
            var dtos = latestVersionsOnly ? this.DbSet.Where(GetBaseExpression(statusCodes)) : this.DbSet.AsQueryable();

#pragma warning disable CA1307 // Specify StringComparison
            if (!filterText.IsNullOrWhiteSpace())
            {
                dtos = dtos.Where(
                    dto => dto.ValueSetNM.Contains(filterText) ||
                    dto.ValueSetReferenceID.StartsWith(filterText));
            }
#pragma warning restore CA1307 // Specify StringComparison

            var systemCodes = codeSystemGuids as Guid[] ?? codeSystemGuids.ToArray();
            if (systemCodes.Any())
            {
                var vsGuids = this.sharedContext.ValueSetCodes.Where(code => systemCodes.Contains(code.CodeSystemGuid))
                              .Select(code => code.ValueSetGUID)
                              .Distinct();

                dtos = dtos.Join(vsGuids, dto => dto.ValueSetGUID, key => key, (dto, key) => dto);
            }

            var orderingStrategy = this.orderingStrategyFactory.GetValueSetStrategy(
                this.sharedContext,
                systemCodes);
            dtos = orderingStrategy.SetOrdering(dtos, pagerSettings.AsOrderingParameters());

            return(this.CreatePagedCollectionAsync(dtos, pagerSettings));
        }
Exemple #4
0
 public Task <PagedCollection <IValueSet> > FindValueSetsAsync(
     string nameFilterText,
     IPagerSettings pagerSettings,
     bool includeAllValueSetCodes = false)
 {
     return(this.FindValueSetsAsync(nameFilterText, pagerSettings, new string[] { }, includeAllValueSetCodes));
 }
 public Task<PagedCollection<IValueSetCode>> GetValueSetCodesAsync(
     Guid valueSetGuid,
     IPagerSettings settings,
     IEnumerable<Guid> codeSystemGuids)
 {
     return this.GetValueSetCodesAsync(string.Empty, valueSetGuid, settings, codeSystemGuids);
 }
 public Task <PagedCollection <IValueSet> > GetValueSetsAsync(
     IPagerSettings settings,
     IEnumerable <ValueSetStatus> statusCodes,
     bool latestVersionsOnly = true)
 {
     return(this.GetValueSetsAsync(settings, new List <Guid>(), statusCodes, latestVersionsOnly));
 }
Exemple #7
0
 public Task <PagedCollection <IValueSetCode> > GetValueSetCodesAsync(
     string filterText,
     IPagerSettings settings,
     IEnumerable <Guid> codeSystemGuids)
 {
     return(this.GetValueSetCodesAsync(filterText, Guid.Empty, settings, codeSystemGuids));
 }
Exemple #8
0
        private async Task <PagedCollection <IValueSetCode> > CreatePagedCollectionAsync(
            IQueryable <ValueSetCodeDto> source,
            IPagerSettings pagerSettings)
        {
            var defaultItemsPerPage = this.sharedContext.Settings.DefaultItemsPerPage;
            var pagingStrategy      = this.pagingStrategyFactory.GetPagingStrategy <IValueSetCode>(defaultItemsPerPage);
            var orderingStrategy    = this.orderingStrategyFactory.GetValueSetCodeStrategy();

            pagingStrategy.EnsurePagerSettings(pagerSettings);

            var count = await source.CountAsync();

            source = orderingStrategy.SetOrdering(source, pagerSettings.AsOrderingParameters());

            var items = await source.Skip((pagerSettings.CurrentPage - 1) *pagerSettings.ItemsPerPage)
                        .Take(pagerSettings.ItemsPerPage)
                        .ToListAsync();

            var factory = new ValueSetCodeFactory();

            // Can't cache at this point since codeGuid can be null in db.
            // If this changes in the future, caching should/could be implemented.
            return(pagingStrategy.CreatePagedCollection(
                       items.Select(factory.Build),
                       count,
                       pagerSettings));
        }
 public Task<PagedCollection<IValueSetCode>> GetValueSetCodesAsync(
     string filterText,
     IPagerSettings settings,
     IEnumerable<Guid> codeSystemGuids)
 {
     return this.valueSetCodeRepository.GetValueSetCodesAsync(filterText, settings, codeSystemGuids);
 }
Exemple #10
0
        public Task <PagedCollection <IValueSet> > FindValueSetsAsync(
            string filterText,
            IPagerSettings pagerSettings,
            IEnumerable <string> codeSystemCodes,
            bool includeAllValueSetCodes = false)
        {
            var dtos = this.DbSet.Where(GetBaseExpression());

            if (!filterText.IsNullOrWhiteSpace())
            {
                dtos = dtos.Where(dto => dto.ValueSetNM.Contains(filterText) || dto.ValueSetOID.StartsWith(filterText));
            }

            var systemCodes = codeSystemCodes as string[] ?? codeSystemCodes.ToArray();

            if (systemCodes.Any())
            {
                var codevsid = this.SharedContext.ValueSetCodes.Where(code => systemCodes.Contains(code.CodeSystemCD))
                               .Select(code => code.ValueSetUniqueID)
                               .Distinct();

                dtos = dtos.Join(codevsid, id => id.ValueSetUniqueID, sa => sa, (id, sa) => id);
            }

            return(this.CreatePagedCollectionAsync(dtos, pagerSettings, systemCodes, includeAllValueSetCodes));
        }
Exemple #11
0
 public Task <PagedCollection <ICodeSystemCode> > GetCodeSystemCodesAsync(
     IPagerSettings settings,
     Guid codeSystemGuid,
     bool includeRetired = false)
 {
     return(this.GetCodeSystemCodesAsync(settings, new[] { codeSystemGuid }, includeRetired));
 }
Exemple #12
0
        public static IPagerSettings ValidateValueSetOrdering(IPagerSettings settings)
        {
            var vso = GetValidValueSetOrdering(settings.OrderBy, settings.Direction.ToString());

            settings.Direction = vso.Direction;
            settings.OrderBy   = vso.FieldName;
            return(settings);
        }
 public Task <PagedCollection <IValueSet> > GetValueSetsAsync(
     IPagerSettings settings,
     IEnumerable <Guid> codeSystemGuids,
     IEnumerable <ValueSetStatus> statusCodes,
     bool latestVersionsOnly = true)
 {
     return(this.GetValueSetsAsync(string.Empty, settings, codeSystemGuids, statusCodes, latestVersionsOnly));
 }
 public Task <PagedCollection <IValueSetSummary> > GetValueSetSummariesAsync(
     string nameFilterText,
     IPagerSettings pagerSettings,
     IEnumerable <ValueSetStatus> statusCodes,
     bool latestVersionsOnly = true)
 {
     return(this.GetValueSetSummariesAsync(nameFilterText, pagerSettings, new List <Guid>(), statusCodes, latestVersionsOnly));
 }
 public Task <PagedCollection <IValueSet> > GetValueSetsAsync(IPagerSettings settings, bool latestVersionsOnly = true)
 {
     return(this.GetValueSetsAsync(
                settings,
                new List <Guid>(),
                new List <ValueSetStatus> {
         ValueSetStatus.Active
     },
                latestVersionsOnly));
 }
Exemple #16
0
        private async Task <PagedCollection <IValueSet> > CreatePagedCollectionAsync(
            IQueryable <ValueSetDescriptionDto> source,
            IPagerSettings pagerSettings,
            IEnumerable <string> codeSystemCodes,
            bool includeAllValueSetCodes = false)
        {
            this.pagingStrategy.EnsurePagerSettings(pagerSettings);

            var count = await source.CountAsync();

            var items = await source.OrderBy(this.SortExpression)
                        .Skip((pagerSettings.CurrentPage - 1) * pagerSettings.ItemsPerPage)
                        .Take(pagerSettings.ItemsPerPage)
                        .ToListAsync();

            var valueSetUniqueIds = items.Select(item => item.ValueSetUniqueID).ToArray();

            IModelMapper <ValueSetDescriptionDto, IValueSet> mapper;

            if (includeAllValueSetCodes)
            {
                mapper = new ValueSetFullCodeListMapper(
                    this.isCustomValue,
                    this.Cache,
                    this.valueSetCodeRepository.GetValueSetCodes,
                    codeSystemCodes);
            }
            else
            {
                // remove any valueSetIds for valuesets already cached from partition query
                var cachedValueSets = this.Cache
                                      .GetItems(valueSetUniqueIds.Select(id => CacheKeys.ValueSetKey(id, codeSystemCodes)).ToArray())
                                      .Select(obj => obj as IValueSet)
                                      .Where(vs => vs != null);

                valueSetUniqueIds = valueSetUniqueIds.Where(id => !cachedValueSets.Select(vs => vs.ValueSetUniqueId).Contains(id))
                                    .ToArray();

                // partition query
                var systemCodes = codeSystemCodes as string[] ?? codeSystemCodes.ToArray();
                var lookup      = await this.valueSetCodeRepository.LookupValueSetCodes(valueSetUniqueIds, systemCodes);

                var cachedValueSetDictionary = cachedValueSets.ToDictionary(vs => vs.ValueSetUniqueId, vs => vs);

                mapper = new ValueSetShortCodeListMapper(
                    this.isCustomValue,
                    this.Cache,
                    lookup,
                    cachedValueSetDictionary,
                    this.valueSetCodeRepository.CountValueSetCodes,
                    systemCodes);
            }

            return(this.pagingStrategy.CreatePagedCollection(items, count, pagerSettings, mapper));
        }
Exemple #17
0
 public Task <PagedCollection <IValueSet> > FindValueSetsAsync(
     string nameFilterText,
     IPagerSettings pagerSettings,
     IEnumerable <string> codeSystemCodes,
     bool includeAllValueSetCodes = false)
 {
     return(this.repository.FindValueSetsAsync(
                nameFilterText,
                pagerSettings,
                codeSystemCodes,
                includeAllValueSetCodes));
 }
Exemple #18
0
 public Task <PagedCollection <ICodeSystemCode> > GetCodeSystemCodesAsync(
     string filterText,
     IPagerSettings pagerSettings,
     IEnumerable <Guid> codeSystemGuids,
     bool includeRetired = false)
 {
     return(this.codeSystemCodeRepository.GetCodeSystemCodesAsync(
                filterText,
                pagerSettings,
                codeSystemGuids,
                includeRetired));
 }
Exemple #19
0
        public void EnsurePagerSettings(IPagerSettings pagerSettings)
        {
            if (pagerSettings.CurrentPage <= 0)
            {
                pagerSettings.CurrentPage = 1;
            }

            if (pagerSettings.ItemsPerPage < 0)
            {
                pagerSettings.ItemsPerPage = this.DefaultItemsPerPage;
            }
        }
Exemple #20
0
        public Task <PagedCollection <IValueSetCode> > GetValueSetCodesAsync(
            string filterText,
            Guid valueSetGuid,
            IPagerSettings settings,
            IEnumerable <Guid> codeSystemGuids)
        {
            var dtos = this.GetValueSetCodeQueryable(filterText, codeSystemGuids);

            if (valueSetGuid != Guid.Empty)
            {
                dtos = dtos.Where(dto => dto.ValueSetGUID == valueSetGuid);
            }

            return(this.CreatePagedCollectionAsync(dtos, settings));
        }
Exemple #21
0
        public Task <PagedCollection <IValueSet> > GetValueSetsAsync(
            IReadOnlyCollection <string> valueSetUniqueIds,
            IPagerSettings pagerSettings,
            IEnumerable <string> codeSystemCodes,
            bool includeAllValueSetCodes = false)
        {
            if (!valueSetUniqueIds.Any())
            {
                return(this.FindValueSetsAsync(string.Empty, pagerSettings, codeSystemCodes, includeAllValueSetCodes));
            }

            var dtos = this.DbSet.Where(GetBaseExpression()).Where(dto => valueSetUniqueIds.Contains(dto.ValueSetUniqueID));

            return(this.CreatePagedCollectionAsync(dtos, pagerSettings, codeSystemCodes, includeAllValueSetCodes));
        }
Exemple #22
0
 public PagedCollection <TResult> CreatePagedCollection(
     IEnumerable <TResult> items,
     int totalCount,
     IPagerSettings pagerSettings)
 {
     return(new PagedCollection <TResult>
     {
         TotalItems = totalCount,
         PagerSettings =
             new PagerSettings
         {
             CurrentPage = pagerSettings.CurrentPage,
             ItemsPerPage = pagerSettings.ItemsPerPage
         },
         TotalPages = (int)Math.Ceiling((double)totalCount / pagerSettings.ItemsPerPage),
         Values = items.ToList()
     });
 }
 public PagedCollection <TResult> CreatePagedCollection(
     IEnumerable <TSrc> items,
     int totalCount,
     IPagerSettings pagerSettings,
     IModelMapper <TSrc, TResult> mapper)
 {
     return(new PagedCollection <TResult>
     {
         TotalItems = totalCount,
         PagerSettings =
             new PagerSettings
         {
             CurrentPage = pagerSettings.CurrentPage,
             ItemsPerPage = pagerSettings.ItemsPerPage
         },
         TotalPages = (int)Math.Ceiling((double)totalCount / pagerSettings.ItemsPerPage),
         Values = items.Select(mapper.Map).ToList().AsReadOnly()
     });
 }
        public async Task <PagedCollection <IValueSetSummary> > GetValueSetSummariesAsync(
            string nameFilterText,
            IPagerSettings pagerSettings,
            IEnumerable <Guid> codeSystemGuids,
            IEnumerable <ValueSetStatus> statusCodes,
            bool latestVersionsOnly = true)
        {
            var backingItemPage = await this.valueSetBackingItemRepository.GetValueSetBackingItemsAsync(
                nameFilterText,
                pagerSettings,
                codeSystemGuids,
                statusCodes,
                latestVersionsOnly).ConfigureAwait(false);

            var countsDictionary =
                await this.valueSetCodeCountRepository.BuildValueSetCountsDictionary(
                    backingItemPage.Values.Select(bi => bi.ValueSetGuid)).ConfigureAwait(false);

            return(this.BuildValueSetsPage(backingItemPage, countsDictionary));
        }
Exemple #25
0
        public Task <PagedCollection <ICodeSystemCode> > GetCodeSystemCodesAsync(
            string filterText,
            IPagerSettings pagerSettings,
            IEnumerable <Guid> codeSystemGuids,
            bool includeRetired)
        {
            var dtos        = this.GetBaseQuery(includeRetired);
            var systemGuids = codeSystemGuids as Guid[] ?? codeSystemGuids.ToArray();

            if (systemGuids.Any())
            {
                dtos = dtos.Where(dto => systemGuids.Contains(dto.CodeSystemGUID));
            }

            if (!filterText.IsNullOrWhiteSpace())
            {
                dtos = dtos.Where(dto => dto.CodeDSC.Contains(filterText) || dto.CodeCD.StartsWith(filterText));
            }

            return(this.CreatePagedCollectionAsync(dtos, pagerSettings));
        }
Exemple #26
0
        public async Task <PagedCollection <IValueSet> > GetValueSetsAsync(
            string filterText,
            IPagerSettings pagerSettings,
            IEnumerable <Guid> codeSystemGuids,
            IEnumerable <ValueSetStatus> statusCodes,
            bool latestVersionsOnly = true)
        {
            var backingItemPage = await this.valueSetBackingItemRepository.GetValueSetBackingItemsAsync(
                filterText,
                pagerSettings,
                codeSystemGuids,
                statusCodes,
                latestVersionsOnly);

            var valueSetGuids = backingItemPage.Values.Select(bi => bi.ValueSetGuid).ToList();

            var codes = await this.valueSetCodeRepository.BuildValueSetCodesDictionary(valueSetGuids);

            var counts = await this.valueSetCodeCountRepository.BuildValueSetCountsDictionary(valueSetGuids);

            return(this.BuildValueSetsPage(backingItemPage, codes, counts));
        }
Exemple #27
0
        private async Task <PagedCollection <IValueSetBackingItem> > CreatePagedCollectionAsync(
            IQueryable <ValueSetDescriptionDto> source,
            IPagerSettings pagerSettings)
        {
            var defaultItemsPerPage = this.sharedContext.Settings.DefaultItemsPerPage;
            var pagingStrategy      =
                this.pagingStrategyFactory.GetPagingStrategy <IValueSetBackingItem>(defaultItemsPerPage);

            pagingStrategy.EnsurePagerSettings(pagerSettings);

            var count = await source.CountAsync().ConfigureAwait(false);

            var items = await source.Skip((pagerSettings.CurrentPage - 1) *pagerSettings.ItemsPerPage)
                        .Take(pagerSettings.ItemsPerPage)
                        .ToListAsync().ConfigureAwait(false);

            var factory = new ValueSetBackingItemFactory();

            return(pagingStrategy.CreatePagedCollection(
                       items.Select(i => this.cacheManager.GetOrSet(i.ValueSetGUID, () => factory.Build(i))).Values(),
                       count,
                       pagerSettings));
        }
        public Task <PagedCollection <ICodeSystemCode> > GetCodeSystemCodesAsync(
            string filterText,
            IPagerSettings pagerSettings,
            IEnumerable <Guid> codeSystemGuids,
            bool includeRetired)
        {
            var dtos = this.GetBaseQuery(includeRetired);

            if (!filterText.IsNullOrWhiteSpace())
            {
                dtos = dtos.Where(
                    c => c.CodeDSC.Contains(filterText, StringComparison.OrdinalIgnoreCase) ||
                    c.CodeCD.Equals(filterText, StringComparison.OrdinalIgnoreCase));
            }

            var systemGuids = codeSystemGuids as Guid[] ?? codeSystemGuids.ToArray();

            if (systemGuids.Any())
            {
                dtos = dtos.Where(c => systemGuids.Contains(c.CodeSystemGUID));
            }

            return(this.CreatePagedCollectionAsync(dtos, pagerSettings));
        }
        private async Task <PagedCollection <ICodeSystemCode> > CreatePagedCollectionAsync(
            IQueryable <CodeSystemCodeDto> source,
            IPagerSettings pagerSettings)
        {
            var defaultItemsPerPage = this.sharedContext.Settings.DefaultItemsPerPage;
            var pagingStrategy      = this.pagingStrategyFactory.GetPagingStrategy <ICodeSystemCode>(defaultItemsPerPage);

            pagingStrategy.EnsurePagerSettings(pagerSettings);

            var count = await source.CountAsync().ConfigureAwait(false);

            var items = await source.OrderBy(dto => dto.CodeDSC)
                        .Skip((pagerSettings.CurrentPage - 1) * pagerSettings.ItemsPerPage)
                        .Take(pagerSettings.ItemsPerPage)
                        .ToListAsync().ConfigureAwait(false);

            var factory = new CodeSystemCodeFactory(this.codeSystems.Value);

            return(pagingStrategy.CreatePagedCollection(
                       items.Select(i => this.codeSystemCodeCachingManager.GetOrSet(i.CodeGUID, () => factory.Build(i))
                                    ).Values(),
                       count,
                       pagerSettings));
        }
 public Task<PagedCollection<IValueSetCode>> GetValueSetCodesAsync(Guid valueSetGuid, IPagerSettings settings)
 {
     return this.GetValueSetCodesAsync(valueSetGuid, settings, new List<Guid>());
 }