← Back to team overview

dhis2-users team mailing list archive

Re: Posting Metadata in dhis2.

 

Hi Jason,

Thank you. I wasn't able to post my organisation Units metadata because of
the following error.

"{\"httpStatus\":\"Internal Server
Error\",\"httpStatusCode\":500,\"status\":\"ERROR\",\"message\":\"object
references an unsaved transient instance - save the transient instance
before flushing: org.hisp.dhis.organisationunit.OrganisationUnit\"}"

I wish I knew how to solve that through the API. However, I imported the
organisation units using the csv file import. I followed along your guide
and I was able to post all other metadata and data values - Thank you.




On Thu, Feb 15, 2018 at 3:33 PM, Isaiah Nyabuto <isaiahnyabuto@xxxxxxxxx>
wrote:

> Hi Jason,
>
> Thank you. I am going to look into that keenly.
> And If I may ask, is there a way I can extract dhis2 metadata that can be
> imported directly or with minimal transformations?
>
> This will be helpful. Thank you.
>
> ==========================
> Isaiah Nyabuto
> +254729572616
> Bsc. Health Records Management and Informatics
>
> On Feb 15, 2018 15:16, "Jason Pickering" <jason.p.pickering@xxxxxxxxx>
> wrote:
>
>> Hi Isaiah,
>>
>> You have
>>
>>
>> "parent":"vpiZlB5cdK7"
>>
>>
>> It should be
>>
>> parent":{"id":"vpiZlB5cdK7"}}
>>
>> Be sure your JSON structure is exactly as it should be, otherwise, you
>> will get those kinds of errors. Study the example here
>> <https://raw.githubusercontent.com/jason-p-pickering/dhis2-data-munging/master/ous/ous.json>
>> .
>>
>> Regards,
>> Jason
>>
>>
>>
>> On Thu, Feb 15, 2018 at 1:07 PM, Isaiah Nyabuto <isaiahnyabuto@xxxxxxxxx>
>> wrote:
>>
>>> Thank you for the tip. It still doesn't work.
>>> what does this error mean?
>>>
>>> httr::content(r, "text")
>>>
>>> [1] "{\"httpStatus\":\"Internal Server Error\",\"httpStatusCode\":500
>>> ,\"status\":\"ERROR\",\"message\":\"Can not instantiate value of type
>>> [simple type, class org.hisp.dhis.organisationunit.OrganisationUnit]
>>> from String value ('It7fWcKbcZX'); no single-String constructor/factory
>>> method\\n at [Source: org.apache.catalina.connector.
>>> CoyoteInputStream@1efec811; line: 1, column: 73] (through reference
>>> chain: org.hisp.dhis.organisationunit.OrganisationUnit[\\\"parent\\\
>>> "])\"}"
>>>
>>> Anyone?
>>>
>>> Thank you.
>>> ==========================
>>> Isaiah Nyabuto
>>> +254729572616 <+254%20729%20572616>
>>> Bsc. Health Records Management and Informatics
>>>
>>> On Feb 15, 2018 13:14, "Jason Pickering" <jason.p.pickering@xxxxxxxxx>
>>> wrote:
>>>
>>> All of your fields must have exactly the correct names:
>>>
>>> shortname -> shortName
>>> featuretype-> featureType
>>>
>>> Keep hacking at it! You will get there!
>>>
>>> Regards,
>>> Jason
>>>
>>>
>>> On Thu, Feb 15, 2018 at 11:08 AM, Isaiah Nyabuto <
>>> isaiahnyabuto@xxxxxxxxx> wrote:
>>>
>>>> Hi Jason,
>>>>
>>>> Here is some bit of my post data.
>>>>
>>>> {"organisationUnits":[{"name":"Wikithuki Dispensary","uid":"Bc371uxfYD5","code":"16925","parent":"vpiZlB5cdK7","shortname":"Wikithuki Dispensary","description":"","comment":"","featuretype":"POINT","coordinates":"[37.95263,-0.77819]","url":""},{"name":"Gemifa Medical Clinic","uid":"Z7Lf1n3Fcpi","code":"22907","parent":"mEZBjj4fLBT","shortname":"Gemifa","description":"Clinic","comment":"","featuretype":"NONE","coordinates":"[34.391914,0.059575]","url":""},{"name":"Olympus Medical Clinic","uid":"NAbQdHuaJFK","code":"22906","parent":"PeEcMfBchbr","shortname":"Olympus","description":"Clinic","comment":"","featuretype":"NONE","coordinates":"[34.3994,0.059575]","url":""},{"name":"Masaba Community Health Unit","uid":"tYwHeLSnHyb","code":"600616","parent":"QR2K4k8VKF1","shortname":"Masaba CHU","description":"Community Unit","comment":"","featuretype":"NONE","coordinates":"[34.46411,0.19358]","url":""},{"name":"Gatunga Health Centre","uid":"cmay4WXRmhA","code":"12034","parent":
>>>>
>>>>
>>>> After changing the "uid" to "id",  still it doesn't work.
>>>>
>>>> Thank you
>>>>
>>>>
>>>> On Thu, Feb 15, 2018 at 12:14 PM, Jason Pickering <
>>>> jason.p.pickering@xxxxxxxxx> wrote:
>>>>
>>>>> Hi Isaiah,
>>>>>
>>>>> Post a bit of your JSON here from  toJSON(list(organisationUnits=new_org),
>>>>> auto_unbox = TRUE)
>>>>>
>>>>> One other problem I noticed as well is this
>>>>>
>>>>> [{"name":"Wikithuki Dispensary","uid":"Bc371uxfYD5"
>>>>>
>>>>>
>>>>> It should be
>>>>>
>>>>> [{"name":"Wikithuki Dispensary","id":"Bc371uxfYD5"
>>>>>
>>>>>
>>>>> Regards,
>>>>> Jason
>>>>>
>>>>>
>>>>> On Thu, Feb 15, 2018 at 10:01 AM, Isaiah Nyabuto <
>>>>> isaiahnyabuto@xxxxxxxxx> wrote:
>>>>>
>>>>>> Hi Jason,
>>>>>>
>>>>>> I get an internal server error code: 500, after trying that. Here is
>>>>>> the response;
>>>>>>
>>>>>> httr::content(r, "text")[1] "{\"httpStatus\":\"Internal Server Error\",\"httpStatusCode\":500,\"status\":\"ERROR\",\"message\":\"Can not instantiate value of type [simple type, class org.hisp.dhis.organisationunit.OrganisationUnit] from String value ('It7fWcKbcZX'); no single-String constructor/factory method\\n at [Source: org.apache.catalina.connector.CoyoteInputStream@1efec811; line: 1, column: 73] (through reference chain: org.hisp.dhis.organisationunit.OrganisationUnit[\\\"parent\\\"])\"}"
>>>>>>
>>>>>>
>>>>>> Thank you.
>>>>>>
>>>>>> On Thu, Feb 15, 2018 at 10:36 AM, Jason Pickering <
>>>>>> jason.p.pickering@xxxxxxxxx> wrote:
>>>>>>
>>>>>>> Hi Isiah,
>>>>>>>
>>>>>>> The reason for it not working (at least at first glance) is that you
>>>>>>> are posing to the /api/metadata endpoint. Thus, you need to tell the server
>>>>>>> what you are trying to import. In this case, its organisation units.
>>>>>>>
>>>>>>> I think changing this to
>>>>>>>
>>>>>>>   r <- POST(url, authenticate(dest.user, dest.pass),
>>>>>>>             body = toJSON(list(organisationUnits=new_org),
>>>>>>> auto_unbox = TRUE),
>>>>>>>             content_type_json())
>>>>>>>
>>>>>>> should work.
>>>>>>>
>>>>>>> The example works because the file
>>>>>>> <https://raw.githubusercontent.com/jason-p-pickering/dhis2-data-munging/master/ous/ous.json>
>>>>>>> looks like this:
>>>>>>>
>>>>>>>
>>>>>>> {"created":"2016-08-10","organisationUnits":[{"id":"u6yjgvIMzKn",...
>>>>>>>
>>>>>>>
>>>>>>> Hope this helps and best regards,
>>>>>>>
>>>>>>> Jason
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Feb 15, 2018 at 6:34 AM, Isaiah Nyabuto <
>>>>>>> isaiahnyabuto@xxxxxxxxx> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Dear Jason and Dhis2 Community,
>>>>>>>>
>>>>>>>> I am following your guide on bootstrapping
>>>>>>>> <https://github.com/jason-p-pickering/dhis2-data-munging/blob/master/bootstrap/bootstrap.Rmd>
>>>>>>>>  dhis2 with R while trying to import metadata using the API.
>>>>>>>>
>>>>>>>> I do not understand why my metadata is not imported. Here are my
>>>>>>>> steps, any help will be appreciated.
>>>>>>>>
>>>>>>>>
>>>>>>>> head(org)                          name         uid   code      parent             shortname
>>>>>>>> 1         Wikithuki Dispensary Bc371uxfYD5  16925 vpiZlB5cdK7  Wikithuki Dispensary
>>>>>>>> 2        Gemifa Medical Clinic Z7Lf1n3Fcpi  22907 mEZBjj4fLBT                Gemifa
>>>>>>>> 3       Olympus Medical Clinic NAbQdHuaJFK  22906 PeEcMfBchbr               Olympus
>>>>>>>> 4 Masaba Community Health Unit tYwHeLSnHyb 600616 QR2K4k8VKF1            Masaba CHU
>>>>>>>> 5        Gatunga Health Centre cmay4WXRmhA  12034 IcAegRcGuV6 Gatunga Health Centre
>>>>>>>> 6         Cfw Kimangaru Clinic E52UsoBxJVS  11966 vEAFtHnPDrX  CFW Kimangaru Clinic
>>>>>>>>      description openingdate closedate comment featuretype          coordinates url
>>>>>>>> 1                         NA        NA               POINT  [37.95263,-0.77819]
>>>>>>>> 2         Clinic          NA        NA                NONE [34.391914,0.059575]
>>>>>>>> 3         Clinic          NA        NA                NONE   [34.3994,0.059575]
>>>>>>>> 4 Community Unit          NA        NA                NONE   [34.46411,0.19358]
>>>>>>>> 5                         NA        NA               POINT   [37.9423,-0.29656]
>>>>>>>> 6                         NA        NA               POINT  [37.53009,-0.54506]
>>>>>>>>   contactperson address email phonenumber
>>>>>>>> 1            NA      NA    NA          NA
>>>>>>>> 2            NA      NA    NA          NA
>>>>>>>> 3            NA      NA    NA          NA
>>>>>>>> 4            NA      NA    NA          NA
>>>>>>>> 5            NA      NA    NA          NA
>>>>>>>> 6            NA      NA    NA          NA
>>>>>>>>
>>>>>>>>
>>>>>>>> I followed the following steps to prepare my df for import.
>>>>>>>> 1. Removed all the NAs  and columns with entire NAs.
>>>>>>>>
>>>>>>>> head(new_org)                          name         uid   code      parent             shortname
>>>>>>>> 1         Wikithuki Dispensary Bc371uxfYD5  16925 vpiZlB5cdK7  Wikithuki Dispensary
>>>>>>>> 2        Gemifa Medical Clinic Z7Lf1n3Fcpi  22907 mEZBjj4fLBT                Gemifa
>>>>>>>> 3       Olympus Medical Clinic NAbQdHuaJFK  22906 PeEcMfBchbr               Olympus
>>>>>>>> 4 Masaba Community Health Unit tYwHeLSnHyb 600616 QR2K4k8VKF1            Masaba CHU
>>>>>>>> 5        Gatunga Health Centre cmay4WXRmhA  12034 IcAegRcGuV6 Gatunga Health Centre
>>>>>>>> 6         Cfw Kimangaru Clinic E52UsoBxJVS  11966 vEAFtHnPDrX  CFW Kimangaru Clinic
>>>>>>>>      description comment featuretype          coordinates url
>>>>>>>> 1                              POINT  [37.95263,-0.77819]
>>>>>>>> 2         Clinic                NONE [34.391914,0.059575]
>>>>>>>> 3         Clinic                NONE   [34.3994,0.059575]
>>>>>>>> 4 Community Unit                NONE   [34.46411,0.19358]
>>>>>>>> 5                              POINT   [37.9423,-0.29656]
>>>>>>>> 6                              POINT  [37.53009,-0.54506]
>>>>>>>>
>>>>>>>>
>>>>>>>> 3. Then post the data as follows.
>>>>>>>>
>>>>>>>> dest.url <- "http://localhost/dhis/";
>>>>>>>> url <- paste0(dest.url, "api/metadata?importStrategy=C
>>>>>>>> REATE&atomicMode=NONE")
>>>>>>>>   r <- POST(url, authenticate(dest.user, dest.pass),
>>>>>>>>             body = toJSON(new_org, auto_unbox = TRUE),
>>>>>>>>             content_type_json())
>>>>>>>>   assertthat::assert_that(r$status_code==200)
>>>>>>>>
>>>>>>>> 4. The body looks like.
>>>>>>>>
>>>>>>>> jsonlite::toJSON(me, auto_unbox = TRUE)[{"name":"Wikithuki Dispensary","uid":"Bc371uxfYD5","code":"16925","parent":"vpiZlB5cdK7","shortname":"Wikithuki Dispensary","description":"","comment":"","featuretype":"POINT","coordinates":"[37.95263,-0.77819]","url":""},{"name":"Gemifa Medical Clinic","uid":"Z7Lf1n3Fcpi","code":"22907","parent":"mEZBjj4fLBT","shortname":"Gemifa","description":"Clinic","comment":"","featuretype":"NONE","coordinates":"[34.391914,0.059575]","url":""},{"name":"Olympus Medical Clinic","uid":"NAbQdHuaJFK","code":"22906","parent":"PeEcMfBchbr","shortname":"Olympus","description":"Clinic","comment":"","featuretype":"NONE","coordinates":"[34.3994,0.059575]","url":""},{"name":"Masaba Community Health Unit","uid":"tYwHeLSnHyb","code":"600616","parent":"QR2K4k8VKF1","shortname":"Masaba CHU","description":"Community Unit","comment":"","featuretype":"NONE","coordinates":"[34.46411,0.19358]","url":""},{"name":"Gatunga Health Centre","uid":"cmay4WXRmhA","code":"12034","parent":"IcAegRcGuV6","shortname":"Gatunga Health Centre","description":"","comment":"","featuretype":"POINT","coordinates":"[37.9423,-0.29656]","url":""},{"name":"Cfw Kimangaru Clinic","uid":"E52UsoBxJVS","code":"11966","parent":"vEAFtHnPDrX","shortname":"CFW Kimangaru Clinic","description":"","comment":"","featuretype":"POINT","coordinates":"[37.53009,-0.54506]","url":""}]
>>>>>>>>
>>>>>>>>
>>>>>>>> What could be the problem there? I get status 200 and still it
>>>>>>>> doesn't import.
>>>>>>>>
>>>>>>>>
>>>>>>>> Thank you
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> ------------------------------------------------------------
>>>>>>>> --------------------
>>>>>>>> Isaiah Nyabuto
>>>>>>>> +254 729 572 616
>>>>>>>> Bsc. Health Records Management & Informatics, JKUAT.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Jason P. Pickering
>>>>>>> email: jason.p.pickering@xxxxxxxxx
>>>>>>> tel:+46764147049 <076-414%2070%2049>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> ------------------------------------------------------------
>>>>>> --------------------
>>>>>> Isaiah Nyabuto
>>>>>> +254 729 572 616
>>>>>> Bsc. Health Records Management & Informatics, JKUAT.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Jason P. Pickering
>>>>> email: jason.p.pickering@xxxxxxxxx
>>>>> tel:+46764147049 <076-414%2070%2049>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> ------------------------------------------------------------
>>>> --------------------
>>>> Isaiah Nyabuto
>>>> +254 729 572 616
>>>> Bsc. Health Records Management & Informatics, JKUAT.
>>>>
>>>
>>>
>>>
>>> --
>>> Jason P. Pickering
>>> email: jason.p.pickering@xxxxxxxxx
>>> tel:+46764147049 <076-414%2070%2049>
>>>
>>>
>>>
>>
>>
>> --
>> Jason P. Pickering
>> email: jason.p.pickering@xxxxxxxxx
>> tel:+46764147049
>>
>


-- 
--------------------------------------------------------------------------------
Isaiah Nyabuto
+254 729 572 616
Bsc. Health Records Management & Informatics, JKUAT.

References