public async Task GivenMaxTagKeyNotMatch_WhenCreateIndex_ThenShouldThrowException() { AddExtendedQueryTagEntry extendedQueryTagEntry = DicomTag.PatientAge.BuildAddExtendedQueryTagEntry(); var tagEntry = (await _extendedQueryTagStore.AddExtendedQueryTagsAsync(new[] { extendedQueryTagEntry }, maxAllowedCount: 128, ready: true))[0]; DicomDataset dataset = Samples.CreateRandomInstanceDataset(); // Add a new tag await _extendedQueryTagStore.AddExtendedQueryTagsAsync(new[] { DicomTag.PatientName.BuildAddExtendedQueryTagEntry() }, maxAllowedCount : 128, ready : true); var queryTags = new[] { new QueryTag(tagEntry) }; long watermark = await _indexDataStore.BeginCreateInstanceIndexAsync(DefaultPartition.Key, dataset, queryTags); await Assert.ThrowsAsync <ExtendedQueryTagsOutOfDateException>( () => _indexDataStore.EndCreateInstanceIndexAsync(DefaultPartition.Key, dataset, watermark, queryTags)); }
private async Task <int> AddTagAsync(DicomTag tag) { AddExtendedQueryTagEntry extendedQueryTagEntry = tag.BuildAddExtendedQueryTagEntry(); var list = await _extendedQueryTagStore.AddExtendedQueryTagsAsync(new AddExtendedQueryTagEntry[] { extendedQueryTagEntry }, 128); return(list[0].Key); }
public async Task <AddExtendedQueryTagResponse> AddExtendedQueryTagAsync(IEnumerable <AddExtendedQueryTagEntry> extendedQueryTags, CancellationToken cancellationToken) { _extendedQueryTagEntryValidator.ValidateExtendedQueryTags(extendedQueryTags); IEnumerable <AddExtendedQueryTagEntry> result = extendedQueryTags.Select(item => item.Normalize()); await _extendedQueryTagStore.AddExtendedQueryTagsAsync(result, cancellationToken); // Current solution is synchronous, no job uri is generated, so always return blank response. return(new AddExtendedQueryTagResponse()); }
public async Task GivenValidExtendedQueryTags_WhenAddExtendedQueryTag_ThenTagShouldBeAdded() { DicomTag tag1 = DicomTag.DeviceSerialNumber; DicomTag tag2 = new DicomTag(0x0405, 0x1001, "PrivateCreator1"); AddExtendedQueryTagEntry extendedQueryTagEntry1 = tag1.BuildAddExtendedQueryTagEntry(); AddExtendedQueryTagEntry extendedQueryTagEntry2 = tag2.BuildAddExtendedQueryTagEntry(vr: DicomVRCode.CS); await _extendedQueryTagStore.AddExtendedQueryTagsAsync(new AddExtendedQueryTagEntry[] { extendedQueryTagEntry1, extendedQueryTagEntry2 }); try { await VerifyTagIsAdded(extendedQueryTagEntry1); await VerifyTagIsAdded(extendedQueryTagEntry2); } finally { // Delete extended query tag await _extendedQueryTagStore.DeleteExtendedQueryTagAsync(extendedQueryTagEntry1.Path, extendedQueryTagEntry1.VR); await _extendedQueryTagStore.DeleteExtendedQueryTagAsync(extendedQueryTagEntry2.Path, extendedQueryTagEntry2.VR); } }
private async Task <IReadOnlyList <int> > AddExtendedQueryTagsAsync( IReadOnlyCollection <AddExtendedQueryTagEntry> extendedQueryTagEntries, int maxAllowedCount = 128, bool ready = true, CancellationToken cancellationToken = default) { IReadOnlyList <ExtendedQueryTagStoreEntry> tags = await _extendedQueryTagStore.AddExtendedQueryTagsAsync( extendedQueryTagEntries, maxAllowedCount, ready : ready, cancellationToken : cancellationToken); return(tags.Select(x => x.Key).ToList()); }
public async Task <AddExtendedQueryTagResponse> AddExtendedQueryTagsAsync( IEnumerable <AddExtendedQueryTagEntry> extendedQueryTags, CancellationToken cancellationToken = default) { _extendedQueryTagEntryValidator.ValidateExtendedQueryTags(extendedQueryTags); var normalized = extendedQueryTags .Select(item => item.Normalize()) .ToList(); // Add the extended query tags to the DB IReadOnlyList <ExtendedQueryTagStoreEntry> added = await _extendedQueryTagStore.AddExtendedQueryTagsAsync( normalized, _maxAllowedCount, ready : false, cancellationToken : cancellationToken); // Start re-indexing Guid operationId = await _client.StartReindexingInstancesAsync(added.Select(x => x.Key).ToList(), cancellationToken); return(new AddExtendedQueryTagResponse(new OperationReference(operationId, _uriResolver.ResolveOperationStatusUri(operationId)))); }