← Back to team overview

dhis2-devs team mailing list archive

Re: More on the data browser

 

2010/11/24 Jason Pickering <jason.p.pickering@xxxxxxxxx>

> Hi Hieu and Lars.
>
> After digesting our conversation this morning, I played around with
> the code and did this in StatementManagerDataBrowserStore.java
>
>
>    public Integer setCountDataElementsForOrgUnitBetweenPeriods(
> DataBrowserTable table, Integer orgUnitId,
>        List<Integer> betweenPeriodIds )
>    {
>        StatementHolder holder = statementManager.getHolder();
>
>        Integer numResults = 0;
>        StringBuffer sqlsb = new StringBuffer();
>
>        int i = 0;
>        for ( Integer periodId : betweenPeriodIds )
>        {
>            i++;
>
>            sqlsb
>                .append(  " SELECT de.dataelementid, de.name AS
> DataElement, dv.value AS counts_of_aggregated_values, p.periodid AS
> PeriodId, p.startDate AS ColumnHeader " );
>            sqlsb.append( "FROM dataelement AS de " );
>            sqlsb.append( "INNER JOIN datavalue AS dv ON
> (de.dataelementid = dv.dataelementid) " );
>            sqlsb.append( "INNER JOIN organisationunit AS o ON
> (dv.sourceid = o.organisationunitid) " );
>            sqlsb.append( "JOIN period p ON (dv.periodid = p.periodid) " );
>            sqlsb.append( "WHERE o.organisationunitid = '" + orgUnitId + "'
> " );
>            sqlsb.append( "AND dv.periodid = '" + periodId + "' " );
>
>            sqlsb.append( i == betweenPeriodIds.size() ? "ORDER BY
> PeriodId " : "\n UNION \n" );
>        }
> ...
>
> The results look something like this..
>
> Data Element    January 2010    February 2010   March 2010
> Alive on ART after 12 months (calc)     7       6       9
> Amoxicillin 125mg 5ml suspension 75ml stock out         0       0       0
> Antenatal 1st visit 20 weeks or later   39      36      46
> Antenatal 1st visit before 20 weeks     6       6       34
> Antenatal 1st visit by woman <18 years  4       3       4
> Antenatal 1st visits total (calc)       45      42      80
> Antenatal client collecting HIV test results    45      42      84
>
> The numbers here, are actual numbers, not counts. And in just a few
> clicks, I can easily extract out data for a given orgunit and time
> periods. Much simpler than going through the data mart/report
> tables.So using this workflow, we can quickly see what data is
> available for a given set of orgunits and time periods, and then
> quickly drill down to the actual data.  We could probably have two
> modes. View data and view summary. Viewing the data would provide the
> actual data, while viewing the summary could give you the counts of
> the data elements, which is not really as useful once you have
> constrained two dimensions dimensions (periodid, orgunit)
>
> Now, this is not going to work for multidimensional datasets, because
> there are not unique data elements, but for the Zambia database, which
> does not use McDonalds (category combinations, etc) this is exactly
> the sort of functionality we have been needed for a long time. A very
> quick way to quickly drill down to raw data for a given orgunit/period
> combination. The problem with the data browser at the moment, is that
> I only get counts at the end of the drill-down. In our case, I only
> get ones and zeros. 1s for anything that has been submitted, a 0 for
> anything that has not.  Getting to the data through the data entry
> forms is painful, and it is not possible to see multiple time periods.
>
> We might should think if this is desired functionality for others, and
> how to generalize it to databases with McDonalds implemented. Does not
> seem to be too difficult really, but not sure if it is desirable.
>
> Would be good to hear with others think.
>
>
Hi, just to clarify, is this stuff now aggregating data in time/space or
showing only the "raw" data?

Lars

Follow ups

References