Unussual C-FIND requests handling

C-FIND requests from Efilm 2.0 and Vitrea are not working. Every request returns ‘No patient found’.
Seems that this happens due to some violation of DICOM standard by Efilm and Vitrea.
Here is examples of FIND requests of patient name matching " SOL* " that I got from Orthanc logs.

Efilm

I1130 19:43:44.172781 OrthancFindRequestHandler.cpp:259] DICOM C-Find request at level: Study I1130 19:43:44.172828 OrthancFindRequestHandler.cpp:265] (0008,0000) GenericGroupLength = 86 I1130 19:43:44.172863 OrthancFindRequestHandler.cpp:265] (0008,0020) StudyDate = I1130 19:43:44.172887 OrthancFindRequestHandler.cpp:265] (0008,0030) StudyTime = I1130 19:43:44.172909 OrthancFindRequestHandler.cpp:265] (0008,0050) AccessionNumber = I1130 19:43:44.172931 OrthancFindRequestHandler.cpp:265] (0008,0052) QueryRetrieveLevel = STUDY I1130 19:43:44.172953 OrthancFindRequestHandler.cpp:265] (0008,0056) InstanceAvailability = I1130 19:43:44.172976 OrthancFindRequestHandler.cpp:265] (0008,0061) ModalitiesInStudy = I1130 19:43:44.172998 OrthancFindRequestHandler.cpp:265] (0008,0080) InstitutionName = I1130 19:43:44.173020 OrthancFindRequestHandler.cpp:265] (0008,0090) ReferringPhysicianName = I1130 19:43:44.173043 OrthancFindRequestHandler.cpp:265] (0008,1030) StudyDescription = I1130 19:43:44.173065 OrthancFindRequestHandler.cpp:265] (0008,1040) InstitutionalDepartmentName = I1130 19:43:44.173089 OrthancFindRequestHandler.cpp:265] (0010,0000) GenericGroupLength = 36 I1130 19:43:44.173111 OrthancFindRequestHandler.cpp:265] (0010,0010) PatientName = SOL* I1130 19:43:44.173132 OrthancFindRequestHandler.cpp:265] (0010,0020) PatientID = I1130 19:43:44.173154 OrthancFindRequestHandler.cpp:265] (0010,0030) PatientBirthDate = I1130 19:43:44.173177 OrthancFindRequestHandler.cpp:265] (0010,0040) PatientSex = I1130 19:43:44.173200 OrthancFindRequestHandler.cpp:265] (0020,0000) GenericGroupLength = 16 I1130 19:43:44.173222 OrthancFindRequestHandler.cpp:265] (0020,000d) StudyInstanceUID = I1130 19:43:44.173244 OrthancFindRequestHandler.cpp:265] (0020,0010) StudyID = I1130 19:43:44.910803 OrthancFindRequestHandler.cpp:333] Number of matching resources: 0 I1130 19:43:44.911567 CommandDispatcher.cpp:835] DUL Peer Requested Release I1130 19:43:44.911588 CommandDispatcher.cpp:842] Association Release

Vitrea

I1130 19:37:10.776751 OrthancFindRequestHandler.cpp:259] DICOM C-Find request at level: Study I1130 19:37:10.776784 OrthancFindRequestHandler.cpp:265] (0008,0020) StudyDate = I1130 19:37:10.776809 OrthancFindRequestHandler.cpp:265] (0008,0030) StudyTime = I1130 19:37:10.776830 OrthancFindRequestHandler.cpp:265] (0008,0050) AccessionNumber = I1130 19:37:10.776851 OrthancFindRequestHandler.cpp:265] (0008,0052) QueryRetrieveLevel = STUDY I1130 19:37:10.776873 OrthancFindRequestHandler.cpp:265] (0008,0061) ModalitiesInStudy = I1130 19:37:10.776895 OrthancFindRequestHandler.cpp:265] (0008,0090) ReferringPhysicianName = I1130 19:37:10.776916 OrthancFindRequestHandler.cpp:265] (0008,1030) StudyDescription = I1130 19:37:10.776937 OrthancFindRequestHandler.cpp:265] (0010,0010) PatientName = SOL* I1130 19:37:10.776957 OrthancFindRequestHandler.cpp:265] (0010,0020) PatientID = I1130 19:37:10.776978 OrthancFindRequestHandler.cpp:265] (0010,0030) PatientBirthDate = I1130 19:37:10.776998 OrthancFindRequestHandler.cpp:265] (0020,000d) StudyInstanceUID = I1130 19:37:10.777019 OrthancFindRequestHandler.cpp:265] (0020,0010) StudyID = I1130 19:37:10.777041 OrthancFindRequestHandler.cpp:265] (0020,1208) NumberOfStudyRelatedInstances = I1130 19:37:10.777065 OrthancFindRequestHandler.cpp:265] (5653,0010) PrivateCreator = Vital Images SW 3.4 I1130 19:37:11.484736 OrthancFindRequestHandler.cpp:333] Number of matching resources: 0 I1130 19:37:11.485535 CommandDispatcher.cpp:835] DUL Peer Requested Release I1130 19:37:11.485564 CommandDispatcher.cpp:842] Association Release

Log of successful request from Synedra:

I1130 19:35:49.528666 OrthancFindRequestHandler.cpp:259] DICOM C-Find request at level: Study I1130 19:35:49.528700 OrthancFindRequestHandler.cpp:265] (0008,0020) StudyDate = I1130 19:35:49.528725 OrthancFindRequestHandler.cpp:265] (0008,0030) StudyTime = I1130 19:35:49.528755 OrthancFindRequestHandler.cpp:265] (0008,0050) AccessionNumber = I1130 19:35:49.528777 OrthancFindRequestHandler.cpp:265] (0008,0052) QueryRetrieveLevel = STUDY I1130 19:35:49.528799 OrthancFindRequestHandler.cpp:265] (0008,0061) ModalitiesInStudy = I1130 19:35:49.528821 OrthancFindRequestHandler.cpp:265] (0008,0090) ReferringPhysicianName = I1130 19:35:49.528843 OrthancFindRequestHandler.cpp:265] (0008,1030) StudyDescription = I1130 19:35:49.528863 OrthancFindRequestHandler.cpp:265] (0010,0010) PatientName = SOL* I1130 19:35:49.528883 OrthancFindRequestHandler.cpp:265] (0010,0020) PatientID = I1130 19:35:49.528905 OrthancFindRequestHandler.cpp:265] (0010,0030) PatientBirthDate = I1130 19:35:49.528927 OrthancFindRequestHandler.cpp:265] (0010,0032) PatientBirthTime = I1130 19:35:49.528949 OrthancFindRequestHandler.cpp:265] (0010,0040) PatientSex = I1130 19:35:49.528970 OrthancFindRequestHandler.cpp:265] (0010,1010) PatientAge = I1130 19:35:49.528992 OrthancFindRequestHandler.cpp:265] (0010,1020) PatientSize = I1130 19:35:49.529013 OrthancFindRequestHandler.cpp:265] (0010,1030) PatientWeight = I1130 19:35:49.529035 OrthancFindRequestHandler.cpp:265] (0010,4000) PatientComments = I1130 19:35:49.529056 OrthancFindRequestHandler.cpp:265] (0020,000d) StudyInstanceUID = I1130 19:35:49.529077 OrthancFindRequestHandler.cpp:265] (0020,0010) StudyID = I1130 19:35:49.529100 OrthancFindRequestHandler.cpp:265] (0020,1206) NumberOfStudyRelatedSeries = I1130 19:35:49.529121 OrthancFindRequestHandler.cpp:265] (0020,1208) NumberOfStudyRelatedInstances = I1130 19:35:51.872897 OrthancFindRequestHandler.cpp:333] Number of matching resources: 26 I1130 19:35:52.903936 CommandDispatcher.cpp:835] DUL Peer Requested Release I1130 19:35:52.903979 CommandDispatcher.cpp:842] Association Release

As you see Efilm and Vitrea automaticaly add some tags to request (I’ve marked them with yellow). So is there a way to force Orthanc ignore some tags in C-FIND requests?

Hello,

Thanks for this very clear and interesting issue report!

It is now possible to implement patches to the C-FIND SCU queries issued by the various manufacturers. Such patches can be put in the method “OrthancFindRequestHandler::FilterQueryTag()”. Note that the manufacturer is read from the “DicomModalities” section of the configuration file.

I have just implemented the patches required for the two problems you reported:
https://bitbucket.org/sjodogne/orthanc/commits/b7d3d3b182cfe7e340d9a6d190c21734f027a9b4

However, they may be insufficient as such (e.g. if querying against the series and instance levels), so do not hesitate to send me other tags that should be filtered out.

Note that I am about to start the release of Orthanc 0.9.5. Would it be possible for you to give me a quick feedback by this evening, otherwise further patches will have to wait the next release?

Thanks again,
Sébastien-

Hi, thanks for reply!

Unfortunately I’m out of the office already. Nex time I’ll be there this friday at the soonest.

Also, notice that problem likely affects only version 2 of efilm, so its reasonable to mark version somewhere.

OK, fine. I will release 0.9.5 as such, hoping that the current fix is enough.

Following your feedback, the version of eFilm is now made explicit (as “EFilm2”):
https://bitbucket.org/sjodogne/orthanc/commits/36ab170733d622403c9347f4dd033bb8eb08e5e2

Let me know when you’ll have made the tests :slight_smile:

Sébastien-

Hi guys,

I encountered a similar issue with the LEADTOOLS DICOM library. Here is the captured log with "GenericGroupLength":

I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0008,0000) GenericGroupLength = 22
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0008,0052) QueryRetrieveLevel = STUDY
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0008,0061) ModalitiesInStudy =
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0010,0000) GenericGroupLength = 12
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0010,0010) PatientName = abc
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0020,0000) GenericGroupLength = 8
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0020,000d) StudyInstanceUID =

I reckon a fix was done for Efilm and Vitrea, I wonder if an additional fix for LEADTOOLS is possible? Better yet, the manufacturer list be configurable?

Many thanks!

Tim

Hi guys,

I encountered a similar issue with the LEADTOOLS DICOM library. Here is
the captured log with "GenericGroupLength":

I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0008,0000)
GenericGroupLength = 22
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0008,0052)
QueryRetrieveLevel = STUDY
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0008,0061)
ModalitiesInStudy =
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0010,0000)
GenericGroupLength = 12
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0010,0010)
PatientName = abc
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0020,0000)
GenericGroupLength = 8
I0711 15:12:07.343097 OrthancFindRequestHandler.cpp:579] (0020,000d)
StudyInstanceUID =

I reckon a fix was done for Efilm and Vitrea, I wonder if an additional
fix for LEADTOOLS is possible? Better yet, the manufacturer list be
configurable?

We will remove all group-length in Orthanc 1.2.1 (to come later this

month) so there won't be any need for a LEADTOOLS manufacturer. In the
mean-time, you may use EFilm or Vitrea.

That would require quite a lot of work to make the manufacturer list
configurable. Removing all group-length will decrease the needs for this
list anyway.

Thanks for the great news!

Tim

Hi Alain,

I installed Orthanc 1.3.0 and tried again but the problem persists. Is the fix included in this release or will it be in a later one? Thanks :slight_smile:

Tim

Hi Timothy,

Well, it seems the patch did not solve your issue (another user has reported the same problem). I have updated the issue tracker and will check it asap:
https://bitbucket.org/sjodogne/orthanc/issues/31/create-new-modality-types-for-philips-adw

Hi Alain,

Thank you for the update. Looking forward to the fix :slight_smile:

Timothy

Hello,

Any news on the fix? Been looking forward to it, thank you!

Timothy

No, sorry, no news and I’m afraid I can’t give you any estimate right now.

Thank you so much for the fix in the latest version!!