Session builder not implemented for SOP class [1.2.840.10008.5.1.4.1.1.11.1] or modality [PR]

212 views
Skip to first unread message

Nolan Nichols

unread,
May 18, 2011, 2:30:06 PM5/18/11
to xnat_discussion
Hi All,

We are currently testing out the XNAT 1.5 release at the University of
Washington with a Philips MRI and have come across an issue when
dealing with what looks like an SOP Class that has not been
implemented. We have XNAT configured behind our firewall and can send
exams directly from the scanner to XNAT, however the scanner sends a
number of secondary files along with imaging exams that are causing
XNAT to fail when moving from Prearchive to Archive.

The secondary files include a proprietary Philips "ExamCard" and a
"Grayscale Softcopy Presentation State Storage". XNAT can handle the
ExamCard dicoms, but when a "Grayscale Softcopy Presentation State
Storage" dicom is present an error page is displayed. This occurs when
exams are moved from the Prearchive to the Archive after submitting
the "new subject" page. The error page links to the following:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1

After this error occurs there is no record of the exam in the XNAT
GUI, however the exam and series are either moved in the file system
from the prearchive to the correct project and subject directory in
the archive, or remain in the prearchive. Either way the webapp does
not display the files or metadata. Here are the logs:

application.log
2011-05-17 16:52:42,695 [Thread-97] ERROR
org.nrg.pipeline.ProcessLauncher - Couldnt launch /home/xnat/xnat/
pipeline/bin/XnatPipelineLauncher -pipeline xnat_tools/
AutoRun.xml ....

dcmtoxnat.log
Session builder not implemented for SOP class
[1.2.840.10008.5.1.4.1.1.11.1] or modality [PR]

I tried manually uploading dicoms from this SOP class through the
Image Uploader and received an error as well:
application.log
2011-05-17 23:04:20,313 [pool-2-thread-1] ERROR
org.nrg.dcm.xnat.DICOMSessionBuilder - Session builder not implemented
for SOP class [1.2.840.10008.5.1.4.1.1.11.1] or modality [PR]
2011-05-17 23:04:20,313 [pool-2-thread-1] ERROR
org.nrg.session.SessionBuilder - /home/xnat/xnat-data/prearchive/
test1/20110517_230420074/XXXXXX must contain exactly one session
org.nrg.session.SessionBuilder$NoUniqueSessionException: No session
found
at org.nrg.session.SessionBuilder.writeSession(SessionBuilder.java:
237)
at org.nrg.session.SessionBuilder.run(SessionBuilder.java:281)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:
471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)

In a previous post (http://groups.google.com/group/xnat_discussion/
browse_thread/thread/b98ac03b9223441f/ac1afd33af99d4fe?
lnk=gst&q=Session+builder+not+implemented) it was suggested that
"dcm4xnat-1.4rc1.jar" needed to be updated to support the SOP Class.
Has anything changed with 1.5 and what are your thoughts on resolving
this issue?

Thanks for your help and let me know if you need any more info!

Nolan

Archie, Kevin

unread,
May 18, 2011, 2:37:36 PM5/18/11
to xnat_di...@googlegroups.com
Nolan,

Are these secondary ExamCard and PS documents in a study by themselves, i.e., without any primary imaging data? If they're in a study with primary MR imaging data, then that should suffice to get a known session type -- and if this is the case, then I'll want to dig in deeper to figure out what's going wrong. If they're in a study by themselves, then we have a data modeling problem; I'd probably recommend merging them into the imaging session to which they refer.

- Kevin

> --
> You received this message because you are subscribed to the Google Groups "xnat_discussion" group.
> To post to this group, send email to xnat_di...@googlegroups.com.
> To unsubscribe from this group, send email to xnat_discussi...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/xnat_discussion?hl=en.
>


The material in this message is private and may contain Protected Healthcare Information (PHI). If you are not the intended recipient, be advised that any unauthorized use, disclosure, copying or the taking of any action in reliance on the contents of this information is strictly prohibited. If you have received this email in error, please immediately notify the sender via telephone or return mail.

Nolan Nichols

unread,
May 18, 2011, 7:01:51 PM5/18/11
to xnat_discussion
Hi Kevin,

The ExamCard and PS documents are in a study with primary imaging
data. The dcmtoxnat.log from above is misleading, as that is the error
from loading a PS file individually through the Image Uploader.

I ran though the process again sending the study directly from the
scanner to prearchive and in the the "Image Session Creation Form" the
"Scan Type" fields for these documents are blank and the
"SeriesNumber" toggle is listed as 0-MR1 and 0-OT1. I labeled the scan
type manually and submitted the form, which brings up an error that
states: "Unable to find the specified experiment."

XNAT creates the subject in the correct project, but there are no
mrsessions listed in the webapp. However, the files are successfully
transfered from the prearchive to archive folders on the filesystem. I
just cant see them online.

Below are the logs from the above transfer.

Thanks,

Nolan

dcmtoxnat.log
session attribute org.nrg.attr.ExtAttrDef$Text@859d6fd5 fieldStrength
has no value
session attribute org.nrg.dcm.xnat.XnatAttrDef$Text@6f946e5b fields/
field+{name=studyComments} has no value
session attribute org.nrg.attr.ExtAttrDef$Text@a2b2c60c modality has
multiple values: [<modality>PR</modality>, <modality>MR</modality>]
session attribute org.nrg.dcm.xnat.XnatAttrDef$Text@7669f8ed scanner
has no value
scan 0-OT1 attribute org.nrg.attr.ExtAttrDef$Text@33dfb0e9
series_description has no value
0-OT1 attribute org.nrg.dcm.xnat.OrientationAttribute@d4427312
orientation has no value
0-OT1 attribute org.nrg.dcm.xnat.XnatAttrDef$AttributesOnly@a253b402
dimensions has no value
0-OT1 attribute org.nrg.dcm.xnat.VoxelResAttribute@e2d8c845 voxelRes
has no value

application.log
2011-05-18 15:19:08,402 [Thread-124] ERROR
org.nrg.pipeline.ProcessLauncher - Couldnt launch /home/xnat/xnat/
pipeline/bin/XnatPipelineLauncher ...

xdat.log
2011-05-18 15:10:49,630 [http-8080-4] ERROR
org.nrg.xnat.helpers.prearchive.FileSystemSessionDataModifier -
java.io.FileNotFoundException: /home/xnat/xnat-data/prearchive/
Unassigned/20110518_145552097/L10115
at org.nrg.xft.utils.FileUtils.MoveFile(FileUtils.java:685)
at org.nrg.xft.utils.FileUtils.MoveFile(FileUtils.java:710)
at org.nrg.xft.utils.FileUtils.MoveToCache(FileUtils.java:928)
at
org.nrg.xnat.helpers.prearchive.FileSystemSessionDataModifier.delete(FileSystemSessionDataModifier.java:
237)
at
org.nrg.xnat.helpers.prearchive.SessionDataDelegate.delete(SessionDataDelegate.java:
35)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$15.extSync(PrearcDatabase.java:789)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$15.extSync(PrearcDatabase.java:783)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$LockAndSync.run(PrearcDatabase.java:833)
at
org.nrg.xnat.helpers.prearchive.PrearcDatabase._unsafeDeleteSession(PrearcDatabase.java:
783)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase.access
$300(PrearcDatabase.java:45)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$6$1.op(PrearcDatabase.java:358)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$6$1.op(PrearcDatabase.java:355)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$SessionOp.run(PrearcDatabase.java:1334)
at
org.nrg.xnat.helpers.prearchive.PrearcDatabase.modifySession(PrearcDatabase.java:
1407)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase.access
$400(PrearcDatabase.java:45)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$6.cacheSync(PrearcDatabase.java:355)
at org.nrg.xnat.helpers.prearchive.PrearcDatabase
$LockAndSync.run(PrearcDatabase.java:834)
at
org.nrg.xnat.helpers.prearchive.PrearcDatabase._moveToProject(PrearcDatabase.java:
349)
at
org.nrg.xnat.helpers.prearchive.PrearcDatabase.moveToProject(PrearcDatabase.java:
382)
at
org.nrg.xnat.restlet.services.prearchive.PrearchiveBatchMove.handlePost(PrearchiveBatchMove.java:
114)
at org.restlet.Finder.handle(Finder.java:357)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Router.handle(Router.java:504)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Filter.doHandle(Filter.java:150)
at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
at
com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:
112)
at org.restlet.Application.handle(Application.java:341)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Router.handle(Router.java:504)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Router.handle(Router.java:504)
at org.restlet.Filter.doHandle(Filter.java:150)
at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
at org.restlet.Filter.handle(Filter.java:195)
at org.restlet.Filter.doHandle(Filter.java:150)
at org.restlet.Filter.handle(Filter.java:195)
at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
at org.restlet.Component.handle(Component.java:673)
at org.restlet.Server.handle(Server.java:331)
at com.noelios.restlet.ServerHelper.handle(ServerHelper.java:68)
at
com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:
147)
at
com.noelios.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:
881)
at
org.nrg.xnat.restlet.servlet.XNATRestletServlet.service(XNATRestletServlet.java:
81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
191)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
470)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
859)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
489)
at java.lang.Thread.run(Thread.java:636)
2011-05-18 15:19:06,371 [http-8080-6] ERROR
org.nrg.xnat.turbine.modules.screens.MRXMLSearch -
java.lang.NullPointerException
at org.nrg.xft.XFTItem.PopulateItemFromFlatString(XFTItem.java:3395)
at org.nrg.xft.XFTItem.PopulateItemFromFlatString(XFTItem.java:3416)
at
org.nrg.xnat.turbine.modules.screens.MRXMLSearch.doOutput(MRXMLSearch.java:
97)
at
org.apache.turbine.modules.screens.RawScreen.doBuild(RawScreen.java:
55)
at org.apache.turbine.modules.Screen.build(Screen.java:57)
at org.apache.turbine.modules.ScreenLoader.eval(ScreenLoader.java:
104)
at org.apache.turbine.modules.ScreenLoader.exec(ScreenLoader.java:
119)
at
org.apache.turbine.modules.pages.DefaultPage.doBuild(DefaultPage.java:
150)
at org.apache.turbine.modules.Page.build(Page.java:53)
at org.apache.turbine.modules.PageLoader.exec(PageLoader.java:98)
at org.apache.turbine.Turbine.doGet(Turbine.java:751)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
191)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
470)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
859)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
489)
at java.lang.Thread.run(Thread.java:636)
> > For more options, visit this group athttp://groups.google.com/group/xnat_discussion?hl=en.

Archie, Kevin

unread,
May 19, 2011, 8:24:30 AM5/19/11
to xnat_di...@googlegroups.com
Nolan,

Thanks for sending the detailed information. It does give me a few ideas about what might be going wrong. I'll dig a little deeper and let you know if I have any additional questions (or when I have a fix).

- Kevin

Olsen, Tim

unread,
May 19, 2011, 9:35:03 AM5/19/11
to xnat_di...@googlegroups.com
Judging by the prearchive path in your output, it looks like the session may have been in the 'Unassigned' prearchive space. XNAT doesn't support archiving sessions directly from the Unassigned folder. You must first move the session to a valid project and then archive it.

We thought we had eliminated the ability to do that from the UI. Perhaps, you found a route around it.

Is this the build of XNAT 1.5 that was released this week. Or did you pull from Bitbucket at an earlier date?

Tim

________________________________________
From: xnat_di...@googlegroups.com [xnat_di...@googlegroups.com] On Behalf Of Nolan Nichols [bnn...@u.washington.edu]
Sent: Wednesday, May 18, 2011 6:01 PM
To: xnat_discussion
Subject: [XNAT Discussion] Re: Session builder not implemented for SOP class [1.2.840.10008.5.1.4.1.1.11.1] or modality [PR]

Nolan Nichols

unread,
May 19, 2011, 1:49:11 PM5/19/11
to xnat_discussion
I am working from the 1.5RC2 release, but plan to build the current
1.5 release soon, hopefully today.

Before archiving I first move the session to a project, but I did set
the prearchive path to /xnat-data/prearchive/Unassigned because when I
first built RC2 an Unassigned folder was not generated by bin/setup.sh
and the Archiver tool threw an error that expected images to be in an
"Unassigned" folder before they could be moved to to the /archive/
PROJECT. So I created a directory called Unassigned that at least
allowed my to move the session to a prearchive/PROJECT.

I changed the prearchive path from /xnat-data/prearchive/Unassigned
to /prearchive and I see the same error in my previous post.

Nolan
>         at...
>
> read more »

Olsen, Tim

unread,
May 19, 2011, 3:51:07 PM5/19/11
to xnat_di...@googlegroups.com
The bug regarding the failed archiving seems very similar to one we discovered in a final round of testing on 1.5. If you upgrade to the latest release, your archiving issue may fix itself.

Tim
________________________________________
From: xnat_di...@googlegroups.com [xnat_di...@googlegroups.com] On Behalf Of Nolan Nichols [bnn...@u.washington.edu]

Sent: Thursday, May 19, 2011 12:49 PM

Nolan

--

Nolan Nichols

unread,
May 19, 2011, 8:01:45 PM5/19/11
to xnat_discussion
I built the latest 1.5 release from bitbucket and it seems to have
fixed the issue of getting this session into archive.

There still seems to be an issue when moving a session from being
unassigned to a project in the prearchive management UI, but it is
resolved if I refresh the page and move the session a second time to a
project and then hit archive. Here's what pops up in the logs:

xdat.log
2011-05-19 16:51:09,472 [http-8080-6] ERROR
org.nrg.xnat.helpers.prearchive.PrearcTableBuilder -
java.io.SyncFailedException: Source '/home/xnat/xnat-data/prearchive/
Unassigned/20110519_164434075/L10115' does not exist
...
2011-05-19 16:51:09,472 [http-8080-6] ERROR
org.nrg.xnat.restlet.services.Importer -
java.io.SyncFailedException: Operation Failed: Source '/home/xnat/xnat-
data/prearchive/Unassigned/20110519_164434075/L10115' does not exist
...
2011-05-19 16:51:36,999 [http-8080-2] ERROR
org.nrg.xnat.helpers.prearchive.FileSystemSessionDataModifier -
java.io.FileNotFoundException: /home/xnat/xnat-data/prearchive/
20110519_164434075/L10115

Nolan
> >         at...
>
> read more »

David Gutman

unread,
May 19, 2011, 9:56:04 PM5/19/11
to xnat_di...@googlegroups.com
Actually I think I just replicated that behavior using a "simple" case
of DICOM data.. basically I used a standard DICOM Pacs (EFILM) to push
a scan to a new XNAT instance... and it was initially unassigned. I
tried moving it from the PREARCHIVE to a project... (which worked) and
then when I tried to ARCHIVE it... I got some errors referring to
"FOLDER NOT FOUND" or something similar...

I am going to double check I get that behavior again...


dg

> --
> You received this message because you are subscribed to the Google Groups "xnat_discussion" group.
> To post to this group, send email to xnat_di...@googlegroups.com.
> To unsubscribe from this group, send email to xnat_discussi...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/xnat_discussion?hl=en.
>
>

--
David A Gutman, M.D. Ph.D.
Center for Comprehensive Informatics
Emory University School of Medicine

Nolan Nichols

unread,
May 20, 2011, 3:14:52 PM5/20/11
to xnat_discussion
Try taking a look at the contents of the prearchive folder before and
after you move an unassigned session into a project. Does clicking
'move' actually move the session into the given prearchive project
directory?

In my case the session did not change directories and the error
message above indicates the prearchive management UI expected the
session to be in a folder named "Unassigned", however the session was
located in the root /prearchive folder. The setup.sh script did not
create an Unassigned folder in the prearchive, so I tried a workaround
by manually creating a folder named Unassigned, and changed my root
prearchive folder to /xnat-data/prearchive/Unassigned.

Now when I transfer a scan using DICOM PACS the session is built into
the Unassigned folder, and when I move a session into a project and
archive it, I no longer get the "folder not found error." With this
config everything is working smoothly.

-Nolan
> ...
>
> read more »

deech

unread,
May 20, 2011, 5:13:57 PM5/20/11
to xnat_di...@googlegroups.com
Hi Nolan,
Creating a folder called "Unassigned" in your prearchive folder puts the prearchive into a corrupt state because it tells the prearchive that you have a project named "Unassigned" which isn't case and can potentially cause all kinds of problems when trying to send images to the prearchive using, for instance, the zip uploader or the Upload applet.

I haven't been able to replicate this behavior either with the zip uploader or the Upload Applet, so this seems to be occuring only when images are sent directly from a DICOM workstation.

We are working on a fix right now, but until then I suggest the following
1. Don't use any other method to send images to XNAT other than a DICOM workstation until the fix is in place. Once the fix is in place you will need to copy all the timestamped directories out of the "Unassigned" folder and back into the root of your prearchive, delete the "Unassigned" directory and restart XNAT.
2. Put the timestamped directories back into the root of the prearchive folder, delete the "Unassigned" folder, restart XNAT and only use the zip uploader and Upload applet to get images into the prearchive.

Sorry for the inconvenience ...
-deech

deech

unread,
May 20, 2011, 5:15:28 PM5/20/11
to xnat_di...@googlegroups.com
Hi Nolan,
The line ".. but until then I suggest the following" should be "... but until then I suggest *one* of the following".
-deech

Nolan Nichols

unread,
May 23, 2011, 3:55:52 PM5/23/11
to xnat_discussion
Hi Deech,

No worries, thanks for your responsiveness and for clarifying how my
work around will compromise the zip uploader and upload applet. We are
still in testing and all our test sessions are being sent form the
scanner, so I will stick with option one for now and follow your
guidelines once a fix is in place.

-Nolan
Reply all
Reply to author
Forward
0 new messages