Technical Debt
Android Multi-Team Login
Allow users from other teams to login to the Android device without having to delete the database
Create a database per team
Ensure that data sync is complete even for users that are not logged in
The app should be able to access the database of other teams in order to sync
The database can be deleted if all data is synced to the server
Change database encryption so that the encryption key is generated on the device and stored on the server
Retain encryption at the team level
BIOPHICS clean-up
Validate that all records added or updated in the Android app are visible in the Biophics database
Currently, household members and household updates do not reflect
Ensure that events, locations, clients, plans and tasks are all streamed to the server
Ensure that all fields from each form are present in Biophics in correctly labelled columns
Check column names
Check completeness
TBD: Need confirmation from Ona that streaming of entities to the warehouse (Biophics or other) is the agreed path forward
Configuration file for Android
Add a JSON config file to the settings of the country in order to allow configuration of certain fields. Initially, these settings will be restricted to Circle of Selection attributes
On/Off for Circle of Selection restriction
Admin password for the circle of selection
The radius for circle of selection
Other configuration settings to be added in future
peer-2-peer on/off
in-app indicators on/off
in-app offline map download on/off
base layer switching on/off
API key (DG vs Mapbox vs etc)
This epic is a prerequisite for form configuration
Improve device-server sync
Optimise sync DOWN from server to device
Package data so that device processing is reduced
Improve initial sync (authenticate API call, OpenMRS location dependancy)
Optimise timeout settings per user/program
instrument sync time
Optimise sync UP from device to the server
Ensure that ALL data is synced
Display sync status on Android app
Show sync UP complete/incomplete with green/red flags OR give more detailed sync statistics per entity
Show sync down complete status per entity
Improve server to data warehouse sync
Optimise data sync from the server to the data warehouse
Decide on a strategy - to discuss:
event streams using Nifi or Kafka or both (reduce Nifi workload) vs materialized views
creation of entity tables in the warehouse using JSON query language
packaging of entities e.g. bundle related entities with each event (may add to payload size)
pre-processing of data into flattened files before sync
use of FHIR
use of JSON schemas (can be used for the materialization of event data in the warehouse)
Abandon custom syncing for Postgres and use a replicated node (possibly some issue with long-running queries on a read-only replica being cancelled by incoming transactions - reported by Dickson)
optimisation of OpenSRP API for ETL/streaming
Simply the configuration of the process to remove the need for code release
Provide monitoring to show completeness and timeliness of warehouse data (sync time, number of records per entity vs raw OpenSRP)
Not covered:
Move periodic database actions (initialization, queries, refreshes etc) out of NiFi
Add health monitoring component to Postgres deployments
Use database migrations instead of using NiFi for database initialization and all client-specific setup
Optimise Reveal stack
Reduce the hardware requirements for the Reveal Stack
Remove Nifi from OpenSRP server (replace with Java code - large performance impact)
Remove Nifi from the data warehouse (replace pipeline with another product e.g. Kafka)
Remove OpenMRS user dependency (high LOE)
Remove OpenMRS location dependency (medium LOE)
Full removal of Nifi and OpenMRS may not be possible but moving functionality out of each will reduce the server load and the requirements for RAM and CPU)
Initial server specs:
Remove OpenMRS dependency - locations
Remove dependency of OpenSRP on OpenMRS for locations
Document interaction between OpenSRP and OpenMRS locations
Replace OpenMRS hierarchy generation (could use JSON query language and inner joins)
Remove OpenMRS dependency - users
Allow users and roles to be managed within Reveal without the need for OpenMRS
Transition user accounts from OpenMRS to OpenSRP
Build UI in OpenSRP WebUI for user management
Add Role-Based Access Controls to OpenSRP so that we can limit access of the data to only authorized roles (TBD if this is a separate requirement as these do not exist at present?)
Technical Debt - Small Tasks
Bucket for small tasks not included in other epics
Use flavours for APK builds (rather than variables)
Determine use cases for this vs configuration file - is it still necessary with config file? Perhaps so depending on time constraints
At present variable are used to set the language and included forms
Sticky sessions
Remove these to improve load balancing and HA
Design reskin
Possibly apply Tobys design to the WebUI (Low priority)
Align Team Assignment REST POST and GET API keys (e.g. location in POST vs locationId in GET)
Technical Debt - Superset Improvements
Improvements to Superset
Standardise export functionality via Superset UI to ensure that large amounts of data can be downloaded for analysis (currently not feasible to download all Zambia data)
Standardise the Superset slice functionality - either virtual tables or underlying tables
Unit and Integration testing
Improve unit and integration testing across the platforms
WebUI has 90% coverage - maintain this
Android has very little coverage - increase coverage as new functionality is developed or as bugs are fixed
Upgrade Java Spring
Upgrade Java Spring dependency to keep utilize new Spring functionality and increase development speed
Version 5.2 and above
This work is funded elsewhere and will have a time impact on Reveal, not budgetary impact
WebUI Functionality
Fix WebUI functionality that is incomplete or not functioning as expected
Search boxes are not working (decision to fix search for FI plans in Plan and Monitor pages and to hide other search functionality)
Disable Reactive plan creation for Thailand (TBC)
Only show plan types that are relevant to the country (e.g. Hide IRS from Thailand)
Ensure that plan start and end dates are either used or hidden)
This site is no longer maintained. Please visit docs.opensrp.io for current documentation.