关于fo-dicom对接岛津DR设备DICOM胶片打印PresentationLUT不支持

129
补充展位
Pages_Weblog_Get#681cd219-f7d7-e5dc-0085-ac3678e947b0
文章摘要
此内容由人工摘要内容,并由AI根据文章内容进行润色
内蒙古医院在对接岛津DR设备时出现DICOM胶片打印问题,特别是fo-dicom服务与PresentationLUTSOPClass不兼容导致报错。通过修改代码添加对 PresentationLUTSOPClass 的支持,解决了部分设备的兼容性问题。这一改动虽然简单,但对新手可能有帮助。

这两天在对接一家内蒙古一家医院的岛津DR设备DICOM胶片打印问题,这家医院自助胶片打印项目落地有一段时间了,由于这家医院规模算是比较大的,初期整了很久才把当时所有的设备对接完,没想到又出问题了。

对接岛津DR打印服务报错

前些日子医院现场的同事反馈新添加一台岛津DR的设备工作站,测试打印一直失败,因为这家医院设备已经在正式运营了,怕影响其他设备已经正常运营的打印业务,所以也不太好在生产环境测试,折腾一天解决了(虽然解决的不是太完美),这里记一下

fo-dicom 服务错误日志

关于fo-dicom对接岛津DR设备DICOM胶片打印协议PresentationLUT验证不支持问题

Requested abstract syntax Presentation LUT SOP Ciass [1.2.840.10008.5.1.1.0 NLINEDI not supported

看到这个报错对于fo-dicom有一定了解的同行,其实已经知道问题在哪了,站长按经验修改了下代码,就试着更新上去了,但比较无语的是这台设备可以正常了其他设备又开始报错,吓得立马回退,最后针对这台设备单独开一个处理过的程序进行对接,算是解决了(所以说不完美,正式的医院又不太好频繁测试,也懒得改了凑合着用,经典的能跑就行)

虽然这个兼容修改很简单,但有些FO-DICOM新手可能还是不知到怎么改,这里写一下针对上面这个报错怎么修改fo-dicom项目代码代码块,万一有人用得上呢

修改代码位置参考

fo-dicom-samples项目PrintService文件

代码位置参考fo-dicom-samples项目PrintService文件

修改后成功对接的代码

public Task OnReceiveAssociationRequestAsync(DicomAssociation association)
{
	foreach (var pc in association.PresentationContexts)
    {
		if (pc.AbstractSyntax == DicomUID.Verification
            || pc.AbstractSyntax == DicomUID.BasicGrayscalePrintManagementMetaSOPClass
            || pc.AbstractSyntax == DicomUID.BasicColorPrintManagementMetaSOPClass
            || pc.AbstractSyntax == DicomUID.PrinterSOPClass
            || pc.AbstractSyntax == DicomUID.BasicFilmSessionSOPClass
            || pc.AbstractSyntax == DicomUID.BasicFilmBoxSOPClass
            || pc.AbstractSyntax == DicomUID.BasicGrayscaleImageBoxSOPClass
            || pc.AbstractSyntax == DicomUID.BasicColorImageBoxSOPClass
			|| pc.AbstractSyntax == DicomUID.PresentationLUTSOPClass //添加这一行就行了
			)
         {
             pc.AcceptTransferSyntaxes(AcceptedTransferSyntaxes);
         }
         else if (pc.AbstractSyntax == DicomUID.PrintJobSOPClass)
         {
             pc.AcceptTransferSyntaxes(AcceptedTransferSyntaxes);
         }
         else
         {
                Logger.Warn("Requested abstract syntax {abstractSyntax} from {callingAE} not supported",pc.AbstractSyntax,association.CallingAE); pc.SetResult(DicomPresentationContextResult.RejectAbstractSyntaxNotSupported);
          }
     }
	Logger.Info("Accepted association request from {callingAE}", association.CallingAE);
	return SendAssociationAcceptAsync(association);
}
补充展位 Pages_Weblog_Get#0
补充展位 Pages_Weblog_Get#1
补充展位 Pages_Weblog_Get#2
专题推荐
暂无内容
补充展位 Pages_Weblog_Get#3