C# DICOM不支持的属性

C# DICOM不支持的属性,c#,dicom,C#,Dicom,我刚刚负责了一个Dicom系统的开发,这个系统在2009年开发了几年。用户现在想要使用一个以前从未在系统中使用过的属性(Dicom标记):(00100021)IssuerOfPatientID 我们的系统只负责将患者数据从HIS/RIS传输到设备 当然,除其他外,该模态向SCP发送具有该特定属性的C-Find RQ。 SCP使用C-find RSP响应C-find RQ,它包括RQ中除(0010021)之外的所有属性。其他属性获取一个值,如果未找到任何信息,则按预期显示为“”。将(0010002

我刚刚负责了一个Dicom系统的开发,这个系统在2009年开发了几年。用户现在想要使用一个以前从未在系统中使用过的属性(Dicom标记):(00100021)IssuerOfPatientID

我们的系统只负责将患者数据从HIS/RIS传输到设备

当然,除其他外,该模态向SCP发送具有该特定属性的C-Find RQ。 SCP使用C-find RSP响应C-find RQ,它包括RQ中除(0010021)之外的所有属性。其他属性获取一个值,如果未找到任何信息,则按预期显示为“”。将(00100021)从SCP响应中完全删除

上述情况已由Wireshark日志证实。使用零长度属性请求该属性,该属性应与任何内容匹配

由于我无论如何都无法访问这些服务器,我无法用自己的眼睛确认任何事情。但他们向我保证,(00100021)的值正在从HIS/RIS发送到工作列表收集器,并保存在工作列表数据库中。至此,我也无法查看系统日志

所以我开始阅读不支持的属性。该属性似乎是可选的和/或系统不支持。制造商告诉我们的普通客户,他们可以毫无问题地使用此属性,但是。。它不起作用了

作为一名开发人员,我能做些什么来支持这个属性吗?或者这是由设备一致性声明控制的

我相信你已经注意到了,我是Dicom和我们系统的新手

提前谢谢

[编辑] 据我所知,该属性是可选的。它不应该是必需的,但我们仍然希望它在RSP中以值或“”的形式出现。我该怎么做

[编辑后续信息] 这个问题解决了。实际问题是工作列表收集器没有添加该属性,因为“标记列表”(标记类)中缺少该属性。将该属性添加到标记列表,并在Worklist collector中添加对标记的支持后,它现在就可以工作了


只需在数据库中进行一次查询,就可以轻松地解决此问题,但正如我前面所说,我无法访问数据库,我的客户很难让IT团队查找此问题。

如果您无法访问SCP代码进行必要的更改,您可以创建一个代理SCP,该代理SCP将查询请求从检查设备转发到工作列表SCP,并在将其发送到检查设备之前,在匹配的查询响应(状态为待定)中插入无值的患者ID(0010,0021)标记的颁发者


然而,奇怪的是,模态要求您返回一个可选键。DICOM标准对此非常清楚。请参考PS3.4第C.2.2.1.3节,DICOM标准”(SCP)不支持可选密钥的存在,则属性不得在C-FIND响应中返回“

是否将
(00100021)
属性作为“必需”密钥请求?声明不支持的可选密钥将不会在
C-FIND
响应中返回。实际上,这可能有效!谢谢你的新想法!他们在工作列表模板中得到了“硬编码”的值,所以一个简单的脚本可以做到,至少对于“临时解决方案”是这样的。是的,我知道可选钥匙的标准。但我也读了一些关于支持的可选密钥的内容,这些密钥可以在RSP中返回。要使其受支持,它只是SCP代码吗?是的,SCP决定是否支持可选属性,它可以将其用于查询响应或查询匹配。但是,SCP不需要支持任何可选属性,并且在DICOM标准中,SCU没有机制设置来规定SCP应该支持哪些可选功能。