← Back to team overview

dhis2-devs team mailing list archive

Re: Problem creating the parent org unit through the API

 

If you have your source data in postgresql, you can also use the following
handy function to generate uids directly from the database:

CREATE OR REPLACE FUNCTION uid()
 RETURNS text AS $$
  SELECT substring('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    FROM (random()*51)::int +1 for 1) ||
    array_to_string(ARRAY(SELECT
substring('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ0123456789'
       FROM (random()*61)::int + 1 FOR 1)
   FROM generate_series(1,10)), '')
$$ LANGUAGE sql;

for example:

select *,uid() from myorgunits;

Will list your table together with some newly minted uids.


On 25 May 2016 at 13:01, Jason Pickering <jason.p.pickering@xxxxxxxxx>
wrote:

> Hi Sergio,
> The easier way to do this is to generate the UID prior to importing
> everything. You can do this pretty easily with the system with the
> following command
>
> https://play.dhis2.org/demo/api/system/uid?limit=3
>
> Or they can be generated externally pretty easily. Here is some R code ,
> but I am sure there are ways to do this in other languages as well.
>
> generateUID<-function(codeSize=11){
>   #Generate a random seed
>   runif(1)
>   allowedLetters<-c(LETTERS,letters)
>   allowedChars<-c(LETTERS,letters,0:9)
>   #First character must be a letter according to the DHIS2 spec
>   firstChar<-sample(allowedLetters,1)
>   otherChars<-sample(allowedChars,codeSize-1)
>
> uid<-paste(c(firstChar,paste(otherChars,sep="",collapse="")),sep="",collapse="")
>   return(uid)}
>
> The last option is to post these level by level and get the UID which was
> generated for the orgunit. The tricky part may be to get the first parent
> ID, but once you have that, it should be pretty easy.
>
> From my experience however, generating these prior to importing them is
> much easier and will allow you to edit things for instance, in your GIS
> software and then import them into DHIS2.
>
> Regards,
> Jason
>
>
> On Wed, May 25, 2016 at 1:54 PM, Sergio Valenzuela <
> sergio.valenzuela@xxxxxxxx> wrote:
>
>> Thanks Morten, yes, we were trying to create a new root and we were
>> missing that step.
>>
>> My question now is: In the "parent" object included in
>> "organisationUnits", is it possible to swap the attribute "id" to "name"
>> (or something you know when you are creating the parents)? Otherwise, how
>> can be done the import of a whole org unit hierarchy (in a single json)
>> when you don't know the "id" of the "parents"?
>>
>> I attached an image pointing the part of the json I'm talking about.
>>
>>
>>
>> *Sergio Valenzuela*
>> Fundación EHAS
>> Telemedicina para países en desarrollo -* www.ehas.org
>> <http://www.ehas.org/>*
>> E.T.S.I. de Telecomunicación A.101-9L. Ciudad Universitaria 30, 28040
>> Madrid - España
>> Tlfno. (+34) 91 488 87 41: (+34) 687 67 17 62
>>
>>
>>
>> 2016-05-25 13:13 GMT+02:00 Morten Olav Hansen <morten@xxxxxxxxx>:
>>
>>> Hi Sergio
>>>
>>> So you are creating a new root? Could it be that your user is attached
>>> to a different org unit, and so the problem is that you can't see them?
>>>
>>> Maybe you could verify in the database, or using the web-api?
>>> /api/organisationUnits.json?filter=name:like:abc
>>>
>>> --
>>> Morten Olav Hansen
>>> Senior Engineer, DHIS 2
>>> University of Oslo
>>> http://www.dhis2.org
>>>
>>> On Wed, May 25, 2016 at 6:06 PM, Sergio Valenzuela <
>>> sergio.valenzuela@xxxxxxxx> wrote:
>>>
>>>> Hello devs,
>>>>
>>>> We are trying to create a whole org unit hierarchy through the new API
>>>> resource /api/23/metadata .
>>>> During the process, we realized there should be some kind of problem
>>>> when we tried to create the parent org unit (the parent of the whole
>>>> hierarchy), because even If the answer from the server is 200 OK once we
>>>> sent the POST and with a GET we can verify that the org units are created
>>>> successfully, no org units are appearing on Maintenance App. We are using
>>>> the same version and build as in demo server (version 2.23 and build
>>>> 22969).
>>>> We tried the same in demo server with the same result.
>>>>
>>>> I attached our JSON and the url we were doing the POST request:
>>>>
>>>>    - https://play.dhis2.org/demo/api/23/metadata
>>>>    <https://www.google.com/url?q=https%3A%2F%2Fplay.dhis2.org%2Fdemo%2Fapi%2F23%2Fmetadata&sa=D&sntz=1&usg=AFQjCNFEcEvpUIBy7DQX7KNTUvGRw7nObw>
>>>>
>>>> Besides, we tried to create the parent org unit of the whole hierarchy
>>>> through the Maintenance interface with the same result. Apparently, it is
>>>> created but not shown after on Maintenance App. (We made a GET to
>>>> http://localhost:8080/api/metadata?assumeTrue=false&organisationUnits=true
>>>> and we verified that the org unit was created)
>>>>
>>>> Tell me If I'm doing something wrong here or If this issue was already
>>>> reported.
>>>>
>>>> Best Regards!
>>>>
>>>> *Sergio Valenzuela*
>>>> Fundación EHAS
>>>> Telemedicina para países en desarrollo -* www.ehas.org
>>>> <http://www.ehas.org/>*
>>>> E.T.S.I. de Telecomunicación A.101-9L. Ciudad Universitaria 30, 28040
>>>> Madrid - España
>>>> Tlfno. (+34) 91 488 87 41: (+34) 687 67 17 62
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> 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
>>
>>
>
>
> --
> Jason P. Pickering
> email: jason.p.pickering@xxxxxxxxx
> tel:+46764147049
>
> _______________________________________________
> 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