Please, kindly review this anonymous image that I am attaching. It breaks the WADO servlet on dcm4chee 2, up to the latest version.
I've narrowed down the problem to the LUT values, since passing Window Center and Window Level values to the servlet works:
wado?requestType=WADO&studyUID=1.3.6.1.4.1.18047.1.6.1005561512152019791&seriesUID=1.3.6.1.4.1.18047.1.6.1005561512152019792&objectUID=1.3.6.1.4.1.18047.1.6.1005561512152019793&windowCenter=1500&windowWidth=2047&frameNumber=1
But this breaks the servlet with a 500 error:
wado?requestType=WADO&studyUID=1.3.6.1.4.1.18047.1.6.1005561512152019791&seriesUID=1.3.6.1.4.1.18047.1.6.1005561512152019792&objectUID=1.3.6.1.4.1.18047.1.6.1005561512152019793
Here is the stack trace:
2017-12-01 14:32:59,105 INFO -> (http-8443-9) [org.dcm4chex.wado.web.WADOServlet] 192.168.1.193 - WADO URL:/wado?requestType=WADO&studyUID=1.3.6.1.4.1.18047.1.6.1005561512152019791&seriesUID=1.3.6.1.4.1.18047.1.6.1005561512152019792&objectUID=1.3.6.1.4.1.18047.1.6.1005561512152019793
2017-12-01 14:32:59,105 INFO -> (http-8443-9) [org.dcm4chex.wado.mbean.WADOSupport] Get WADO object for 1.3.6.1.4.1.18047.1.6.1005561512152019793
2017-12-01 14:32:59,140 INFO -> (http-8443-9) [org.dcm4cheri.image.MonochromeParam] Detect Agfa ADC VOI LUT bug => assume VOI LUT Bit Depth = 12
2017-12-01 14:32:59,142 ERROR -> (http-8443-9) [org.dcm4chex.wado.mbean.WADOSupport] Can't read image:
java.lang.ArrayIndexOutOfBoundsException: 8192
at org.dcm4cheri.image.MonochromeParam.createInverseCMAPfrom16bitVOILUT(MonochromeParam.java:477)
at org.dcm4cheri.image.MonochromeParam.createCMAPfromVOILUT(MonochromeParam.java:328)
at org.dcm4cheri.image.MonochromeParam.newColorModel(MonochromeParam.java:236)
at org.dcm4cheri.image.ColorModelFactoryImpl.getColorModel(ColorModelFactoryImpl.java:69)
at org.dcm4cheri.imageio.plugins.DcmImageReader.getImageTypeSpecifier(DcmImageReader.java:393)
at org.dcm4cheri.imageio.plugins.DcmImageReader.getImageTypes(DcmImageReader.java:377)
at org.dcm4cheri.imageio.plugins.DcmImageReader.read(DcmImageReader.java:411)
at org.dcm4chex.wado.mbean.WADOSupport.getImage(WADOSupport.java:1381)
at org.dcm4chex.wado.mbean.WADOSupport.getBufferedImage(WADOSupport.java:892)
at org.dcm4chex.wado.mbean.WADOSupport.getImage(WADOSupport.java:858)
at org.dcm4chex.wado.mbean.WADOSupport.handleImage(WADOSupport.java:782)
at org.dcm4chex.wado.mbean.WADOSupport.getWADOObject(WADOSupport.java:385)
at org.dcm4chex.wado.mbean.WADOService.getWADOObject(WADOService.java:511)
at sun.reflect.GeneratedMethodAccessor369.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.dcm4chex.wado.web.WADOServiceDelegate.getWADOObject(WADOServiceDelegate.java:124)
at org.dcm4chex.wado.web.WADOServlet.doGet(WADOServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:420)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:745)
Any insights will be greatly appreciated. Notice that viewers like Weasis display the image correctly using the VOI LUT values.