Availability of Attributes from Tracker for reporting

All,

In the context of Tracker Capture, are Attributes of a Tracked Entity available for data analysis in the Event Reports / Event Visualizer? For example, to generate a line list of Tracked Entity instances (e.g., Sex, DOB, ANC Registration Number) combined with data elements collected via Program Stages.

We ask as we have not been able to return Attributes of a Tracked Entity within these analysis modules (I will note that Data Elements of a Tracked Entity instance / Program Stage work fine so we don’t believe this is a configuration challenge).

In reviewing the documentation, we see that Attributes of a Tracked Entity are *“used to register extra private information * for a entity or information when that entity enrolled into a certain program.” The “private information” leads us to believe that Attributes would not be available in these analysis modules. If this is the case, how best can Attributes be extracted using an analysis module?

We appreciate feedback on this inquiry.

Cheers,

-Stephen

Dear Stephen,

When you use the Events report App, you can line list attributes together with the data elements collected at each stage. However if will be stage by stage not all stages at once.

In events reports choose “Events” not aggregate"

Then choose the program and stage, when attributes will be available with the stage data elements selected

image

Regards

···

On Fri, Apr 22, 2016 at 6:22 PM, Stephen Macauley Stephen.Macauley@inductivehealth.com wrote:

All,

In the context of Tracker Capture, are Attributes of a Tracked Entity available for data analysis in the Event Reports / Event Visualizer? For example, to generate a line list of Tracked Entity instances (e.g., Sex, DOB, ANC Registration Number) combined with data elements collected via Program Stages.

We ask as we have not been able to return Attributes of a Tracked Entity within these analysis modules (I will note that Data Elements of a Tracked Entity instance / Program Stage work fine so we don’t believe this is a configuration challenge).

In reviewing the documentation, we see that Attributes of a Tracked Entity are *“used to register extra private information * for a entity or information when that entity enrolled into a certain program.” The “private information” leads us to believe that Attributes would not be available in these analysis modules. If this is the case, how best can Attributes be extracted using an analysis module?

We appreciate feedback on this inquiry.

Cheers,

-Stephen

Stephen Macauley

e: stephen@inductivehealth.com


Mailing list: https://launchpad.net/~dhis2-users

Post to : dhis2-users@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-users

More help : https://help.launchpad.net/ListHelp

Prosper Behumbiize, MPH
Global HISP| University Of Oslo/HISP Uganda
+256 752 751 776 | +256 776 139 139

prosper@hispuganda.org | prosper@dhis2.org | Skype: prospertb

Thank you Prosper for your response. Your comment leads me to believe a technical / metadata problem exists.

When running a simple report in the Event Reports app (using the Events tab) that includes an Attribute, the below exception is generated in the dhis.log.

If I remove the Attribute field (just leaving Data Elements) the report generates correctly.

In reviewing the below error, the “analytics_event_2016_c0ntsvvmj0v” does exist but the “DtbhHRwlMPR” column is not included on the table (even though Analytics have been run).

-Stephen

  • INFO 2016-04-24 19:49:02,068 Query failed, likely because the requested analytics table does not exist (JdbcEventAnalyticsManager.java [http-bio-8080-exec-7])

org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [select psi,ps,executiondate,longitude,latitude,ouname,oucode,“ou”,“DtbhHRwlMPR”,“D8NZOajYO23” from analytics_event_2016_c0ntsvvmj0v where executiondate >= ‘2016-01-25’ and executiondate <= ‘2016-04-24’ and (uidlevel4 = ‘wtojO3AK4Ar’ ) and ps = ‘Klt1Zl38Mf9’ limit 100 offset 0]; nested exception is org.postgresql.util.PSQLException: ERROR: column “DtbhHRwlMPR” does not exist

Position: 67

    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:99)

    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)

    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:416)

    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:471)

    at org.springframework.jdbc.core.JdbcTemplate.queryForRowSet(JdbcTemplate.java:526)

    at org.hisp.dhis.analytics.event.data.JdbcEventAnalyticsManager.getEvents(JdbcEventAnalyticsManager.java:287)

    at org.hisp.dhis.analytics.event.data.JdbcEventAnalyticsManager.getEvents(JdbcEventAnalyticsManager.java:275)

    at org.hisp.dhis.analytics.event.data.DefaultEventAnalyticsService.getEvents(DefaultEventAnalyticsService.java:284)

    at org.hisp.dhis.webapi.controller.EventAnalyticsController.getQueryJson(EventAnalyticsController.java:326)

    at sun.reflect.GeneratedMethodAccessor1330.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:497)

    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)

    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)

    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:775)

    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)

    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965)

    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:856)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)

    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:841)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)

    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:88)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(CustomAuthenticationFilter.java:64)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:140)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(AutomaticAccessFilter.java:115)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)

    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)

    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)

    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

    at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:82)

    at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFilter.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:102)

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

    at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)

    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)

    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)

    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

    at java.lang.Thread.run(Thread.java:745)

Caused by: org.postgresql.util.PSQLException: ERROR: column “DtbhHRwlMPR” does not exist

Position: 67

    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)

    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)

    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)

    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:561)

    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:405)

    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:285)

    at com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:35)

    at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:455)

    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:405)

    ... 99 more

image

···

Dear Stephen,

When you use the Events report App, you can line list attributes together with the data elements collected at each stage. However if will be stage by stage not all stages at once.

In events reports choose “Events” not aggregate"

Then choose the program and stage, when attributes will be available with the stage data elements selected

Regards

On Fri, Apr 22, 2016 at 6:22 PM, Stephen Macauley Stephen.Macauley@inductivehealth.com wrote:

All,

In the context of Tracker Capture, are Attributes of a Tracked Entity available for data analysis in the Event Reports / Event Visualizer? For example, to generate a line list of Tracked Entity instances (e.g., Sex, DOB, ANC Registration Number) combined with data elements collected via Program Stages.

We ask as we have not been able to return Attributes of a Tracked Entity within these analysis modules (I will note that Data Elements of a Tracked Entity instance / Program Stage work fine so we don’t believe this is a configuration challenge).

In reviewing the documentation, we see that Attributes of a Tracked Entity are *“*used to register extra private information for a entity or information when that entity enrolled into a certain program.” The “private information” leads us to believe that Attributes would not be available in these analysis modules. If this is the case, how best can Attributes be extracted using an analysis module?

We appreciate feedback on this inquiry.

Cheers,

-Stephen

Stephen Macauley

e: stephen@inductivehealth.com


Mailing list: https://launchpad.net/~dhis2-users

Post to : dhis2-users@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-users

More help : https://help.launchpad.net/ListHelp

Prosper Behumbiize, MPH

Global HISP| University Of Oslo/HISP Uganda

+256 752 751 776 | +256 776 139 139

prosper@hispuganda.org | prosper@dhis2.org | Skype: prospertb