【问题标题】:With Fo-Dicom, how do you make a case-insensitive MWL CFindRequest?使用 Fo-Dicom,如何创建不区分大小写的 MWL CFindRequest?
【发布时间】:2022-04-19 17:41:45
【问题描述】:

我可以像这样进行这些出色的工作列表查询...

//Worklist MWL PATIENTID query
var cf = DicomCFindRequest.CreateWorklistQuery();
cf.Dataset.AddOrUpdate(DicomTag.PatientID, szPatientIDsearch);
cf.OnResponseReceived = (DicomCFindRequest rq, DicomCFindResponse rp) =>
{
       if (rp.HasDataset)
       {
           worklistItems.Add(rp.Dataset);
       }
};
Dicom.Network.Client.DicomClient client = new Dicom.Network.Client.DicomClient(IPAddress, mwlserver.port, false, Preferences.SendingAETitle, mwlserver.AETitle, 5000, 10000, 50, 5);
await client.AddRequestAsync(cf);
await client.SendAsync();

但是如何使Patient ID (0010,0020)Patient's Name (0010,0010) 不区分大小写?是否有要在 MWL 请求中添加/设置的 DICOM 标签?

【问题讨论】:

  • 如果我没记错的话,区分大小写是 MWL SCP 的实现。我不认为SCU可以控制它。
  • 使用标准工作清单是不可能从 SCU 方面控制的。通过扩展谈判可以做到这一点,但我从未见过在实践中实施。
  • 您是说 dicom-server 决定它是否区分大小写?那我需要做更多的测试。并且没有办法像使用 SQL 或任何其他服务一样进行不区分大小写的“选择”?

标签: c# dicom fo-dicom


【解决方案1】:

作为 MWL SCU,控制 MWL Query 的区分大小写是几乎(解释如下)不可能。此外,这更多地是关于规格;不是关于工具包。所以 FO-DICOM 或其他,没有太大区别。

MWL 通信的工作流程在this 答案中进行了解释,这可能会对您有所帮助。

  • 您正在充当 MWL SCU。
  • 您向第三方 MWL SCP 发送 MWL 查询 (C-FIND)。
  • SCP一般来说将订单数据存储在 RDBMS 中;这个答案假设它(无论如何都无关紧要)。
  • 根据您的过滤器参数(您发送的 DICOM 标记(Patient ID (0010,0020) 或您在问题中所说的 Patient's Name (0010,0010))),SCP 将生成 SQL 查询。
  • SCP 随后将在其 RDBMS 上执行此 SQL 查询并获取行。
  • 这些行中的数据将映射到每个 MWL 响应(有关说明,请参见上面的链接),这些响应将发回给您。

正如您现在所看到的,在生成和执行查询(或者说底层 RDBMS 的行为)时,大小写敏感性完全由 SCP 控制。
您作为 SCU 无法控制这种行为。

是否有要在 MWL 请求中添加/设置的 DICOM 标签?

不;没有 SCU 可以在 C-FIND 请求中添加/设置的标准 DICOM 标记,指示 SCP 运行区分大小写/不区分大小写的查询。

正如@kritzel_sw 在comment 中所说:

使用标准工作清单是不可能从 SCU 方面控制的。通过扩展谈判,可以做到这一点,但我从未见过在实践中实施。 – kritzel_sw

延长谈判可能是解决方案;但在实践中,我从未遇到过任何实现它的 SCP。
作为 SCU,您不应依赖 SCP 的可选功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    相关资源
    最近更新 更多