dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #11719
Re: Jasper reports/Passing the JDBC connection
*>2011/4/15 Lars Helge Øverland <larshelge@xxxxxxxxx>*
*>Hm. What version of iReport are you using*
*
*
*Product Version:* Jaspersoft iReport Designer 4.0.0
*Java:* 1.6.0_22; Java HotSpot(TM) Client VM 17.1-b03
*System:* Windows 7 version 6.1 running on x86; Cp1252; en_US (ireport)
*Userdir:* C:\Users\jason\.ireport\4.0.0
> ? If you have any jasper jars in tomcat/lib try temporarily removing them.
Nope.
> If you have any fancy styling of fonts in your report try temporarily
> removing that too.
What counts as fancy?Rotation of the x-axis category labels perhaps?
Here is the report.
Regards,
Jason
>
> 2011/4/15 Jason Pickering <jason.p.pickering@xxxxxxxxx>
>
>> Cool. Thanks makes this much easier.
>>
>> I tried that and got this from rev 2977 (2.1). Missing JAR perhaps?
>>
>>
>> Regards,
>> Jason
>>
>>
>> * ERROR 14:23:47,140 Error while executing action
>> (ExceptionInterceptor.java [ajp-8009-2])
>> java.lang.reflect.InvocationTargetException
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:616)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
>> at
>> org.hisp.dhis.webportal.interceptor.XWorkPortalUserInterceptor.intercept(XWorkPortalUserInterceptor.java:82)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.webportal.interceptor.XWorkPortalModuleInterceptor.intercept(XWorkPortalModuleInterceptor.java:85)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.webportal.interceptor.XWorkPortalMenuInterceptor.intercept(XWorkPortalMenuInterceptor.java:91)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.webportal.interceptor.XWorkPortalParamsInterceptor.intercept(XWorkPortalParamsInterceptor.java:117)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.interceptor.ContextInterceptor.intercept(ContextInterceptor.java:70)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.interceptor.StyleInterceptor.intercept(StyleInterceptor.java:107)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.interceptor.SystemSettingInterceptor.intercept(SystemSettingInterceptor.java:94)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.interceptor.DisplayPropertyInterceptor.intercept(DisplayPropertyInterceptor.java:90)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.interceptor.SortOrderInterceptor.intercept(SortOrderInterceptor.java:124)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.security.intercept.XWorkSecurityInterceptor.intercept(XWorkSecurityInterceptor.java:98)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:141)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
>> at
>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.hisp.dhis.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:98)
>> at
>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
>> at
>> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
>> at
>> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
>> at
>> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>> at
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
>> at
>> org.hisp.dhis.security.filter.RequiredLoginFilter.doFilter(RequiredLoginFilter.java:129)
>> at
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>> at
>> org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(AutomaticAccessFilter.java:112)
>> at
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>> at
>> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
>> at
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>> at
>> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
>> at
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>> at
>> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
>> at
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
>> at
>> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
>> at
>> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
>> at
>> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>> at
>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
>> at
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>> 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:233)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>> 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.ajp.AjpAprProcessor.process(AjpAprProcessor.java:427)
>> at
>> org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:384)
>> at
>> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
>> at java.lang.Thread.run(Thread.java:636)
>> Caused by: java.lang.NoClassDefFoundError: Could not initialize class
>> net.sf.jasperreports.engine.util.JRStyledTextParser
>> at
>> net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:182)
>> at
>> net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
>> at
>> net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:87)
>> at
>> net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
>> at
>> net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
>> at
>> net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)
>> at
>> net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
>> at
>> org.hisp.dhis.reporting.reportviewer.action.RenderReportAction.execute(RenderReportAction.java:147)
>> at
>> org.hisp.dhis.util.StreamActionSupport.execute(StreamActionSupport.java:63)
>> ... 73 more
>>
>>
>> 2011/4/15 Lars Helge Øverland <larshelge@xxxxxxxxx>
>>
>>>
>>> Hi,
>>>
>>> just make sure you do not associate the report with any report tables
>>> when you create the report in DHIS.
>>>
>>> The application will detect this, assume that the report has a jdbc
>>> datasource and provide the jasper report engine with the jdbc connection to
>>> the current database.
>>>
>>>
>>> Lars
>>>
>>>
>>>
>>> On Fri, Apr 15, 2011 at 4:13 PM, Jason Pickering <
>>> jason.p.pickering@xxxxxxxxx> wrote:
>>>
>>>> Hi there. I am in the midst of developing a series of reports with
>>>> Jasper, and not surprisingly, I am using SQL for most of the development of
>>>> the results sets which will feed the data to the report.
>>>>
>>>> One thing I am not certain on is how to pass the JDBC connection to the
>>>> report. I assume this would involve Struts or some other Java mojo.
>>>>
>>>> Has anyone done this with DHIS2 and can maybe point me in the right
>>>> direction?
>>>>
>>>> Regards,
>>>> Jason
>>>>
>>>>
>>>> --
>>>> Jason P. Pickering
>>>> email: jason.p.pickering@xxxxxxxxx
>>>> tel:+260974901293
>>>>
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>> More help : https://help.launchpad.net/ListHelp
>>>>
>>>>
>>>
>>
>>
>> --
>> Jason P. Pickering
>> email: jason.p.pickering@xxxxxxxxx
>> tel:+260974901293
>>
>
>
--
Jason P. Pickering
email: jason.p.pickering@xxxxxxxxx
tel:+260974901293
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="MalariaProfile" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<subDataset name="ip_malaria">
<queryString language="SQL">
<![CDATA[SELECT de.name, p.startdate, dv.value FROM aggregateddatavalue dv
INNER JOIN dataelement de ON de.name ~* ('In-patient malaria') and dv.dataelementid = de.dataelementid
INNER JOIN period p on dv.periodid = p.periodid
WHERE p.periodid in
(SELECT periodid from period where periodtypeid IN (SELECT periodtypeid from periodtype
where name IN ('Monthly','Quarterly')))
AND dv.level = 1
ORDER BY name, startdate]]>
</queryString>
<field name="name" class="java.lang.String"/>
<field name="startdate" class="java.sql.Date"/>
<field name="value" class="java.lang.Double"/>
</subDataset>
<subDataset name="opd_clinical_cases">
<queryString language="SQL">
<![CDATA[SELECT de.name, p.startdate, dv.value FROM aggregateddatavalue dv
INNER JOIN dataelement de ON dv.dataelementid = de.dataelementid
INNER JOIN period p on dv.periodid = p.periodid
WHERE p.periodid in
(SELECT periodid from period where periodtypeid IN (SELECT periodtypeid from periodtype
where name IN ('Monthly','Quarterly')))
AND dv.level = 1
AND de.name ~*('Total OPD Attendance') or de.name ~*('OPD 1st Attendance Clinical Case of Malaria total')
ORDER BY name, startdate]]>
</queryString>
<field name="name" class="java.lang.String"/>
<field name="startdate" class="java.sql.Date"/>
<field name="value" class="java.lang.Double"/>
</subDataset>
<subDataset name="suspected_tested">
<queryString language="SQL">
<![CDATA[SELECT de.name, p.startdate, dv.value FROM aggregateddatavalue dv
INNER JOIN dataelement de ON dv.dataelementid = de.dataelementid
INNER JOIN period p on dv.periodid = p.periodid
WHERE p.periodid in
(SELECT periodid from period where periodtypeid IN (SELECT periodtypeid from periodtype
where name IN ('Monthly','Quarterly')))
AND dv.level = 1
AND de.name ~*('OPD 1st Attendance Confirmed Malaria total')
UNION
SELECT i.name, p.startdate, dv.value FROM aggregatedindicatorvalue dv
INNER JOIN indicator i ON i.name ~*('Percentage of suspected cases tested') and dv.indicatorid = i.indicatorid
INNER JOIN period p on dv.periodid = p.periodid
WHERE p.periodid in
(SELECT periodid from period where periodtypeid IN (SELECT periodtypeid from periodtype
where name IN ('Monthly','Quarterly')))
AND dv.level = 1
ORDER BY name, startdate]]>
</queryString>
<field name="name" class="java.lang.String"/>
<field name="startdate" class="java.sql.Date"/>
<field name="value" class="java.lang.Double"/>
</subDataset>
<queryString>
<![CDATA[SELECT i.name, p.startdate, dv.value FROM aggregatedindicatorvalue dv
INNER JOIN indicator i ON i.name ~*('Test positivity rate') and dv.indicatorid = i.indicatorid
INNER JOIN period p on dv.periodid = p.periodid
WHERE p.periodid in
(SELECT periodid from period where periodtypeid IN (SELECT periodtypeid from periodtype
where name IN ('Monthly','Quarterly')))
AND dv.level = 1
ORDER BY name, startdate]]>
</queryString>
<field name="name" class="java.lang.String"/>
<field name="startdate" class="java.sql.Date"/>
<field name="value" class="java.lang.Double"/>
<background>
<band splitType="Stretch"/>
</background>
<summary>
<band height="802" splitType="Stretch">
<timeSeriesChart>
<chart>
<reportElement x="0" y="0" width="271" height="217"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend position="Top"/>
</chart>
<timeSeriesDataset timePeriod="Month">
<timeSeries>
<seriesExpression><![CDATA[$F{name}]]></seriesExpression>
<timePeriodExpression><![CDATA[$F{startdate}]]></timePeriodExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</timeSeries>
</timeSeriesDataset>
<timeSeriesPlot>
<plot/>
<timeAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</timeAxisFormat>
<valueAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</valueAxisFormat>
</timeSeriesPlot>
</timeSeriesChart>
<multiAxisChart>
<chart>
<reportElement isPrintRepeatedValues="false" x="282" y="0" width="273" height="217"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend position="Top"/>
</chart>
<multiAxisPlot>
<plot labelRotation="90.0"/>
<axis>
<timeSeriesChart>
<chart>
<reportElement x="0" y="0" width="0" height="0" backcolor="#FFFFFF"/>
<chartTitle color="#000000"/>
<chartSubtitle color="#000000"/>
<chartLegend textColor="#000000" backgroundColor="#FFFFFF" position="Top"/>
</chart>
<timeSeriesDataset timePeriod="Month">
<dataset>
<incrementWhenExpression><![CDATA[$F{name}.equalsIgnoreCase( "[CDE] In-patient malaria cases, <5 years" )]]></incrementWhenExpression>
<datasetRun subDataset="ip_malaria"/>
</dataset>
<timeSeries>
<seriesExpression><![CDATA[$F{name}]]></seriesExpression>
<timePeriodExpression><![CDATA[$F{startdate}]]></timePeriodExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</timeSeries>
</timeSeriesDataset>
<timeSeriesPlot>
<plot/>
<timeAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</timeAxisFormat>
<valueAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</valueAxisFormat>
</timeSeriesPlot>
</timeSeriesChart>
</axis>
<axis position="rightOrBottom">
<timeSeriesChart>
<chart>
<reportElement x="0" y="0" width="0" height="0" backcolor="#FFFFFF"/>
<chartTitle color="#000000"/>
<chartSubtitle color="#000000"/>
<chartLegend textColor="#000000" backgroundColor="#FFFFFF" position="Top"/>
</chart>
<timeSeriesDataset timePeriod="Month">
<dataset>
<incrementWhenExpression><![CDATA[$F{name}.equalsIgnoreCase( "[CDE] In-patient malaria deaths, <5 years" )]]></incrementWhenExpression>
<datasetRun subDataset="ip_malaria"/>
</dataset>
<timeSeries>
<seriesExpression><![CDATA[$F{name}]]></seriesExpression>
<timePeriodExpression><![CDATA[$F{startdate}]]></timePeriodExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</timeSeries>
</timeSeriesDataset>
<timeSeriesPlot>
<plot/>
<timeAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</timeAxisFormat>
<valueAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</valueAxisFormat>
</timeSeriesPlot>
</timeSeriesChart>
</axis>
</multiAxisPlot>
</multiAxisChart>
<multiAxisChart>
<chart>
<reportElement x="282" y="225" width="273" height="217"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend position="Bottom"/>
</chart>
<multiAxisPlot>
<plot/>
<axis>
<timeSeriesChart>
<chart>
<reportElement x="0" y="0" width="0" height="0" backcolor="#FFFFFF"/>
<chartTitle color="#000000"/>
<chartSubtitle color="#000000"/>
<chartLegend textColor="#000000" backgroundColor="#FFFFFF" position="Bottom"/>
</chart>
<timeSeriesDataset timePeriod="Month">
<dataset>
<incrementWhenExpression><![CDATA[$F{name}.equalsIgnoreCase( "Total OPD Attendance " )]]></incrementWhenExpression>
<datasetRun subDataset="opd_clinical_cases"/>
</dataset>
<timeSeries>
<seriesExpression><![CDATA[$F{name}]]></seriesExpression>
<timePeriodExpression><![CDATA[$F{startdate}]]></timePeriodExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</timeSeries>
</timeSeriesDataset>
<timeSeriesPlot>
<plot/>
<timeAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</timeAxisFormat>
<valueAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</valueAxisFormat>
</timeSeriesPlot>
</timeSeriesChart>
</axis>
<axis position="rightOrBottom">
<timeSeriesChart>
<chart>
<reportElement x="0" y="0" width="0" height="0" backcolor="#FFFFFF"/>
<chartTitle color="#000000"/>
<chartSubtitle color="#000000"/>
<chartLegend textColor="#000000" backgroundColor="#FFFFFF" position="Bottom"/>
</chart>
<timeSeriesDataset timePeriod="Month">
<dataset>
<incrementWhenExpression><![CDATA[$F{name}.equalsIgnoreCase( "OPD 1st Attendance Clinical Case of Malaria total" )]]></incrementWhenExpression>
<datasetRun subDataset="opd_clinical_cases"/>
</dataset>
<timeSeries>
<seriesExpression><![CDATA[$F{name}]]></seriesExpression>
<timePeriodExpression><![CDATA[$F{startdate}]]></timePeriodExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</timeSeries>
</timeSeriesDataset>
<timeSeriesPlot>
<plot/>
<timeAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</timeAxisFormat>
<valueAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</valueAxisFormat>
</timeSeriesPlot>
</timeSeriesChart>
</axis>
</multiAxisPlot>
</multiAxisChart>
<multiAxisChart>
<chart>
<reportElement x="0" y="225" width="271" height="217"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend position="Bottom"/>
</chart>
<multiAxisPlot>
<plot/>
<axis>
<timeSeriesChart>
<chart>
<reportElement x="0" y="0" width="0" height="0" backcolor="#FFFFFF"/>
<chartTitle color="#000000"/>
<chartSubtitle color="#000000"/>
<chartLegend textColor="#000000" backgroundColor="#FFFFFF" position="Bottom"/>
</chart>
<timeSeriesDataset timePeriod="Quarter">
<dataset>
<incrementWhenExpression><![CDATA[$F{name}.equalsIgnoreCase( "OPD 1st Attendance Confirmed Malaria total" )]]></incrementWhenExpression>
<datasetRun subDataset="suspected_tested"/>
</dataset>
<timeSeries>
<seriesExpression><![CDATA[$F{name}]]></seriesExpression>
<timePeriodExpression><![CDATA[$F{startdate}]]></timePeriodExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</timeSeries>
</timeSeriesDataset>
<timeSeriesPlot>
<plot/>
<timeAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</timeAxisFormat>
<valueAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</valueAxisFormat>
</timeSeriesPlot>
</timeSeriesChart>
</axis>
<axis position="rightOrBottom">
<timeSeriesChart>
<chart>
<reportElement x="0" y="0" width="0" height="0" backcolor="#FFFFFF"/>
<chartTitle color="#000000"/>
<chartSubtitle color="#000000"/>
<chartLegend textColor="#000000" backgroundColor="#FFFFFF" position="Bottom"/>
</chart>
<timeSeriesDataset>
<dataset>
<incrementWhenExpression><![CDATA[$F{name}.equalsIgnoreCase( "Percentage of suspected cases tested - HMIS" )]]></incrementWhenExpression>
<datasetRun subDataset="suspected_tested"/>
</dataset>
<timeSeries>
<seriesExpression><![CDATA[$F{name}]]></seriesExpression>
<timePeriodExpression><![CDATA[$F{startdate}]]></timePeriodExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</timeSeries>
</timeSeriesDataset>
<timeSeriesPlot>
<plot/>
<timeAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</timeAxisFormat>
<valueAxisFormat>
<axisFormat>
<labelFont/>
<tickLabelFont/>
</axisFormat>
</valueAxisFormat>
</timeSeriesPlot>
</timeSeriesChart>
</axis>
</multiAxisPlot>
</multiAxisChart>
</band>
</summary>
</jasperReport>
References