概述
LEAD医疗存储服务器有两个主要组件,它们在不同的进程中运行:
- 用户界面
- DICOM监听服务。
My.Medical.Storage.DataAccessLayer必须在两个进程中都进行注册。
注册My.Medical.Storage.DataAccessLayer需要以下步骤:
- 创建并注册数据访问代理和数据访问配置视图
- MyStorageDataAccessConfigurationView
- MyStorageSqlDbDataAccessAgent
- 创建并注册CatalogEntity类
- class MyPatient:CatalogEntity
- class MyStudy:CatalogEntity
- class MySeries:CatalogEntity
- class MyInstance:CatalogEntity
- 创建并注册类以从System.Data.DataRow中提取DICOM数据
- class MyPatientInfo:IPatientInfo
- class MyStudyInfo:IStudyInfo
- class MySeriesInfo:ISeriesInfo
- class MyInstanceInfo:IinstanceInfo
以下代码段展示了一个设置方法执行以上操作:
private static IStorageDataAccessAgent \_dataAccess;
public static IStorageDataAccessAgent DataAccess
{
get
{
return \_dataAccess;
}
set
{
\_dataAccess = value;
}
}
public static string ServiceDirectory
{
get;
set;
}
static void RegisterInterfaces()
{
DataAccessServiceLocator.Register\<IPatientInfo\>(new MyPatientInfo());
DataAccessServiceLocator.Register\<IStudyInfo\>(new MyStudyInfo());
DataAccessServiceLocator.Register\<ISeriesInfo\>(new MySeriesInfo());
DataAccessServiceLocator.Register\<IInstanceInfo\>(new MyInstanceInfo());
RegisteredEntities.Items.Add(RegisteredEntities.PatientEntityName,
typeof(MyPatient));
RegisteredEntities.Items.Add(RegisteredEntities.StudyEntityName,
typeof(MyStudy));
RegisteredEntities.Items.Add(RegisteredEntities.SeriesEntityName,
typeof(MySeries));
RegisteredEntities.Items.Add(RegisteredEntities.InstanceEntityName,
typeof(MyInstance));
}
static void RegisterDataAccessAgents(string serviceName)
{
System.Configuration.Configuration configuration =
DicomDemoSettingsManager.GetGlobalPacsAddinsConfiguration(ServiceDirectory);
if
(!DataAccessServices.IsDataAccessServiceRegistered\<IStorageDataAccessAgent\>())
{
IStorageDataAccessAgent storageDataAccess =
DataAccessFactory.GetInstance(new
MyStorageDataAccessConfigurationView(configuration, null,
serviceName)).CreateDataAccessAgent\<IStorageDataAccessAgent\>();
DataAccessServices.RegisterDataAccessService\<IStorageDataAccessAgent\>(storageDataAccess);
DataAccess = storageDataAccess;
}
else
{
DataAccess =
DataAccessServices.GetDataAccessService\<IStorageDataAccessAgent\>();
}
}
public void Configure(Leadtools.Dicom.AddIn.DicomServer server)
{
ServiceDirectory = server.ServerDirectory;
RegisterDataAccessAgents(ServiceDirectory);
RegisterInterfaces();
}
了解更多
这是本系列的第八篇文章,本文介绍了LEAD医学存储服务器数据库如何注册医疗存储数据访问层,我们将在《LEAD医疗存储服务器自定义数据库系列教程 – C FIND Rsp DICOM元素》系列的第九篇文章中,着重介绍LEAD医用存储服务器数据库如何指定C FIND Rsp DICOM元素。