static void WriteMedia(string path) { var dicomDirPath = Path.Combine("D:\\", "DICOMDIR.dcm"); var dirInfo = new DirectoryInfo(path); var dicomDir = new DicomDirectory(); foreach (var file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories)) { var dicomFile = DicomFile.Open(file.FullName); dicomDir.AddFile(dicomFile, file.FullName); } dicomDir.Save(dicomDirPath); }
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 = DicomFile.Open(file.FullName); dicomDir.AddFile(dicomFile, string.Format(@"000001\{0}", file.Name)); } dicomDir.Save(dicomDirPath); }
public void CreateDicomdirTest() { DicomFile file = new DicomFile("CreateFileTest.dcm"); SetupMR(file.DataSet); SetupMetaInfo(file); DicomDirectory writer = new DicomDirectory(""); int fileCount = 1; writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateXaFileTest.dcm"); SetupMultiframeXA(file.DataSet, 256, 256, 10); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); DicomFile newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); IList <DicomAttributeCollection> seriesList = SetupMRSeries(2, 2, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); fileCount++; SetupMetaInfo(file); writer.AddFile(file, String.Format("DIR001\\FILE{0}", fileCount)); } writer.FileSetId = "TestDicomdir"; writer.Save("DICOMDIR"); DicomDirectory reader = new DicomDirectory(""); reader.Load("DICOMDIR"); string failureReason; Assert.IsTrue(Compare(writer.RootDirectoryRecord, reader.RootDirectoryRecord, out failureReason), failureReason); }
private static void updateDatabase() { var configuration = new Configuration(); string fileDestination = configuration.fileDestination; string dicomDirPath = Path.Combine(fileDestination, "DICOMDIR"); using (var fileStream = new FileStream(dicomDirPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { var dicomDir = new DicomDirectory(); int i = 0; foreach (string file in Directory.EnumerateFiles(fileDestination, "*.dcm*", SearchOption.AllDirectories)) { var dicomFile = DicomFile.Open(file); dicomDir.AddFile(dicomFile, i.ToString()); i++; } dicomDir.Save(fileStream); } }
private void CreateDirFile(string fileRootPath) { var path = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName + "\\dicomviewer"; var dirInfo = new DirectoryInfo(fileRootPath); var dicomDir = new DicomDirectory(); foreach (var file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories)) { var dicomFile = Dicom.DicomFile.Open(file.FullName); if (file.Length > (1024 * 10)) { dicomDir.AddFile(dicomFile, String.Format(@"DICOMOBJ\{0}", file.Name)); } } var dicomDirPath = Path.Combine(path, "DICOMDIR"); dicomDir.Save(dicomDirPath); }
static void Main(string[] args) { LogToDebugConsole("Creating Dicom directory..."); try { //location where we will create the DICOMDIR file from the images var pathToOutputDicomDirectoryFile = Path.Combine(PathToDicomImages, "DICOMDIR"); if (File.Exists(pathToOutputDicomDirectoryFile)) { LogToDebugConsole($"Dicom directory file already exists at '{pathToOutputDicomDirectoryFile}'. Deleting..."); File.Delete(pathToOutputDicomDirectoryFile); } var directoryInfoForDicomImagesFolder = new DirectoryInfo(PathToDicomImages); var dicomDir = new DicomDirectory(); foreach (var file in directoryInfoForDicomImagesFolder.GetFiles("*.*", SearchOption.AllDirectories)) { var dicomFile = Dicom.DicomFile.Open(file.FullName); dicomDir.AddFile(dicomFile, $@"000001\{file.Name}"); } dicomDir.Save(pathToOutputDicomDirectoryFile); LogToDebugConsole($"Dicom directory creation was successful. DICOMDIR file created at '{pathToOutputDicomDirectoryFile}'"); var dicomDirectory = DicomDirectory.Open(pathToOutputDicomDirectoryFile); LogToDebugConsole("Outputing the newly created DICOM directory information to console"); LogToDebugConsole(dicomDirectory.WriteToString()); } catch (Exception ex) { LogToDebugConsole($"Error occured during Dicom directory dump. Error:{ex.Message}"); } }
protected override void OnDoWork(DoWorkEventArgs e) { int count = 0; int imagesToExportCount = 0; InstanceCStoreCommand cmd = null; MatchingParameterCollection matchingParamCollection; MatchingParameterList matchingParamList; if (this.CancellationPending) { e.Cancel = true; return; } ExportDicomWorkerArgs args = e.Argument as ExportDicomWorkerArgs; if (args == null) { throw new ArgumentException("Invalid ExportDicom argument"); } if (args.CreateDicomDir) { DicomDirectory = new DicomDir(args.OutputFolder); } if (args.Anonymize) { Anonymizer.BeginBatch(); } try { ViewGenerator.ViewDataRow[] exportRows = (args.Rows); imagesToExportCount = exportRows.Length; foreach (ViewGenerator.ViewDataRow exportRow in exportRows) { try { string rowKeyValue; string rowKeyName; string viewName; if (this.CancellationPending) { e.Cancel = true; return; } DataRow originalRow = exportRow.OriginalRow; matchingParamCollection = new MatchingParameterCollection( ); matchingParamList = new MatchingParameterList( ); matchingParamCollection.Add(matchingParamList); if (string.Compare(originalRow.Table.TableName, DataTableHelper.InstanceTableName) == 0) { string sSopInstanceUid = RegisteredDataRows.InstanceInfo.GetElementValue(originalRow, DicomTag.SOPInstanceUID); ICatalogEntity imageInstance = RegisteredEntities.GetInstanceEntity(sSopInstanceUid); rowKeyValue = sSopInstanceUid; rowKeyName = "SOPInstanceUID"; viewName = "Images"; matchingParamList.Add(imageInstance); } else if (string.Compare(originalRow.Table.TableName, DataTableHelper.SeriesTableName) == 0) { string sSeriesInstanceUid = RegisteredDataRows.SeriesInfo.GetElementValue(originalRow, DicomTag.SeriesInstanceUID); ICatalogEntity seriesEntity = RegisteredEntities.GetSeriesEntity(sSeriesInstanceUid); rowKeyValue = sSeriesInstanceUid; rowKeyName = "SeriesInstanceUID"; viewName = "Series"; matchingParamList.Add(seriesEntity); } else if (string.Compare(originalRow.Table.TableName, DataTableHelper.StudyTableName) == 0) { string sStudyInstanceUid = RegisteredDataRows.StudyInfo.GetElementValue(originalRow, DicomTag.StudyInstanceUID); ICatalogEntity studyEntity = RegisteredEntities.GetStudyEntity(sStudyInstanceUid); rowKeyValue = sStudyInstanceUid; rowKeyName = "StudyInstanceUID"; viewName = "Studies"; matchingParamList.Add(studyEntity); } else if (string.Compare(originalRow.Table.TableName, DataTableHelper.PatientTableName) == 0) { string sPatientId = RegisteredDataRows.PatientInfo.GetElementValue(originalRow, DicomTag.PatientID); ICatalogEntity patientEntity = RegisteredEntities.GetPatientEntity(sPatientId); rowKeyValue = sPatientId; rowKeyName = "PatientId"; viewName = "Patients"; matchingParamList.Add(patientEntity); } else if (string.Compare(originalRow.Table.TableName, DataTableHelper.HangingProtocolTableName) == 0) { string sSopInstanceUid = RegisteredDataRows.InstanceInfo.GetElementValue(originalRow, DicomTag.SOPInstanceUID); ICatalogEntity hangingProtocolInstance = RegisteredEntities.GetHangingProtocolEntity(sSopInstanceUid); rowKeyValue = sSopInstanceUid; rowKeyName = "SOPInstanceUID"; viewName = "Hanging Protocol"; matchingParamList.Add(hangingProtocolInstance); } else { throw new ApplicationException("Deleted row is not a valid DICOM format."); } DataSet exportDataSet = null; DataRow[] rows = null; if (string.Compare(originalRow.Table.TableName, DataTableHelper.HangingProtocolTableName) == 0 && _dataAccessAgent3 != null) { exportDataSet = _dataAccessAgent3.QueryHangingProtocol(matchingParamCollection); rows = exportDataSet.Tables[DataTableHelper.HangingProtocolTableName].Select(); } else { exportDataSet = _dataAccessAgent.QueryCompositeInstances(matchingParamCollection); rows = exportDataSet.Tables[DataTableHelper.InstanceTableName].Select(); } foreach (DataRow row in rows) { DicomDataSet dicomDataSet = RegisteredDataRows.InstanceInfo.LoadDicomDataSet(row); if (args.Anonymize) { Anonymizer.Anonymize(dicomDataSet); } AddDicomBackgroundWorker.StoreClientSessionProxy proxy = new AddDicomBackgroundWorker.StoreClientSessionProxy(); proxy.AffectedSOPInstance = dicomDataSet.GetValue <string>(DicomTag.SOPInstanceUID, string.Empty); proxy.AbstractClass = dicomDataSet.GetValue <string>(DicomTag.SOPClassUID, string.Empty); try { cmd = new InstanceCStoreCommand(proxy, dicomDataSet, _dataAccessAgent); OnStoreCommandCreated(this, new StoreCommandEventArgs(cmd)); cmd.Configuration.DataSetStorageLocation = args.OutputFolder; #if (LEADTOOLS_V19_OR_LATER) cmd.Configuration.HangingProtocolLocation = args.OutputFolder; #endif string fileLocation = CStoreCommand.GetStorageFullPath(cmd.Configuration, dicomDataSet); if (args.Overwrite || !File.Exists(fileLocation)) { // Only exporting, so do not validate SopInstance and do not add to database cmd.DoValidateSopInstance = false; cmd.DoUpdateDatabase = false; cmd.DoUseExternalStoreSettings = false; cmd.DataSetStored += cmd_DataSetStored; cmd.Execute(); } else { // File already exists -- it is not overwritten DataSetStoredEventArgs storedArgs = new DataSetStoredEventArgs(dicomDataSet, string.Empty, string.Empty, fileLocation); cmd_DataSetStored(this, storedArgs); } } finally { if (cmd != null) { cmd.DataSetStored -= cmd_DataSetStored; } } } count++; ExportDicomWorkerProgressState state = new ExportDicomWorkerProgressState( ); state.Error = null; state.CurrentCount = count; state.ExportRow = exportRow; state.ExportedImagesCount = 1; state.TotalCount = imagesToExportCount; state.RowKeyValue = rowKeyValue; state.RowKeyName = rowKeyName; state.ViewName = viewName; ReportProgress((count * 100) / exportRows.Length, state); } catch (Exception exception) { ExportDicomWorkerProgressState state = new ExportDicomWorkerProgressState( ); count++; state.Error = exception; state.CurrentCount = count; state.ExportRow = exportRow; state.TotalCount = imagesToExportCount; state.ExportedImagesCount = 0; ReportProgress((count * 100) / exportRows.Length, state); } } } finally { e.Result = imagesToExportCount; if (DicomDirectory != null) { DicomDirectory.Save(); DicomDirectory = null; } if (Anonymizer != null) { Anonymizer.EndBatch(); Anonymizer = null; } } }
/// <summary> /// 刻录 /// </summary> private void Writing() { List <IBurnMediaData> data = new List <IBurnMediaData>(); MediaFileSet mediaFileSet = new MediaFileSet(); mediaFileSet.Id = "Gold"; List <MediaFileSetStudy> fileSetStudies = new List <MediaFileSetStudy>(); string RootPath = "CD"; string studysPath = "IMAGES"; string studyitemPath = "Study{0}"; string seriesitemPath = "Series{0}"; string filename = "IM{0}"; string xmlSavePath = "studies"; string XmlName = "Study{0}.xml"; int study = -1; int series = -1; int Sopcount = -1; string studyIndexName = "index.xml"; string xmlPath = Path.Combine(this.StagingFolderPath, xmlSavePath); if (Directory.Exists(xmlPath)) { Directory.Delete(xmlPath, true); } Directory.CreateDirectory(xmlPath); if (MediaWriterSettings.Default.PortablePath == null || !Directory.Exists(MediaWriterSettings.Default.PortablePath)) { this.Host.ShowMessageBox("指定光盘浏览器目录不存在", MessageBoxActions.Ok); return; } FileDirectoryUtility.CopyFiles(MediaWriterSettings.Default.PortablePath, this.StagingFolderPath, true, true); RootPath = Path.Combine(this.StagingFolderPath, studysPath); DicomDirectory dicomDirectory = new DicomDirectory(VolumeName); dicomDirectory.SourceApplicationEntityTitle = VolumeName; dicomDirectory.FileSetId = "File Set Desc"; try { foreach (IStudyTreeItem item in Tree.Items) { StudyTreeItem treeitem = (StudyTreeItem)item; if (!treeitem.Ischecked) { continue; } study++; MediaFileSetStudy fileSet = new MediaFileSetStudy(); string tempstudypath = Path.Combine(RootPath, string.Format(studyitemPath, study)); StudyXml studyXml = new StudyXml(); foreach (ISeriesTreeItem seriss in treeitem.Tree.Items) { SeriesTreeItem seriesitem = (SeriesTreeItem)seriss; if (!seriesitem.Ischecked) { continue; } series++; string tempseriespath = Path.Combine(tempstudypath, string.Format(seriesitemPath, series)); if (Directory.Exists(tempseriespath)) { Directory.Delete(tempseriespath, true); } Directory.CreateDirectory(tempseriespath); foreach (var sop in seriesitem.Series.GetSopInstances()) { if (LoadImageWorker.CancellationPending == true) { break; } if (File.Exists(sop.FilePath)) { Sopcount++; string temp = Path.Combine(tempseriespath, string.Format(filename, Sopcount)); File.Copy(sop.FilePath, temp); int start = temp.IndexOf(studysPath); string dirFilePath = temp.Substring(start); dicomDirectory.AddFile(temp, dirFilePath); string fileName = string.Format("..\\{0}", dirFilePath); DicomFile file = new DicomFile(temp); file.Load(); file.Filename = fileName; studyXml.AddFile(file); fileSet.UID = sop.StudyInstanceUid; } } } //保存studyXml string xmlFileName = string.Format(XmlName, study); string path = Path.Combine(xmlPath, xmlFileName); StudyXmlOutputSettings settings = new StudyXmlOutputSettings(); settings.IncludeSourceFileName = true; XmlDocument document = studyXml.GetMemento(settings); // Create an XML declaration. XmlDeclaration xmldecl; xmldecl = document.CreateXmlDeclaration("1.0", null, null); xmldecl.Encoding = "UTF-8"; document.Save(path); fileSet.Value = Path.Combine(xmlSavePath, xmlFileName);; fileSetStudies.Add(fileSet); } if (!Directory.Exists(RootPath)) { throw new Exception(string.Format("复制检查图像到{0}目录出错", StagingFolderPath)); } IBurnMediaData info = new BurnMediaData(); info.Type = MediaType.Dir; info.Path = RootPath; data.Add(info); IBurnMediaData xml = new BurnMediaData(); xml.Path = xmlPath; xml.Type = MediaType.Dir; data.Add(xml); string studyindexfilename = Path.Combine(this.StagingFolderPath, studyIndexName); if (File.Exists(studyindexfilename)) { File.Delete(studyindexfilename); } Stream stream = File.Open(studyindexfilename, FileMode.Create); mediaFileSet.StudyIndex = fileSetStudies.ToArray(); XmlSerializer serializer = new XmlSerializer(typeof(MediaFileSet)); serializer.Serialize(stream, mediaFileSet); IBurnMediaData studyindex = new BurnMediaData(); studyindex.Path = studyindexfilename; studyindex.Type = MediaType.File; data.Add(studyindex); string dirfilename = Path.Combine(this.StagingFolderPath, "DICOMDIR"); dicomDirectory.Save(dirfilename); info = new BurnMediaData(); info.Type = MediaType.File; info.Path = dirfilename; data.Add(info); DoBurn(data); } catch (COMException ex) { this.Host.ShowMessageBox(ImapiReturnValues.GetName(ex.ErrorCode), MessageBoxActions.Ok); } catch (Exception e) { this.Host.ShowMessageBox(e.Message, MessageBoxActions.Ok); } finally { this.IsWriting = false; } }
public void CreateDicomdirTest() { DicomFile file = new DicomFile("CreateFileTest.dcm"); SetupMR(file.DataSet); SetupMetaInfo(file); DicomDirectory writer = new DicomDirectory(""); int fileCount = 1; writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateXaFileTest.dcm"); SetupMultiframeXA(file.DataSet, 256, 256, 10); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); DicomFile newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); IList<DicomAttributeCollection> seriesList = SetupMRSeries(2, 2, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); fileCount++; SetupMetaInfo(file); writer.AddFile(file, String.Format("DIR001\\FILE{0}", fileCount)); } writer.FileSetId = "TestDicomdir"; writer.Save("DICOMDIR"); DicomDirectory reader = new DicomDirectory(""); reader.Load("DICOMDIR"); string failureReason; Assert.IsTrue(Compare(writer.RootDirectoryRecord, reader.RootDirectoryRecord, out failureReason), failureReason); }
public void ComparisonTest() { DicomDirectory writer = new DicomDirectory("DICOMDIR"); int fileCount = 1; DicomFile file = new DicomFile("CreateFileTest.dcm"); SetupMR(file.DataSet); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateFileTest.dcm"); SetupMR(file.DataSet); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); DicomFile newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateXaFileTest.dcm"); SetupMultiframeXA(file.DataSet, 128, 128, 4); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateXaFileTest.dcm"); SetupMultiframeXA(file.DataSet, 64, 64, 4); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); IList<DicomAttributeCollection> seriesList = SetupMRSeries(3, 1, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } seriesList = SetupMRSeries(4, 4, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("test2.dcm"); SetupKoForImage(file.DataSet, collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } seriesList = SetupMRSeries(10, 1, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("test2.dcm"); SetupKoForImage(file.DataSet, collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } seriesList = SetupMRSeries(4, 3, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } writer.FileSetId = "TestDicomdir"; writer.Save("DICOMDIR"); DicomDirectory reader = new DicomDirectory("DICOMDIR"); reader.Load("DICOMDIR"); string failureReason; Assert.IsTrue(Compare(writer.RootDirectoryRecord, reader.RootDirectoryRecord, out failureReason), failureReason); // Test Append // Add a few more files to the file read in, then rewrite and read and compare seriesList = SetupMRSeries(4, 4, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); reader.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("test2.dcm"); SetupKoForImage(file.DataSet, collection); SetupMetaInfo(file); reader.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } reader.FileSetId = "TestDicomdir"; reader.Save("DICOMDIR"); DicomDirectory reader2 = new DicomDirectory("DICOMDIR"); reader2.Load("DICOMDIR"); Assert.IsTrue(Compare(reader.RootDirectoryRecord, reader2.RootDirectoryRecord, out failureReason), failureReason); }
public void ComparisonTest() { DicomDirectory writer = new DicomDirectory("DICOMDIR"); int fileCount = 1; DicomFile file = new DicomFile("CreateFileTest.dcm"); SetupMR(file.DataSet); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateFileTest.dcm"); SetupMR(file.DataSet); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); DicomFile newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateXaFileTest.dcm"); SetupMultiframeXA(file.DataSet, 128, 128, 4); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("CreateXaFileTest.dcm"); SetupMultiframeXA(file.DataSet, 64, 64, 4); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); newfile = new DicomFile("test2.dcm"); SetupKoForImage(newfile.DataSet, file.DataSet); SetupMetaInfo(newfile); writer.AddFile(newfile, String.Format("DICOM\\FILE{0}", fileCount++)); IList <DicomAttributeCollection> seriesList = SetupMRSeries(3, 1, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } seriesList = SetupMRSeries(4, 4, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("test2.dcm"); SetupKoForImage(file.DataSet, collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } seriesList = SetupMRSeries(10, 1, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("test2.dcm"); SetupKoForImage(file.DataSet, collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } seriesList = SetupMRSeries(4, 3, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); writer.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } writer.FileSetId = "TestDicomdir"; writer.Save("DICOMDIR"); DicomDirectory reader = new DicomDirectory("DICOMDIR"); reader.Load("DICOMDIR"); string failureReason; Assert.IsTrue(Compare(writer.RootDirectoryRecord, reader.RootDirectoryRecord, out failureReason), failureReason); // Test Append // Add a few more files to the file read in, then rewrite and read and compare seriesList = SetupMRSeries(4, 4, DicomUid.GenerateUid().UID); foreach (DicomAttributeCollection collection in seriesList) { file = new DicomFile("test.dcm", new DicomAttributeCollection(), collection); SetupMetaInfo(file); reader.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); file = new DicomFile("test2.dcm"); SetupKoForImage(file.DataSet, collection); SetupMetaInfo(file); reader.AddFile(file, String.Format("DICOM\\FILE{0}", fileCount++)); } reader.FileSetId = "TestDicomdir"; reader.Save("DICOMDIR"); DicomDirectory reader2 = new DicomDirectory("DICOMDIR"); reader2.Load("DICOMDIR"); Assert.IsTrue(Compare(reader.RootDirectoryRecord, reader2.RootDirectoryRecord, out failureReason), failureReason); }