-
Notifications
You must be signed in to change notification settings - Fork 29
C. Data Managers
The CAMS Framework contains the following data managers:
- ConsoleDataManager - prints data to the Dart console.
- FileDataManager - a data manager that stores data to a local file as zipped JSON.
- SQLiteDataManager - a data manager that stores data to a local SQLite database.
- carp_firebase_backend supporting upload of data both as raw JSON to the Firebase database as well as (zipped) files to the Firebase Storage endpoint.
- carp_backend supporting data streaming to the CARP Web Service (CAWS) backend.
The FileDataEndPoint
allows sensing data to be stored in a JSON file on the local device. A FileDataEndPoint
endpoint can be created and added to a study protocol, like this:
var protocol = SmartphoneStudyProtocol(
ownerId: 'AB',
name: 'Track patient movement',
dataEndPoint: FileDataEndPoint(bufferSize: 500 * 1000, zip: true));
CARP sensing data is stored in a subfolder called
<local_application_path>/carp/deployments/<study_deployment_id>/data
where local_application_path
is the folder where an application can place files that are private to the application.
-
On iOS, this is the
NSDocumentsDirectory
and this can be accessed like accessing files on iOS via the Finder. -
On Android, Flutter files are stored in the
AppData
directory, which is located in thedata/data/<<package_name>>/app_flutter
folder. Files can be accessed via AndroidStudio.
Data files follow the schema of carp-data-yyyy-mm-dd-hh-mm-ss-ms.json
.
.zip
is added, if the JSON file is zipped.
This endpoint is very similar to the file endpoint, except that data is stored in an SQLite database instead of a file. This endpoint takes no configuration and can be added to a protocol like this:
var protocol = SmartphoneStudyProtocol(
ownerId: 'AB',
name: 'Track patient movement',
dataEndPoint: SQLiteDataEndPoint());
The database files can be accessed like other files (see above).
- On Android, the SQLite db file is located in the
data/data/<<package_name>>/databases
folder.
The carp_firebase_backend
package is a separate Flutter package for supporting Google Firebase as a backend.
It supports uploading of data both as files in Storage as well as raw JSON in Firestore. Full documentation is provided as part of the plugin.
NOTE - The Firebase data manager has not (yet) been updated to API level 1.x.
The carp_backend
package is a separate Flutter package supporting the CARP Web Service (CAWS) backend. It supports:
- user authentication and setting up a connection to CAWS.
- download of a study deployment configuration from CAWS
- streaming of sensing data from CAMS to CAWS
- upload/download of data like files and JSON documents from/to CAWS
Full documentation is provided as part of the plugin, and an example of how this is used is part of the CAMS Demo App.
The CAWS data endpoint can be added to a CAMS study protocol and further configured as a CarpDataEndpoint
, like this:
// Add CAWS as the data endpoint using a stream (default)
protocol.dataEndPoint = CarpDataEndPoint(
uploadMethod: CarpUploadMethod.stream,
name: 'CARP Web Service (CAWS)',
// Upload data every 10 min
uploadInterval: 10,
// Keep data on the phone even though it is uploaded
deleteWhenUploaded: false,
);