LEADTOOLS存储服务器管理器听DICOM服务响应收到C-FIND与一个或多个请求C-FIND回应。C-FIND响应包含DICOM请求中指定属性。
使用一个自定义数据库模式,必须定义一个配置文件,以便DICOM服务听C-FIND响应填充适当的属性,并设置属性值从数据库中相应的数据。
附带的默认配置文件存储服务器经理叫QueryIOD.xml。定义的默认配置是返回属性和序列航运的属性数据库。本教程数据库,我们不返回序列的物品。
QueryIOD的结构。xml是如下。它由< patientLevel >、< studyLevel >、< seriesLevel >,和< imageLevel >元素,每一个都包含一个或多个<元素>元素。
<查询>
< patientLevel >
< >元素…< / >元素
< >元素…< / >元素
…
< / patientLevel >
< studyLevel >
< >元素…< / >元素
< >元素…< / >元素
…
< / studyLevel >
< seriesLevel >
< >元素…< / >元素
< >元素…< / >元素
…
< / seriesLevel >
< imageLevel >
< >元素…< / >元素
< >元素…< / >元素
…
< / imageLevel >
< /查询>
每个<元素>元素对应一个属性在C-FIND请求,并提供映射数据库中相应的值。
下面是一个示例<元素>教程数据库。它将DICOM映射元素PatientID(0010、0010)对应的表名(MyPatientTable)和列(PatientName)。
<元素标签=》(0010年,0010年)”
tagName =“PatientName”
vr =“PN”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“通配符”
表名=“MyPatientTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyPatient My.Medical.Storage.DataAccessLayer”
columnsName =“PatientName”/ >
属性 |
解释 |
标签 |
DICOM数据元素标签(集团(元素) |
tagName |
命名常量名称(从类DicomTag) |
虚拟现实 |
值表示,指示值存储在数据元素的类型 |
minVM |
最小值多样性可能被存储的最小值的数量 |
maxVM |
最大价值多样性——最大可能被存储的值的数量 |
vmDivider |
存储值的数量必须vmDivider的倍数 |
keyType |
|
matchingType |
下列之一(DICOM的第4部分中定义的规范)
|
的表 |
数据集包含数据的表名 |
matchingEntity |
完全限定类名,紧随其后的是组装的名字定义类 完全限定的类是来源于类CatalogEntity 对于本教程,下列之一:
对于本教程,组装的名字是
|
columnsName |
数据集包含数据列名 |
MyQueryIOD的全文。xml是下面:
MyQueryIOD.xml
< ?xml version =“1.0”编码=“utf - 8”? >
<查询>
< patientLevel >
<元素标签=》(0010年,0010年)”
tagName =“PatientName”
vr =“PN”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“通配符”
表名=“MyPatientTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyPatient My.Medical.Storage.DataAccessLayer”
columnsName =“PatientName”/ >
<元素标签=》(0010年,0020年)”
tagName =“PatientID”
vr =“罗”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“独一无二”
matchingType =“SingleValue”
表名=“MyPatientTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyPatient My.Medical.Storage.DataAccessLayer”
columnsName =“PatientIdentification”/ >
<元素标签=》(0010年,0030年)”
tagName =“PatientBirthDate”
vr =“DA”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“范围”
表名=“MyPatientTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyPatient My.Medical.Storage.DataAccessLayer”
columnsName =“PatientBirthday”/ >
<元素标签=》(0010年,0040年)”
tagName =“PatientSex”
vr =“CS”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“SingleValue”
表名=“MyPatientTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyPatient My.Medical.Storage.DataAccessLayer”
columnsName =“PatientSex”/ >
<元素标签=》(0010年,4000年)”
tagName =“PatientComments”
vr =“LT”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“NotApplicable”
表名=“MyPatientTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyPatient My.Medical.Storage.DataAccessLayer”
columnsName =“PatientComments”/ >
< / patientLevel >
< studyLevel >
<元素标签=》(0008年,0020年)”
tagName =“StudyDate”
vr =“DA”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“范围”
表名=“MyStudyTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyStudy My.Medical.Storage.DataAccessLayer”
columnsName =“StudyStudyDate”/ >
<元素标签=》(0008年,0050年)”
tagName =“AccessionNumber”
vr =“上海”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“SingleValue”
表名=“MyStudyTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyStudy My.Medical.Storage.DataAccessLayer”
columnsName =“StudyAccessionNumber”/ >
<元素标签=》(0008年,0061年)”
tagName =“ModalitiesInStudy”
vr =“CS”
minVM =“1”
maxVM =“1”
vmDivider =“1”
vmDistinct =“真正的”
keyType =“可选的”
matchingType =“SingleValue”
表名=“MySeriesTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MySeries My.Medical.Storage.DataAccessLayer”
columnsName =“SeriesModality”/ >
<元素标签=》(0008年,0062年)”
tagName =“SOPClassesInStudy”
vr =“用户界面”
minVM =“1”
maxVM =“1”
vmDivider =“1”
vmDistinct =“真正的”
keyType =“可选的”
matchingType =“ListOfUID”
表名=“MyInstanceTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.MatchingParameters.Image My.Medical.Storage.DataAccessLayer”
columnsName =“ImageUniqueSOPClassUID”/ >
<元素标签=》(0008年,0090年)”
tagName =“ReferringPhysiciansName”
vr =“PN”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“SingleValue”
表名=“MyStudyTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyStudy My.Medical.Storage.DataAccessLayer”
columnsName =“StudyReferringPhysiciansName”/ >
<元素标签=》(0008年,1030年)”
tagName =“StudyDescription”
vr =“罗”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“NotApplicable”
表名=“MyStudyTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyStudy My.Medical.Storage.DataAccessLayer”
columnsName =“StudyStudyDescription”/ >
<元素标签=》(0020年,0010年)”
tagName =“StudyID”
vr =“上海”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“SingleValue”
表名=“MyStudyTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyStudy My.Medical.Storage.DataAccessLayer”
columnsName =“StudyStudyId”/ >
<元素标签=》(0020年,000 d)”
tagName =“StudyInstanceUID”
vr =“用户界面”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“独一无二”
matchingType =“ListOfUID”
表名=“MyStudyTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyStudy My.Medical.Storage.DataAccessLayer”
columnsName =“StudyStudyInstanceUID”/ >
< / studyLevel >
< seriesLevel >
<元素标签=》(0008年,0060年)”
tagName =“形态”
vr =“CS”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“SingleValue”
表名=“MySeriesTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MySeries My.Medical.Storage.DataAccessLayer”
columnsName =“SeriesModality”/ >
<元素标签=》(0008年,103 e)”
tagName =“SeriesDescription”
vr =“罗”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“SingleValue”
表名=“MySeriesTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MySeries My.Medical.Storage.DataAccessLayer”
columnsName =“SeriesSeriesDescription”/ >
<元素标签=》(0008年,0021年)”
tagName =“SeriesDate”
vr =“DA”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“范围”
表名=“MySeriesTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MySeries My.Medical.Storage.DataAccessLayer”
columnsName =“SeriesSeriesDate”/ >
<元素标签=》(0018年,0015年)”
tagName =“BodyPartExamined”
vr =“CS”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“范围”
表名=“MySeriesTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MySeries My.Medical.Storage.DataAccessLayer”
columnsName =“SeriesBodyPartExamined”/ >
<元素标签=》(0020年,0011年)”
tagName =“SeriesNumber”
vr =“是”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“SingleValue”
表名=“MySeriesTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MySeries My.Medical.Storage.DataAccessLayer”
columnsName =“SeriesSeriesNumber”/ >
<元素标签=》(0020年,000 e)”
tagName =“SeriesInstanceUID”
vr =“用户界面”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“ListOfUID”
表名=“MySeriesTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MySeries My.Medical.Storage.DataAccessLayer”
columnsName =“SeriesSeriesInstanceUID”/ >
< / seriesLevel >
< imageLevel >
<元素标签=》(0020年,0013年)”
tagName =“InstanceNumber”
vr =“是”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“SingleValue”
表名=“MyInstanceTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyInstance My.Medical.Storage.DataAccessLayer”
columnsName =“ImageImageNumber”/ >
<元素标签=》(0008年,0016年)”
tagName =“SOPClassUID”
vr =“用户界面”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“ListOfUID”
表名=“MyInstanceTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyInstance My.Medical.Storage.DataAccessLayer”
columnsName =“ImageUniqueSOPClassUID”/ >
<元素标签=》(0008年,0018年)”
tagName =“SOPInstanceUID”
vr =“用户界面”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“要求”
matchingType =“ListOfUID”
表名=“MyInstanceTable”
matchingEntity =“My.Medical.Storage.DataAccessLayer.Entities.MyInstance My.Medical.Storage.DataAccessLayer”
columnsName =“SOPInstanceUID”/ >
<元素标签=》(0028年,0010年)”
tagName =“行”
vr =“我们”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“NotApplicable”
表名=“ImageInstance”
matchingEntity =“My.Medical.Storage.DataAccessLayer.MatchingParameters.ImageInstance My.Medical.Storage.DataAccessLayer”
columnsName =“ImageRows”/ >
<元素标签=》(0028年,0011年)”
tagName =“列”
vr =“我们”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“NotApplicable”
表名=“ImageInstance”
matchingEntity =“My.Medical.Storage.DataAccessLayer.MatchingParameters.ImageInstance My.Medical.Storage.DataAccessLayer”
columnsName =“ImageColumns”/ >
<元素标签=》(0028年,0100年)”
tagName =“BitsAllocated”
vr =“我们”
minVM =“1”
maxVM =“1”
vmDivider =“1”
keyType =“可选的”
matchingType =“NotApplicable”
表名=“ImageInstance”
matchingEntity =“My.Medical.Storage.DataAccessLayer.MatchingParameters.ImageInstance My.Medical.Storage.DataAccessLayer”
columnsName =“ImageBitsAllocated”/ >
< / imageLevel >
< /查询>