Use case: Survey managers want to know about how data collection is progressing at all points of time–not only how many interviews have been completed, but also how many interviews have not been started and how many interviews have been started but not completed. Existing data provide part of the picture. The assignments info–whether gotten from the API or
assignment__actions–provides a picture of both finished and unfinished work. The interview data provides info on interview status for interviews sent to the server. The action logs provide information of some actions taken on assignments and interviews before interviews are sent–but not all. The logs say when interviews are created, and from which assignment. They do not say, however, when interviews change status–for example, go from started to completed–or which interviews are sent/received during syncs. In the example below, was this interview completed or not? When I see a sync action later, was the interview (if completed) sent or not? Hard to make a proper accounting of current state of data collection without this information. (Note: fully willing to accept stale information–that is, info as of last sync date)
Implementation idea: Add the following details to the action logs:
- Events associated with status change: interview marked complete, interview restarted, rejected interview opened for editing
- Details on which assignments sent/received and which interviews sent/received during each sync event
Alternatively (additionally?): sync the dashboard details to the server during each sync event, and allow users to fetch this from a dedicated API endpoint. The return could be a nested JSON: list of assignments (i.e., contents of
create new tab) and their attributes; list of started interviews (i.e.,
started tab) and their attributes; list of rejected interviews and their attributes. No need for completed ones, since they can be found in exported data on the server.
Work-arounds: Some parts of this request have no clear work-around. I do not see how to know which interviews (assignments) were sent during each sync. Others have messy work-arounds. For example, I might be able to understand when interviews were completed on the tablet by “merging” the action logs and
interview__actions and by (potentially) correcting the time terms of each data set.