- 选择 文件->新建->项目.
- 在 新建项目 对话框中, 在项目类型列表中选择 Visual C# 或 VB , 并在模板列表中选择 类库.
- 在项目名称字段中键入项目名称为SampleOptions,然后单击 确定。 如果需要,键入项目的新位置或使用浏览按钮选择目录,然后单击确定。
-
在“解决方案资源管理器”窗口中,右键单击“引用”,然后从菜单中选择“添加引用”。 在“添加引用”对话框中,选择“浏览”选项卡,然后转至 LEADTOOLS 19 \ Bin \ DotNet \ Win32文件夹,选择以下DLLS:
- Leadtools.dll
- Leadtools.Dicom.dll
- Leadtools.Dicom.AddIn.dll
- Microsoft.Practices.Unity
-
单击确定按钮将上述DLL添加到应用程序。
- 在"解决方案管理器" 窗口右击 "SampleAddIn" 选择 添加->类 . 在"新建项" 对话框中, 在"名称" 字段中键入 Module.cs . 点击 "添加" 按钮.
-
打开 Module.cs文件添加以下使用语句:
C#
using Leadtools.Dicom.AddIn;
using Leadtools.Dicom.AddIn.Attributes;
using System.IO;
-
定义 module 类如下所列:
C#
public class Module : ModuleInit
{
private static string _ImageDirectory = string.Empty;
public static string ImageDirectory
{
get
{
return _ImageDirectory;
}
}
public override void Load(string ServiceDirectory, string DisplayName)
{
string dir = ServiceDirectory + @"\Images\";
if(!Directory.Exists(dir))
Directory.CreateDirectory(dir);
_ImageDirectory = dir;
}
}
当此加载项加载时,Load功能由LEADTOOLS PACS Framework调用。 此类检查Images目录。 如果该目录不存在,它将由该插件创建。
-
In the "Solution Explorer" window right-click Class1.cs and select Rename from the context menu. Type CStoreAddIn.cs and press Enter.在“解决方案资源管理器”窗口中,右键单击Class1.cs,然后从上下文菜单中选择“重命名”。 键入CStoreAddIn.cs,然后确定。
-
打开 CStoreAddIn.cs 文件添加以下使用语句:
C#
using Leadtools.Dicom;
using Leadtools.Dicom.AddIn;
using Leadtools.Dicom.AddIn.Interfaces;
using Microsoft.Practices.Unity;
-
将IProcessCStore添加到CStoreAddIn类派生列表中。 你的类应该如下所示:
C#
public class CStoreAddIn : IProcessCStore
{
}
-
右击IProcessCStore 然后选择"实现接口-> 实现接口" 你的类应该如下所示:
C#
[DicomAddInAttribute("CStore","1.0.0.0",Description="DICOM Storage",Author="")]
public class CStoreAddIn : IProcessCStore
{
#region IProcessCStore Members
public DicomCommandStatusType OnStore(DicomClient Client, byte PresentationId, int MessageId, string AffectedClass, string Instance, DicomCommandPriorityType Priority, string MoveAE, int MoveMessageId, DicomDataSet Request)
{
throw new NotImplementedException();
}
#endregion
#region IProcessBreak Members
public void Break(BreakType type)
{
throw new NotImplementedException();
}
#endregion
}
-
要告诉服务器我们感兴趣的,我们需要为OnStore方法指定PresentationContextAttributes。 这会允许服务器建立一个association,以便在客户端连接时使用。 在这个例子中,我们将只存储CT图像。 因此,我们需要为OnStore方法输入以下属性:
C#
[PresentationContext(DicomUidType.CTImageStorage,
DicomUidType.ImplicitVRLittleEndian,
DicomUidType.JPEG2000,
DicomUidType.JPEG2000LosslessOnly,
DicomUidType.JPEGBaseline1,
DicomUidType.JPEGExtended2_4,
DicomUidType.ExplicitVRBigEndian,
DicomUidType.ExplicitVRLittleEndian,
DicomUidType.JPEGLosslessNonhier14,
DicomUidType.JPEGLosslessNonhier14B)]
public DicomCommandStatusType OnStore(DicomClient Client, byte PresentationId, int MessageId, string AffectedClass, string Instance, DicomCommandPriorityType Priority, string MoveAE, int MoveMessageId, DicomDataSet Request)
这样可以存储具有上述传输语法的CT图像。
-
添加可以将映像保存到磁盘的代码段。 您的OnStore方法应如下所示:
C#
public DicomCommandStatusType OnStore(DicomClient Client, byte PresentationId, int MessageId, string AffectedClass, string Instance, DicomCommandPriorityType Priority, string MoveAE, int MoveMessageId, DicomDataSet Request)
{
DicomCommandStatusType status = DicomCommandStatusType.Success;
try
{
if(Request!=null)
{
string sop = Request.GetValue(DicomTag.SOPInstanceUID, string.Empty);
if(string.IsNullOrEmpty(sop))
status = DicomCommandStatusType.ProcessingFailure;
else
{
string file = string.Format("{0}{1}.dic", Module.ImageDirectory,sop);
Request.Save(file, DicomDataSetSaveFlags.None);
}
}
}
catch(Exception e)
{
status = DicomCommandStatusType.ProcessingFailure;
}
return status;
}
-
构建类库并获取输出,然后将其放在先前创建的服务器的AddIn目录中。
- 如果服务器正在运行,停止。然后重新启动服务器。
- 连接并存储CT图像。
关于葡萄城
赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。
了解详情,请访问葡萄城官网。