Skip to main content

Study Participants

A Study Participant represents an individual (human or otherwise) subject of the survey responses (each response is associated with a Participant).

A Participant is associated with a persistent state containing the participant's data:

  • participantID: Uniquely identifies a participant (created using a mapping operator)
  • assignedSurveys: List of surveys that the participant can respond to. Each assignment can have a category and a validity date range (from, until)
  • status : status of the participants in the study (can be active, temporary,exited,accountDeleted)
  • enteredDate: when the participant entered the study
  • flags : A list of key values (described below)
  • currentStudySession: The current session in which the participant is involved

Assignment categories known by the legacy javascript client:

  • 'immediate': if such a survey is assigned, and is "active" (in time window), it would be opened automatically after finishing a previous survey, and so these can be used to chain surveys
  • 'prio': shown in the main surveys list with primary color of the web site
  • 'normal': shown in the main surveys list with a less prominent color
  • 'optional': is hidden behind the collapsible component (optional survey list below the main list)

These categories are only handled on the client side and has no meaning for the backend side. It's possible that another client implementation could handle different categories in the future.

Participant Status

  • "active" : The participant is active in the study ()
  • "temporary" : for participants without a registered account
  • "exited" : participant has left the study
  • "accountDeleted" : the corresponding account has been deleted (it's no longer possible to identify the account)

Participants flags

Participants flag allows you to define a flag (with a name) and a value (a string) as a dynamic property. Flags are available in Survey Context during the filling of the response (the flags can be used in survey logic), and in the study rules.

The technical platform does not define any flag, it's up to the team managing the platform to define the flags needed to provide the study and survey logic they want. Influenzanet Surveillance define some flags to be used with the common survey (see common-study-definition)

Participants Mapping

Link between a user account and a given participant is done using a Mapping Operator

User accounts contains list of profiles, each profile represents a participant, and is associated properties (avatar image and participant nickname considered potentially identifying).

Each profile has a unique ID (hexadecimal string)

The profile ID is transformed by the mapping operator to a participantID. This operation uses two external parameters:

  • A Global Secret (common for all studies of the running platform), defined in the Study service configuration
  • A Study secret, specific of a study (and MUST be different across studies)

This ensures:

  • A profile is mapped to a unique participant ID for a given study, and will be different for another study (if the study secret is different). Strictly speaking the mapping is not guaranteed to be unique but using an hashing function like SHA256 make the risk of collision (producing the same participantID for two different user's profile) is very unlikely.

Mapping operators are based on common cryptographic operations, making the reverse operation (from participantID to profileID very difficult, especially if secrets are not known, which is why we call them secret).

Available operators are :

  • "same" : identity operator (profileID will be the same as participantID, not obfuscation)
  • "aesctr" : AES-256-CTR cipher, can be reversed but poor performance
  • "sha224" : SHA2 224 bits (28 octets), will be encoded as hexadecimal string (56 characters)
  • "sha224-b64": SHA2 224 bits with base64 URL (38 chars)
  • "sha256": SHA2 256 bits, will be encoded as hexadecimal string (64 chars)
  • "sha256-b64": SHA2 256bits, encoded with base64 URL (43 chars)

The operator is defined in study configuration, and obviously cannot be changed after participants have been created.

The "same" operator can be used when separation between users' data and participants data are not desired (when enforcing anonymity is not required nor desired).