LEADTOOLS医疗存储服务器自定义数据库系列教程(四)— 存储目录

LEADTOOLS Recognition Imaging SDK是精选的LEADTOOLS SDK功能集,旨在在企业级文档自动化解决方案中构建端到端文档成像应用程序,这些解决方案需要OCR,MICR,OMR,条形码,表单识别和处理,PDF,打印捕获 ,档案,注释和图像查看功能。 这套功能强大的工具利用LEAD屡获殊荣的图像处理技术,智能识别可用于识别和提取任何类型的扫描或传真形式图像数据的文档功能。

LEADTOOLS Recognition Imaging SDK试用版

概述

目录存储在Leadtools.Medical.Storage.DataAccessLayer.dll程序集中定义。该目录定义了Leadtools.Medical.Storage.DataAccessLayer类和数据库模式之间的映射,并包含数据库模式中所有表名称的定义以及每个表的所有列。所有存储目录被定义为一个xml文件。下面的教程将为教程数据库创建一个存储目录。

在此之前,请先确认,您已经为数据库中的每个表定义从CatalogEntity类派生的类。例如,在本教程中,我们定义了四个类(每个表一个)。存储目录链接到以下四个类:

  • 类MyPatient:CatalogEntity
  • 类MyStudy:CatalogEntity
  • 类MySeries:CatalogEntity
  • 类MyInstance:CatalogEntity

目录的结构由一个或多个元素组成,后跟一个或多个元素。每个元素对应一个数据库表。每个元素对应一个列。

<CatalogDataSet>      <Entity>...</Entity>      <Entity>...</Entity>      ...       <Element>...</Element>      <Element>...</Element>      ...</CatalogDataSet>

您必须为数据库定义存储目录。对于教程中的数据库结构,有四个表。下面这些是每个表的元素:

<Entity>    <EntityKey>PatientTableEntityKey</EntityKey>    <EntityName>MyPatientTable</EntityName>    <DisplayName>MyPatientTable</DisplayName>  </Entity>   <Entity>    <EntityKey>StudyTableEntityKey</EntityKey>    <EntityName>MyStudyTable</EntityName>    <DisplayName>MyStudyTable</DisplayName>  </Entity>   <Entity>    <EntityKey>SeriesTableEntityKey</EntityKey>    <EntityName>MySeriesTable</EntityName>    <DisplayName>MySeriesTable</DisplayName>  </Entity>   <Entity>    <EntityKey>InstanceTableEntityKey</EntityKey>    <EntityName>MyInstanceTable</EntityName>    <DisplayName>MyInstanceTable</DisplayName>  </Entity>

每个元素的描述如下:

  • <EntityKey> 定义MyPatient类时,CatalogKey属性必须返回此处定义的名称。
  • <EntityName> 对于教程数据库,患者表称为MyPatient。
  • <DisplayName> 不使用

数据库结构中的每个表列必须有一个元素可以查询。例如,在存储服务器管理器的数据库管理器中,您可以查询以下分段,因此所有存储目录中都必须具有相应的元素。

LEADTOOLS医疗存储服务器自定义数据库系列教程(四)— 存储目录

对于本教程来说,四个表中每个表的主键都是自动生成的主键。这些是唯一没有相应的元素的列。

例如,MyPatientTable有七列,所以目录中将有六个元素(因为MyPatientTable.PatientId不是直接查询-因此没有定义元素)。

<Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientIdentification</ElementKey>      <ElementName>PatientIdentification</ElementName>      <DisplayName>Patient ID</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientName</ElementKey>      <ElementName>PatientName</ElementName>      <DisplayName>Family Name</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientBirthday</ElementKey>      <ElementName>PatientBirthday</ElementName>      <DisplayName>Birth Date</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientSex</ElementKey>      <ElementName>PatientSex</ElementName>      <DisplayName>Sex</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientComments</ElementKey>      <ElementName>PatientComments</ElementName>      <DisplayName>Comments</DisplayName>      <KeyElement>false</KeyElement>   </Element>

每个元素的描述如下:

  • <EntityKey> 该元素所属的表名<EntityKey>,对于患者表,这是“ PatientTableEntityKey”
  • <ElementKey> MyPatient,MyStudy,MySeries,MyInstance类属性使用[EntityElementAttribute]属性进行装饰。 值必须与其中一个属性相同
  • <ElementName> 必须是相应表格的列名称
  • <DisplayName> 不使用
  • <KeyElement> 如果是主键则为true,否则为false

对于本教程,存储目录的名称是MyCatalog.xml。

存储目录的完整路径在两个配置文件中指定:

  1. CSStorageServerManagerDemo.exe.config
  2. Leadtools.Dicom.Server.exe.config

这是需要添加到每个配置文件的内容:

<configSections>    <section name="xmlStorageCatalogSettings" type="Leadtools.Medical.Storage.DataAccessLayer.XmlStorageCatalogSettings, Leadtools.Medical.Storage.DataAccessLayer" />  </configSections>  <xmlStorageCatalogSettings catalogPath="C:LEADTOOLS 20BinDotnet4Win32MyCatalog.xml"/>

最终,MyCatalog.xml的内容如下:

<CatalogDataSet>  <Entity>    <!--A name that uniquely identifies the patient table-->    <EntityKey>PatientTableEntityKey</EntityKey>      <!--Name of database table that holds the patient information-->     <EntityName>MyPatientTable</EntityName>       <!-- Not used-->    <DisplayName>MyPatientTable</DisplayName>    </Entity>   <Entity>    <EntityKey>StudyTableEntityKey</EntityKey>    <EntityName>MyStudyTable</EntityName>    <DisplayName>MyStudyTable</DisplayName>  </Entity>   <Entity>    <EntityKey>SeriesTableEntityKey</EntityKey>    <EntityName>MySeriesTable</EntityName>    <DisplayName>MySeriesTable</DisplayName>  </Entity>   <Entity>    <EntityKey>InstanceTableEntityKey</EntityKey>    <EntityName>MyInstanceTable</EntityName>    <DisplayName>MyInstanceTable</DisplayName>  </Entity>    <Element><!-- Table name to which the element belongs -->      <EntityKey>PatientTableEntityKey</EntityKey>  <!-- The MyPatient class properties are decorated with an [EntityElementAttribute] attribute. This must be identical to one of these properties. -->      <ElementKey>PatientIdentification</ElementKey>   <!-- Must be a column name of the corresponding table -->      <ElementName>PatientIdentification</ElementName>   <!-- Not used -->      <DisplayName>Patient ID</DisplayName>  <!-- True if a primary key; false otherwise -->           <KeyElement>false</KeyElement>                </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientName</ElementKey>      <ElementName>PatientName</ElementName>      <DisplayName>Family Name</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientBirthday</ElementKey>      <ElementName>PatientBirthday</ElementName>      <DisplayName>Birth Date</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientSex</ElementKey>      <ElementName>PatientSex</ElementName>      <DisplayName>Sex</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>PatientTableEntityKey</EntityKey>      <ElementKey>PatientComments</ElementKey>      <ElementName>PatientComments</ElementName>      <DisplayName>Comments</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>SeriesTableEntityKey</EntityKey>      <ElementKey>SeriesSeriesInstanceUID</ElementKey>      <ElementName>SeriesSeriesInstanceUID</ElementName>      <DisplayName>Series Instance UID</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>SeriesTableEntityKey</EntityKey>      <ElementKey>SeriesModality</ElementKey>      <ElementName>SeriesModality</ElementName>      <DisplayName>Modality</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>SeriesTableEntityKey</EntityKey>      <ElementKey>SeriesSeriesNumber</ElementKey>      <ElementName>SeriesSeriesNumber</ElementName>      <DisplayName>Series Number</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>SeriesTableEntityKey</EntityKey>      <ElementKey>SeriesSeriesDate</ElementKey>      <ElementName>SeriesSeriesDate</ElementName>      <DisplayName>Series Date</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>SeriesTableEntityKey</EntityKey>      <ElementKey>SeriesSeriesDescription</ElementKey>      <ElementName>SeriesSeriesDescription</ElementName>      <DisplayName>Series Description</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>SeriesTableEntityKey</EntityKey>      <ElementKey>SeriesBodyPartExamined</ElementKey>      <ElementName>SeriesBodyPartExamined</ElementName>      <DisplayName>Body Part Examined</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>StudyTableEntityKey</EntityKey>      <ElementKey>StudyStudyInstanceUID</ElementKey>      <ElementName>StudyStudyInstanceUID</ElementName>      <DisplayName>Study Instance UID</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>StudyTableEntityKey</EntityKey>      <ElementKey>StudyStudyDate</ElementKey>      <ElementName>StudyStudyDate</ElementName>      <DisplayName>Study Date</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>StudyTableEntityKey</EntityKey>      <ElementKey>StudyAccessionNumber</ElementKey>      <ElementName>StudyAccessionNumber</ElementName>      <DisplayName>Accession Number</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>StudyTableEntityKey</EntityKey>      <ElementKey>StudyStudyId</ElementKey>      <ElementName>StudyStudyId</ElementName>      <DisplayName>Study ID</DisplayName>      <KeyElement>false</KeyElement>   </Element>  <Element>    <EntityKey>StudyTableEntityKey</EntityKey>    <ElementKey>StudyReferringPhysiciansName</ElementKey>    <ElementName>StudyReferringPhysiciansName</ElementName>    <DisplayName>Referring Physician</DisplayName>    <KeyElement>false</KeyElement>  </Element>   <Element>      <EntityKey>StudyTableEntityKey</EntityKey>      <ElementKey>StudyStudyDescription</ElementKey>      <ElementName>StudyStudyDescription</ElementName>      <DisplayName>Study Description</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>InstanceTableEntityKey</EntityKey>      <ElementKey>SOPInstanceUID</ElementKey>      <ElementName>SOPInstanceUID</ElementName>      <DisplayName>SOP Instance UID</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>InstanceTableEntityKey</EntityKey>      <ElementKey>ImageImageNumber</ElementKey>      <ElementName>ImageImageNumber</ElementName>      <DisplayName>Instance Number</DisplayName>      <KeyElement>false</KeyElement>   </Element>  <Element>    <EntityKey>InstanceTableEntityKey</EntityKey>    <ElementKey>ImageLastStoreDate</ElementKey>    <ElementName>ImageLastStoreDate</ElementName>    <DisplayName>Receive Date</DisplayName>    <KeyElement>false</KeyElement>  </Element>   <Element>      <EntityKey>InstanceTableEntityKey</EntityKey>      <ElementKey>ImageFilename</ElementKey>      <ElementName>ImageFilename</ElementName>      <DisplayName>Referenced File</DisplayName>      <KeyElement>false</KeyElement>   </Element>   <Element>      <EntityKey>InstanceTableEntityKey</EntityKey>      <ElementKey>ImageUniqueSOPClassUID</ElementKey>      <ElementName>ImageUniqueSOPClassUID</ElementName>      <DisplayName>SOP Class UID</DisplayName>      <KeyElement>false</KeyElement>   </Element>  <Element>    <EntityKey>InstanceTableEntityKey</EntityKey>    <ElementKey>ImageRows</ElementKey>    <ElementName>ImageRows</ElementName>    <DisplayName>Rows</DisplayName>    <KeyElement>false</KeyElement>  </Element>  <Element>    <EntityKey>InstanceTableEntityKey</EntityKey>    <ElementKey>ImageColumns</ElementKey>    <ElementName>ImageColumns</ElementName>    <DisplayName>Cols</DisplayName>    <KeyElement>false</KeyElement>  </Element>  <Element>    <EntityKey>InstanceTableEntityKey</EntityKey>    <ElementKey>ImageBitsAllocated</ElementKey>    <ElementName>ImageBitsAllocated</ElementName>    <DisplayName>Bits Allocated</DisplayName>    <KeyElement>false</KeyElement>  </Element>

了解更多
这是本系列的第四篇文章,此处介绍了LEAD医学存储服务器数据库的存储目录结构,我们将在《LEAD医疗存储服务器自定义数据库系列教程–数据库查询》系列的第五篇文章中,着重介绍LEAD医用存储服务器数据库的数据查询方式。

试用版下载>>>

LEADTOOLS 使用教程>>>


想要购买LEADTOOLS正版授权,或了解更多产品信息请点击【咨询在线客服】

LEADTOOLS医疗存储服务器自定义数据库系列教程(四)— 存储目录

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月26日
下一篇 2021年1月26日

相关推荐

发表回复

登录后才能评论