Analytics history

Hi all,

Imagine that you have a National Implementation of DHIS2 using 4 levels hierarchy Country > Province > District > Health Unit. Suddenly, the law changes, and you have to reorganize all the structure, new provinces, new districts and some Health Units need to be moved from one District into another.

Create, delete and Updated OU is not a problem, as well as move Health Units from one District to another. The problem is how keep Analytics history? Is it possible somehow?

Regards,

Paulo Grácio
Technical Manager
(+258) 822 544 603

Skype: paulojrgracio

Critical Software Mozambique
Dependable Technologies for Critical Systems

Critical Software Mozambique is a subsidiary of Critical Software, a CMMI® Level 5 rated Company
CMMI® is registered in the USPTO by CMU

Rua Pereira Marinho, 179
Bairro de Sommerchield
Maputo
Moçambique
Phone: (+258) 214 951 45
Fax: (+258) 214 951 46

DISCLAIMER: This message is confidential and may contain privileged information. It is for use only by the people or entities to whom it is addressed. If you are not an intended recipient, you should not disclose, distribute, copy, print, rely on or otherwise make use of this message. If an addressing or transmission error has misdirected it to you we would be grateful if you would please notify the sender by return, before deleting it from your system.

Hi Paulo,

We have the same challenges in the Philippines. Once a year (or sometimes more often), villages will disappear or merge or both.

To this, there is still no “official solution” although some agencies (not the one responsible for the disappearances and mergings) have come up with their own temporary fixes.

One such solution is to maintain a time-stamped version of the org units. And creating a separate table (almost like a data warehouse) using UIDs hashed from the timestamps and the village_ids.

I believe this solution is far from perfect but we make do with what we can. Can DHIS2 retain these org unit changes in memory?

alvin

···

On Tue, Oct 15, 2013 at 3:29 AM, Paulo Grácio pgracio@criticalsoftware.com wrote:

Hi all,

Imagine that you have a National Implementation of DHIS2 using 4 levels hierarchy Country > Province > District > Health Unit. Suddenly, the law changes, and you have to reorganize all the structure, new provinces, new districts and some Health Units need to be moved from one District into another.

Create, delete and Updated OU is not a problem, as well as move Health Units from one District to another. The problem is how keep Analytics history? Is it possible somehow?

Regards,

Paulo Grácio

Technical Manager
(+258) 822 544 603

Skype: paulojrgracio

Critical Software Mozambique

Dependable Technologies for Critical Systems

Critical Software Mozambique is a subsidiary of Critical Software, a CMMI® Level 5 rated Company

CMMI® is registered in the USPTO by CMU

Rua Pereira Marinho, 179
Bairro de Sommerchield
Maputo
Moçambique
Phone: (+258) 214 951 45

Fax: (+258) 214 951 46

DISCLAIMER: This message is confidential and may contain privileged information. It is for use only by the people or entities to whom it is addressed. If you are not an intended recipient, you should not disclose, distribute, copy, print, rely on or otherwise make use of this message. If an addressing or transmission error has misdirected it to you we would be grateful if you would please notify the sender by return, before deleting it from your system.


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

Its an interesting problem. I know the Ghana Health Service has gone through this pain recently enough with substantial district boundary reorganisation. They might want to comment on their experience to date.

One observation worth making is that it is more rare for health facilities (points) to come and go as it is with administrative layers (polygons). So after you have gone through one of those dreaded boundary reshuffles and the dust has settled, usually the facilities are still there but shuffled under new parents.

In general it is probably more useful when comparing current with historical trends for example, to be able to generate the analytics tables for the past as if they existed within the boundaries of the present. So if 2 districts have become 3 in 2013, it is hard to find a sensible way to look at the current district level data in relation to past performance unless you imagine those districts also existed back then.

In terms of rolling back the time machine (and the above exercise could also be done in reverse - how are we doing now on the basis of last years boundaries?) I agree there is not a perfect solution. My own inclination (and Alvin I’ve briefly discussed this with you) would be to archive the xml metadata in an xml database periodically and also before cataclysmic changes. This way it would be relatively trivial to recall versioned snapshots of, for example, orgunit metadata and import and apply them to current data.

···

We do (I hope we do) routine and automated backups as a matter of course. Perhaps including a metadata snapshot as part of that scheduled job (curl to the /aip/metaData endpoint) piped into an xml database is a useful addition to the general db backup.

Caveat: this is completely speculative and I haven’t done this anywhere.

Bob

On 14 October 2013 20:49, Alvin Marcelo alvin.marcelo@gmail.com wrote:

Hi Paulo,

We have the same challenges in the Philippines. Once a year (or sometimes more often), villages will disappear or merge or both.

To this, there is still no “official solution” although some agencies (not the one responsible for the disappearances and mergings) have come up with their own temporary fixes.

One such solution is to maintain a time-stamped version of the org units. And creating a separate table (almost like a data warehouse) using UIDs hashed from the timestamps and the village_ids.

I believe this solution is far from perfect but we make do with what we can. Can DHIS2 retain these org unit changes in memory?

alvin


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

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

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

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

On Tue, Oct 15, 2013 at 3:29 AM, Paulo Grácio pgracio@criticalsoftware.com wrote:

Hi all,

Imagine that you have a National Implementation of DHIS2 using 4 levels hierarchy Country > Province > District > Health Unit. Suddenly, the law changes, and you have to reorganize all the structure, new provinces, new districts and some Health Units need to be moved from one District into another.

Create, delete and Updated OU is not a problem, as well as move Health Units from one District to another. The problem is how keep Analytics history? Is it possible somehow?

Regards,

Paulo Grácio

Technical Manager
(+258) 822 544 603

Skype: paulojrgracio

Critical Software Mozambique

Dependable Technologies for Critical Systems

Critical Software Mozambique is a subsidiary of Critical Software, a CMMI® Level 5 rated Company

CMMI® is registered in the USPTO by CMU

Rua Pereira Marinho, 179
Bairro de Sommerchield
Maputo
Moçambique
Phone: (+258) 214 951 45

Fax: (+258) 214 951 46

DISCLAIMER: This message is confidential and may contain privileged information. It is for use only by the people or entities to whom it is addressed. If you are not an intended recipient, you should not disclose, distribute, copy, print, rely on or otherwise make use of this message. If an addressing or transmission error has misdirected it to you we would be grateful if you would please notify the sender by return, before deleting it from your system.


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

Hi Alvin,

its a good point and something we have been thinking about for a while. This is something that we definitely need to act on soon.

The challenge is to find a sensible level of detail for what to store, as there are costs in terms of i) system complexity and ii) aggregation performance degradation involved here. For example, if facilities are moved around in administrative boundaries every month, how do you calculate the yearly total for the whole province?

My suggestion, as a reasonable trade-off, would be to create snapshots of the organisation unit hierarchy at the end of each year. These snapshots are then used for analytics queries for past data. So for instance if you query today for “last 12 months”, it would use the current “live” organisation unit hierarchy for months Jan-Sept 2013, then the “2012 snapshot” hierarchy for months Oct-Dec 2012.

On an implementation note, this will fit well the analytics solution where data is partitioned across years - each data partition will have a corresponding org unit hierarchy, making aggregation simple.

Lars

Lars,

I like this approach. Fundamentally, it boils down to local policy and it would help policy writers if we can give them templates on how this can be done. Come to think of it, are there policy templates for DHIS2 implementations? They were my weak areas when I was trying to implement it at PhilHealth…

Although I knew ours will not be exactly the same as other countries’ implementations, there would be similarities which we could “replicate as base document” and customize…

alvin

···

On Mon, Oct 21, 2013 at 10:49 PM, Lars Helge Øverland larshelge@gmail.com wrote:

Hi Alvin,

its a good point and something we have been thinking about for a while. This is something that we definitely need to act on soon.

The challenge is to find a sensible level of detail for what to store, as there are costs in terms of i) system complexity and ii) aggregation performance degradation involved here. For example, if facilities are moved around in administrative boundaries every month, how do you calculate the yearly total for the whole province?

My suggestion, as a reasonable trade-off, would be to create snapshots of the organisation unit hierarchy at the end of each year. These snapshots are then used for analytics queries for past data. So for instance if you query today for “last 12 months”, it would use the current “live” organisation unit hierarchy for months Jan-Sept 2013, then the “2012 snapshot” hierarchy for months Oct-Dec 2012.

On an implementation note, this will fit well the analytics solution where data is partitioned across years - each data partition will have a corresponding org unit hierarchy, making aggregation simple.

Lars

Hi Alvin,

Thanks for valuable input - we have tried to amass “best practice” guidelines in the implementation manual, but I’m sure it would be useful to have “policy templates” as well. Given your experience, could you perhaps detail a bit more what you think such templates should look like? And what topics you think should be covered?

Cheers,

Knut

···

On Tue, Oct 22, 2013 at 12:32 AM, Alvin Marcelo alvin.marcelo@gmail.com wrote:

Lars,

I like this approach. Fundamentally, it boils down to local policy and it would help policy writers if we can give them templates on how this can be done. Come to think of it, are there policy templates for DHIS2 implementations? They were my weak areas when I was trying to implement it at PhilHealth…

Although I knew ours will not be exactly the same as other countries’ implementations, there would be similarities which we could “replicate as base document” and customize…

alvin


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

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

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

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


Knut Staring

Dept. of Informatics, University of Oslo

+4791880522

http://dhis2.org

On Mon, Oct 21, 2013 at 10:49 PM, Lars Helge Øverland larshelge@gmail.com wrote:

Hi Alvin,

its a good point and something we have been thinking about for a while. This is something that we definitely need to act on soon.

The challenge is to find a sensible level of detail for what to store, as there are costs in terms of i) system complexity and ii) aggregation performance degradation involved here. For example, if facilities are moved around in administrative boundaries every month, how do you calculate the yearly total for the whole province?

My suggestion, as a reasonable trade-off, would be to create snapshots of the organisation unit hierarchy at the end of each year. These snapshots are then used for analytics queries for past data. So for instance if you query today for “last 12 months”, it would use the current “live” organisation unit hierarchy for months Jan-Sept 2013, then the “2012 snapshot” hierarchy for months Oct-Dec 2012.

On an implementation note, this will fit well the analytics solution where data is partitioned across years - each data partition will have a corresponding org unit hierarchy, making aggregation simple.

Lars

Hi Knut,

Here are what we needed in PhilHealth but I could not get enough experienced writers (locally) to do:

  1. Guidelines for routine reporting. This may contain things such as:
  • All official reports are generated _____ monthly for “facilities”, quarterly for “districts” and “provinces”, and annually for “regions” and “national”.

  • All facilities are expected to complete their submissions no later than the 5th day of the following month (eg, complete reports submitted on or before Fenruary 5 for January)

  • A national management team will be formed composed of: __, __, __ with the following roles and responsibilities:

  • A regional management team will be formed composed of:

  • A provincial management team will be composed of:

  1. Policy for Creating Forms in DHIS2
···

On Tue, Oct 22, 2013 at 12:32 AM, Alvin Marcelo alvin.marcelo@gmail.com wrote:

Lars,

I like this approach. Fundamentally, it boils down to local policy and it would help policy writers if we can give them templates on how this can be done. Come to think of it, are there policy templates for DHIS2 implementations? They were my weak areas when I was trying to implement it at PhilHealth…

Although I knew ours will not be exactly the same as other countries’ implementations, there would be similarities which we could “replicate as base document” and customize…

alvin


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

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

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

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


Knut Staring

Dept. of Informatics, University of Oslo

+4791880522

http://dhis2.org

On Mon, Oct 21, 2013 at 10:49 PM, Lars Helge Øverland larshelge@gmail.com wrote:

Hi Alvin,

its a good point and something we have been thinking about for a while. This is something that we definitely need to act on soon.

The challenge is to find a sensible level of detail for what to store, as there are costs in terms of i) system complexity and ii) aggregation performance degradation involved here. For example, if facilities are moved around in administrative boundaries every month, how do you calculate the yearly total for the whole province?

My suggestion, as a reasonable trade-off, would be to create snapshots of the organisation unit hierarchy at the end of each year. These snapshots are then used for analytics queries for past data. So for instance if you query today for “last 12 months”, it would use the current “live” organisation unit hierarchy for months Jan-Sept 2013, then the “2012 snapshot” hierarchy for months Oct-Dec 2012.

On an implementation note, this will fit well the analytics solution where data is partitioned across years - each data partition will have a corresponding org unit hierarchy, making aggregation simple.

Lars

I think this is part of a bigger set of issues, namely the temporal aspect of associations of orgunits with orgunit groups and datasets.

For instance, in the completeness analysis, the completeness figures do not take into account whether the orgunit has belonged to a dataset at some point in time, or what the opening date of that orgunit is. Both of these aspects of time really influence the completeness. A facility should not really count as being part of the completeness analysis, unless it has opened, and it should still continue to count as part of the facilities for which constitute the completeness figures for the time periods for which it was a member. It may be removed or closed, but its membership should still count for when it was a member.

Similarly, with orgunit groups. We have attempted to use orgunit groups to facilitate attribution of data values to particular orgunit groups. This is needed particular in PEPFAR related countries, where there is a geographical hierarchy, but also a funding mechanism-project-implementing partner hierarchy. The problem is however that partners often switch facilities. However the values recorded during the point in time when they were a member of a particular orgunit group, should continue to be attributed to that orgunit group (potentially). I say potentially, because these types of groups really do have a temporal dimension. Something similar has come up in one of the countries I am involved in, namely when a particular facility is “upgraded” from a “health center” to a “health post” and one looks at an indicator value by this orgunit group, there should be attribution to the “health center” group for when it was a member of this group up until the point in time which it switches to another group (e.g. the health center).

I am not so sure how feasible it would be to keep the full history of the analytics. It seems horribly complex, as Lars points out, a facility may be incorrectly created in place in the hierarchy, stay there for a week, and then be moved. This history should never be kept. However, keeping a snapshot of the analytics at a particular point in time, may be the better answer.

I am not sure exactly how all of this needs to happen, but I am sure we need something to deal with some of these issues. I personally think having some mechanism to allow temporal membership in an orgunit group would be a good start, and allow analysis through this view of reality, as opposed to the current snapshot view which is the only thing we can use as the moment.

Regards,

Jason

···

On Mon, Oct 21, 2013 at 4:49 PM, Lars Helge Øverland larshelge@gmail.com wrote:

Hi Alvin,

its a good point and something we have been thinking about for a while. This is something that we definitely need to act on soon.

The challenge is to find a sensible level of detail for what to store, as there are costs in terms of i) system complexity and ii) aggregation performance degradation involved here. For example, if facilities are moved around in administrative boundaries every month, how do you calculate the yearly total for the whole province?

My suggestion, as a reasonable trade-off, would be to create snapshots of the organisation unit hierarchy at the end of each year. These snapshots are then used for analytics queries for past data. So for instance if you query today for “last 12 months”, it would use the current “live” organisation unit hierarchy for months Jan-Sept 2013, then the “2012 snapshot” hierarchy for months Oct-Dec 2012.

On an implementation note, this will fit well the analytics solution where data is partitioned across years - each data partition will have a corresponding org unit hierarchy, making aggregation simple.

Lars


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

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

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

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

Hi Jason,

I agree with you. The org unit group membership “history” must also be preserved. So for the “yearly snapshot” proposal, when saving the state of the org units, we could include the both the org unit hierarchy and the org unit group memberships.

Lars