← Back to team overview

dhis2-devs team mailing list archive

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