OpenCRVS
A Civil Registration and Vital Statistics (CRVS) system records the details of all the major life events.
About the Project
Open Civil Registration and Vital Statistics (OpenCRVS) is an open source system supporting the digitization of common processes for civil registration and vital statistics (CRVS). It captures information regarding the major events of the lives of citizens including birth, death, marriage, divorce, adoption and migration. DSi is working with Plan International Bangladesh as their development partner for the OpenCRVS software via a collaborative process using Agile methodology and shared tools and platforms. The Cabinet Division of Bangladesh is running this project.
Technical Challenges and Our Solution
- One of the major challenges was faced when the application ran on low end devices. From the very beginning, the application is developed as a progressing web application (PWA). We had to maintain device storage for maintaining a local database. For smooth operation, we had to do a lot of optimization while storing data.
- The speciality of PWA is that the application can run offline. It can sync data with the server as soon as the device goes online. Since the application is running in rural areas with very low internet connectivity, sometimes the application cannot sync with the server even if the device is online. We had to handle this special case by checking continuously if the application can reach the server.
- The application needs to take pictures of documents during the registration process. Considering the poor internet connectivity, we had to reduce the image quality so that the images could be uploaded without any issue. But we also had to consider the quality of the camera of low-end devices which was very poor. This meant reducing the quality of a low-quality image which could result in an unusable image. We had to employ image processing and image optimization mechanisms based on the original image quality to create a better output.
- We had to integrate with the DHIS2 for fetching new born babies information for birth registration. The data of the DHIS2 did not follow the standard format while the stability of the data was very poor. We had to check data availability using different logical checkpoints to make the data meaningful.
- The system is used by rural government officials and it needed to handle a high volume of data. One of the important features is performance measurement and monitoring real time data. We have used time series databases, elastic search and similar technologies for those use cases.
- We had to use Geocode for address structure. We had fetched the geocode list from the Bangladesh Bureau of Statistics (BBS) server. We found that the BBS didn’t have any API for integration and it delivered the data in CSV and Excel format. As a result, we had to write services to fetch these data manually.