Submitted exams do not appear in the pre-archive area

91 views
Skip to first unread message

ERNANDEZ SANTOS

unread,
Jul 22, 2022, 7:44:49 AM7/22/22
to xnat_discussion
Dear 

 I can send exams through dicom node to XNAT, exams are sent without errors, however they do not enter the pre-archive area 

 Has anyone gone through this and can help me?

Will Horton

unread,
Jul 25, 2022, 1:58:42 PM7/25/22
to xnat_discussion
Ernandez,

Off the top of my head, one of two things could be happening here.

1. Your project has been set to auto-archive data, which would mean that your incoming DICOM scans are being saved to an XNAT image session and archived directly to your project without sitting and waiting in the Prearchive.

2. XNAT reads the DICOM fields on incoming data and attempts to identify which project to associate the data with. (See: "How XNAT Scans DICOM to map to Project/Subject/Session"). If it can't find a match with a Project ID, the incoming data will end up in the "Unassigned Prearchive", which is hidden from the main UI. Try using the "Find My Study" feature of the Prearchive.

If something else is going on, we will need more information about what you're trying to do, and what might be appearing in your XNAT logs.

Regards,
Will

ERNANDEZ SANTOS

unread,
Aug 1, 2022, 10:01:16 AM8/1/22
to xnat_di...@googlegroups.com
hello Will

Follow the answers.

1 - This is not the case, because when I send an exam, besides not seeing it in the pre-archive, I also don't find it in any xnat project

2 - I searched for a study that I could send in the "Find My Study" option and I didn't get a response either.

Follow the logs so you can analyze



--
You received this message because you are subscribed to the Google Groups "xnat_discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to xnat_discussi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/xnat_discussion/d6d4c18b-f7c1-4be0-b4f7-50b66f0e3cb2n%40googlegroups.com.

----
A Universidade Federal de São Paulo segue a política de e-mail Institucional disponível em https://sti.unifesp.br/documentos/termos-de-uso-do-email

dicom.log
dqr.log

Will Horton

unread,
Aug 8, 2022, 2:10:56 PM8/8/22
to xnat_discussion
Ernandez, 
I am guessing that the issue you're reporting here is related to, or the same as, your other question in this group about upgrading from XNAT 1.8.3 to XNAT 1.8.4.1. 

Looking at the dicom.log file, I see this statement: 

2022-08-01 09:09:36,045 [pool-9-thread-4] WARN  org.nrg.dcm.AttrAdapter - Unable to build attribute org.nrg.dcm.xnat.XnatAttrDef$Int@6200c45f:instanceNumber(org.nrg.dcm.FixedDicomAttributeIndex@200032(0020,0013)) from file file:///data/xnat/prearchive/PesqDrCarlos/20220801_090911504/0004071267/SCANS/1_2_840_113704_1_111_4220_1581373011_15/DICOM/IMG-0004-00001.dcm
org.nrg.attr.ConversionFailureException: unable to convert
    at org.nrg.attr.NumericExtAttrDef.foldl(NumericExtAttrDef.java:47)
    at org.nrg.attr.NumericExtAttrDef.foldl(NumericExtAttrDef.java:19)
    at org.nrg.attr.AbstractExtAttrDef.foldl(AbstractExtAttrDef.java:107)
    at org.nrg.dcm.AttrAdapter.getValuesForResources(AttrAdapter.java:90)
    at org.nrg.dcm.xnat.DICOMScanBuilder.getScanDir(DICOMScanBuilder.java:250)
    at org.nrg.dcm.xnat.DICOMScanBuilder.access$000(DICOMScanBuilder.java:54)
    at org.nrg.dcm.xnat.DICOMScanBuilder$ResourceCatalogCollector.call(DICOMScanBuilder.java:291)
    at org.nrg.dcm.xnat.DICOMScanBuilder$ResourceCatalogCollector.iterator(DICOMScanBuilder.java:335)
    at org.nrg.dcm.xnat.DICOMScanBuilder.call(DICOMScanBuilder.java:236)
    at org.nrg.dcm.xnat.DICOMSessionBuilder.call(DICOMSessionBuilder.java:577)
    at org.nrg.dcm.xnat.DICOMSessionBuilder.call(DICOMSessionBuilder.java:56)
    at org.nrg.session.SessionBuilder.writeSession(SessionBuilder.java:208)
    at org.nrg.session.SessionBuilder.run(SessionBuilder.java:249)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:592)
    at java.lang.Integer.valueOf(Integer.java:766)
    at org.nrg.attr.IntegerExtAttrDef.valueOf(IntegerExtAttrDef.java:46)
    at org.nrg.attr.IntegerExtAttrDef.valueOf(IntegerExtAttrDef.java:15)
    at org.nrg.attr.NumericExtAttrDef.foldl(NumericExtAttrDef.java:45)
    ... 17 common frames omitted

It looks like your DICOM data is missing an entry for the (0020,0013) Instance Number field. Where the XNAT session builder expects an integer entry, "" is being submitted. I will have to bring in folks who are better informed on the inner workings of the Session Builder, but I believe that Instance Number is required for building the XML catalog of DICOM files as XNAT image session resources. 

ERNANDEZ SANTOS

unread,
Aug 8, 2022, 3:35:45 PM8/8/22
to xnat_di...@googlegroups.com
  hello will

Yes, it's the same problem.

The exams I'm trying to send have the tag filled in
image.png
Follow the logs again


dqr.log
prearchive.log
dicom.zip

Rick Herrick

unread,
Aug 9, 2022, 2:54:45 PM8/9/22
to xnat_discussion
I think you're having the same problem as this previous post: you have a database relic from the ML-BETA implementation. The classes in the DQR plugin were refactored to prevent namespace collisions, so the UpdateRequestStatusArchiveProcessor class referenced in your archive processor instance table has the wrong package:

2022-08-08 14:21:21,005 [threadPoolExecutorFactoryBean-2971] ERROR org.nrg.dcm.scp.CStoreService - C-STORE operation failed
org.nrg.action.ClientException: unable to read DICOM object null
    at org.nrg.xnat.archive.GradualDicomImporter.call(GradualDicomImporter.java:367)
    ....
Caused by: org.nrg.action.ServerException: java.lang.ClassNotFoundException: org.nrg.dqr.processors.UpdateRequestStatusArchiveProcessor
    at org.nrg.xnat.archive.GradualDicomImporter.customProcessing(GradualDicomImporter.java:443)
    at org.nrg.xnat.archive.GradualDicomImporter.customProcessing(GradualDicomImporter.java:432)
    at org.nrg.xnat.archive.GradualDicomImporter.call(GradualDicomImporter.java:105)
    ... 14 common frames omitted

org.nrg.dqr.processors.UpdateRequestStatusArchiveProcessor is now org.nrg.xnatx.dqr.processors.UpdateRequestStatusArchiveProcessor. This is easily fixed with a query:

UPDATE xhbm_archive_processor_instance
SET processor_class = 'org.nrg.xnatx.dqr.processors.UpdateRequestStatusArchiveProcessor'
WHERE processor_class ~ '^.*\.UpdateRequestStatusArchiveProcessor$';

You may want to verify the default values for that processor as well:

xnat=> SELECT label, location, priority, processor_class, scope
FROM xhbm_archive_processor_instance
WHERE processor_class ~ '^.*\.UpdateRequestStatusArchiveProcessor$';
     label      |    location    | priority |                         processor_class                          | scope
----------------+----------------+----------+------------------------------------------------------------------+-------
 Update Request | AfterDicomRead |       10 | org.nrg.xnatx.dqr.processors.UpdateRequestStatusArchiveProcessor | site
(1 row)

Rick Herrick

unread,
Sep 12, 2022, 4:10:31 PM9/12/22
to xnat_discussion
Adding a note for posterity if someone runs across this post later... you may want to check whether there's already an updated entry that matches these changes, something like this:

xnat=> SELECT id, processor_class
FROM xhbm_archive_processor_instance
WHERE label = 'Update Request'
  AND location = 'AfterDicomRead'
  AND scope = 'site';
 id |                         processor_class
----+------------------------------------------------------------------
  3 | org.nrg.dqr.processors.UpdateRequestStatusArchiveProcessor
  4 | org.nrg.xnatx.dqr.processors.UpdateRequestStatusArchiveProcessor
(2 rows)

If you see multiple entries for the various parameters, with one of them being the older ML implementation, you should delete the older one:

xnat=> DELETE
FROM xhbm_archive_processor_instance
WHERE label = 'Update Request'
  AND location = 'AfterDicomRead'
  AND scope = 'site'
  AND processor_class = 'org.nrg.dqr.processors.UpdateRequestStatusArchiveProcessor';
DELETE 1

ERNANDEZ SANTOS

unread,
Sep 13, 2022, 4:35:42 PM9/13/22
to xnat_di...@googlegroups.com


hello rick

I still have the problem, in which area of the XNAT do I make this change?

Reply all
Reply to author
Forward
0 new messages