Active Questionnaire App

Overview

The mobile application allows user to answer questionnaires and perform timed tasks (termed in RADAR parlance "active remote monitoring". 

The RADAR-Questionnaire app is developed in the hybrid Ionic framework with modular plugins to support native elements. The key functions of the mobile application includes 

  • Composable questionnaires, which can be generated from REDCap Data Dictionaries for a simple authoring process
  • Remote Configuration of Schedule and Questionnaire 
  • Remote notifications using Firebase Cloud Messaging (FCM)

This is supported on both Android (minimum version Android 6) and iOS (minimum version iOS 11).



Registration

TODO link to RADAR-registration page, this is general to all RADAR data sources so document it in one place


In-App Settings

It is possible to force the configuration to be refreshed by clicking on  button.

The current version of the aRMT Questionnaire app is shown as well as the Configuration (currently versioning is taken/set on the Protocol.json file, 


Remote Configuration

Configuration (i.e. the Questionnaire metadata) see RADAR-REDCap-aRMT-Definitions

Protocol/Schedule see Protocol & Schedule


Protocol

See configuration options Protocol & Schedule & Firebase Cloud Messaging & Notifications Server (XMPP)  [XMPP is now considered DEPRECATED]

Remote Notification using Firebase Cloud Messaging and the Appserver https://github.com/RADAR-base/RADAR-Appserver most business is now located server-side and handled by the appserver, with the last mile delegated to Firebase Cloud Messaging (FCM).

A high level architecture and data flow diagram for the AppServer and its example interaction with a Cordova application (hybrid) like the RADAR-Questionnaire (Active App).

The Appserver manages the lifecycle of the Notifications through state change events. It uses Pub/Sub paradigm utilising Spring Events so other subscribers can also hook up to the Events as listeners. Currently, there are 10 possible states as follows -
  // Database controlled
  ADDED, UPDATED, CANCELLED

  // Scheduler Controlled
  SCHEDULED, EXECUTED

  // Controlled by entities outside the appserver.
  // These will need to be reported to the appserver.
  DELIVERED, OPENED, DISMISSED

  // Miscellaneous
  ERRORED, UNKNOWN

REST Endpoints are provided to update and query the STATE. Update can only be made to any of the ones above that can be updated by external entities(i.e. DELIVERED, OPENED, DISMISSED, ERRORED and UNKNOWN ).

Here is a simple flow between the states





Questionnaires & Tasks

The Questionnaire app supports questionnaires containing different input types, which must be specified in a definition file (either through REDCap or by manually creating one). See RADAR-REDCap-aRMT-Definitions.

The following input types are supported:

Radio/CheckboxRangeRange InfoInfo ScreenSliderTimed TestAudioDateText



Language Support

Language translations for the in-app text are fairly easy to do see the inter RADAR-Questionnaire/src/assets/data/localisation.ts