public enum DicomDirInsertFileCommand
typedef NS_ENUM(NSInteger, LTDicomDirInsertFileCommand) {
LTDicomDirInsertFileCommandContinue = 0,
LTDicomDirInsertFileCommandSkip = 8,
LTDicomDirInsertFileCommandStop = 234
};
public enum class DicomDirInsertFileCommand
Value | Member | Description |
---|---|---|
0 | Continue | Keep adding DICOM files to the Directory. |
8 | Skip | Skip the addition of the current DICOM file. This can be done only during the first call to the callback method OnInsertFile for the file to be skipped. |
234 | Stop | Stop adding new files. |
using Leadtools;
using Leadtools.Dicom;
public class MyDicomDir : DicomDir
{
public MyDicomDir(string destinationFolder, string path) : base(destinationFolder, path) { }
public override DicomDirInsertFileCommand OnInsertFile(string fileName, DicomDataSet ds, DicomDirInsertFileStatus status, DicomExceptionCode code)
{
if (status == DicomDirInsertFileStatus.PreAdd)
{
string msg = string.Format("About to add the file '{0}'{1}{1}Proceed?", fileName, Environment.NewLine);
Console.WriteLine($"{msg}");
return DicomDirInsertFileCommand.Continue;
}
else if (status == DicomDirInsertFileStatus.Success)
{
string msg = string.Format("The file '{0}' has been added successfully.", fileName);
Console.WriteLine(msg);
}
return DicomDirInsertFileCommand.Continue;
}
};
public void CreateDicomDirectory()
{
//Make sure to initialize the DICOM engine, this needs to be done only once
//In the whole application
DicomEngine.Startup();
using (MyDicomDir dicomDir = new MyDicomDir(null, null))
{
bool autoSearch = true;
// Set the destination folder
dicomDir.Reset(Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "HeadCBCT"));
// Set the File-set Identifier
dicomDir.SetFileSetId("SOME_ID");
// Set some options
DicomDirOptions options = dicomDir.Options;
dicomDir.ResetOptions();
options.IncludeSubfolders = true;
options.InsertIconImageSequence = false;
options.RejectInvalidFileId = true;
dicomDir.Options = options;
// Set the File-set descriptor file
string path = Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "HeadCBCT", "README");
dicomDir.SetDescriptorFile(path, null);
if (autoSearch)
{
try
{
dicomDir.InsertFile(null);
}
catch (Exception ex)
{
Console.WriteLine($"{ex.GetType().ToString()} {ex.Message}");
}
}
else
{
// Load a Data Set and add it to the Directory
using (DicomDataSet ds = new DicomDataSet())
{
ds.Load(Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "HeadCBCT", "CT", "CT_001"), DicomDataSetLoadFlags.None);
dicomDir.InsertDataSet(ds, Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "HeadCBCT", "CT", "CT_001"));
}
// Add some DICOM files to the Directory
dicomDir.InsertFile(Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "HeadCBCT", "CT", "CT_002"));
dicomDir.InsertFile(Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "HeadCBCT", "CT", "CT_003"));
}
// Test the DataSet
DicomElement first = dicomDir.DataSet.FindFirstElement(null, DicomTag.PatientID, false);
Console.WriteLine(first.Length.ToString());
// Save the DICOMDIR File
dicomDir.Save();
//We can now call something like this to call the DICOMDIR back
//dicomDir.Load(LeadtoolsExamples.Common.ImagesPath.Path + @"TEMP\DCMTEST\PATIENT1\DICOMDIR",DicomDataSetLoadFlags.LoadAndClose);
}
DicomEngine.Shutdown();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document