DCM4CHEE-ARC 4.1.0 Alpha 3 / How to connect a new modality and retrieve/store images in DCM4CHEE Archive

464 views
Skip to first unread message

Lionel Roux

unread,
Mar 4, 2014, 10:52:57 AM3/4/14
to dcm...@googlegroups.com
Hello,

I'm rather new using DMC4CHEE and I'm struggling to connect my modalities.
I need to store all images of my modalities into DCM4CHEE storage.

So I've installed successfully the DCM4CHEE-ARC 4. I can get images using a DICOM viewer/client (ONIS 2.5), browse int o the imported studies/patients/series, ...
But to do such operations, I have had to import manually (using the upload tab in the web interface) some DICOM objects.

Now I want to connect my modalities directly with the storage, so that I can store produced images into DCM4CHEE and search/browse for patients, studies;..
I want this to be automatic.

So I've configured my CT-scan (called CT01) using the following ldif file :

dn: dicomAETitle=CT01,cn=Unique AE Titles Registry,cn=DICOM Configuration,dc=chh,dc=fr
objectClass: dicomUniqueAETitle
dicomAETitle: CT01

dn: dicomDeviceName=CT01,cn=Devices,cn=DICOM Configuration,dc=chh,dc=fr
objectClass: dicomDevice
dicomDeviceName: CT01
dicomInstalled: TRUE

dn: cn=dicom,dicomDeviceName=CT01,cn=Devices,cn=DICOM Configuration,dc=chh,dc=fr
objectClass: dicomNetworkConnection
cn: dicom
dicomHostname: 102.1.88.3
dicomPort: 104

dn: cn=dicom-tls,dicomDeviceName=CT01,cn=Devices,cn=DICOM Configuration,dc=chh,dc=fr
cn: dicom-tls
objectClass: dicomNetworkConnection
dicomHostname: 102.1.88.3
dicomPort: 2763
dicomTLSCipherSuite: TLS_RSA_WITH_AES_128_CBC_SHA
dicomTLSCipherSuite: SSL_RSA_WITH_3DES_EDE_CBC_SHA

dn: dicomAETitle=CT01,dicomDeviceName=CT01,cn=Devices,cn=DICOM Configuration,dc=chh,dc=fr
objectClass: dicomNetworkAE
dicomAETitle: CT01
dicomNetworkConnectionReference: cn=dicom,dicomDeviceName=CT01,cn=Devices,cn=DICOM Configuration,dc=chh,dc=fr
dicomNetworkConnectionReference: cn=dicom-tls,dicomDeviceName=CT01,cn=Devices,cn=DICOM Configuration,dc=chh,dc=fr
dicomAssociationInitiator: TRUE
dicomAssociationAcceptor: TRUE

But it doesn't seem to work. i have a "forbidden" dialog ine the web interface and the following error in JBOSS AS7 logs :

16:27:28,493 INFO  [org.dcm4chee.archive.resteasy.LogInterceptor] (http-/102.1.4.101:8080-1) nu...@102.1.37.37:58182 << org.dcm4chee.archive.qido.QidoRS.searchForStudiesJSON: status=403
16:27:36,205 INFO  [org.dcm4chee.archive.resteasy.LogInterceptor] (http-/102.1.4.101:8080-1) nu...@102.1.37.37:58182 >> org.dcm4chee.archive.qido.QidoRS.searchForStudiesJSON: GET http://102.1.4.101:8080/dcm4chee-arc/rs/qido/CT01/studies?includefield=all&offset=0&orderby=-StudyDate,-StudyTime&limit=50
  cookie=[__utma=13443895.1606619475.1393252525.1393930131.1393930131.8; __utmz=13443895.1393252525.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=13443895]
  connection=[keep-alive]
  accept-language=[fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3]
  host=[102.1.4.101:8080]
  accept=[application/json]
  user-agent=[Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0]
  referer=[http://102.1.4.101:8080/dcm4chee-arc/browse.html]
  accept-encoding=[gzip, deflate]
16:27:36,206 SEVERE [org.jboss.resteasy.core.SynchronousDispatcher] (http-/102.1.4.101:8080-1) failed to execute: javax.ws.rs.WebApplicationException
        at org.dcm4chee.archive.qido.QidoRS.init(QidoRS.java:334) [classes:]
        at org.dcm4chee.archive.qido.QidoRS.search(QidoRS.java:288) [classes:]
        at org.dcm4chee.archive.qido.QidoRS.searchForStudiesJSON(QidoRS.java:205) [classes:]
        at org.dcm4chee.archive.qido.QidoRS$Proxy$_$$_WeldClientProxy.searchForStudiesJSON(QidoRS$Proxy$_$$_WeldClientProxy.java) [classes:]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_21]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_21]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_21]
        at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_21]
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
        at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
        at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]


I thought this would be enough to query the series from this modality. Is this right ?
If not, what should I do ?


Maybe I misunderstood the cinematic between DICOM modalities and storages, and it is the CT scan that must send DICOM objects to the storage.
Should I automate the DICOM object retrieval every x minutes and store them into the storage to be sure i get all objects ?

Thanks in advance for your help

Lionel
PS : I speak french

fleetwoodfc

unread,
Mar 4, 2014, 11:15:39 AM3/4/14
to dcm...@googlegroups.com
Usually a modality does not support query/retrieve. 
Normal workflow is to acquire images at the modality and then send them to DCM4CHEE. 
The modality is the client (SCU) and DCM4CHEE provides the storage service (SCP) - by default the modality is configured with the AE,IP,Port of the storage SCP and DCM4CHEE does not need to know about the modality AE,IP,port.

Lionel Roux

unread,
Mar 4, 2014, 11:30:13 AM3/4/14
to dcm...@googlegroups.com
Ok thank you for the clarification.
It means I have to manually configure all my modalities to "know" about my DCM4CHEE AE.

I suppose this is done using on-device console and going though menus to find where to enter the informations.


once again, thank you.

Suresh Viswanathan

unread,
Mar 4, 2014, 3:13:20 PM3/4/14
to dcm...@googlegroups.com
Yes, you’ll have to do it individually in each modality. You might have to get to cooperation of the service engineer since the settings for this in most modalities are locked down under an administrator password.

Suresh


--
You received this message because you are subscribed to the Google Groups "dcm4che" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+u...@googlegroups.com.
To post to this group, send email to dcm...@googlegroups.com.
Visit this group at http://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/groups/opt_out.

Reply all
Reply to author
Forward
0 new messages