GSoC 2020: Improving OpenMRS DHIS2 Integration

Tags: #<Tag:0x00007f0f1cfb23b8>

Hello there,

I’m using this thread to update my progress on $subject. You can find a quick introduction to this project here:

I’ve scheduled a weekly meeting for this project. Event Link:

1 Like

1st GSoC Weekly Call

Held on: 2020-05-17T11:30:00Z

Attendees: @akshika47 @heliostrike @jayasanka

Meeting minutes

  1. Meeting began with a quick bout of introductions from mentors.
  2. Continue the discussion on the requirement gathering process on talk thread. GSoC 2020: Improving OpenMRS DHIS2 Integration - Requirement gathering
  3. Try to contact a few hospitals this week.
  4. Clarify how to initiate the OWA for the DHIS2 Reporting module.
  5. Meeting ended on a positive note, looking forward to a great GSoC.

Tasks for the Week:

  1. Continue the Requirement Gathering discussion. :white_check_mark:
  2. Try to contact a few hospitals. :white_check_mark:
  3. Clarify how to initiate the OWA for the DHIS2 Reporting module :white_check_mark:
  4. Join ETL/ELT Stand Up to get an idea of how meetings are conducted. :white_check_mark:

LEGEND:

:white_check_mark: - Completed

:on: - Ongoing

2 Likes

This is a good practice @jayasanka

1 Like

2nd GSoC Weekly Call

Held on: 2020-05-24T11:30:00Z

Attendees: @heliostrike @jayasanka

Meeting minutes

  1. Reviewed the draft mail which was prepared to send implementors
  2. Had a discussion on Micro-Frontend architecture

Tasks for the next week

  1. Get the draft mail reviewed :white_check_mark:
  2. Contact implementors :on:
  3. Continue the discussion on OWA and clarify how to initiate the UI :white_check_mark:

LEGEND:

:white_check_mark: - Completed

:on: - Ongoing

Update for the 1st week (2020-05-31T18:30:00Z - 2020-06-06T18:30:00Z):

  1. According to the thread most of them recommended using micro frontends. I went through the architecture and learned a lot from that. :slight_smile: I was able to set up the micro frontend on the openMRS reference application. Then I faced the following problem:
  1. In the meanwhile, I started a thread to check if there’s a way to get a cloud server to host a DHIS2 instance or gain access to already created one. Didn’t receive a good response yet.
  1. Received only two responses from the implementors. https://docs.google.com/forms/d/1PRnvbA3dLgqolsHPGCgmAdDXXdR9_yrwEKtQTV7RKLo/edit#responses. I will update the thread with a summary and ask Jeniffer to send her the implementors list.

Blog Posts:

1 Like

GSoC Mentoring Weekly Call

Held on: 2020-06-07T15:30:00Z

Attendees: @akshika47 @jayasanka

Meeting minutes

  1. Reviewed the current progress
  2. I was asked to join ongoing calls related to DHIS2

Tasks for the next week

  1. Collect more implementor contacts and reach them :on:
  2. Join ongoing calls related to DHIS2 :on:
  3. Connect to local DHIS2 instance and test it with the current implementation :white_check_mark:
  4. Initiate a basic frontend UI module :on:

LEGEND:

:white_check_mark: - Completed

:on: - Ongoing

2 Likes

GSoC Mentoring Weekly Call

Held on: 2020-06-20T15:30:00Z

Attendees: @akshika47 @jayasanka

Meeting minutes

  • Reviewed the current progress
  • Discussed with the data model of DHIS2 and the visualization
  • Planned to come up with a new database structure to store disaggregations

Tasks for the next week

  • Comeup with model and DB structure to store disaggregations :white_check_mark:
  • Start implementing the proposed model :on:

LEGEND:

:white_check_mark: - Completed

:on: - Ongoing

Updates for 2nd and 3rd week ( 2020-06-07T18:30:00Z - 2020-06-20T18:30:00Z)

  1. Post data to the DHIS2 instance using ADX format

    The previous implementation gets crashed when trying to post data to the DHIS2. Fixed the issue and posted data to the DHIS2 instance.

Tickets:

  1. Post data and from using the module and visualized it on the DHIS2 visualizer app. Did a background study on the DHIS2’s model structure.

Related discussions:

Blog posts:

1 Like

@akshika47 could you please review and merge the following PRs?

Issues:

Updates for the 4th and 5th week ( 2020-06-21T18:30:00Z - 2020-07-04T18:30:00Z)

  1. Create a new DB structure and a class structure to support ADX disaggregations
  1. Configure Travis build and reformat the code

Blog posts:

1 Like

Updates for the 6th week ( 2020-07-05T18:30:00Z - 2020-07-11T18:30:00Z )

  1. Implement the new model structure to support ADX disaggregations and remove some previous implementations.
  1. Import a Dataset from the metadata XML file

Tickets:

Pull Requests:

Related other discussions:

Blog posts:

Tasks for the next week:

  1. Import Data Elements :white_check_mark:
  2. Import Categories :white_check_mark:
  3. Import Category Options :white_check_mark:
  4. Generate Data Value Templates :white_check_mark:
2 Likes

Updates for the 6th week ( 2020-07-12T18:30:00Z - 2020-07-18T18:30:00Z )

  • Generated JAXB classes to fully unmarshal the import file using XJC. XJC compiles an XML schema file into fully annotated Java classes.
  • Create methods to extract and save,
    1. Data Elements
    2. Data Set
    3. Categories
    4. Category Options
    5. Disaggregations
  • Create a new DAO method to save Disaggregations
  • Create a new DAO method to find a Dissagregation using a Category and a Category Option
  • Implement a method to generate Data Value Template
  • Implement a recursive method to generate Disaggregation combinations for a given Data Element
  • Remove irrelevant field “name” from Data Value Template
  • Fix wrong field “dataelement_id” in Data Value Template’s mapping file
  • Implement DAO methods to
    1. save a Data Value Template
    2. remove Data Value Templates of a given Dataset
    3. get Disaggregations of a given Category

Pull Requests:

Blog posts:

1 Like

Updates for 2020-07-19T18:30:00Z - 2020-08-05T18:30:00Z

  • Create a new view to list imported Data Sets
  • Create a new controller to handle reports
  • Create a new DAO method to get all Data Sets
  • Modify the local header with new links and fix broken HTML tags
  • Remove irrelevant JSP pages
  • Create DAO methods to
    • Find Data Value Templates by a Data Set
    • Find a dataset by UUID
  • Create a new service to update the report of a Data Set
  • Create a new view to map Report with a DataSet
  • Create a DAO method to find a DataValueTemplate by id
  • Create a service to update the Report Indicator of a DataValue Template
  • Create a view to mapping DataValueTemplates with Report Indicators
  • Exclude dependencies which included javax.xml.namespace.QName
  • Create new Controller and Service methods to
    • Execute the mapped Report Definition
    • Map Report result with Data Value Templates
    • Generate ADX output
    • Post data to connected DHIS2 instance

Pull Requests:

Blog posts:

1 Like