概述

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元素。

系列文章