这两天在对接一家内蒙古一家医院的岛津DR设备DICOM胶片打印问题,这家医院自助胶片打印项目落地有一段时间了,由于这家医院规模算是比较大的,初期整了很久才把当时所有的设备对接完,没想到又出问题了。
对接岛津DR打印服务报错
前些日子医院现场的同事反馈新添加一台岛津DR的设备工作站,测试打印一直失败,因为这家医院设备已经在正式运营了,怕影响其他设备已经正常运营的打印业务,所以也不太好在生产环境测试,折腾一天解决了(虽然解决的不是太完美),这里记一下
fo-dicom 服务错误日志
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文件
修改后成功对接的代码
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); }