Notes/Outcomes from OpenLMIS-ODK Collaboration
- 1 Day 1
- 2 Day 2
- 2.1 "Minimum Integration" (revised)
- 2.2 Permissions
- 2.3 Task List
- 2.4 User Story
- 2.5 Architecture Diagram
- 2.6 Showcase
- 2.7 Final Wrap-Up
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
Admin creates and distributes an ODK Form (e.g., HIV ARV Regimens form for monthly programmatic reporting)
User logs in (to _____)
User fills out survey
User goes online and completes/submits survey
System makes submission read-only
OpenLMIS polls for changes
OpenLMIS reads the feed of surveys submitted, indexes it, and stores its URI, also may archive the submission in OpenLMIS long-term archival storage
User logs in to OpenLMIS web UI (may be a different user or supervisor)
User views Requisition can see whether ODK survey is complete (optionally may be able to see the survey submission)
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 |
|---|---|---|
Mobile data collection in ODK | Pick list data in ODK comes from OLMIS (ie Facilities, Programs, Periods) | ODK & program data used in other services |
Status of form submission visible in OLMIS | Web based data collection (ie ODK inside OLMIS UI)
| 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 |