Program Data Capture
Scope
Existing Examples
Program Data Example: VIMS IVD Form
Program Data Example: SIIL and SELV Distribution Form
Program Data Example: Regimens in V2
Program Data Example: Malawi TB paper form (paper example)
Desired Functionality
Based on reviewing the existing examples above, we identified the following desired functionality:
Feature | Description | Examples | Feasibility (Y/N/Maybe) | Notes |
---|---|---|---|---|
Easy Form Editing | Add/edit form fields without a programmer | Regimens admin UI offers limited capability | ||
Place Forms into OpenLMIS | Drop forms into R&R process or the Distribution Form, perhaps as tabs or "steps" in a sequence | In the existing systems, programmer coding was required to build these forms. But the desire is for non-programmers to build the forms and somehow connect them into OpenLMIS, ideally by configuration in OpenLMIS (such as linking to a Form URL or UUID from a configuration screen). | will this require code? | how? |
Connected to OpenLMIS Workflow | The program data form would be part of the workflow for the R&R or Distribution Form. | All (VIMS IVD Form, SIIL/SELV Distribution Form, and Regimens) | ||
Numeric and Other Field Type Validations | When building a form, users could set a field type that would offer client-side validation. Types of fields and validations identified:
| All (VIMS IVD Form, SIIL/SELV Distribution Form, and Regimens) | ||
Skip | Ability to skip a field or skip a row. | VIMS has a Skip option on multiple tabs to skip a whole row. SIIL/SELV ability to enter a number or leave it blank ("NR" checkbox if not reporting; and a "Apply NR to All Fields" button) | ||
Calculators | Ability for numerical fields to total up (sum) or compute a percentage (eg, coverage rate) | VIMS has calculators to show a total (sum of other fields) as well as a Percentage (Immunization Sessions). VIMS Stock Status tabs also has many calculations that compute from previous columns. Finally, VIMS Drop-Out Rates on the Stock Status tab appear to compute based on data in the Vaccinations Coverage (tab 3). SIIL/SELV Coverage tabs have a few calculations that are percentages based on multiple fields entered. | maybe not? | |
Tables | Ability to layout the data fields in a tabular grid (so much of the current Program Data forms are tabular) | All (VIMS IVD Form, SIIL/SELV Distribution Form, and Regimens) | maybe not? | |
Layouts | Some ability to choose a layout where fields are side-by-side | All (VIMS IVD Form, SIIL/SELV Distribution Form, and Regimens) | ||
Progress Indicator | To show the user progress as they complete the form | SIIL/SELV has color-coded dots to show completion and sync status. | ||
Connect by Facility, Program, Period | When we collect this data, it needs to be tied (by ID) to a Facility, to a Program, and often to a Period and User Account | All (VIMS IVD Form, SIIL/SELV Distribution Form, and Regimens) Also, VIMS adverse effect screen has a Product and Manufacturer dropdown to pick from those existing lists. | how? | |
Ability to Edit/Revise Data In Workflow | If one user starts the data submission, later in the Workflow (during Authorization) another user may be able to view and then edit the same data. (We hope this is not needed, because this it has complex edge cases around concurrent editing, syncing and conflict resolution.) | This is not needed for VIMS IVD form*. The Regimens feature in V2 is editable in INITIATED and SUBMITTED states, but not editable in any later states**. | ||
Pre-Populate Certain Fields | Certain fields, such as population/target numbers, are pre-populated. (There is a concern that this feature may be too complex for offline, distributed data collection. If a user is manually entering forms for 10 facilities, such as on a Distribution Informed Push process, would they have to download 10 copies of the form before they leave for their travels?) | We see this on SELV/SIIL and VIMS IVD Form. | how? | |
Connect to OpenLMIS Business Logic | Filling out one of these Program Data fields then becomes the input to other OpenLMIS calculations or business rules (eg, notifications). | VIMS Cold Chain tab creates new cold chain device records in the software. Those CCE records are then available for other business processes. The VIMS Stock Status tab and SIIL/SELV EPI tabs do not generate stock card line items (flagged as an Open Question to discuss.) | maybe not? (This might define what can/cannot be Program Data. See below.) | |
Reporting | Data collected in these forms should be available to some reporting/visualization/export engine. | All 3 examples do reporting in different ways. But all of them do make the data collected available for reporting. | ||
Offline Data Capture | Ideally these forms could be downloaded to a device for offline fill-out. | SIIL/SELV do have a purposeful offline mode and sync support. |
*Elias emailed about VIMS: "VIMS only supports one approval step for IVD forms. That approval is done at district level. Once submitted, the District Supervisor would be able to either approve or reject it with some comment. No other values are editable at the approval stage."
**Regimens in OpenLMIS Version 2 are only editable up until the R&R is Authorized. So it is editable during INITIATED and SUBMITTED states. Those editable states would all be happening at the same facility, although it could be conducted by two different logged-in users. Data is not editable once it leaves the facility for higher-level reviews and approvals (not editable once it is AUTHORIZED).
What is Program Data?
Working Definition:
We call it "Program Data" when:
- a non-programmer would want to change the fields and data collected for implementation-specific needs; and when
- OpenLMIS only needs to know WHETHER the data has been collected, but does not need to know the CONTENTS of what data is collected.
In other words, it is data that is not tied to the OpenLMIS system (its business logic, calculations, notifications). The timing of when this data is received can be asynchronous (collected at a different time).
We may decide to pick a different name. Examples: user-defined data, custom data, non-logistics data, non-stock data, un-actionable data.
There may also be a Program Data Persona who is the sort of person who defines what fields of information are collected. They are interested in getting this data so it's available for reporting, decision-making and analysis.
Open Questions
Below is a list of questions to be addressed as a result of this requirements document:
# | Question | Outcome | Status |
---|---|---|---|
1 | When stock transactions are captured, such as the SIIL/SELV EPI tabs or the VIMS Stock Status tab, does it generate stock card line items in the software? Or is it just captured as a monthly report that is visible for reporting but not in the system as a stock event/line item? (Josh talked about low-fidelity data that is not appropriate for populating our stock cards.) | Open | |
2 | Should we change our terminology to call it something other than "program data"? (See notes above in "What is Program Data?" section) | Open |
OpenLMIS: the global initiative for powerful LMIS software