“Healthcare:Web Service 到 DICOM”模式中的查询消息通过使用 DICOM 标记来指定其搜索条件。DICOM 标准用于定义标记名称、其含义以及允许的值。在每个查询根和查询级别,将一个标记定义为唯一标记 (U)。唯一标记中的单个值用于唯一地标识该级别的单个实体。即,同一级别的两个实体不会具有相同的唯一标记值。C-FIND SCP 支持由 DICOM 定义的所有唯一标记的存在以及对其进行匹配。由 C-FIND SCP 管理的所有实体都必须具有长度不为零的特定唯一标记值。
每个 DICOM 查询根和级别都具有一小组必须由所有 DICOM 供应商支持的必需 (R) 标记。必需标记表示 C-FIND 的 SCP 必须支持根据 C-FIND 请求中包含的值进行匹配。对于必需标记,多个实体可以具有同一个值。即,必需标记中的相异值并不一定能够在键级别标识单个实体。C-FIND SCP 支持存在给定的根和级别处定义的所有必需标记以及对其进行匹配。如果 C-FIND SCP 管理标记长度为零的实体,那么会将值视作未知,并且所有针对长度为零的标记进行的匹配都将被视作成功匹配。
DICOM 供应商可能支持更大的一组可选 (O) 标记。供应商可以任意添加更多在搜索条件中支持的标记。C-FIND 请求中包含的可选标记可以具有三种不同类型的行为,具体取决于 C-FIND SCP 对存在性和/或匹配的支持。首先,如果 C-FIND SCP 不支持存在可选标记,那么不会在 C-FIND 响应中返回此标记。其次,如果 SCP 支持存在可选标记但不支持对其进行匹配,那么将按处理长度为零的必需标记的方式处理此标记。即,将忽略指定为要针对此标记进行匹配的值,但是 SCP 可以在响应消息中返回值。最后,如果 SCP 支持存在此标记以及对其进行匹配,那么将按处理必需标记的方式对其进行处理。
DICOM 提供了许多用于描述 C-FIND 搜索条件的选项,尤其是有关通配符、日期及时间范围以及用于在列表中匹配多个值的选项。请参阅 DICOM 标准的 PS3.4 以获取更多信息。DICOMFindMove 节点当前不支持对序列执行匹配。发往 DICOMFindMove 节点的 XML 查询消息可以请求使用额外的返回标记。这些标记未用于对 SCP 发出的 C-FIND 请求中的搜索条件。如果 SCP 支持该返回标记,那么响应消息将包含每个搜索标记的相应匹配值以及每个返回标记的相应值。
以下示例显示包含两个搜索标记
00100010
(PatientName
) 和
00080050
(AccessionNumber
) 以及配置的额外返回标记
00080054
(RetrieveAETitle
) 的 XML 查询消息:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>STUDY</QueryRoot> <QueryLevel>STUDY</QueryLevel> <Match> <Attribute Tag="00100010">FEROVIX</Attribute> <Attribute Tag="00080050">1210490</Attribute> </Match> <Return> <Attribute Tag="00080054"/> </Return> </DICOM:FindMove>
查询消息可以使用标记名称(例如 PatientID
)或标记 (00100020
)
指定其搜索条件。与使用标记相比,标记名称通常易于理解并且不易出错。如下所示,响应消息始终使用 DICOM 标记。
以下示例显示除去了 SOAP 响应包络的 DICOM C-FIND 结果消息:
<DICOM:Results xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <DICOM> <Attribute Tag="00080005" VR="CS">ISO_IR 100</Attribute> <Attribute Tag="00080016" VR="UI">1.2.840.10008.5.1.4.1.1.2</Attribute> <Attribute Tag="00080018" VR="UI">1.3.12.2.1107.5.1.4.54023.30000004093016410718700003864</Attribute> <Attribute Tag="00080052" VR="CS">IMAGE</Attribute> <Attribute Tag="00080054" VR="AE">PACS</Attribute> <Attribute Tag="00080056" VR="CS">ONLINE</Attribute> <Attribute Tag="0020000D" VR="UI">1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021</Attribute> <Attribute Tag="0020000E" VR="UI">1.3.12.2.1107.5.1.4.54023.30000004093016410718700003676</Attribute> <Attribute Tag="00200013" VR="IS">188</Attribute> <Attribute Tag="00880130" VR="SH"/> <Attribute Tag="00880140" VR="UI"/> </DICOM> </DICOM:Results>
下表显示了结果消息中每个 DICOM 标记的含义:
标记 | 名称 | 值 |
---|---|---|
00080005 | SpecificCharacterSet | ISO_IR 100 |
00080016 | SOPClassUID | 1.2.840.10008.5.1.4.1.1.2 |
00080018 | SOPInstanceUID | 1.3.12.2.1107.5.1.4.54023.30000004093016410718700003864 |
00080052 | QueryRetrieveLevel | IMAGE |
00080054 | RetrieveAETitle | PACS |
00080056 | InstanceAvailability | ONLINE |
0020000D | StudyInstanceUID | 1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021 |
0020000E | SeriesInstanceUID | 1.3.12.2.1107.5.1.4.54023.30000004093016410718700003676 |
00200013 | InstanceNumber | 188 |
00880130 | StorageMediaFileSetID | |
00880140 | StorageMediaFileSetUID |
请确保在 XML 请求消息中正确配置 QueryRoot
和 QueryLevel
元素。请使用本主题中的示例作为患者根与查询级别的各种组合的参考。
C-MOVE 请求消息的设置方式与 C-FIND 请求消息完全相同。唯一的区别在于,XML 查询消息包含
MoveDestination
元素。此移动目标是应用程序实体标题,对于此实体标题,DICOM
实例应该改为使用 C-STORE 命令。必须为处理 C-FIND 和 C-MOVE 命令的 PACS
预先配置移动目标的连接详细信息。
以下示例显示指定了 MoveDestination
的 DICOM C-FIND 和 C-MOVE 请求消息:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>STUDY</QueryLevel> <MoveDestination>REMOTEAE</MoveDestination> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="PatientID">fWT0KTL</Attribute> <Attribute Tag="AccessionNumber">1210490</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
OperationPriority
是 XML
请求消息中的可选字段。是否使用此字段取决于供应商。此字段的值可以为
HIGH
、NORMAL
或 LOW
。
在 C-MOVE 命令完成后,将返回此模式的 SOAP 响应消息。因此,如果移动大型研究结果、系列或图像,那么响应可能需要花费一些时间。响应消息还包含一个名为
MoveResults
的 XML 元素,用于描述 C-MOVE
命令的总体成功情况或其他情况。下面显示了响应消息中的详细状态字段(Completed
、Failed
和 Warnings
)。
<DICOM:Results xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <DICOM> <Attribute Tag="00080005" VR="CS">ISO_IR 100</Attribute> <Attribute Tag="00080016" VR="UI">1.2.840.10008.5.1.4.1.1.2</Attribute> <Attribute Tag="00080018" VR="UI">1.3.12.2.1107.5.1.4.54023.30000004093016410718700003864</Attribute> <Attribute Tag="00080052" VR="CS">IMAGE</Attribute> <Attribute Tag="00080054" VR="AE">PACS</Attribute> <Attribute Tag="00080056" VR="CS">ONLINE</Attribute> <Attribute Tag="0020000D" VR="UI">1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021</Attribute> <Attribute Tag="0020000E" VR="UI">1.3.12.2.1107.5.1.4.54023.30000004093016410718700003676</Attribute> <Attribute Tag="00200013" VR="IS">188</Attribute> <Attribute Tag="00880130" VR="SH"/> <Attribute Tag="00880140" VR="UI"/> <MoveResults> <Completed>1</Completed> <Failed>0</Failed> <Warnings>0</Warnings> </MoveResults> </DICOM> </DICOM:Results>
患者根支持四个级别的查询:患者、研究、系列和图像。
患者级查询用于在 PACS 中查询患者。此查询具有少量可用于查询的属性,例如患者姓名、患者性别和出生日期。
下表显示了可用于患者级查询的搜索标记:
名称 | 标记 | 类型 |
---|---|---|
PatientName | 00100010 | R |
PatientID | 00100020 | U |
IssuerOfPatientID | 00100021 | O |
PatientBirthDate | 00100030 | O |
PatientBirthTime | 00100032 | O |
PatientSex | 00100040 | O |
OtherPatientIDs | 00101000 | O |
OtherPatientNames | 00101001 | O |
EthnicGroup | 00102160 | O |
PatientComments | 00104000 | O |
NumberOfPatientRelatedStudies | 00201200 | O |
NumberOfPatientRelatedSeries | 00201202 | O |
NumberOfPatientRelatedInstances | 00201204 | O |
以下示例显示使用 PatientID
(00100020
) 作为搜索条件的患者级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>PATIENT</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="00100020">fWT0KTL</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
以下示例显示使用 PatientBirthDate
作为搜索条件的患者级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>PATIENT</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="PatientBirthDate">19670227</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
研究级查询用于在 PACS 中查询指定患者的研究结果。研究级查询必须包含患者标识以及零个或零个以上用于进一步优化搜索的可选标记,例如研究日期。
下表显示了可用于研究级查询的搜索标记:
名称 | 标记 | 类型 |
---|---|---|
StudyDate | 00080020 | R |
StudyTime | 00080030 | R |
AccessionNumber | 00080050 | R |
StudyID | 00200010 | R |
StudyInstanceUID | 0020000D | U |
ModalitiesInStudy | 00080061 | O |
SOPClassesInStudy | 00080062 | O |
ReferringPhysicianName | 00080090 | O |
StudyDescription | 00081030 | O |
NameOfPhysicianReadingStudy | 00081060 | O |
ReferringPhysicianName | 00080090 | O |
AdmittingDiagnosesDescription | 00081080 | O |
PatientAge | 00101010 | O |
PatientSize | 00101020 | O |
PatientWeight | 00101030 | O |
Occupation | 00102180 | O |
AdditionalPatientHistory | 001021B0 | O |
OtherStudyNumbers | 00201070 | O |
NumberOfStudyRelatedSeries | 00201206 | O |
NumberOfStudyRelatedInstances | 00201208 | O |
以下示例显示使用 PatientID
(00100020
) 和
AccessionNumber
(00080050
) 作为搜索条件的研究级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>STUDY</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="00100020">fWT0KTL</Attribute> <Attribute Tag="00080050">1210490</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
以下示例显示使用 PatientID
作为搜索条件的研究级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>STUDY</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="PatientID">fWT0KTL</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
系列级查询用于在 PACS 中查询特定研究内的系列。系列级查询必须包含研究 UID 以及零个或零个以上用于进一步优化搜索的可选属性,例如医疗器械。
下表显示了可用于系列级查询的搜索标记:
名称 | 标记 | 类型 |
---|---|---|
Modality | 00080060 | R |
SeriesNumber | 00200011 | R |
SeriesInstanceUID | 0020000E | U |
NumberOfSeriesRelatedInstances | 0020,1209 | O |
以下示例显示使用 StudyInstanceUID
(0020000D
) 作为搜索条件的系列级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>SERIES</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="0020000D">1.2.840.113745.101000.1008000.37796.6311.5221360</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
以下示例显示使用 StudyInstanceUID
和 Modality
作为搜索条件的系列级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>SERIES</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="StudyInstanceUID">1.2.840.113745.101000.1008000.37796.6311.5221360</Attribute> <Attribute Tag="Modality">CT</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
图像级查询用于查询系列中的特定图像。此级别不常用。图像级查询必须包含系列 UID。
下表显示了可用于图像级查询的搜索标记:
名称 | 标记 | 类型 |
---|---|---|
InstanceNumber | 00200013 | R |
SOPInstanceUID | 00080018 | U |
SOPClassUID | 00080016 | O |
RelatedGeneralSOPClassUID | 0008001A | O |
ContainerIdentifier | 00400512 | O |
以下示例显示使用 SeriesInstanceUID
(0020000E
) 作为搜索条件的图像级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>IMAGE</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="0020000E">1.3.12.2.1107.5.1.4.50146.4.0.2320790629191549</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
以下示例显示使用 SeriesInstanceUID
作为搜索条件的图像级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>PATIENT</QueryRoot> <QueryLevel>IMAGE</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="SeriesInstanceUID">1.3.12.2.1107.5.1.4.50146.4.0.2320790629191549</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
研究根与患者根非常相似,这种相似经常会引起混淆。研究根中没有患者级查询。第一个受支持的级别是研究级查询。研究级查询具有较多允许使用的属性。支持的搜索条件包括研究日期、研究时间以及患者的属性,例如患者姓名、患者标识和患者性别。因此,可以将此研究级查询视作患者根中研究级查询与患者级查询的合并。
研究级查询非常有用,这是因为,在指定一些基本搜索条件(例如患者姓名和研究日期)的情况下,便可一次性查询有关患者的所有研究。患者根将此查询划分为两个单独的查询。
在研究根和患者根中,系列级查询与图像级查询完全相同。
下表显示了可用于研究级查询的搜索标记:
名称 | 标记 | 类型 |
---|---|---|
StudyDate | 00080020 | R |
StudyTime | 00080030 | R |
AccessionNumber | 00080050 | R |
PatientName | 00100010 | R |
PatientID | 00100020 | R |
StudyID | 00200010 | R |
StudyInstanceUID | 0020000D | U |
ModalitiesInStudy | 00080061 | O |
SOPClassesInStudy | 00080062 | O |
ReferringPhysicianName | 00080090 | O |
StudyDescription | 00081030 | O |
NameOfPhysicianReadingStudy | 00081060 | O |
AdmittingDiagnosesDescription | 00081080 | O |
IssuerOfPatientID | 00100021 | O |
PatientBirthDate | 00100030 | O |
PatientBirthTime | 00100032 | O |
PatientSex | 00100040 | O |
OtherPatientIDs | 00101000 | O |
OtherPatientNames | 00101001 | O |
PatientAge | 00101010 | O |
PatientSize | 00101020 | O |
PatientWeight | 0010,1030 | O |
EthnicGroup | 00102160 | O |
Occupation | 00102180 | O |
AdditionalPatientHistory | 001021B0 | O |
PatientComments | 00104000 | O |
OtherStudyNumbers | 00201070 | O |
NumberOfPatientRelatedStudies | 00201200 | O |
NumberOfPatientRelatedSeries | 00201202 | O |
NumberOfPatientRelatedInstances | 00201204 | O |
NumberOfStudyRelatedSeries | 00201206 | O |
NumberOfStudyRelatedInstances | 00201208 | O |
以下示例显示使用 PatientID
(00100020
) 和
AccessionNumber
(00080050
) 作为搜索条件的研究级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>STUDY</QueryRoot> <QueryLevel>STUDY</QueryLevel> <Match> <Attribute Tag="00100010">FEROVIX</Attribute> <Attribute Tag="00080050">1210490</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
以下示例显示使用 PatientID
和 AccessionNumber
作为搜索条件的研究级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>STUDY</QueryRoot> <QueryLevel>STUDY</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="PatientName">FEROVIX</Attribute> <Attribute Tag="AccessionNumber">1210490</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
系列级查询用于在 PACS 中查询特定研究内的系列。系列级查询必须包含研究 UID
以及零个或零个以上用于进一步优化搜索的可选属性,例如医疗器械。此级别与患者根中的系列级别完全相同,只是
XML 查询消息中的 QueryRoot
设置为 STUDY
,而不是 PATIENT
。
下表显示了可用于系列级查询的搜索标记:
名称 | 标记 | 类型 |
---|---|---|
Modality | 00080060 | R |
SeriesNumber | 00200011 | R |
SeriesInstanceUID | 0020000E | U |
NumberOfSeriesRelatedInstances | 0020,1209 | O |
以下示例显示使用 StudyInstanceUID
(0020000D
) 作为搜索条件的系列级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>STUDY</QueryRoot> <QueryLevel>SERIES</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="0020000D">1.2.840.113745.101000.1008000.37796.6311.5221360</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
以下示例显示使用 StudyInstanceUID
和 Modality
作为搜索条件的系列级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>STUDY</QueryRoot> <QueryLevel>SERIES</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="StudyInstanceUID">1.2.840.113745.101000.1008000.37796.6311.5221360</Attribute> <Attribute Tag="Modality">CT</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
图像级查询用于查询系列中的特定图像。此级别不常用。图像级查询必须包含系列 UID。此级别与患者根中的图像级别完全相同,只是
XML 查询消息中的 QueryRoot
设置为 STUDY
,而不是 PATIENT
。
下表显示了可用于图像级查询的搜索标记:
名称 | 标记 | 类型 |
---|---|---|
InstanceNumber | 00200013 | R |
SOPInstanceUID | 00080018 | U |
SOPClassUID | 00080016 | O |
RelatedGeneralSOPClassUID | 0008001A | O |
ContainerIdentifier | 00400512 | O |
以下示例显示使用 SeriesInstanceUID
(0020000E
) 作为搜索条件的图像级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>STUDY</QueryRoot> <QueryLevel>IMAGE</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="0020000E">1.3.12.2.1107.5.1.4.50146.4.0.2320790629191549</Attribute> </Match> <Return> </Return> </DICOM:FindMove>
以下示例显示使用 SeriesInstanceUID
作为搜索条件的图像级查询:
<DICOM:FindMove xmlns:DICOM="http://com.ibm.healthcare/DICOM"> <QueryRoot>STUDY</QueryRoot> <QueryLevel>IMAGE</QueryLevel> <OperationPriority>NORMAL</OperationPriority> <Match> <Attribute Tag="SeriesInstanceUID">1.3.12.2.1107.5.1.4.50146.4.0.2320790629191549</Attribute> </Match> <Return> </Return> </DICOM:FindMove>