在DICOM数据集中生成和设置SOPInstanceUID -控制台c#

本教程展示如何在生成的DICOM数据集中为服务对象对(SOP)实例生成和插入唯一标识符(UID)。

概述
总结 本教程介绍了如何在c# Windows控制台应用程序中生成和插入SOPInstance UID。
完成时间 30分钟
Visual Studio项目 下载教程项目(3kb)
平台 c# Windows控制台应用程序
IDE Visual Studio 2019
开发许可 下载LEADTOOLS

所需的知识

步骤熟悉创建项目的基本步骤添加引用和设置License教程,在工作之前在医疗查看器中加载和显示DICOM图像- WinForms c#教程。

DICOM唯一标识符

惟一标识符(uid)提供了惟一标识各种项目的功能。它们保证了跨多个国家、站点、供应商和设备的独特性。不同类别的对象、对象实例和信息实体可以在DICOM话语宇宙中彼此区分,而不受任何语义上下文的影响。

例如,不能使用相同的UID值同时识别该研究或不同研究中的研究实例(研究实例UID)和系列实例(系列实例UID)。还需要提醒实现者不要通过派生(例如通过添加后缀)从另一个实现分配的UID构建新的UID值。

每个UID由两个部分组成< org根>和一个> <后缀UID =

本教程将展示如何> <后缀可以生成。这里的方法使用日期和时间派生唯一标识符。

注意< org根>“1.2.840.10008”是为DICOM定义的项(如DICOM传输语法)保留的,不能用于私有定义的项(如映像实例)。

本教程使用“1.2.840.10008”作为占位符,应该用有效的组织标识符替换。

有关DICOM唯一标识符的特定规则,请参阅另请参阅下面的部分。

创建项目并添加LEADTOOLS引用

在Visual Studio中,创建一个新的c# Windows控制台项目,并添加以下必要的LEADTOOLS引用。

所需要的参考资料取决于项目的目的。引用可以通过以下两种方法中的一种添加(但不能同时添加)。本项目需要参考资料如下:

如果使用NuGet引用,本教程需要以下NuGet包:

如果使用本地DLL引用,则需要以下DLL。dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64

有关应用程序需要哪些DLL文件的完整列表,请参阅你的申请中包含的文件

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关包括针对不同平台的教程的详细信息,请参阅设置运行时License

有两种类型的运行时许可证:

请注意

中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。

新增“生成UID码”

现在已经将LEADTOOLS引用添加到项目中,并设置了许可证,可以开始编码了。

解决方案资源管理器,打开Program.cs并将以下内容添加到使用块,并设置全局变量orgroot

c#
//在顶部使用块使用系统;使用先;使用来;使用Leadtools;使用Leadtools.Dicom;
c#
//添加全局变量静态字符串orgroot =“1.2.840.10008”//将此更改为您组织的根值

调用这两个方法,GenerateNewUID(字符串orgroot)而且SetSOPInstancedUID(字符串uid),在主要方法。

c#
静态无效主要(字符串[]参数)试一试SetLicense ();//生成一个新的唯一标识符字符串uid = GenerateNewUID(或root);//设置唯一标识符为Dicom数据集SetSOPInstancedUID (uid);(异常交货)Console.WriteLine (ex.Message);

使用下面的代码生成新的UID。

c#
私人静态字符串GenerateNewUID (字符串orgroot)控制台。WriteLine ($"部分的UID: {orroot}");//获取日期/时间varnow =日期时间。现在;//获取数字日期,不包含年份和确切的军事时间字符串zeroDate = now.Month.ToString() + now.Day.ToString() +“。”+ now.Hour.ToString() + now.Minute.ToString() + now.Second.ToString() + now. milliseconds . tostring ();//生成全局唯一标识符字符串guid =字符串(Guid.NewGuid () .ToString()。(字符.IsDigit) .ToArray ());控制台。WriteLine ($"<后缀>部分的UID: {zeroDate}.{guid}");//组合字符串字符串sopUid = $”{orgroot}, {zeroDate}。{guid}”//检查长度,看它是否超过64个字符,如果是,然后使用子字符串sopUid = sopUid。长度> 64 ?sopUid。Substring(0,64): sopUid;控制台。WriteLine ($“SOPInstanceUID: {sopUid}”);返回sopUid;

添加Set SOPInstance UID Code

使用下面的代码将生成的UID设置为DICOM数据集中的SOPInstanceUID。

c#
私人静态无效SetSOPInstancedUID (字符串uid)//启动Dicom引擎DicomEngine.Startup ();DicomDataSet ds =DicomDataSet ();//从数据集中移除所有项ds.Reset ();//创建数据集对象,插入指定类的适当元素。ds.Initialize (DicomClassType。SCImageStorage DicomDataSetInitializeFlags。AddMandatoryElementsOnly | DicomDataSetInitializeFlags.ExplicitVR);//在数据集中查找或插入(如果没有找到)一个元素,并设置元素的值ds.InsertElementAndSetValue (DicomTag。SOPInstanceUID uid);控制台。WriteLine ($"成功生成嵌入DICOM数据集的SOPInstanceUID ");

运行项目

按下运行项目F5,或选择调试->开始调试

如果正确地执行了这些步骤,应用程序将运行并使用提供的参数生成UID< orgroot >日期和时间。然后将生成的UID插入到DICOM数据集中。

总结

本教程展示了如何生成DICOM UID并将其插入到SOPInstanceUID标记用于DICOM数据集InsertElement ()方法。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2022领德科技有限公司版权所有。