예제 #1
0
        public async Task <FhirResponse> AddMeta(IKey key, Parameters parameters)
        {
            var entry = await _storageService.Get(key).ConfigureAwait(false);

            if (entry != null && !entry.IsDeleted())
            {
                entry.Resource.AffixTags(parameters);
                await _storageService.Add(entry).ConfigureAwait(false);
            }

            return(_responseFactory.GetMetadataResponse(entry, key));
        }
예제 #2
0
        public FhirResponse History(IKey key, HistoryParameters parameters)
        {
            IResourceStorageService storageService = GetFeature <IResourceStorageService>();

            if (storageService.Get(key) == null)
            {
                return(Respond.NotFound(key));
            }
            IHistoryService historyExtension = this.GetFeature <IHistoryService>();

            return(CreateSnapshotResponse(historyExtension.History(key, parameters)));
        }
예제 #3
0
        private FhirResponse CreateSnapshotResponse(Snapshot snapshot, int pageIndex = 0)
        {
            IPagingService          pagingExtension = this.FindExtension <IPagingService>();
            IResourceStorageService resourceStorage = this.FindExtension <IResourceStorageService>();

            if (pagingExtension == null)
            {
                Bundle bundle = new Bundle()
                {
                    Type  = snapshot.Type,
                    Total = snapshot.Count
                };
                bundle.Append(resourceStorage.Get(snapshot.Keys));
                return(responseFactory.GetFhirResponse(bundle));
            }
            else
            {
                Bundle bundle = pagingExtension.StartPagination(snapshot).GetPage(pageIndex);
                return(responseFactory.GetFhirResponse(bundle));
            }
        }