...
For the first time the server will need to have knowledge of the participant’s time and time zone;The reports are (relatively) expensive to calculate and they are write seldom, read frequently in nature, so they will need to be cached
Because this information depends on the time of the request, it is not very cacheable;
Nevertheless, the reports probably update infrequently (the exact amount depends on many factors), while they may be read frequently in a couple of different formats.
Event Day Adherence Report API
Given the designs I have seen so far, I created the would suggest an “event by day” report which would be available via a single API:
...
All sessions in the timeline are grouped in this view by the event that triggers them, and then the number of days since that event. All potential events in the schedule are included in this report whether they exist for the user or not (we don’t currently have a way to say “count this part of the schedule if the event exists for the user, but don’t count it if the event doesn’t exist for the user). Then the actual “days since each event” are calculated to determine what the state of each time window is (the window state is a session-level measure of the state of these assessments. , derived from the adherence records of the assessments in that session).
The states are:
State | Description | Adherence |
---|---|---|
not_yet_available | Participant should not have seen or started this assessmentsession. It’s in the future. | N/A |
unstarted | Participant should see the assessment session (they are being asked to do it now), but they have not started it. | unknown |
started | Participant has started the assessmentsession. | unknown |
completed | Participant has completed the assessment session before it expired. | compliant |
abandoned | Participant started the assessment but or finished at least one assessment in the session, but there was more work to do and it expired before they finished it. | noncompliant |
expired | Participant did not start the assessment session and it is now expired. | noncompliant |
...