System Architecture


OpenSRP Client Technologies

The OpenSRP client (Android application) code lives in a Git repository. The README file includes instructions to setup the system and also contains the public credentials for testing the application.

A brief of the technologies used in the OpenSRP Client:

Smart Register Client (Android)

Standard Android application that hosts the client record store, ziggy, Enketo HTML5 forms, webviews via android native in addition to ability to synchronize to the Smarty Register backend.

Client Records

Client records are stored in SqlLite and then encrypted with SqlCypher for basic aggregate reporting.

Smart Register Views

Register UI is done with Android native code. This makes development of new UI’s components very quick.

Ziggy.js

Ziggy.js maps client data from the model into forms, i.e., it picks both mother and child information, inserts it into a PNC form, maps form submissions to the client record, and processes submissions received from the server.

Enketo HTML5 Forms

Enketo HTML5 forms are authored from XLSForms in Ona. Using HTML5 removes the Javarosa dependency. To be saved in OpenMRS, all concepts from the client have the corresponding concept UUID.

Risk Profiling

Custom logic, authored on the xlsforms that evaluates as client information comes in if they are at high risk.

OpenSRP Server Technologies

OpenSRP server code lives in a Git repository. The README file includes instructions to setup the system and the public credentials for testing the app.

OpenSRP server runs CouchDB - a document-oriented NoSQL database system that uses json to store data. All data collected from the client and stored on couchDB is also stored in OpenMRS; at this point, we leverage the excellent and robust functionalities of OpenMRS including reporting, querying etc.

A brief of the technologies used in the OpenSRP Client:

Scheduling Engine

OpenSRP uses motech library for all types of scheduling; all in 2 categories:

  1. Simple task or event scheduling: It includes repeatable schedules, cron based jobs, and simple events which have no dependencies.
  2. Trackable/Health schedule: Predefined schedules having different strategy or schedule for different periods of time from a given reference date.
  3. Client Records

    Currently stored in a simple CouchDB database and in OpenMRS.

OpenSRP-OpenMRS connector

User authentication, location and team mapping modules reside at OpenMRS and are used by the OpenSRP client.

Ziggy.js

Ziggy submissions are replayed in a Rhino JS server. This recreates the client records in the backend that are on the Android client.

OpenMRS

A patient-centric, widely used medical record system used for view of registries and reports. Gets data from the REST API.