Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Help countries achieve Health SDGs by building digital public goods that strengthen public health.
The DIGIT Health platform is being built as an open source Digital Public Good to expand capabilities in public health. It is being designed to work across countries at varying levels of capacity and complexity.
The focus is to help countries reduce “diseases of poverty.” The World Health Organisation (WHO) estimates that such diseases “account for 45% of the disease burden in the poorest countries” and stem from poor nutrition and sanitation, absence of health education, and indoor air pollution. We want to help countries reduce this by building digital tools on top of eGov’s open-source platform - the Digital Infrastructure for Governance, Impact & Transformation (DIGIT) - to enable and manage health campaigns, and disease surveillance.
As platform adoption increases over time, it will continue to generate more real-time and authoritative data in the public health space, besides ingesting data from other sources. The platform will become a “shared source of truth” that all stakeholders can use to align resources and decisions to achieve operational and financial efficiency. The platform will therefore progressively and greatly improve the ability of low-and-middle-income countries (LMICs) to better manage the delivery of public health priorities.
Public health challenges are massive and complex. While many countries have limited capacity and resources to address such issues, the current approach to these challenges tends to strictly focus on delivering one specific outcome, driven by specific nodal agencies. Each programme ends up replicating the same set of efforts and outputs. For example, health campaigns are typically categorised as per the diseases they aim to address - malaria, polio, etc. Each programme involves a similar set of activities: planning, delivery and logistics, human resource management, monitoring and reporting. They suffer from low effectiveness due to the siloed and uncoordinated way in which they are funded, planned, executed, and monitored.
Current digital efforts do not take a “whole of system view” and do not solve the cost of coordination and duplication issues. Each program also develops its own systems (MIS, apps, dashboards). Such siloed, solution-centric approaches and tools create a new set of problems and inefficiencies for countries:
Higher costs and time: This is incurred on creating or procuring and maintaining these systems, including the onboarding cost of the same actors in each programme.
Data exists in multiple systems: They are not interoperable, leading to duplication, inconsistencies, poor adoption by on-ground workers, and sub-optimal decision-making.
Limited reusability and innovation: Data and capabilities are intertwined and ‘locked,’ making it extremely hard for the wider ecosystem to innovate and build upon.
Sub-scale: The tools are not able to scale for the national population and across programmes.
The DIGIT Health platform reimagines the public health space as a set of horizontal building blocks, such as shared registries, and services, accessible through well-defined open APIs, which can be leveraged by multiple countries and disease programmes. It will eliminate the above inefficiencies. Further, it will facilitate the independent evolution of each building block and participation by the health ecosystem, leading to faster innovation.
The DIGIT Health platform is being designed to enable delivery at scale, across various aspects of public health, and multiple country contexts. Using the platform approach, we will create an end-to-end flexible, open, configurable, and reusable platform to plan, manage and run any public health program such as health campaigns so there is detailed and timely monitoring and evaluation to review coverage, target achievement and identification of gaps for their distribution.
Re-usable: Shared data registries and infrastructure
Interoperable: Open API specifications
Secure and scalable
Multi-country support: Support for infrastructure isolation, as well as data isolation
Multi-lingual: Support for multiple languages
DIGIT Health platform will:
Allow ecosystem actors to use, contribute and evolve the platform collaboratively and sustainably.
Give the option to ecosystems to either host it on their own infrastructure or use it from a hosted environment (hosted by a trusted party) for which a sustainable costing and financial model will be evolved.
The common services and shared data registries can be reused to assemble products that provide a unified and consistent experience for each set of actors. The programme-specific context such as roles, workflows, and notifications can be configured by the respective programs, enabling faster rollout and execution.
The APIs will allow data and functionality to be reused across multiple departments, effectively breaking silos across programs. Through APIs, meaningful data and services can also be made available to the various ecosystem stakeholders for innovation and interoperate with other systems like MOSIP, DHIS2, Sunbird RC, DIVOC, etc. that are focused on other parts of the public health delivery value chain, such as disease surveillance, supply chain, verifiable certificates, and health insurance.
The platform is designed to facilitate stakeholders with a digital system to manage and implement health campaign activities in Mozambique. Click to know more.
Feature
Service name
PR
Multi-round campaign
Referral management
Side-effect
Service registry for the field app
Feature
Service name
PR
Referral management and side-effect
referral
Voucher-based registration
project
Last-mile delivery with QR code
stock
Feature
Service name
PR
Proximity-based search
Household/Individual
-
Multi-round campaign
-
Referral management and side-effect
referral
Count in the household search
Household
-
Voucher-based registration
Project
-
Last-mile delivery with QR code
Down sync API (v1.0)
-
Stock consumer group
Stock
Find the Product Capability Roadmap below:
Timelines
Q2 2023 (w/c May 15, 2023): Field testing
TBD: Tentative - 2023-end.
Tentative Q1 24
Value bundle
Value delivered
Feature list
Feature list
Feature list
Feature list
Campaign setup
Enable system administrators and program managers to set up the platform quickly, easily configure roles and role-based permissions, update master data, and manage users.
1. Campaign manager: Create and update campaigns (single round campaigns). 2. User management with UI. 3. Out-of-the-box standard dashboards.
1. Campaign manager with support for multi-round campaigns. 2. Forms engine.
1. Campaign manager with UI. 2. UI for setting up custom dashboards. 3. Forms designer with UI.
1. Mobile Device Management
Service delivery
Mobile app with a user-friendly design and easy, intuitive navigation. This will guide the field teams to easily register eligible beneficiaries, and deliver the healthcare intervention with built-in checks that enforce data collection protocols and validations to avoid data entry errors.
1. Register new households and individuals. 2. Search registered beneficiaries from the list. 3. Update service delivery information against a beneficiary. 4. Decision support for the resource delivery of LLIN's. 5. Creation of household and individual registries. 6. Re-use beneficiary data from the registries.
1. Proximity-based search using GIS map on the mobile app. 2. Routing assistance to locate beneficiaries. 3. Support voucher generation and scanning for tracking service delivery. 4. Last-mile delivery tracking: Record stock received from the warehouse for delivery. 5. Adverse events reporting. 6. Enhance decision support logic for MDA campaigns.
1. Beneficiary eligibility checker. 2. Generation of due lists for multi-round campaigns. 3. In-app alerts and reminders to improve medication adherence.
Inventory management
Mobile app that enables the warehouse manager to capture the inflow and outflow of resources from the warehouse and monitor delivery data against consumption data to identify potential stock outs, wastage, fraud, as well as take corrective action.
1. Record stock receipts and issues. 2. Stock reconciliation to view the balance stock on hand.
Consumables management
Dashboards and reports
Enable programme managers, supervisors and frontline workers to view key performance indicators for assessing campaign efficiency and effectiveness before, during, and after the campaign via near real-time dashboards and pre-emptive alerts for course corrections.
1. Offline mobile reports to view task completion and campaign coverage. 2. Offline mobile reports to asses the performance of frontline teams. 3. Out-of-the-box online web dashboard to view campaign coverage and efficiency indicators. 4. Export tabular reports from web dashboards.
1. Automate preemptive email/SMS notifications. 2. Automate report generation.
Configure rule-based alerts on dashboards with enhanced predictive analytics.
1. Online GIS-enabled web dashboards for real-time monitoring 2. Dashboard with basic rule-based prescriptive analytical support.
Training
Enable programme managers and supervisors to track training progress, evaluate training attendees and provide on-demand refreshers to attendees. Ensure that the campaign staff is equipped and trained to perform their duties efficiently.
1. Capture PII, bank details and performance data of hired campaign staff for longitudinal tracking. 2. Creation of the staff registry.
1. UI to find and hire campaign staff from the staff registry to enable better skill-requirement match. 2. On-demand access to job-aids.
1. Training refreshers. 2. Pre and post evaluation of the training. 3. Track the status of the training sessions.
Payments
Enable programme managers to decrease the time to pay frontline workers while increasing financial accountability and reducing fraud.
1. Manage attendance for the campaign staff. 2. View payment due for services delivered.
1. Automate invoice generation for incentive payments. 2. Automate payment to campaign staff 3. Track status of payment processing. 4. Send notification on payment completion.
SBCC/demand generation
Enable programme managers, frontline workers and citizens to easily access and receive SBCC messages digitally to improve disease awareness and decrease refusals.
1. On-demand access to IEC material within the mobile app.
1. Broadcast SMS for one-way messaging to beneficiaries. 2. Post service delivery surveys.
Grievances and complaints
Enable programme managers and supervisors to ensure speedy and efficient resolution of complaints while providing them with an intuitive system that helps to initiate corrective actions in a timely manner.
1. Log grievances/complaints. 2. Manage complaints: View and resolve complaints. 3. Dashboards for viewing complaints and grievances.
1. Assign complaints to the appropriate actor for resolution. 2. Track the status of complaints. 3. Notification on complaint resolution.
1. Automatic prioritization of complaints from the list. 2. Auto-routing and escalation of complaints.
Planning
Enable programme managers to improve the efficiency and effectiveness of the planning process by leveraging GIS systems and data from other sources to create planning templates that make it easy to generate, validate and share micro-plans.
Micro-planning: Template for capturing targets from the micro-plans.
Workflow management.
1. Macro-planning: Estimating population numbers and resource requirements. 2. Micro-planning: Input based template to generate micro-plans. 3. Micro-planning: Workflow to share micro-plans for reviews and approvals. 4. Micro-planning: Track the status of the micro-planning activity.
GIS-enabled micro-planning using digital maps.
Supervision
Enable supervisors to to track the campaign staff's adherence to campaign SOP's and protocols and record inspection details.
Submit supervision checklists.
In-app notifications to the field teams.
WhatsApp integration to enable a two-way communication.
Offline capability
Enable frontline teams to collect data in low and no internet areas.
1. Data collection in low/no internet areas. 2. Enable location services while offline to track GPS coordinates.
Peer-to-peer sync.
User experience delighters
Enable all frontline workers to do their best work by providing a feature set in the mobile application that enables the app to act as a co-pilot to help the user perform their tasks while improving technology adoption.
1. In-app walkthrough of the application. 2. Progress bar to monitor the work status. 3. Multi-language support. 4. Call help desk: SOS button.
Interoperability and integration
Enable the adoption of the HCM platform by allowing a hassle-free integration of the capabilities with widely-used applications.
Integration with DHIS2.
1. Interoperability with FHIR for data exchange. 2. Supply chain management: Integration with OpenLMIS. 3. Integration with other visualization tools like PowerBI, and Tableau. 4. Integration with Reveal.
Citizen's portal
Registration 1. Self-Registration for campaigns. 2. Appointment scheduling and booking.
Core
Access control
egov-accesscontrol:v1.1.3-72f8a8f87b-24
Not changed
Encryption service
egov-enc-service-db:v1.1.2-72f8a8f87b-9
Not changed
File store
egovio/egov-filestore:v1.2.4-72f8a8f87b-10
Not changed
Localisation
egov-localization-db:v1.1.3-72f8a8f87b-6
Not changed
ID gen
egov-idgen-db:v1.2.3-72f8a8f87b-7
Not changed
Indexer
egov-indexer-db:v1.1.7-f52184e6ba-25
Not changed
Location
egov-location-db:v1.1.5-f9271c8-7
Not changed
MDMS
egov-mdms-service:v1.3.2-72f8a8f87b-12
Not changed
Notification mail
egov-notification-mail:health-digit-master-6865af2823-2
Not changed
Notification SMS
egovio/egov-notification-sms:v1.1.3-48a03ad7bb-10
Not changed
OTP
egov-otp-db:v1.2.2-72f8a8f87b-12
Not changed
Persister
egov-persister:v1.1.5-3371bc2-5
Not changed
Searcher
egovio/egov-searcher:v1.1.5-72f8a8f87b-16
Not changed
URL shortening
egov-url-shortening-db:v1.1.2-1715164454-3
Not changed
User
egov-user-db:health-digit-dev-f2ddde9-32
Not changed
User OTP
egovio/user-otp:health-digit-master-6865af2823-3
Not changed
Workflow
egov-workflow-v2-db:v1.2.1-df98ec3c35-2
Not changed
Report
egovio/report:v1.3.4-96b24b0d72-16
Not changed
Document uploader
egov-document-uploader-db:v1.1.0-75d461a4d2-4
Not changed
Audit service
audit-service:audit-heatlh-40b1a4018a-1
Not chnaged
Error handler
error-handler:master-impel-dump-5022b7acff-1
dashboard-analytics
dashboard-analytics:master-impel-f705ac483a-48
dashboard-ingest
dashboard-ingest:v1.1.4-72f8a8f87b-10
Individual
egovio/individual:v1.1.2-069d842955-169
Changed
Household
egovio/household:v1.1.1-b78923bee4-103
Changed
Facility
egovio/facility:v1.1.0-73167482a2-28
Not changed
Product
egovio/product:v1.1.0-73167482a2-12
Not changed
Project
egovio/project:v1.1.1-b78923bee4-171
Stock
egovio/stock:v1.1.1-e49ec543d8-69
Referral management
egovio/referralmanagement:v1.0.0-b78923bee4-66
Service request
egovio/service-request:v1.0.0-a51bee1435-7
Not Changed
Transformer
egovio/transformer:v1.1.0-73167482a2-38
Not Changed
Complaints
egovio/pgr-services:v1.1.7-f58e5abb0d-8
Not changed
User management
egovio/egov-hrms:health-digit-master-5bc2341e92-14
Not Changed
egov-hrms-db:health-moz-dev-c04a453286-67
The articles in this section includes:
The detailed mapping of DIGIT’s capabilities with the core requirements mentioned in the NUIS digital blueprint is mentioned below:
Interoperability
DIGIT is designed as an API-first platform and with open APIs, and open standard interoperability is maintained.
Taxonomies are also available for the key domain entities/registries on DIGIT.
Data privacy and security by design
Data privacy and security design are a critical part of the design of DIGIT.
Core service layer of DIGIT includes a signing and encryption service that provides capabilities to sign/encrypt/mask sensitive data.
Appropriate access controls can be defined in the APIs to ensure authorised access to sensitive data.
Transparency and accountability through data
DIGIT has:
The capability to define registries, preferably through standard specifications like OpenAPI 3.0.
The capability to configure registry attributes for security and protection as per the configuration.
Mechanisms to verify data and its provenance through audit logs (access and change logs), preferably through APIs.
Reusability and extensibility
The DIGIT platform is designed as a collection of over 55-plus atomic micro-services which are bundled together in a given context to provide an end solution.
DIGIT allows the extension of existing capabilities without needing architectural interventions.
Components are designed to be independently reusable without any tight coupling.
Evolvability and scale
On DIGIT:
Capabilities can be added without needing an overall system re-architecture.
Individual components can evolve separately to enable the heterogeneous evolution of the system.
Scaling can be done horizontally to handle changes in request volumes.
Individual components can be scaled independent of each other to enable efficient resource utilisation.
Multi-channel access
DIGIT allows multiple channels of solution delivery: ULB counters, web portals, mobile app, WhatsApp chatbot, and third-party applications such as PayTm, tablets, etc.
DIGIT’s access control mechanism can be configured to provide different levels of access based on channels and roles.
Ecosystem-driven
DIGIT leverages open-source technologies to reduce the cost of solutions.
Leverages or integrates with, or extends existing platforms/stacks such as IndiaStack, IUDX, ICTRA infrastructure, etc.
Provides the capability to gather feedback from the ecosystem in a digital manner.
Data specifications/models are available for domain entities. DIGIT is designed as an API-first platform wherein data specs/models are created for all key entities, thus ensuring interoperability through open APIs and open standards. Taxonomies are available for the key domain entities/registries. These can later be harmonised with standard taxonomies in the domain as and when they are made available. DIGIT data models and APIs are published as open APIs freely available to everyone in the ecosystem. Currently, DIGIT provides at least three key distinct APIs for all domain entities: Create, update and search. Deactivation/cancellation of key entities in DIGIT is achieved through updating their status to inactive as per their defined specification/API contracts. Given the API-first and micro-services-driven nature of DIGIT, current APIs and models can be quickly harmonised with national standards as and when they are made available. DIGIT strives to leverage established domain standards (national/international), wherever available.
Data privacy capabilities are available to mark and protect sensitive data. The core service layer of DIGIT includes signing and encryption service as one of the core services that provide capabilities to sign/encrypt/mask sensitive data. It is designed such that it can work against software key stores and can be extended to integrate with any kind of hardware key store to store and protect signing and encryption keys. Encryption requirements can be defined and adhered to for the storage of sensitive data. DIGIT requires the user PII data to be stored in its user service, which is, by default, enabled for encryption of sensitive data as user data vault. All other services in DIGIT are required to access PII data by explicitly calling the user service, which, in turn, audits all access to PII. In addition, individual services in DIGIT can leverage DIGIT’s signing and encryption service (this is what the user service leverages to create user data vault) to further protect additional sensitive data available with the services. DIGIT provides the capability to define workflows for data modification that can be configured to have approval steps to get the needed consent for any data modification activities. DIGIT currently provides RBAC (Role-Based Access Control)-based access control for access (search) to data.
Appropriate access controls can be defined in the APIs to ensure authorised access to sensitive data. DIGIT is designed to handle authentication and authorisation as a perimeter control at its API gateway layer to ensure that unauthorised calls are not allowed to contact the respective micro-services. DIGIT provides an RBAC mechanism where users are explicitly provided access to relevant resources by assigning them appropriate roles. By default, DIGIT supports OAUTH-based authentication for individual users and APIs. However, the authentication and authorisation filter in DIGIT is designed to be easily extendable to support any further authorisation and authentication needs. The perimeter security mechanism in DIGIT also helps developers in focusing on the functional developments for further services and offloading the access control requirements for new resources and their APIs to the API gateway using simple configurations. DIGIT also ensures that risks like the following are taken care of:
Privilege escalation – form field manipulation
Failure to restrict URL access
Insecure direct object references (IDOR)
Malicious file upload leads to cross-site scripting
Improper authentication
Missing account lockout
Request throttling attack
Weak encoding mechanism
Sensitive information in URL
Lack of automatic session expiration
Insecure banner implementation
Concurrent session
Clickjacking
Improper error handling
DIGIT has the capability to define key registries in OpenAPI 3.0 specs formats. It can easily achieve key APIs like create/update/search using its building blocks in core services, mainly through configurations and using lightweight extensions on a needs basis. DIGIT has the capability to protect person-specific sensitive data by encrypting them in the user data vault (user registry), which allows configuration-based protection of sensitive PII. DIGIT requires additional registries to reference PII using this mechanism. In addition, registries in DIGIT can leverage its data protection (signing and encryption) core service to provide additional protection to registry-specific attributes. The registry data in DIGIT can be signed for tamper-proofing, using its signing and encryption core service. A proof-of-concept for this has already been done on the ePass module that was built on the DIGT platform. All key data modifications in DIGIT are access logged to provide an audit trail, which can be accessed through the APIs. The upcoming version of DIGIT is planning to bring in the concept of immutable event logs to further strengthen this capability. DIGIT leverages open-source telemetry to provide the ability to gather telemetry data and extends it for the DIGIT-specific processing pipeline. This framework allows for additional event definitions and contextual extension of the telemetry processing pipeline thereby future-proofing this capability in DIGIT.
The DIGIT platform is designed as a collection of more than 50-plus atomic micro-services which are bundled together in a given context to provide end solutions. The micro-services in DIGIT can be divided into three main categories: data services (registries, reference master data management, etc.), tech infrastructure services (authentication, authorisation, notification engine, etc.) and domain services (assessment, NOC, etc.). Citizen, employee and administrative interfaces in DIGIT use these micro-services to achieve the needed functionality. Data models and APIs in DIGIT are defined as OpenAPI 3.0 specifications and can be extended by using a combination of configuration and extension techniques. For example, if the additional attributes are only needed to be stored with format validation, it can be a simple schema extension, while if the additional business checks/functionality need to be implemented using the extended attributes, then it can be achieved using pre/post request filters or extending underlying micro-services. DIGIT allows the extension of existing capabilities without needing architectural interventions. As described above, the extension of existing functionality on DIGIT can be achieved using additional configurations, additional extension services, or request/response filters. Several partners have extended DIGIT modules to cater to new use cases. For instance, the DIGIT mCollect module caters to the collection of fees for over 50 services on the counter, but it does not have a citizen interface for the payment of these services online. The Directorate General Defence Estates (DGDE) wanted to introduce this interface for the citizen’s of cantonment boards in India, and were able to easily enhance the mCollect module to include this capability. DIGIT supports single-instance multi-tenancy to enable sharing of the underlying infrastructure. All DIGIT data models and services are designed to be multi-tenanted. DIGIT uses an API-first approach in its design and development to ensure loose coupling between its various components. These APIs are clearly defined using OpenAPI 3.0 specifications to ensure clear documentation.
DIGIT is designed using an API-first approach, therefore enabling any user interface channel to leverage it. DIGIT’s own user interfaces (web/mobile app, WhatsApp, Chatbot) are implemented using its APIs to ensure that the offered platform capabilities and data are accessible to any delivery channel based on configured policies. DIGIT’s access control mechanism can be configured to provide different levels of access based on channels and roles.
The DIGIT platform and its user interfaces are completely open source. All external components used in DIGIT are also open source. Due to its API-based and event-driven architecture, DIGIT can be integrated with any existing stack. Wherever appropriate, DIGIT also provides out-of-the-box integrations with crucial stacks/platforms. The most common integrations are to payment gateways, SMS providers and SMTP email servers for a typical implementation. More than 14 organisations have already partnered with us to implement DIGIT across multiple implementations in India, and have built over 20 new solutions on top of the platform. DIGIT also provides the capability to gather feedback from the ecosystem in a digital manner. The feedback capability in DIGIT can be looked at the following levels:
Service delivery feedback on services offered through DIGIT: DIGIT provides a highly configurable and extensible public grievance module to enable this kind of feedback/redressal for functional users (such as citizens, and employees).
Service usage feedback: The DIGIT user interfaces include a telemetry SDK which is backed by telemetry infrastructure in DIGIT platform. Coupled with API access logs, this enables DIGIT to gather usage feedback through live action and can be used for fine tuning interfaces and APIs
Design/feature feedback: As an open source project on Github, DIGIT provides a mechanism to provide comments/feedback on its various components using Github. This feedback can be leveraged to create a point of view on the future roadmap for the platform.
This page lists the skillset required for anyone to build and support the HCM application
This document lists the technical skillsets required for someone to build and support the Health Campaign Management (HCM) platform. There are distinct skills required to customise the application, and set up and run the infrastructure for this. The basic hardware configuration required for the developer machine is part of this document.
The technical skillsets that are required to work on the DIGIT HCM stack are listed below. It is expected the team has satisfactory knowledge of the below technologies before they take up DIGIT training.
Open API Contract - Swagger2.0
YAML/JSON
Postman
Postgres
Java and REST APIS
Basics of Elasticsearch
Maven
Springboot
Kafka
Zuul
ReactJS
Flutter
Understanding of the micro-service architecture.
Experience with AWS, Azure, GCP, and NIC Cloud.
Strong working knowledge of Linux, command, VM Instances, networking, and storage.
To create Kubernetes cluster on AWS, Azure, and GCP on NIC Cloud.
Kubectl installation and commands (Apply, get, edit, describe k8s objects).
Terraform for infra-as-code for cluster or VM provisioning.
Understanding of VM types, Linux OS types, LoadBalancer, VPC, Subnets, Security Groups, Firewall, Routing, DNS).
Experience setting up CI like Jenkins and creating pipelines.
Deployment strategies - Rolling updates, Canary, Blue/Green.
Artifactory - Nexus, Verdaccio, DockerHub, etc.
Experience with Kubernetes ingress, setting up SSL certificates, and renewal.
Understanding of the Zuul gateway.
Gitops, Git branching, PR review process. Rules, Hooks, etc.
Experience in Helm, packaging, and deploying.
Apache, Nginx, Redis, and Postgres.
Teams are expected to have laptops/desktops configured as mentioned below with all the software required to run the DIGIT application:
Laptop for hands-on training with 16GB RAM and OS preferably Ubuntu
All developers need to have Git IDs
Install VSCode/IntelliJ/Eclipse
Postman
There are knowledge assets available on the net for general items and eGov assets for DIGIT services. Here you can find references to each of the topics of importance. It is mandated the trainees do a self-study of all the software mentioned in the pre-requisites using the reference materials shared.
Git
Do you have a Git account? Do you know how to clone a repository, pull updates, push updates? Do you know how to give a pull request and merge the pull request?
Microservice Architecture
Do you know when to create a new service? How to access other services?
ReactJS
How to create react app? How to create a stateful and stateless component? How to use HOC as a wrapper?Validations at form level using React.js and Redux.
Postgres
How to create a database and set up privileges? How to add an index on a table? How to use aggregation functions in psql?
Postman
Call a REST API from Postman with proper payload and show the responseSetup any service locally (MDMS or user service has least dependencies) and check the API’s using postman.
REST APIs
What are the principles to be followed when making a REST API? When to use POST and GET? How to define the request and response parameters?
Kafka
How to push messages on Kafka topic? How does the consumer group work? What are partitions?
Docker and Kubernetes
How to edit deployment configuration? How to read logs? How to go inside a Kubernetes pod? How to create a docker file using a base image? How to port-forward the pod to the local port?
JSON
How to write filters to extract specific data using jsonPaths?
YAML
How to read an API contract using swagger?
Zuul
What does Zuul do?
Maven
What is POM? What is the purpose of maven clean install and how to do it? What is the difference between the version and SNAPSHOT?
Springboot
How does autowiring work in spring? How to write a consumer/producer using spring Kafka? How to make an API call to another service using restTemplate? How to execute queries using JDBC template?
Elastic search
How to write the basic queries to fetch data from the elastic search index?
DIGIT Architecture
What comes as part of the core service, business service and municipal service? How to calls APIs from one service in another service?
DIGIT Core Services
Which are the core services in the DIGIT framework?
DIGIT DevOps
DIGIT MDMS
How to read a master date from MDMS? How to add new data in an existing master? Where is the MDMS data stored?
DIGIT UI Framework
How to add a new component to the framework? How to use an existing component?
DSS
DIGIT is India’s largest open-source platform for digital governance. The health services are built on top of DIGIT. It is built on OpenAPI (OAS 2.0) and provides API-based access to various services, enabling governments to provide health campaign services with relevant new ones. It also facilitates integration with the existing system into the platform and runs seamlessly on any commercial/on-prem cloud infrastructure with scale and speed.
Health DIGIT is a micro-services-based platform that is built to scale. Micro-services are small, autonomous, and developer-friendly services that work together.
It facilitates decentralised control between teams so that its developers strive to produce useful tools that can then be used by others to solve the same problems.
Micro-services have intelligent endpoints that process information and apply logic. They receive requests, process them, and generate a response accordingly.
Parallelism in development: Micro-services architectures are mainly business-centric.
A large software or system can be broken down into multiple small components or services. These components can be designed, developed, and deployed independently without compromising the integrity of the application.
DIGIT Health follows a multi-layer or n-tiered distributed architecture pattern. As seen in the illustration above, there are different horizontal layers with some set of components such as Services, Registries and DIGIT Core Services. Every layer consists of a set of microservices. Each layer of the layered architecture pattern has a specific role and responsibility within the application. The following are the advantages:
Layered architecture increases flexibility, maintainability, and scalability.
Multiple applications can reuse the components.
Parallelism.
Different components of the application can be independently deployed, maintained, and updated, on different time schedules.
Layered architecture also makes it possible to configure different levels of security to different components.
Layered architecture also helps users test the components independently of each other.
The release offers new platform features and functions, the details of which are provided below.
Added proximity-based search on household and individual.
Multi-round campaign enabled in the mobile app.
- Ability to configure cycles and deliveries.
- Formula to calculate the dosage based on criteria added in MDMS.
Referral management and side-effects.
Total count added in the household search.
Adding voucher tag (QR code) during beneficiary registration.
Last-mile delivery with QR code (only BE - exchange of inventory between any users using user uuid scanned from logged in user profile code).
Down sync API (v1.0).
NA
Down sync does not support incremental download (that is, downloading only new data created in the server since the last download).
DIGIT is an open-source platform licensed under the MIT license () compliant with the NUIS digital blueprint.
A new functionality can be added by re-bundling existing building blocks in the context of new use cases and implementing only additionally-required services without requiring any architectural overhaul. Additionally, due to its loosely coupled API-driven design, DIGIT allows for new components to be implemented in the technology that is most useful for that use case. The API-driven, micro-services-based architecture of DIGIT enables its components to evolve separately. On DIGIT, individual components can evolve separately to enable the heterogeneous evolution of the system. DIGIT uses SemVer 2.0 for the versioning of its micro-services and interfaces. Semantic versioning is a formal convention for specifying compatibility using a three-part version number: major version; minor version; and patch. More details on this can be found on this link: . DIGIT is designed to be horizontally scalable. The micro-services-based architecture of DIGIT also enables it to scale only needed components/services, thereby providing resource efficiency. For example, the billing and collection services can be scaled separately during a financial year closing if the load pattern indicates increasing volume of bill payments during that period. DIGIT is designed to be hardwarec agnostic and can be run on any hardware. It has been tested on multiple commercial clouds and state-sponsored bare metal infrastructure. Components of DIGIT that need to use underlying hardware have been carefully chosen (in case where DIGIT is using other open source components) or designed (DIGIT’s own components) to provide a layer of abstraction that can be extended for any types of hardware.
Install
Install
Install
Install 6
Install
s
Click to learn more about the Master Data Management Service (MDMS), and configure it.
Note: Check the for more details.
Feature
Description
Side-effect
Capture side-effects arising form medicine administration.
Referral management
Refer said beneficiary to a health facility/worker in case of a side-effect.
Down sync API
Download previous campaign registry from server for a new campaign or future cycles of same campaign.
Migration for new mandatory field (clientreferenceid) in Household_Member table, This migration has to be done before the deployment the Household build.
Migration for null client Audit details Since previous versions did not have the information.
A server should be responsible to handle or offer a mechanism to handle errors once data reaches it. (Error handling mechanism is being designed by the platform).
Sync will be manually triggered by the user (except for automatically syncing configuration down on the first login).
Sync down of data is not required to support (good to have) the first rollout.
Sync will be done through bulk APIs.
Sync will send each save action performed by the field user while offline to the server to preserve an audit of actions performed by the field user.
Eg: If a field user registers an individual and saves the record and then goes back to update the individual, this will result in two API calls to the server (one create and one update).
API response compression Gzip will be turned on for all the endpoints.
Unique identifier to be used between client and server:
A Client will create a unique (client-generated) identifier per entity (clientReferenceId) to relate entities while operations are being performed offline and send this id to the server for creating operations.
Any subsequent operations (like update, delete) will be on the server gen id, so the client has to get the server gen id by searching using the client generated id. The client will call search API with clientReferenceId and will get the server generated id.
Client will update the server-generated id into the records on the client and use the server-generated id for subsequent updates for those entities.
Processing on the backend will continue to be asynchronous and not changed for the health use case.
Search API max limit and the default limit.
Service details and endpoints.
Service details and endpoints.
Number of entities sent to the server in bulk API calls
Additional fields per entity in the app.
The drop-down values or select options to be presented in the app for field users.
Configuration changes are expected to be additive for the data captured against such configuration to continue being usable.
Number of retries on API call failure after which the app should stop retrying.
Timeout for the API calls.
Access to data will be defined by the linkages of staff to the project and the corresponding boundary while respecting role-action mappings instead of the tenant-based approach.
All deletes are soft deletes.
The server is responsible to delete nested/child entities if applicable when the parent entity is deleted.
Undeletion is not permitted.
Duplicate updates do not need to be detected or filtered out. The client is responsible to send duplicate updates on entity as separate requests to server.
Since persistence in DIGIT is asynchronous but the sync process from the field worker app is likely to send dependent data in a short period, a cache is to be introduced against which dependent data can be validated if required while it is in the process of being persisted to the DB. This cache is exposed via the search API of the corresponding service and the caller is agnostic to whether the result was returned from the cache or database.
For v1, we can maintain the sequence of updates only for requests on a single entity by a single user. i.e. Updates on the same entity by multiple users will result in the last caller's updates going through.
To maintain the sequence of updates, a rowVersion field is introduced in every entity. Callers pass the rowVersion as received from the server. The server can detect if any out-of-sequence updates have come in and reject it / pass it to the error handling mechanism.
Search APIs will not return (soft) deleted data by default. If deleted data is required the includeDeleted param can be passed to the search APIs.
From the Product requirement perspective, there is no unique identification identifier, so Platform is unable to check the uniqueness of registry entities.
The development is complete for all the features that are part of the release.
Yes
Kaviyarasan
Code merged to master branch on 14th Nov
Test cases are documented by the QA team, reviewed by product owners, and test results are updated in the test cases sheet.
Yes
Tumul
Mrunal/Vignesh
The incremental demo of the features showcased during the sprint showcase and feedback is incorporated. If possible, list out the JIRA tickets for feedback.
Yes
Tumul
Mrunal/Vignesh
UI/UX audit review is completed along with feedback incorporation for any changes in UI/UX.
Partially
Naveen
Andrew
impel pull from product should be done, will be reviewed by andrew on wednesday
Incremental demos to the product owners are completed as part of the sprint, and feedback is incorporated.
Yes
Tumul
Mrunal/Vignesh
QA sign-off is completed by the QA team and communicated to product owners. All the tickets’ QA sign-off status is updated in JIRA.
Yes
Tumul
Kaviyarasan
UI, and API technical documents are updated for the release along with the configuration documents.
Yes
Kavi
Ghanshyam
UAT promotion and regression testing from the QA team is completed. The QA team has shared the UAT regression test cases with the product owners.
Yes
Tumul
API automation scripts are updated for new APIs or changes to any existing APIs for the release. API automation regression is completed on UAT; the automation test results are analysed and the necessary actions are taken to fix the failure cases. Publish the list of failure use cases with a reason for failure and the resolution taken to fix these failures for the release.
No
No new automation scripts are done, due to lack of resource
The API backward compatibility testing is completed.
Yes
Tumul
Beneficary tag, client audit details tested for backward comaptiability
The communication is shared with product owners for the completion of UAT promotion and regression by the QA team. The product owners have to give a product sign-off within one week of this communication.
Yes
Tumul
Mrunal/vignesh
communication done on 16th Nov
The UAT product sign-off communication is received from product owners along with the release notes and user guides (if applicable).
Yes
Mrunal/Vignesh
Kaviyarasan
The GIT tags and releases are created for the code changes for the release.
Yes
Kaviyarasan
Verify whether the release notes are updated.
Yes
Kaviyarasan
Kaviyarasan
Tech release notes are updated.
Verify whether all the UAT builds are updated along with the GIT tag details.
Yes
Kaviyarasan
Verify whether all MDMS, configurations, infra-ops configurations are updated.
Yes
Kaviyarasan
All configurations are part of the master promotion document.
In progress
Mihika
In progress - review pending
Verify whether all test cases are up-to-date and updated along with the necessary permissions to view the test cases sheet. The test cases sheet is verified by the test lead.
Yes
Tumul
Mrunal/Vignesh
Signed-off.
Verify whether the UAT credentials' sheet is updated with the details of new users and roles, if any.
Yes
This should not go into Gitbook as this is internal to eGov
Tumul
Signed-off.
Verify whether all the localisation data was added in UAT, and updated in the release kits.
Yes
Tumul
Kavi
release kit pending review
Verify whether the product release notes and user guides are updated and published.
Yes
Mrunal/Vignesh
Jojo
Signed-off.
The demo of the released features is done by the product team as part of a sprint/release showcase.
Yes
Mrunal/Vignesh
Done on 15th Nov
Technical and product workshops/demos are conducted by the engineering and product teams respectively to the implementation team (implementation handover).
Yes
Kaviyarasan
Vishal
Incremental releases were with the Impel team
Architect sign-off and technical quality report.
Yes
Kaviyarasan
Signed-off (Quality report pending)
Product roadmap and success metrics.
Yes
Mrunal/Vignesh
Adoption metrics.
Yes
Ankit
Pradipta
Programme roll-out plan.
Yes
Ankit
Pradipta
Implementation checklist.
Yes
Ankit
Elzan
Implementation roll-out plan.
Yes
Ankit
Elzan
Gate 2
Ankit
ExCos
The internal release communication along with all the release artefacts are shared by the engineering/ product teams.
Mrunal/Vignesh
To be shared post Gate 2.
Plan for upgrading the staging/demo instance with the release product within 2-4 weeks based on a period where no demos are planned from staging for the previous version of the released product.
Not applicable currently.
The release communication to partners is shared by the GTM team, and a webinar is arranged by the GTM team after the release communication, within 2-4 weeks of the release.
To be done by Dec 15th
Here are the articles in this section:
The articles in this section include:
The articles in this section include:
Health Campaign - High Level Design
The high level design is divided into:
Master data
Registries/entities
Reusable DIGIT services
Form engine support
Multi-tenancy
Android offline first app
Web app - Campaign planning + dashboard
External integration - DHIS2
Base Health Campaign on DIGIT Core 2.8.
Master data categorised on the complexity required to maintain them from the technical perspective.
Simple Masters
Roles
Additional field schemas for different entities
Project task configurations
Project type
Role-actions
Actions
Hierarchical Masters
Administrative boundary and hierarchy
Inter-Linking Masters
Field app config
Service registry
New service.
As users are registered to campaigns, populate the individual registry with basic information about them.
This registry is the first step towards the long term plans in DIGIT to move non users of the system away from the User service. However, due to the current dependency on User service for authN and authZ among other things, this registry will be a wrapper over the User service.
New service.
Collection of Individuals living together (potentially receiving shared campaign intervention).
New service.
Needed to model storage Warehouses through which stock moves.
New service.
Needed to model the resources that are distributed as part of projects both as part of stock movement and actual distribution to beneficiaries.
New service.
Models how services and benefits are typically distributed to citizens by governments.
Contains multiple endpoints within the service to map other entities such as beneficiaries, staff, facilities, resources to the projects.
New service.
Track inflow and outflow of stock resources.
Many of the DIGIT-Core services can be reused without any changes. Some of them could be extended and enhanced to support the required features.
digit-mdms-service
Digit-location / boundary service
digit-access-control
Zuul API Gateway
digit-idgen
digit-persister
digit-indexer
digit-localization
DSS
Signed Audit
No existing services being enhanced.
The Health Campaign system does not make heavy use of workflows. Most flows in v1 are single actor and end after a single step (i.e. submitting collected data).
Form engine support was pushing out timelines and has been dropped from v1 scope.
The proposal is to have a single installation to support multiple countries and multiple health campaigns within these countries. Different campaigns will need to share registries.
Leveraging multi tenancy support in DIGIT for this.
Android app is proposed to be modelled on mGramSeva app and will be built in Flutter.
This app will be used in areas with limited or no internet connectivity and hence will need to work while offline. Users will sync the data collected offline when they are in an area with network connectivity.
SQLite will be used to model structured data and ISAR will be used for unstructured data.
Out of scope for v1.
The field workers will need to see dashboards based on the data stored in the offline database. Library - TBD
Out-of-scope for v1.
The app will have some custom screens to capture information around the campaign plan.
DSS dashboards are planned to be leveraged for reporting dashboards.
This will be added to implementation scope.
Verify whether all docs will be published to by the Technical Writer as part of the release.
Here are the articles in this section:
Here are the articles in this section:
Here are the articles in this section:
Here are the articles in this section:
The individual registry provides APIs to create citizens or users to the DIGIT platform. This document provides the configuration details for setting up individuals.
Knowledge of Java/J2EE(preferably Java 8 version).
Knowledge of Spring Boot and spring-boot microservices.
Knowledge of Git or any version control system.
Knowledge of RESTful web services.
Knowledge of the Lombok library is helpful.
Knowledge of eGov-mdms service, eGov-persister, eGov-idgen, eGov-indexer, and eGov-user will be helpful.
Provides APIs to create, update, and delete individuals.
Provides APIs to bulk create, update, and delete individuals.
Inactivates the status of individuals post deletion.
Provides search API for individuals on name, individual ID, unique ID, and date of birth.
*In the case of IntelliJ, the plugin can be installed directly. For eclipse, the Lombok jar location has to be added in the eclipse.ini file in this format javaagent:lombok.jar.
Application.properties file information:
Kafka topics persister configs for eGov persister
URLs for the external API references:
idGen Id formats :-> idgen.individual.id.format=individual.id // eg: IND-[cy:yyyy-MM-dd]-[SEQ_ADDRESS_IND]
The household service provides APIs to create households and household members for the HCM. This document provides the configuration details for setting up the household registry.
Knowledge of Java/J2EE (preferably Java 8 version).
Knowledge of spring boot and spring-boot micro-services.
Knowledge of Git or any version control system.
Knowledge of RESTful web services.
Knowledge of the Lombok library is helpful.
Knowledge of eGov-mdms service, eGov-persister, eGov-idgen, eGov-indexer, and eGov-user will be helpful.
Provides APIs to create, update, delete, and search households.
Provides APIs to bulk create, bulk update, and bulk delete households.
Provides APIs to create, update, delete, and search household members.
Provides APIs to bulk create, bulk update, and bulk delete household members.
*In the case of IntelliJ, the plugin can be installed directly. For eclipse, the Lombok jar location has to be added in the eclipse.ini file in this format javaagent:lombok.jar.
Application.properties file information:
Kafka topics persister configs for eGov persister
Action test: URL actions adding
Access to role-based actions
Persister configuration
Indexer configuration
Postman collection
The source code for an is present in the health-campaign-services Git repo. The spring boot application needs the Lombok* extension added to the IDE to load it. Once the application is up and running, the API requests can be posted to the URL and the IDs can be generated.
Refer to the Swagger API for YAML file details. Link -
eGvo mdms :-> egov.mdms.host = /
eGov -idGen :-> egov.idgen.host = /
localization service :-> egov.localization.host = /
The source code for a is present in the health-campaign-services Git repo. The spring boot application needs the Lombok* extension added to the IDE to load it. Once the application is up and running, the API requests can be posted to the URL and the IDs can be generated.
Refer to the Swagger API for YAML file details:
eGov-Individual Service -> egov.individual.host =
eGvo mdms -> egov.mdms.host =/
eGov -idGen -> egov.idgen.host =
eGov-User Service -> egov.user.host =
This section discusses the supported cloud environment for DIGIT services. It provides information on where and how DIGIT is deployed. Further, it offers guidelines for estimating the infrastructural requirements for cloud support.
The facility service provides APIs to create facilities for the HCM. This document provides the configuration details for setting up the facility.
Knowledge of Java/J2EE (preferably Java 8 version).
Knowledge of spring boot and spring-boot micro-services.
Knowledge of Git or any version control system.
Knowledge of RESTful web services.
Knowledge of the Lombok library is helpful.
Knowledge of eGov-mdms service, eGov-persister, eGov-idgen, eGov-indexer, and eGov-user will be helpful.
Provides APIs to create, update, delete, and search facilities.
Provides APIs to bulk create, bulk update, and bulk delete facilities.
*In the case of IntelliJ, the plugin can be installed directly. For eclipse, the Lombok jar location has to be added in the eclipse.ini file in this format javaagent:lombok.jar.
Application.properties file information:
Kafka topics persister configs for Facility
Action test: URL actions adding
Access to role-based actions
Persister configuration
Indexer configuration
Postman collection
The stock service provides APIs to manage stocks and reconciliation of stocks for the HCM. This document provides the configuration details for setting up the stock service.
Knowledge of Java/J2EE (preferably Java 8 version).
Knowledge of spring boot and spring-boot micro-services.
Knowledge of Git or any version control system.
Knowledge of RESTful web services.
Knowledge of the Lombok library is helpful.
Knowledge of eGov-mdms service, eGov-persister, eGov-idgen, eGov-indexer, and eGov-user will be helpful.
Provides APIs to create, update, delete, and search stocks.
Provides APIs to bulk create, bulk update, and bulk delete stocks
Provides APIs to create, update, delete, and search reconciliation for the stocks.
Provides APIs to bulk create, bulk update, and bulk delete reconciliation for the stocks.
*In the case of IntelliJ, the plugin can be installed directly. For eclipse, the Lombok jar location has to be added in the eclipse.ini file in this format javaagent:lombok.jar.
Application.properties file information:
Kafka topics persister configs for stock and inventory
Action test: URL actions adding
Access to role-based actions
Persister configuration
Indexer configuration
Postman collection
The source code for is present in the health-campaign-services Git repo. The spring boot application needs the Lombok* extension added to the IDE to load it. Once the application is up and running, the API requests can be posted to the URL and the IDs can be generated.
Refer to the Swagger API for YAML file details:
eGvo mdms :-> egov.mdms.host =/
eGov -idGen :-> egov.idgen.host =
eGov-User Service -> egov.user.host =
The source code for the is present in the health-campaign-services Git repo. The spring boot application needs the Lombok* extension added to the IDE to load it. Once the application is up and running, the API requests can be posted to the URL and the IDs can be generated.
Refer to the Swagger API for YAML file details:
eGov -user service :-> egov.user.host =
eGov -idGen :-> egov.idgen.host =
eGov -project service :-> egov.project.facility.host =
eGov -product service :-> egov.product.host =