public async Task GivenRetrieveRequestForFrame_WhenResourceIsFound_ThenAuditLogEntriesShouldBeCreated() { DicomFile dicomFile = Samples.CreateRandomDicomFileWithPixelData(frames: 1); var dicomInstance = dicomFile.Dataset.ToInstanceIdentifier(); await _instancesManager.StoreAsync(new[] { dicomFile }, dicomInstance.StudyInstanceUid); await ExecuteAndValidate( () => _client.RetrieveFramesAsync(dicomInstance.StudyInstanceUid, dicomInstance.SeriesInstanceUid, dicomInstance.SopInstanceUid, frames: new int[] { 1 }), AuditEventSubType.Retrieve, $"studies/{dicomInstance.StudyInstanceUid}/series/{dicomInstance.SeriesInstanceUid}/instances/{dicomInstance.SopInstanceUid}/frames/1", HttpStatusCode.OK); }
public async Task GivenAMultipartRequestWithNoContent_WhenStoring_TheServerShouldReturnNoContent() { var multiContent = new MultipartContent("related"); multiContent.Headers.ContentType.Parameters.Add(new System.Net.Http.Headers.NameValueHeaderValue("type", $"\"{DicomWebConstants.MediaTypeApplicationDicom.MediaType}\"")); using DicomWebResponse response = await _instancesManager.StoreAsync(multiContent); Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); }
private async Task <DicomDataset> PostDicomFileAsync(ResourceType resourceType, string studyInstanceUid, string seriesInstanceUid = null, string sopInstanceUid = null, DicomDataset dataSet = null) { DicomFile dicomFile = null; switch (resourceType) { case ResourceType.Study: dicomFile = Samples.CreateRandomDicomFile(studyInstanceUid); break; case ResourceType.Series: dicomFile = Samples.CreateRandomDicomFile(studyInstanceUid, seriesInstanceUid); break; case ResourceType.Instance: dicomFile = Samples.CreateRandomDicomFile(studyInstanceUid, seriesInstanceUid, sopInstanceUid); break; } if (dataSet != null) { dicomFile.Dataset.AddOrUpdate(dataSet); } using DicomWebResponse <DicomDataset> response = await _instancesManager.StoreAsync(new[] { dicomFile }); return(dicomFile.Dataset); }
private async Task <(InstanceIdentifier, DicomFile)> CreateAndStoreDicomFile(int numberOfFrames = 0) { DicomFile dicomFile = Samples.CreateRandomDicomFileWithPixelData(frames: numberOfFrames); var dicomInstance = dicomFile.Dataset.ToInstanceIdentifier(); await _instancesManager.StoreAsync(new[] { dicomFile }); return(dicomInstance, dicomFile); }
private async Task <DicomDataset> PostDicomFileAsync(DicomDataset metadataItems = null) { DicomFile dicomFile1 = Samples.CreateRandomDicomFile(); if (metadataItems != null) { dicomFile1.Dataset.AddOrUpdate(metadataItems); } await _instancesManager.StoreAsync(new[] { dicomFile1 }); return(dicomFile1.Dataset); }
public async Task WhenRetrievingPartitions_TheServerShouldReturnAllPartitions() { var newPartition1 = TestUidGenerator.Generate(); var newPartition2 = TestUidGenerator.Generate(); DicomFile dicomFile = Samples.CreateRandomDicomFile(); using DicomWebResponse <DicomDataset> response1 = await _instancesManager.StoreAsync(new[] { dicomFile }, partitionName : newPartition1); using DicomWebResponse <DicomDataset> response2 = await _instancesManager.StoreAsync(new[] { dicomFile }, partitionName : newPartition2); using DicomWebResponse <IEnumerable <PartitionEntry> > response3 = await _client.GetPartitionsAsync(); Assert.True(response3.IsSuccessStatusCode); IEnumerable <PartitionEntry> values = await response3.GetValueAsync(); Assert.Contains(values, x => x.PartitionName == newPartition1); Assert.Contains(values, x => x.PartitionName == newPartition2); }
private async Task CreateFile(string studyInstanceUid, string seriesInstanceUid, string sopInstanceUid) { DicomFile dicomFile1 = Samples.CreateRandomDicomFile(studyInstanceUid, seriesInstanceUid, sopInstanceUid); await _instancesManager.StoreAsync(new[] { dicomFile1 }, studyInstanceUid); }
public async Task GivenExtendedQueryTag_WhenReindexing_ThenShouldSucceed() { DicomTag weightTag = DicomTag.PatientWeight; DicomTag sizeTag = DicomTag.PatientSize; // Try to delete these extended query tags. await CleanupExtendedQueryTag(weightTag); await CleanupExtendedQueryTag(sizeTag); // Define DICOM files DicomDataset instance1 = Samples.CreateRandomInstanceDataset(); instance1.Add(weightTag, 68.0M); instance1.Add(sizeTag, 1.78M); DicomDataset instance2 = Samples.CreateRandomInstanceDataset(); instance2.Add(weightTag, 50.0M); instance2.Add(sizeTag, 1.5M); // Upload files Assert.True((await _instanceManager.StoreAsync(new DicomFile(instance1))).IsSuccessStatusCode); Assert.True((await _instanceManager.StoreAsync(new DicomFile(instance2))).IsSuccessStatusCode); // Add extended query tag OperationStatus operation = await _tagManager.AddTagsAsync( new AddExtendedQueryTagEntry[] { new AddExtendedQueryTagEntry { Path = weightTag.GetPath(), VR = weightTag.GetDefaultVR().Code, Level = QueryTagLevel.Study }, new AddExtendedQueryTagEntry { Path = sizeTag.GetPath(), VR = sizeTag.GetDefaultVR().Code, Level = QueryTagLevel.Study }, }); Assert.Equal(OperationRuntimeStatus.Completed, operation.Status); // Check specific tag DicomWebResponse <GetExtendedQueryTagEntry> getResponse; GetExtendedQueryTagEntry entry; getResponse = await _client.GetExtendedQueryTagAsync(weightTag.GetPath()); entry = await getResponse.GetValueAsync(); Assert.Null(entry.Errors); Assert.Equal(QueryStatus.Enabled, entry.QueryStatus); getResponse = await _client.GetExtendedQueryTagAsync(sizeTag.GetPath()); entry = await getResponse.GetValueAsync(); Assert.Null(entry.Errors); Assert.Equal(QueryStatus.Enabled, entry.QueryStatus); // Query multiple tags // Note: We don't necessarily need to check the tags are the above ones, as another test may have added ones beforehand var multipleTags = await _tagManager.GetTagsAsync(2, 0); Assert.Equal(2, multipleTags.Count); Assert.Equal(multipleTags[0].Path, (await _tagManager.GetTagsAsync(1, 0)).Single().Path); Assert.Equal(multipleTags[1].Path, (await _tagManager.GetTagsAsync(1, 1)).Single().Path); // QIDO DicomWebAsyncEnumerableResponse <DicomDataset> queryResponse = await _client.QueryInstancesAsync($"{weightTag.GetPath()}=50.0"); DicomDataset[] instances = await queryResponse.ToArrayAsync(); Assert.Contains(instances, instance => instance.ToInstanceIdentifier().Equals(instance2.ToInstanceIdentifier())); }