The Copenhagen Research Platform (CARP) is a family of open-source components for digital phenotyping.

CARP is designed to serve two purposes:

  1. It is a platform for digital phenotyping, i.e. the use of mobile and wearable sensor technology to collect longitudinal, ambulatory, contextual, and real-time data from study participants. This includes physiological data (e.g., ECG), contextual data (e.g., GPS), behavioral data (e.g., sleep or steps), patient-reported data (e.g., questionnaires), and cognitive assessments (e.g., reaction time assessment).
  2. It is a software architecture and a set of open-source software components for researchers and software engineers to build application-specific mobile health (mHealth) applications for specific diseases. For example, for context-aware behavioral therapy in mental health; for collection and analysis of ambulatory and contextual cardiovascular data incl. ECG; and for adaptive assessment of physiological and behavioral data in type 2 diabetes.
Figure 1 – Overview of the CARP family of components.

Figure 1 shows the overall set of components of CARP, which roughly can be divided into 4 main families.

  1. CARP Domain Models – The domain model of CARP is defined in the CARP Core domain model. This model is written in Kotlin and reflects a domain-driven software architecture (aka “onion” model or “clean architecture”). The carp_core Flutter package is a Dart implementation of this domain model for mobile app development in Flutter/Dart.
  2. Server-side infrastructure – The server-side – or cloud-based – part of CARP consists of three components:
    • The CARP Web Services (CAWS) which runs the entire infrastructure and handles users (researcher and study participants), study protocols, studies, and data management. CAWS is the backbone of CARP.
    • The CARP Web Portal which is a web portal (user interface) for research to create, manage, and run studies, including enrolling participants.
    • The CARP Gardener Service which can collect data from other web services in a server-to-server setup. For example, collection of Fitbit data from the online Fitbit API or Dexcom glucose data from the Dexcom server API.
  3. Mobile & Wearable Sensing – The CARP Mobile Sensing (CAMS) Framework is designed to enable researchers and software engineers to build cross-platform (iOS / Android) mobile and wearable sensing application for mobile health (mHealth). As such, CAMS is a programming framework that can be embedded in domain-specific applications (mobile “apps”) and add sensing capabillities to them. CAMS is a whole suite of Flutter packages, consisting of:
    • The core sensing framework
    • A set of sampling packages that each collect different types of data from onboard sensors (e.g., GPS) or wearable sensors (e.g., Polar).
    • A set of data backend packages that know how to store or upload data to different databases (e.g., SQLite) or cloud-based services (e.g., CAWS or Firebase).
  4. User-generated Data – The CARP family also comes with a set of components for collecting user-generated data from mobile health apps:
    • The Research Package is a Flutter implementation of the Apple Research Kit and supports the creation and collection of informed consent on the phone (aka. “eConsent”) and issuing surveys (aka. questionnaires).
    • The Cognition Package is a framework for creating and issuing cognitive assessment tasks to users on the phone and comes with 14 pre-made cognitive tests to be used as-is. Note, again that the Research and Cognition Packages are software frameworks designed to be embedded into domain-specific applications and are not, as such, end-user applications.