Problem Summary
Clicking the Print button on an MDS lab opened from the E-Chart generates a getOutputStream error in version 12.1.1.
javax.servlet.ServletException: org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
Printing CML labs does not seam to generate this error.
Expected Result
On clicking the Print button on the display of an MDS/Lifelabs lab a PDF should be created suitable for Printing.
Actual Result
the following error is dispalyed
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.oscarehr.util.DbConnectionFilter.doFilter(DbConnectionFilter.java:68)
org.oscarehr.util.ResponseDefaultsFilter.doFilter(ResponseDefaultsFilter.java:69)
org.oscarehr.util.ProblemCheckFilter.doFilter(ProblemCheckFilter.java:188)
root cause
org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:527)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
oscar.oscarSecurity.LoginFilter.doFilter(LoginFilter.java:127)
net.sf.cookierevolver.servlet.CRFilterImpl.doFilter(CRFilterImpl.java:60)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.oscarehr.util.LoggedInUserFilter.doFilter(LoggedInUserFilter.java:60)
org.oscarehr.util.DbConnectionFilter.doFilter(DbConnectionFilter.java:65)
org.oscarehr.util.ResponseDefaultsFilter.doFilter(ResponseDefaultsFilter.java:69)
org.oscarehr.util.ProblemCheckFilter.doFilter(ProblemCheckFilter.java:188)
root cause
java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.catalina.connector.Response.getWriter(Response.java:610)
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
org.apache.jsp.lab.CA.ALL.labDisplay_jsp._jspService(labDisplay_jsp.java:2679)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
oscar.oscarSecurity.LoginFilter.doFilter(LoginFilter.java:127)
net.sf.cookierevolver.servlet.CRFilterImpl.doFilter(CRFilterImpl.java:60)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.oscarehr.util.LoggedInUserFilter.doFilter(LoggedInUserFilter.java:60)
org.oscarehr.util.DbConnectionFilter.doFilter(DbConnectionFilter.java:65)
org.oscarehr.util.ResponseDefaultsFilter.doFilter(ResponseDefaultsFilter.java:69)
org.oscarehr.util.ProblemCheckFilter.doFilter(ProblemCheckFilter.java:188)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.
Steps to Reproduce
1) Open an Echart of a patient with an MDS lab result
2) Click on the lab to display
3) Click on Print button
Reproduce IN
12_1 Deb 333 (fresh install) + Ubuntu 12 LTS (fresh install)
This behavior is also occurring on trunk and the feb2014 branch. As mentioned in the original report, other lab types appear to print as expected.
This issue was resolved on master with this commit: https://source.oscartools.org:8080/#/c/8991/
It is still present on 12.1.1 at this time.
Committed to RELEASE_12_1:
https://source.oscartools.org:8080/#/c/10672/
Re-tested Release 12_1 (build# 425)-> issue has been resolved