/// <summary> /// Returns the output path for the anonymised file, relative to the ExtractionDirectory /// </summary> /// <param name="result"></param> /// <param name="message"></param> /// <returns></returns> public string GetOutputPath(QueryToExecuteResult result, ExtractionRequestMessage message) { string extToUse = message.IsIdentifiableExtraction ? IdentExt : AnonExt; // The extension of the input DICOM file can be anything (or nothing), but here we try to standardise the output file name to have the required extension string fileName = Path.GetFileName(result.FilePathValue); if (string.IsNullOrWhiteSpace(fileName)) { throw new ArgumentNullException(nameof(fileName)); } var replaced = false; foreach (string ext in _replaceableExtensions) { if (fileName.EndsWith(ext)) { fileName = fileName.Replace(ext, extToUse); replaced = true; break; } } if (!replaced) { fileName += extToUse; } return(Path.Combine( result.StudyTagValue ?? "unknown", result.SeriesTagValue ?? "unknown", fileName)); }
public void Test_QueryToExecuteResult_RejectReasonNullOrEmpty_ThrowsException() { Assert.Throws <ArgumentException>(() => { var _ = new QueryToExecuteResult("foo", "bar", "baz", "whee", rejection: true, rejectionReason: null); }); Assert.Throws <ArgumentException>(() => { var _ = new QueryToExecuteResult("foo", "bar", "baz", "whee", rejection: true, rejectionReason: " "); }); }
public void TestDefaultProjectPathResolver_Both() { var result = new QueryToExecuteResult( Path.Combine("foo", "file"), "study", null, "sop", false, null); Assert.AreEqual( Path.Combine( "study", "unknown", "file.dcm"), new NoSuffixProjectPathResolver().GetOutputPath(result, new ExtractionRequestMessage())); }
public void TestDefaultProjectPathResolver_Extensions(string expectedOutput, string inputFile) { var result = new QueryToExecuteResult( Path.Combine("foo", inputFile), "study", "series", "sop", false, null); Assert.AreEqual( Path.Combine( "study", "series", expectedOutput), new NoSuffixProjectPathResolver().GetOutputPath(result, new ExtractionRequestMessage())); }
public void TestDefaultProjectPathResolver_IdParts(string study, string series) { var result = new QueryToExecuteResult( "foo.dcm", study, series, "sop", false, null); Assert.AreEqual( Path.Combine( study ?? "unknown", series ?? "unknown", "foo.dcm"), new NoSuffixProjectPathResolver().GetOutputPath(result, new ExtractionRequestMessage())); }
public void Test_DefaultProjectPathResolver_IdentExtraction() { var requestMessage = new ExtractionRequestMessage { IsIdentifiableExtraction = true, }; var result = new QueryToExecuteResult( Path.Combine("foo", "file"), "study", null, "sop", false, null); Assert.AreEqual( Path.Combine( "study", "unknown", "file.dcm"), new DefaultProjectPathResolver().GetOutputPath(result, requestMessage)); }