← Back to team overview

dhis2-users team mailing list archive

Re: Orgunit

 

Hi again,

I managed to dig up that old ER diagram (from Nov 2008) and put it here if
you're interested:
http://folk.uio.no/olati/filer/DHIS2_ER_diagram.jpg (762 KB).

Ola
-------------

On 4 March 2010 23:57, Ola Hodne Titlestad <olatitle@xxxxxxxxx> wrote:

> On 4 March 2010 23:11, Friedman, Roger (CDC/CCID/NCHHSTP) (CTR) <
> rdf4@xxxxxxx> wrote:
>
>>  It's a lot clearer, but it still doesn't tell me about the table
>> structure.  At this point, DHIS2 is not starting in Tomcat.  It failed with
>> this error:
>>
>> This drawing might help to better understand the group set model (as well
> as the rest of the multidimensional model):
>
> https://docs.google.com/Doc?docid=0AfhDQuGFI-A_ZGNjNW1waHhfMThkOWtiamdndA&hl=en
>
> I know there is an old db schema on the wiki somewhere (Knut, do you
> remember where?). However, this page, although quite old as well, is still
> mostly valid and it should give you a better overview of the DHIS2 from a
> database table perspective:
> http://208.76.222.114/confluence/display/DOC/Database+API
>
> I would also recommend having a look at the chapter in the manual called
> DHIS Technical Architecture Guide if you want to dive into the more
> technical details of the code and architecture.
>
> As you found out you need to be careful with the NOT NULL columns in the
> database when manually populating the database as hibernate will not like it
> and startup routines for DHIS will most likely fail.
>
> Ola
> ----------
>
>
>
>>
>>
>> Mar 4, 2010 4:30:19 PM org.apache.catalina.core.ApplicationContext log
>>
>> INFO: Initializing Spring root WebApplicationContext Mar 4, 2010 4:30:36
>> PM org.apache.catalina.core.StandardContext listenerStart
>>
>> SEVERE: Exception sending context initialized event to listener instance
>> of class org.hisp.dhis.system.startup.StartupListener
>>
>> java.lang.RuntimeException: Failed to run startup routines
>>
>>       at
>> org.hisp.dhis.system.startup.StartupListener.contextInitialized(StartupListener.java:61)
>>
>>       at
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>
>> <<snip>>
>>
>> Caused by: org.hibernate.PropertyAccessException: Null value was assigned
>> to a property of primitive type setter of
>> org.hisp.dhis.organisationunit.OrganisationUnit.active
>>
>>       at
>> org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:85)
>>
>>
>>
>> so I went in and set organisationunit.active to 1 in all records.  But
>> before and after getting this message, DHIS2 just hung Tomcat, I have to
>> reboot.  So either Hibernate is enforcing some relational integrity that I
>> have broken, or I am running out of memory or something.  Guess I will go
>> back and set the memory size parameters.  Any other suggestions?
>>
>>
>>
>> *From:* Ola Hodne Titlestad [mailto:olatitle@xxxxxxxxx]
>> *Sent:* Thursday, March 04, 2010 12:03 PM
>> *To:* Friedman, Roger (CDC/CCID/NCHHSTP) (CTR)
>> *Cc:* Lars Helge Øverland; Ignac Mare; DHIS 2.0 Users; Bob Jolliffe
>>
>> *Subject:* Re: [Dhis2-users] Orgunit
>>
>>
>>
>> Hi Roger,
>>
>> To read up on the usage of groups and group sets I recommend the 2nd
>> chapter of the user manual (was updated on March 2) which explains how you
>> can add dimensions to orgunits using these groups and group sets, e.g.
>> create alternative hierarchies like the one you mention:
>> fresh download available here:
>>
>> http://dhis.uio.no/ci/job/Dhis2%20documentation/lastSuccessfulBuild/artifact/target/docbkx/pdf/dhis2_user_manual_en.pdf
>> (about 6mb)
>>
>> Note that the orgunit group sets are only mandatory in the sense that they
>> are enforced in the UI when creating new orgunits. You don't have to worry
>> about these when doing inserts directly in the database. Having the groups
>> of course adds a lot of value to your data analysis, but is not
>> necessary/mandatory to get you started with DHIS.
>>
>> I would suggest you insert all the orgunits in the database first, then go
>> to the UI to populate the necessary groups to the group sets you want to use
>> (Type is very useful and highly recommended, but also ownership
>> public/private and rural/urban are useful when doing analysis).  Normally
>> the three "mandatory" orgunit group sets have just a few orgunit groups
>> each, so its quick to set up this using the UI. E.g. you would create a new
>> orgunit group for every facility type in Ghana plus the names of the
>> administrative levels so that you can give each orgunit a type by assigning
>> it to the orgunit group. E.g. in Sierra Leone the groups belonging to the
>> group set OrgUnitType are something like:
>> MoH, District, Chiefdom, CHC, CHP, MCHP, Hospital. And for Ownership there
>> is private, public, NGO.
>> For RuraUrban there is typically Rural, Urban,. PeriUrban. You get the
>> feeling....
>>
>> The reason why these groups have not been autopopulated and assigned to
>> the group sets is because they vary slightly from country to country. I
>> think we should remove the UI consrataint on the three group sets being
>> mandatory and just leave them there as option until the system admins
>> themselves have populated their groups and set them to mandatory. Makes
>> little sense to enforce empty group sets, although for standardisation I see
>> the point of populating these on startup. So I guess we should keep them,
>> but leave it up to the user to say which are mandatory and not.
>>
>> Then when you have set up the group sets and groups in the UI I would,
>> given that you are dealing with hundreds of facilities, insert the
>> orgunitgroupmembership rows directly in the database, where you need groupid
>> and orgunitid.
>>
>> Regarding the foreign key constraint on sourceid from orgunit, you could
>> maybe just drop that constraint while populating orgunits and then when your
>> done with all the orgunits, populate the full source table, and after that
>> put the constraint back in again?
>>
>> Setting up a full orgunit tree can be a hassle, and we are working on some
>> importers that generate these hierarchies off shape files or structured
>> excel files, but they are not there yet, I am afraid.
>>
>> Hope this was to some help at least. Keep bothering us at this list, we
>> really appreciate it.
>>
>> Ola
>> ------
>>
>> On 4 March 2010 15:45, Friedman, Roger (CDC/CCID/NCHHSTP) (CTR) <
>> rdf4@xxxxxxx> wrote:
>>
>> All of this is extremely unclear, it would be nice if there were a data
>> model on the site somewhere.
>>
>> But more importantly, what are group sets and compulsory group sets, what
>> is their purpose?  The most I can find is the user manual sec. 4.2.2.11-14.
>>
>>
>>
>>
>> I have created my OrgUnit table with a series of SQL statements like the
>> following:
>>
>> INSERT INTO Source (SourceID) VALUES (3);
>>
>> INSERT INTO OrganisationUnit
>> (OrganisationUnitID,UUID,Name,ParentID,ShortName,Type,GeoCode,LastUpdated)
>>
>>   VALUES(3,uuid(),"Ghana",NULL,"Ghana","Country","GHA",'2010-03-03
>> 18:23:49');
>>
>> INSERT INTO Source (SourceID) VALUES (14);
>>
>> INSERT INTO OrganisationUnit
>> (OrganisationUnitID,UUID,Name,ParentID,ShortName,Type,GeoCode,LastUpdated)
>>
>>   VALUES(14,uuid(),"Ashanti",3,"Ashanti","Region","GHA001",'2010-03-03
>> 18:23:49');
>>
>> INSERT INTO Source (SourceID) VALUES (90);
>>
>> INSERT INTO OrganisationUnit
>> (OrganisationUnitID,UUID,Name,ParentID,ShortName,Type,GeoCode,LastUpdated)
>>
>>   VALUES(90,uuid(),"Kumasi",14,"Kumasi","District","GHA001014",'2010-03-03
>> 18:23:49');
>>
>> INSERT INTO Source (SourceID) VALUES (226);
>>
>> INSERT INTO OrganisationUnit
>> (OrganisationUnitID,UUID,Name,ParentID,ShortName,Type,GeoCode,LastUpdated)
>>
>>
>> VALUES(226,uuid(),"Adum",90,"Adum","Sub-District","GHA001014010",'2010-03-03
>> 18:23:49');
>>
>> INSERT INTO Source (SourceID) VALUES (327);
>>
>> INSERT INTO OrganisationUnit
>> (OrganisationUnitID,UUID,Name,ParentID,ShortName,Type,GeoCode,LastUpdated)
>>
>>   VALUES(327,uuid(),"Rabito Clinic",226,"Rabito
>> Clinic","Clinic","GHA001014010",'2010-03-03 18:23:49');
>>
>>
>>
>> So I could easily have Type as a compulsory group, as suggested in the
>> documentation.  But what table do I have to modify to reflect this?  And
>> does this mean that if I add other (compulsory) groups, the structure of the
>> OrgUnit table will change?
>>
>>
>>
>> Into what table and how do I insert hierarchy names (region, district)?
>> What do I do about incomplete or unbalanced hierarchies -- district
>> hospitals may be considered as belonging to the district rather than the
>> sub-district in which they are located, there is an intermediate structure
>> called a metropolitan government which exists only in large urban areas.
>>
>>
>>
>> Are there other tasks that need to be done to get OrgUnits completely in?
>> Any tricks or gotchas (like Source and ShortName)?
>>
>>
>>
>> Thanks, Roger
>>
>>
>>
>> *From:* dhis2-users-bounces+rdf4=cdc.gov@xxxxxxxxxxxxxxxxxxx [mailto:
>> dhis2-users-bounces+rdf4 <dhis2-users-bounces%2Brdf4>=cdc.gov@
>> lists.launchpad.net] *On Behalf Of *Lars Helge Øverland
>> *Sent:* Thursday, March 04, 2010 8:17 AM
>> *To:* Ignac Mare
>> *Cc:* DHIS 2.0 Users
>> *Subject:* Re: [Dhis2-users] Orgunit
>>
>>
>>
>>
>>
>> On Sat, Feb 27, 2010 at 3:55 PM, Ignac Mare <ignac.mare@xxxxxxxxx> wrote:
>>
>> On adding orgunits there is a block that says type what exactly can any
>> one help
>>
>>
>>
>> Hi,
>>
>>
>>
>> the system requires one to add newly created organisation units to groups
>> for all compulsory group sets. The system comes with three group sets
>> pre-configured. You will need to create a few groups for each group set, and
>> then choose one of these when creating a new organisation unit.
>>
>>
>>
>> regards, Lars
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> I Mare
>> Information Management
>> Limpopo Emergency Medical Services
>> Cell: 083 635 0605
>> Fax: 086 614 2028
>> Skype ignac.mare
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-users<https://launchpad.net/%7Edhis2-users>
>> Post to     : dhis2-users@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dhis2-users<https://launchpad.net/%7Edhis2-users>
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-users<https://launchpad.net/%7Edhis2-users>
>> Post to     : dhis2-users@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dhis2-users<https://launchpad.net/%7Edhis2-users>
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>>
>
>

References