public void AddFile_LongFilename() { string filename = "TestPattern_Palette_16.dcm"; var dicomFile = DicomFile.Open(@".\Test Data\" + filename); var dicomDir = new DicomDirectory(); Assert.Throws <DicomValidationException>(() => dicomDir.AddFile(dicomFile, filename)); dicomDir.AutoValidate = false; dicomDir.AddFile(dicomFile, filename); Assert.Single(dicomDir.RootDirectoryRecordCollection); }
public void AddFile_AnonymizedSeries_AllFilesAddedToSameStudySeriesNode() { var dicomFiles = GetDicomFilesFromWebZip( "https://www.creatis.insa-lyon.fr/~jpr/PUBLIC/gdcm/gdcmSampleData/Philips_Medical_Images/mr711-mr712/abd1.zip"); // Anonymize all files var anonymizer = new DicomAnonymizer(); foreach (var dicomFile in dicomFiles) { anonymizer.AnonymizeInPlace(dicomFile); } // Create DICOM directory var dicomDir = new DicomDirectory(); foreach (var dicomFile in dicomFiles) { dicomDir.AddFile(dicomFile); } var imageNodes = dicomDir.RootDirectoryRecord.LowerLevelDirectoryRecord.LowerLevelDirectoryRecord .LowerLevelDirectoryRecordCollection; Assert.Equal(dicomFiles.Count, imageNodes.Count()); }
public void AddFile_AnonymizedSeries_AllFilesAddedToSameStudySeriesNode() { var dicomFiles = GetDicomFilesFromWebZip( "https://www.creatis.insa-lyon.fr/~jpr/PUBLIC/gdcm/gdcmSampleData/Philips_Medical_Images/mr711-mr712/abd1.zip"); // Anonymize all files var anonymizer = new DicomAnonymizer(); foreach (var dicomFile in dicomFiles) { anonymizer.AnonymizeInPlace(dicomFile); } // Create DICOM directory var dicomDir = new DicomDirectory(); foreach (var dicomFile in dicomFiles) { var entry = dicomDir.AddFile(dicomFile); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SOPInstanceUID), entry.InstanceRecord.GetSingleValue <string>(DicomTag.ReferencedSOPInstanceUIDInFile)); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SeriesInstanceUID), entry.SeriesRecord.GetSingleValue <string>(DicomTag.SeriesInstanceUID)); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.StudyInstanceUID), entry.StudyRecord.GetSingleValue <string>(DicomTag.StudyInstanceUID)); } var imageNodes = dicomDir.RootDirectoryRecord.LowerLevelDirectoryRecord.LowerLevelDirectoryRecord .LowerLevelDirectoryRecordCollection; Assert.Equal(dicomFiles.Count, imageNodes.Count()); }
public void AddFile_AnonymizedSeries_AllFilesAddedToSameStudySeriesNode() { var dicomFiles = GetDicomFilesFromZip(@".\Test Data\abd1.zip"); // Anonymize all files var anonymizer = new DicomAnonymizer(); foreach (var dicomFile in dicomFiles) { anonymizer.AnonymizeInPlace(dicomFile); } // Create DICOM directory var dicomDir = new DicomDirectory(); foreach (var dicomFile in dicomFiles) { var entry = dicomDir.AddFile(dicomFile); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SOPInstanceUID), entry.InstanceRecord.GetSingleValue <string>(DicomTag.ReferencedSOPInstanceUIDInFile)); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SeriesInstanceUID), entry.SeriesRecord.GetSingleValue <string>(DicomTag.SeriesInstanceUID)); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.StudyInstanceUID), entry.StudyRecord.GetSingleValue <string>(DicomTag.StudyInstanceUID)); } var imageNodes = dicomDir.RootDirectoryRecord.LowerLevelDirectoryRecord.LowerLevelDirectoryRecord .LowerLevelDirectoryRecordCollection; Assert.Equal(dicomFiles.Count, imageNodes.Count()); }
public void AddFile_AnonymizedSeries_AllFilesAddedToDifferentPatientNodes() { var dicomFiles = GetDicomFilesFromZip(@".\Test Data\abd1.zip"); // Anonymize all files var patname = "Pat^Name"; var patname2 = "Pat^^Name^^"; var patname3 = "PAT Name"; var patname4 = "Name^Pat"; var anonymizer = new DicomAnonymizer(); foreach (var dicomFile in dicomFiles) { anonymizer.AnonymizeInPlace(dicomFile); dicomFile.Dataset.AddOrUpdate(DicomTag.PatientName, patname); } // the name of the first image is slightly different dicomFiles.First().Dataset.AddOrUpdate(DicomTag.PatientName, patname2); dicomFiles.ElementAt(1).Dataset.AddOrUpdate(DicomTag.PatientName, patname3); dicomFiles.ElementAt(2).Dataset.AddOrUpdate(DicomTag.PatientName, patname4); // Create DICOM directory var dicomDir = new DicomDirectory(); foreach (var dicomFile in dicomFiles) { var entry = dicomDir.AddFile(dicomFile); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SOPInstanceUID), entry.InstanceRecord.GetSingleValue <string>(DicomTag.ReferencedSOPInstanceUIDInFile)); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SeriesInstanceUID), entry.SeriesRecord.GetSingleValue <string>(DicomTag.SeriesInstanceUID)); Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.StudyInstanceUID), entry.StudyRecord.GetSingleValue <string>(DicomTag.StudyInstanceUID)); } // there shall be only one patient record Assert.Equal(4, dicomDir.RootDirectoryRecordCollection.Count()); }
private static void WriteMedia(string path) { var dirInfo = new DirectoryInfo(path); var dicomDir = new DicomDirectory(false); foreach (var file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories)) { if (!file.FullName.StartsWith(dirInfo.FullName)) { throw new ArgumentException("file"); } if (file.Name == "DICOMDIR") { continue; } try { dicomDir.AddFile(DicomFile.Open(file.FullName), file.FullName.Substring(dirInfo.FullName.Length).TrimStart(Path.DirectorySeparatorChar)); } catch { } } if (dicomDir.RootDirectoryRecord != null) { dicomDir.Save(Path.Combine(path, "DICOMDIR")); } }
private static void WriteMedia(string path) { var dicomDirPath = Path.Combine(path, "DICOMDIR"); var dirInfo = new DirectoryInfo(path); var dicomDir = new DicomDirectory(); foreach (var file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories)) { var dicomFile = Dicom.DicomFile.Open(file.FullName); dicomDir.AddFile(dicomFile, String.Format(@"000001\{0}", file.Name)); } dicomDir.Save(dicomDirPath); }
public void AddFile_LongFilename_WithGlobalValidationSupression() { string filename = "TestPattern_Palette_16.dcm"; var dicomFile = DicomFile.Open(@".\Test Data\" + filename); DicomValidation.AutoValidation = false; var dicomDir = new DicomDirectory(); Assert.Null(Record.Exception(() => dicomDir.AddFile(dicomFile, filename))); Assert.Single(dicomDir.RootDirectoryRecordCollection); DicomValidation.AutoValidation = true; }
private static void WriteMedia(string path) { var dirInfo = new DirectoryInfo(path); var dicomDir = new DicomDirectory(false); foreach (var file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories)) { if (!file.FullName.StartsWith(dirInfo.FullName)) throw new ArgumentException("file"); if (file.Name == "DICOMDIR") continue; try { dicomDir.AddFile(DicomFile.Open(file.FullName), file.FullName.Substring(dirInfo.FullName.Length).TrimStart(Path.DirectorySeparatorChar)); } catch { } } if (dicomDir.RootDirectoryRecord != null) dicomDir.Save(Path.Combine(path, "DICOMDIR")); }
public void AddFile_InvalidUIDInExistingFileShouldNotThrow() { // first create a file with invalid UIDs string filename = "TestPattern_Palette_16.dcm"; var dicomFile = DicomFile.Open(@".\Test Data\" + filename); var invalidDs = dicomFile.Dataset.NotValidated(); invalidDs.AddOrUpdate(DicomTag.SOPInstanceUID, "1.2.4.100000.94849.4239.32.00121"); invalidDs.AddOrUpdate(DicomTag.SeriesInstanceUID, "1.2.4.100000.94849.4239.32.00122"); invalidDs.AddOrUpdate(DicomTag.StudyInstanceUID, "1.2.4.100000.94849.4239.32.00123"); var invalidFile = new DicomFile(invalidDs); var ex = Record.Exception(() => { var dicomDir = new DicomDirectory(); dicomDir.AddFile(invalidFile, "FILE1"); }); Assert.Null(ex); }
public string DownloadDicomFile(int[] frameIdArray, string guid) { int count = (from dfr in ObjectContext.DicomFrame where frameIdArray.Contains(dfr.FrameId) select dfr.FileId).Distinct().Count(); if (count == 1) // DICOM File { CreateDicomFile(frameIdArray, guid, guid); return guid + ".dcm"; } else // DICOMDIR File { int[] fileIdArray = (from dfr in ObjectContext.DicomFrame where frameIdArray.Contains(dfr.FrameId) select dfr.FileId).Distinct().ToArray(); foreach (var fileId in fileIdArray) { int[] frameIdForFileArray = (from dfr in ObjectContext.DicomFrame where dfr.FileId == fileId && frameIdArray.Contains(dfr.FrameId) select dfr.FrameId).ToArray(); string fileName = (from df in ObjectContext.DicomFile where df.FileId == fileId select df.FileId).First().ToString(CultureInfo.InvariantCulture); CreateDicomFile(frameIdForFileArray, guid, fileName); } string dirPath = HttpRuntime.AppDomainAppPath + @"\temp\" + guid; string dicomDirPath = Path.Combine(dirPath, "DICOMDIR"); var dirInfo = new DirectoryInfo(dirPath); var dicomDir = new DicomDirectory(); foreach (var file in dirInfo.GetFiles("*.dcm")) { var dicomFile = Dicom.DicomFile.Open(file.FullName); dicomDir.AddFile(dicomFile, String.Format(@".\{0}", file.Name)); } dicomDir.Save(dicomDirPath); var files = dirInfo.GetFiles(); var binaryFormatter = new BinaryFormatter(); var fileStream = new FileStream(dirPath + @"\" + guid + ".dcmdir", FileMode.Create, FileAccess.Write, FileShare.None); foreach (var file in files) { var dicomSerializableFile = new DicomSerializableFile(file.Name, File.ReadAllBytes(file.FullName)); binaryFormatter.Serialize(fileStream, dicomSerializableFile); } fileStream.Close(); return guid + ".dcmdir"; } }