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

Agenda


ODK v2 Architecture


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

MVP - first draft

MVD = Min. Viable DemoMVP = Min. Viable ProductLater
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 deploymentLong term storing and using ODK Data in OLMIS

ODK Configuration in OLMISScaling performance (i.e. 4,000+ facility list)

XLSX Form UploadODK Form Builder within OLMIS

(The MVP got refined for Day 2.)

Break-out: Authentication Roles/Rights/Supervisory Nodes

Josh and Mitch discussed:


Break-out: UI Integration Approaches

Nick and Waylon discussed:

Day 1 Wrap-Up

What went well? What did we learn? What do we need to improve on for Thursday?

Day 1 Parking Lot

This is an ongoing list of questions and conversations from our working sessions that need to be resolved.

Day 2

"Minimum Integration" (revised)

Use Case (revised)

Josh wrote this revised scenario (in his first comment below) to capture the minimum integration use case:

Minimum Integration Requirements (revised)

Josh wrote this and it replaces the MVP/MVD ideas from Day 1:

To say we've accomplished an ODK integration with OpenLMIS we need to achieve the following requirements:


Permissions

Task List

TaskComponentDetailsStatus as of Oct 2017
Minimum Integration
ODK Endpoint working in OpenLMISODK

(requires OpenLMIS team help to understand RAML, etc)

  • Docker compose or Swarm
  • deployment instructions
  • RAML? (maybe)
ODK team spun up ODK endpoint in Docker, Li Lin shared code and documentation
RBAC Magic StringifierOpenLMISconverts 'dimensions' of facility/program/period in OpenLMIS into a string to use an a group/role name in ODKOpenLMIS team released permission string feature in OpenLMIS 3.2.0
Create ODK2 templatesboth

with dimensions/reference data


OAuth2 integrationODK

OpenLMIS ODK program data connector serviceOpenLMIS
  • locator
  • indexer
  • can query ODK to fetch data with dimensions and check completeness
  • can lock submissions

What this achieves: Can submit data from Android device, can see in OpenLMIS whether it is submitted.
But we have solved the hard parts—auth, reference data lists, deployment.
Future Version
UI for web client data entryOpenLMISwithout this, Android is required for ODK program data entry
UI for data viewing/reportingOpenLMISto view the program data that was submitted in the OpenLMIS web UI
UI for ODK2 administrationOpenLMISwithout this, technical skills are required for an implementor to set up the ODK-OpenLMIS integration
Support multiple program data forms per programOpenLMISwithout this, there is at most 1 program data form per program
Performance/Scaling for the endpoint and connector serviceboth

Long-term storageOpenLMISstore submissions inside OpenLMIS in long-term archive (because the storage inside the ODKv2 ecosystem is transient)
Apply ODK beyond program dataOpenLMISother parts of OpenLMIS (apply this integration to other domains such as re-supply, stock management, etc)
Push notification from endpoint via webhookbothwhen new ODK data is available/synced

What this achieves:

  • Easier to use
  • Scalable
  • Re-usable throughout OpenLMIS


User Story

Architecture Diagram

Source: https://www.lucidchart.com/publicSegments/view/92aca91c-4b7d-4d7d-80e1-9437f76c892a/image.pdf

Showcase

Agenda

  1. Introductions
  2. Goals
  3. User Story - Nick
  4. Architecture Diagram - Josh
  5. Task List - Brandon
  6. Future Version / Vision for Next - Brandon
  7. Q & A
  8. Next Steps

Showcase Notes

(see comments inline on task list above)

Next Steps:

Final Wrap-Up

What went well? What did we learn? What do we need to improve on for our future collaboration?