Skip to main content


This documentation covers the OpenSRP Android App. This is a Kotlin application for delivering configurable, offline-capable, and mobile-first healthcare project implementations.

OpenSRP is architected as a FHIR-native platform powered by Google's Android FHIR SDK and HAPI FHIR. OpenSRP users experience a module-oriented design based on over a decade of real world experience implementing digital health projects.

This repository contains the Android mobile application built to:

  • Load configuration data as FHIR resources
  • Support the WHO Smart Guidelines
  • Manage the identities of healthcare workers (HCWs), community health workers (CHWs), care teams, patients, and clients
  • Collect, view, and edit healthcare data with dynamic forms using FHIR's Structured Data Capture (SDC) implementation
  • Securely store healthcare data encrypted at rest and securely transmit healthcare data using TLS
  • Manage location hierarchies defined by community to national and international administrative boundaries

For remote data storage and login, the mobile application requires:

Programming Language

Kotlin v1.7.10

Android Libraries

  1. Hilt- for dependency injection
  2. Jetpack Compose - for building sharable declarative Android UI
  3. Jetpack Compose navigation - to navigate between compose screens
  4. Android navigation component - to navigate between activities and fragments
  5. Android Livedata and ViewModel


The app is architectured in the following manner:

  1. The app is built around MVVM architecuture with the data layer implemented using the Repository pattern.
  2. The entry point of the application also follows Single-Activity architecture after the user is logged in.

Generated documentation is available here.

Data flow diagrams

OpenSRP apps are defined through data that creates functionality and is mediated by tooling. THe below digram describes these relationships.

The below digram shows how healthcare workflows are implemented through content and tooling in the context of an antenatal care program with generated data.

Data Access

The application uses FHIR Engine APIs from Google's Android FHIR SDK (which internally uses Room libary) to access the local Sqlite database.


The application syncs particular resources (conventionally, Composition and Binary) from the HAPI FHIR server to configure the app. The configurations control application workflows as well as the look and feel of the app.


See testing section.