← Back to team overview

dhis2-users team mailing list archive

Re: Some clarifications for Program indicators

 

Hi Vanya,

thanks for raising this issue - it's a good question. Having program
indicators based on a data element / attributes dates instead of event date
has come up earlier and something we will have to support.

Short story: Currently this is not possible.

Long story: The current event analytics solution has a compromise between
query performance and flexibility around dates. If you have a look at the
event analytics tables (e.g. "analytics_event_2015_ebayegv0exc") you will
see two things:

- The tables are partitioned by year (one analytics table with events per
year per program) based on event date. This reduces query time since the
indexes and tables become smaller instead of growing longer infinitely as
times goes.

- The tables have columns for all period types based on event date. This
makes it possible to aggregate all periods in a query through group-bys on
those columns, instead of having to do one query per period, and hence
improves performance a lot.

All this is great for performance but limits the analysis to be based on
event date. To partition data one needs a partition key and event date is
pretty much the only suitable candidate (in addition to program).

So to support aggregation / analytics based on any date from data
elements/attributes of the events, one must sacrifice some of this and
basically have one analytics table per program, and have one query per
aggregation period. This will soon be a very popular requirement so we will
have to support it - still pondering how to solve this in a way which
offers required performance and flexibility.


best regards,

Lars











On Tue, May 17, 2016 at 1:13 PM, Vanya Seth <vanyas@xxxxxxxxxxxxxxxx> wrote:

> Hi dhis-devs
>
> We are looking at doing some analysis for the Anonymous events. For which
> we are trying to set up some program indicators.
>
> Currently the issue that we face is that the events that DHIS2 considers
> for calculations within a specific reporting period (week, month) in event
> reports/visualizer, are the ones whose event date is within that reporting
> period.
>
> *Example of the problem*
>
> *Inpatient mortality rate*
>
> Relevant data elements: date of discharge, exit mode [death, discharged
> ...]
>
> *Requirement:*
>
> - Get all events where the discharge date was within the reporting period
> (all exits during period)
>
> - Get all events where the discharge date was within the reporting period
> and the exit mode was "death" (deaths during reporting period)
>
> - Divide deaths/all exits to get the mortality rate (indicator)
>
> As an example, if a patient gets admitted in April 2016 and hence the
> event date is in the April 2016 reporting period. Now say the patient gets
> discharged in May 2016. But this exit will be calculated in the April 2016
> reporting period due to considering the event date for analysis.
> There is no direct way in DHIS where in we can match the reporting period
> to a date based data elements for filtering out data or also include them
> in indicators.
>
> Any thoughts about how other users have solved these kind of issues would
> be much appreciated.
>
>
> --
> With Regards
> Vanya
> ThoughtWorks Technologies
> Hyderabad
>
> --Stay Hungry Stay Foolish!!
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-users
> Post to     : dhis2-users@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-users
> More help   : https://help.launchpad.net/ListHelp
>
>


-- 
Lars Helge Øverland
Lead developer, DHIS 2
University of Oslo
Skype: larshelgeoverland
lars@xxxxxxxxx
http://www.dhis2.org <https://www.dhis2.org/>

Follow ups

References