Notes/Outcomes from OpenLMIS-ODK Collaboration

Notes/Outcomes from OpenLMIS-ODK Collaboration

This document is public. Anyone can register for an account here to the OpenLMIS wiki by clicking Sign Up at the top right and then contacting @Tenly Snow (Deactivated) or @Mary Jo Kochendorfer (Deactivated) for full write access after you have signed up.

Day 1

Attendees

  • Waylon Brunette/UW ODK,

  • Mitch/UW ODK, 

  • Clarice Larson/UW ODK, 

  • Jeff Beorse/UW ODK,

  • Niles/UW summer project/VA Tech,

  • Josh Zamor/OpenLMIS Architect,

  • Darius Jazayeri/ThoughtWorks,

  • Brandon Bowersox-Johson/VillageReach,

  • Nick Reid/VillageReach

Agenda

  • ODK Architecture

  • OpenLMIS Scenario Introduction

  • OpenLMIS Working Diagram

  • OpenLMIS Integration Details

  • Specify MVP Details

 

ODK v2 Architecture

  • Survey is the v2 replacement for ODK Collect from v1

    • it is 100% webkit

  • Tables is a web view to access data

  • Services is a core that the other components share; it runs a web server on the mobile Android device; Survey and Tables each inject JS ODK libraries into WebKit

 

The ODK Docker Endpoint:

Work-In-Progress Diagrams

 

Integration Diagram

Initial integration plan from Day 1 Before Lunch:

Use Case / Workflow Scenario

  1. Admin creates and distributes an ODK Form (e.g., HIV ARV Regimens form for monthly programmatic reporting)

  2. User logs in (to _____)

  3. User fills out survey

  4. User goes online and completes/submits survey

  5. System makes submission read-only

  6. OpenLMIS polls for changes

  7. OpenLMIS reads the feed of surveys submitted, indexes it, and stores its URI, also may archive the submission in OpenLMIS long-term archival storage

  8. User logs in to OpenLMIS web UI (may be a different user or supervisor)

  9. User views Requisition can see whether ODK survey is complete (optionally may be able to see the survey submission)

  10. User approves Requisition

Discussion of This Workflow

  • OpenLMIS ODK form distributed

    • ODK form gets full list of facilities/programs/periods from OpenLMIS

    • Question: What does an implementer have to do get linked properties (ie Programs, Facilities, ect) then it MUST only show the information an end user has access to

  • User logs in to ODK Mobile

    • ODK uses Spring security through LDAP interface

    • Docker endpoint needs secure ldap endpoint w/ldap username/password and a group prefix

      • Using group prefix is used to filter the amount of logins that are being exposed

    • On ODK user login from server, get roles and groups

      • User stays logged in with server until bad sync

  • User fills out ODK form

  • User submits/completes/sync survey

    • Warning: Form validation might change between user completing a form and updating 

  • ODK System makes the form read only

    • Question: ODK allows for incomplete forms to be updated, and we need to decide where a form is marked "complete"

      • OpenLMIS processing period might make it so a user can't make changes to a form

  • OLMIS Polls changes

  •  User views requisition and sees evidence of form

  • User approves requisition  

MVP - first draft

MVD = Min. Viable Demo

MVP = Min. Viable Product

Later

MVD = Min. Viable Demo

MVP = Min. Viable Product

Later

Mobile data collection in ODK

Pick list data in ODK comes from OLMIS

(ie Facilities, Programs, Periods)

ODK & program data used in other services
(i.e., other parts of OpenLMIS might start using ODK
as a mobile-friendly UI to collect data) 

Status of form submission visible in OLMIS

Web based data collection (ie ODK inside OLMIS UI)

  • No browser installs

  • Not pixel perfect

  • Same form definition from ODK

Integrated look and feel for ODK + OLMIS

 

ODK Dockerized within OLMIS deployment

Long term storing and using ODK Data in OLMIS

 

ODK Configuration in OLMIS

Scaling performance (i.e. 4,000+ facility list)

 

XLSX Form Upload

ODK Form Builder within OLMIS

OpenLMIS: the global initiative for powerful LMIS software