使用 Fo-Dicom,如何制作不区分大小写的 MWL CFindRequest?

With Fo-Dicom, how do you make a case-insensitive MWL CFindRequest?

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

//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 请求中是否有 add/set 的 DICOM 标签?

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

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

  • 您正在担任 MWL SCU。
  • 您将 MWL 查询 (C-FIND) 发送给第三方 MWL SCP。
  • SCP 通常 将订单数据存储在 RDBMS 中;这个答案假设它(无论如何都无所谓)。
  • 根据您的过滤器参数(您发送的 DICOM 标签(Patient ID (0010,0020) 或您在问题中所说的 Patient's Name (0010,0010)),SCP 将生成 SQL 查询。
  • SCP 然后将在其 RDBMS 上执行此 SQL 查询并获取行。
  • 这些行中的数据将映射到每个 MWL 响应(请参阅上面的 link 了解描述),这些响应将发回给您。

如您现在所见,在生成和执行查询(或说底层 RDBMS 的行为)时,区分大小写完全由 SCP 控制。
你作为 SCU 无法控制这种行为。

Is there a DICOM Tag to add/set in MWL Request?

没有;在 C-FIND 请求中没有 SCU 可以 add/set 的标准 DICOM 标签,指示 SCP 到 运行 案例 sensitive/insensitive 查询。

正如@kritzel_sw 在 中所说:

With standard worklist it is impossible to control this from the SCU side. With extended negotiation it would be possible to do this, but I have never seen that implemented in practice. – kritzel_sw

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