← Back to team overview

dhis2-devs team mailing list archive

Re: defining datavalueset reports for dhis2 web api

 

On 16 July 2012 15:21, Bob Jolliffe <bobjolliffe@xxxxxxxxx> wrote:
>
>
> If you just want the specification for a single datavalueset template
> then you really do just need the list of dataelements for that
> datavalueset.  Notice that you do already have that list of required
> dataelements in the dataset xml - unfortunately this list format (it
> is generic for all identifiable objects)  doesn't contain the
> categorycombo so a bit of duplication is required.
>

Yes, I was thinking if this duplication can be avoided. So only the
required disAggregations are received...


> There should.  I was assuming "numeric" but I guess that is not fair.
>

Although the type might be dataType like you did in the next xslt, it'd
still not be able to do the xforms/javarosa-style xforms because its
datatype and not viewtype. Like I could represent a multi-select through
checkbox or list etc. So, that case of having view-representation is still
missing.


> I agree that the client's life could be made easier if such a
> transform was done on the server side.  I just put this out as a
> feeler to see if people who are building dxf2 clients might find it
> useful.   Of course its not a big problem to do on the client side and
> has the advantage of not needing to build consensus around what a
> "standard" representation should be.  But such a representation
> available from the server could make building clients even easier.
>

xslt is fairly memory intensive because its in-memory. The newest XSLT 3.0
standard brings streaming, but that's not what you are using. This means
that clients need a lot of memory on large transforms and I'm thinking of
mobile when I was referring to be able to get this transform done on the
server-side.


> Where would you map it?  If you want to get all the reports like I
> have done then something like "application/reportTemplate+xml" on
> metadata url might do,  The idea being that a client could read in the
> list which templates it wanted to configure/save.
>
> Slightly more chatty but maybe also sensible (but I think maybe more
> complicated to implement), would be to use
> "application/reportTemplate+xml" on the dataset url (with the
> restricted list of dataelements).
>

a small nitpick that mime-types are generally not camelCase.
Yes, but we could have the client configure/save the XSLT on the server and
on next calls get that response only. Sadly, javarosa-xforms uses text/xml
and nothing more specific :-( . Some mobile client could nicely send an
XSLT for JSON and get that representation from the server for
reportTempate??

---
Regards,
Saptarshi PURKAYASTHA

My Tech Blog:  http://sunnytalkstech.blogspot.com
You Live by CHOICE, Not by CHANCE


>
> Bob
>
> >
> > ---
> > Regards,
> > Saptarshi PURKAYASTHA
> >
> > My Tech Blog:  http://sunnytalkstech.blogspot.com
> > You Live by CHOICE, Not by CHANCE
> >
> >
> > On 16 July 2012 12:57, Bob Jolliffe <bobjolliffe@xxxxxxxxx> wrote:
> >>
> >> Sharing some thoughts about using the web-api for facility reporting
> ....
> >>
> >> Setting up a client to produce datavalueset reports using the web api
> >> gets a bit complicated when you are using categorycombos.  The problem
> >> is that you can retrieve the metadata for a dataset, but that just
> >> gives you the list of dataelements to report - but finding out which
> >> categoryoptioncombos are required for each dataelement involves quite
> >> a bit more querying of the api.
> >>
> >> Creating an sdmx style data structure definition is difficult because
> >> of the "raggedness" of our datasets (they are not neat datacubes with
> >> uniform dimensionality).  So another way to approach this is to
> >> acquire report templates for each datavalueset - ie. retrieve the
> >> template from dhis and the client is then only required to configure
> >> itself to provide the values for each row in the template.
> >>
> >> The web api doesn't provide these directly, but they are easy enough
> >> to generate off the metadata.  At a minimum you require the datasets,
> >> the dataelements and the categoryoptioncombos.  If the client is a
> >> facility based system (like openmrs) then its really not necessary to
> >> get the list of 1000's of orgunits.
> >>
> >> Using the attached xsl and the url below is my first stab at this:
> >>
> >> curl -v -X GET -u admin:district
> >>
> >> "
> http://apps.dhis2.org/demo/api/metaData.xml?assumeTrue=false&categoryOptionCombos=true&dataElements=true&dataSets=true
> "
> >> | xsltproc dxf2template.xslt - |xmllint --format -
> >>
> >> The resulting output (also attached) is I think the minimum
> >> information required to fully configure a datavalueset producer based
> >> on a template, using dxf2, sdmx, csv, xforms  or what have you.  I am
> >> assuming that a facility already 'knows' its facility identifier or
> >> code.
> >>
> >> Bob
> >>
> >> _______________________________________________
> >> 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
> >>
> >
>

Follow ups

References