OpenSRP-DHIS2 Integration, BD Example
This integration involves sending data from OpenSRP to DHIS2. OpenSRP can push both individual records/tracker level details data and aggregated data into DHIS2.
1. Aggregate Data: OpenSRP publishes different aggregated summary of vaccine information (i.e. total number of new child register from a facility, total number of child given BCG,OPV, Penta etc from a facility by weekly/monthly) into DHIS2.
2. Individual data records / Tracker: OpenSRP also transfer details information of registered clients (woman, child) into DHIS2.
Technical Descriptions:
Aggregate Data:
A scheduler job runs in OpenSRP server once in a month which invoke
class="org.opensrp.web.listener.DHIS2ConnectorListener.java" | |
Method Name | Descriptions |
method="vaccinationAggregatorDataCountForSendingToDHIS2" | This listener method first call “getAggregatedDataCount” which generate aggregated data set as a json . Next it call another method “aggredateDataSendToDHIS2” which actually push records into DHIS2. |
class="org.opensrp.connector.dhis2.DHIS2AggregateConnector.java" | |
method="getAggregatedDataCount" | This method do the aggregated counts of different vaccine indicators (total BCG, OPV ) and generate a data set in json format using these counts. Following is a sample generated data set with BCG, OPV, PENTA vaccine counts. “{ "dataSet": "pBOMPrpg1QX", "completeData": "2014-02-03", "period": "201401", "orgUnit": "DiszpKrYNg8", "dataValues": [ { "dataElement": "f7n9E0hX8qk", "value": "1" }, { "dataElement": "Ix2HsbDMLea", "value": "2" }, { "dataElement": "eY5ehpbEsB7", "value": "3" } ] }” |
method="aggredateDataSendToDHIS2" | This method makes a POST request against dhis2 /DHIS2host/api/dataValueSets . |
class="org.opensrp.connector.dhis2.Dhis2HttpUtils.java" | |
method="post" | Header: [username: ****, password:****] data- Json formatted as String { "dataSet": "pBOMPrpg1QX", "completeData": "2014-02-03", "period": "201401", "orgUnit": "DiszpKrYNg8", "dataValues": [ { "dataElement": "f7n9E0hX8qk", "value": "1" }, { "dataElement": "Ix2HsbDMLea", "value": "2" }, { "dataElement": "eY5ehpbEsB7", "value": "3" } ] |
Track Capture Data:
A Motech driven scheduler job runs in OpenSRP server which invoke.
class="org.opensrp.connector.dhis2.DHIS2SyncerListener.java" | |
Method Name | Descriptions |
method="pushToDHIS2" | This method find all available beneficiaries/clients in OpenSRP that are not sync with DHIS2. Next it call method “sentTrackCaptureDataToDHIS2” |
method="sentTrackCaptureDataToDHIS2" | This method prepare client data json for sending to DHIS2, then pass the call to method “trackCaptureDataSendToDHIS2” |
class="org.opensrp.connector.dhis2.Dhis2TrackCaptureConnector.java" | |
Method Name | Descriptions |
method="trackCaptureDataSendToDHIS2" | This method makes two “POST” request into DHIS2. In first call it sends track capture data and in second call enroll this data into a program. |
class="org.opensrp.connector.dhis2.Dhis2HttpUtils.java" | |
Method Name | Descriptions |
method="post" | First POST Request: API: /DHIS2host/api/trackedEntityInstances Header:[username: ****, password:*****] data- Json formatted as String “{ "trackedEntity": "tracked-entity-id", "orgUnit": "org-unit-id", "attributes": [ { "attribute": "attribute-id", "value": "attribute-value" } ] }” Response: “{ "httpStatus": "OK", "httpStatusCode": 200, "status": "OK", "message": "Import was successful.", "response": { "responseType": "ImportSummary", "status": "SUCCESS", "importCount": { "imported": 1, "updated": 0, "ignored": 0, "deleted": 0 }, "reference": "UWdxyR7FNFo" } }, { "reference": "UWdxyR7FNFo", "responseType": "ImportSummary", "importCount": { "ignored": 0, "deleted": 0, "imported": 1, "updated": 0 }, "status": "SUCCESS" }” Second POST Request: This request enrolled a tracked entity instance into a program. The reference keys value from the first call response use as a “trackedEntityInstance” in second call for enrollment into program. API: /dhis2host/api/enrollments data- Json formatted as String “{ "trackedEntityInstance": "UWdxyR7FNFo", "orgUnit": "ImspTQPwCqd", "program": "S8uo8AlvYMz", "enrollmentDate": "2013-09-17", "incidentDate": "2013-09-17" }” |
Related Source Links:
6. https://github.com/OpenSRP/opensrp-server/blob/dhis2_integration/opensrp-connector/src/main/java/org/opensrp/connector/dhis2/Dhis2HttpUtils.java
7. https://github.com/OpenSRP/opensrp-server/blob/dhis2_integration/opensrp-connector/src/main/java/org/opensrp/connector/dhis2/Dhis2TrackCaptureConnector.java
This site is no longer maintained. Please visit docs.opensrp.io for current documentation.