Can I develop a custom DHIS2 version that can work across different industry

My startup innovate and localized open source technologies to create better solutions to solve society and industry problems.

In the past one year, we have use the DHIS2 has an information management system for a government health agency. While doing that we have extended the platform to also store some data from field activities which is not covered in DHIS2 Aggregate or Tracker functionality. I had to deploy a Node.js server and API along with DHIS2 in a docker container to meet this need.

We have decided to adopt DHIS2 as our next Open source project to provide innovative and localized solution for information management across some industry we have identified like retail, agriculture, education, public administration, finance and a few others.

We are also going to experiment with introducing other features for our local need as well as deployment in a docker container in production.

Our target is to modify the software so that we would not have to deploy Node.js

I want to find out if this is permitted.

Dear @jetisco4u,

Regarding permitted or not - it should be your decision. You should decide either DHIS2 suitable just for your data collection, and process later or you want to process immediately collected data.
So basically it depends on your software architecture and final expectations from the developed software.

As for me DHIS2 excellente for quick and high quality data collection, as system has many limitations.


Ok about this. I think as far as I stick within the License then it should.

I have already extended the functionality with a Node.js REST API. But I am trying to combine everything in Java and merge the functionality. I also intend to introduce more features to meet our specific need.

Hi @jetisco4u

Modifying and deploying a custom version is absolutely allowed. See also the license of our Core repository.

However, with modification of the core comes the impossibility of updating. Especially when new security features are pushed to the core you will have a hard(er) time updating your own instance, and whenever possible deploying a custom version is therefore recommended against, as maintenance time will be much higher.

I don’t know what you’re trying to modify, but there’s a lot of possibilities to deploy custom functionality through apps, and as you have experienced yourself, through custom backends using the API.

In the end it’s your decision if you want to deploy a custom version, but I’d recommend keeping a NodeJS instance alongside so you can more easily update DHIS2 whenever new versions, especially security updates, get released.

Let me know if you have any further questions

Thanks. I think we can track update in the main repo and apply where necessary. Since the main repo is a global tool, sometimes it’s impossible to request for features that address local need. I want to try to maintain one backend system that is why I want to merge the node.js with the existing Java.

I also intend to deploy to a custom app hub so that we can apply update when we are ready. Can I ask question if I run into any challenge?

You can of course always ask questions here if you run into any problems! And I can understand not everything always meets your demands, but try to prevent any changes that might make it more difficult to upgrade.

For technical questions I recommend the Development - Développement section.

1 Like

@jetisco4u as I mentioned earlier it depends on your software architecture and the final results that you are trying to achieve.
As said @Rene would be much better do not touch main dhis2 java part, instead either build react app, or use nodejs seamlessly through dhis2 api interface. Just use dhis2 as a data warehouse and analytical center. The rest functionality you can implement on the side by nodejs/reactjs.

Good luck

I love this part but most of the existing React app and the app platform apps bootstrapped with d2 config use outdated dependencies in most cases React 16.x.x. When I built custom app using the App platform, even though I used React 18, the system need to still install v16 because of the underlying UI components using v16.

In the short time, I will explore this. But in the long run, I will look into merging.

This is an interesting angle. I think I will go with what is available now. But I will explore maximizing dhis2 functionality after updating most of the dependencies.