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 >< /查询>