diff --git a/api/src/main/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAO.java b/api/src/main/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAO.java index 5a10541..66f58b6 100644 --- a/api/src/main/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAO.java +++ b/api/src/main/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAO.java @@ -184,8 +184,18 @@ public String evaluateDataValueTemplate( DataValueTemplate dvt, Period period, L { query.setParameter( "locationId", location.getId().toString() ); } - query.setParameter( "startOfPeriod", period.getStartDate() ); - query.setParameter( "endOfPeriod", period.getEndDate() ); + if ( parameters.contains( "startOfPeriod" ) ) + { + query.setParameter( "startOfPeriod", period.getStartDate() ); + } + if ( parameters.contains( "endOfPeriod" ) ) + { + query.setParameter( "endOfPeriod", period.getEndDate() ); + } + if ( !parameters.contains( "startOfPeriod" ) && !parameters.contains( "endOfPeriod" ) ) + { + return "NoParam"; + } return query.uniqueResult().toString(); } diff --git a/api/src/test/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAOTest.java b/api/src/test/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAOTest.java index 3ac7ee5..8bd6a6c 100644 --- a/api/src/test/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAOTest.java +++ b/api/src/test/java/org/openmrs/module/dhisreport/api/db/hibernate/HibernateDHIS2ReportingDAOTest.java @@ -86,6 +86,18 @@ public void shouldevaluateDataValueTemplate() assertEquals("3", dvs); } } + + for ( ReportDefinition rd : rds ) + { + for ( DataValueTemplate r : rd.getDataValueTemplates() ) + { + String query = "select count(distinct p.person_id) from person p inner join obs o on o.person_id = p.person_id\n" + + "where p.voided = 0 and o.voided = 0 and o.concept_id = 1425 and o.value_numeric = 4"; + r.setQuery( query ); + String dvs = dao.evaluateDataValueTemplate( r, period, location ); + assertEquals( "NoParam", dvs ); + } + } } @Test diff --git a/omod/src/main/java/org/openmrs/module/dhisreport/web/controller/ReportController.java b/omod/src/main/java/org/openmrs/module/dhisreport/web/controller/ReportController.java index e1850ae..c7c00d8 100644 --- a/omod/src/main/java/org/openmrs/module/dhisreport/web/controller/ReportController.java +++ b/omod/src/main/java/org/openmrs/module/dhisreport/web/controller/ReportController.java @@ -444,8 +444,16 @@ AdxType getAdxType( DataValueSet dvs, String timeperiod ) { DataValueType dvtype = new DataValueType(); dvtype.setDataElement( dv.getDataElement() ); - dvtype.setValue( new BigDecimal( dv.getValue() ) ); + try + { + BigDecimal bd = new BigDecimal( dv.getValue() ); + dvtype.setValue( bd ); dvTypeList.add( dvtype ); + } + catch ( NumberFormatException e ) + { + dvTypeList.add( null ); + } } gt.getDataValue().addAll( dvTypeList ); gt.setOrgUnit( dvs.getOrgUnit() ); diff --git a/omod/src/main/resources/messages.properties b/omod/src/main/resources/messages.properties index 10f04a9..f5209f5 100644 --- a/omod/src/main/resources/messages.properties +++ b/omod/src/main/resources/messages.properties @@ -100,4 +100,5 @@ ${project.parent.artifactId}.openMRSLocationMapped = OpenMRS Location is Mapped ${project.parent.artifactId}.openMRSLocationDoesNotExist = OpenMRS Location Does Not Exists. ${project.parent.artifactId}.orgUnitCodeDoesNotExist = "Code" Attribute in DHIS2 ORG UNIT is not set. Please set it and then try Mapping. -${project.parent.artifactId}.editReportMapping = Edit Report Mapping \ No newline at end of file +${project.parent.artifactId}.editReportMapping = Edit Report Mapping +${project.parent.artifactId}.missingParameters = Parameters missing \ No newline at end of file diff --git a/omod/src/main/webapp/executeReport.jsp b/omod/src/main/webapp/executeReport.jsp index 5a35280..cd07841 100644 --- a/omod/src/main/webapp/executeReport.jsp +++ b/omod/src/main/webapp/executeReport.jsp @@ -36,7 +36,12 @@ ${dvm.key.name} ${dvm.key.code} - ${dvm.value} + + ${dvm.value} + + +
+