WCP - Schemas and Structures

FDA MyStudies Help
This topic is under construction.

This document covers the consolidated schema and structures for the Web Configuration Portal (WCP).

Updates

Mar 20,2019 v1.7

  • Added “other” in Question Step of multiple choice

Nov 20,2017 v1.6

  • Added “operator” in Question Step for each destination
  • Added “kickCount” for Fetel Kick Active Task Format
  • Added “dateRange” for Date Type Question Format

Mar 16, 2017 v1.5

  • Expanded text choices array for text scale, text choices and value pickers.

Mar 5, 2017 v1.4

  • Added Destinations structure for question step
  • Updated Form Step result structure. It is array of array(iterations) of question results.
  • Removed configuration from the activity metadata.

Feb 22, 2017 v1.3

  • Added TowerOfHanoi and SpatialSpanMemory in supported active task types.
  • Updated Active Task type to ‘task’ from ‘activeTask’

Feb 16, 2017 v1.2

  • Changed Active Task Step result to “grouped” result
  • Added activityRunId to activity result metadata

Feb 09, 2017 v1.1

  • Changed ‘info’ to ‘metadata’ in Activity Metadata Structures
  • Changed ‘response’ to ‘data’ in Activity Result Structures
  • Changed ‘description’ to ‘text’ in Active Task Step

Feb 08, 2017 v1.0

  • Consolidated schema and structure document

Steps

Instruction Step

ParamValue
"type"String; "instruction"
"resultType"null
"key"String
"title"String
"text"String
"skippable"Boolean; false
"groupName"String; null
"repeatable"Boolean; false
"repeatableText"String; null
"destinations"Array

Question Step

ParamValue
"type"String; "question"
"resultType"String; QuestionResultType
"key"String
"title"String
"text"String
"skippable"Boolean
"groupName"String
"repeatable"Boolean; false
"repeatableText"String; null
"destinations"
[
{
"condition" - String //default for no condition
"destination" - String //completion for last
"operator" - String("e/gt/lt/gte/lte/range/ne") //for formula based branching
}
]
“healthDataKey”String
"format"Dictionary; QuestionFormat

QuestionResultType:

  • scale
  • continuousScale
  • textScale
  • valuePicker
  • imageChoice
  • textChoice
  • boolean
  • numeric
  • timeOfDay
  • date
  • text
  • email
  • timeInterval
  • height
  • location
QuestionFormat:
  • Scale
    • "maxValue" - Int; Max:10000
    • "minValue" - Int; Min:-10000
    • "default" - Int
    • "step" - Int; Min:1, Max:13
    • "vertical" - Bool
    • "maxDesc" - String
    • "minDesc" - String
    • "maxImage" - Image
    • "minImage" - Image
  • ContinuousScale
    • "maxValue" - Number
    • "minValue" - Number
    • "default" - Number
    • "maxFractionDigits" - Integer
    • "vertical" - Bool
    • "maxDesc" - String
    • "minDesc" - String
    • "maxImage" - Image
    • "minImage" - Image
  • TextScale
    • "textChoices" -
      [ 
      {
      "text" - String
      "value" - String
      "detail" - String; nil
      "exclusive" - Boolean; true
      }
      ]; Min:2, Max:8
    • "default" - Int
    • "vertical" - Bool
  • ValuePicker
    • "textChoices" -
      [ 
      {
      "text" - String
      "value" - String
      "detail" - String; nil
      "exclusive" - Boolean; true
      }
      ];
  • ImageChoice
    • "imageChoices" -
      [
      {
      "image" - String
      "selectedImage" - String
      "text" - String
      "value" - String
      }
      ]; Image Size 45px-60px
  • TextChoice
    • "textChoices" -
      [ 
      {
      "text" - String
      "value" - String
      "detail" - String; nil
      "exclusive" - Boolean
      "other": {
      "placeholder" - String
      "isMandatory" - Boolean
      "textfieldReq" - Boolean
      }
      }
      ];
    • "selectionStyle" - String; Single/Multiple
  • Numeric
    • "style" - String; Integer/Decimal
    • "unit" - String
    • "minValue" - Number
    • "maxValue" - Number
    • "placeholder" - String
  • Date
    • "style" - String; Date/Date-Time;
    • "minDate" - Date; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    • "maxDate" - Date; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    • "default" - Date
    • “dateRange” - String; (untilCurrent/afterCurrent/custom)
  • Text
    • "maxLength" - Int; =0 -> No max length
    • "validationRegex" - String
    • "invalidMessage" - String
    • "multipleLines" - Bool
    • "placeholder" - String
  • Email
    • "placeholder" - String
  • TimeInterval
    • "default" - Number
    • "step" - Integer; In minutes 1-30
  • Height
    • "measurementSystem" - String; Local/Metric/US
    • "placeholder" - String
  • Location
    • "useCurrentLocation" - Bool

Question Result:

  • "resultType" - String; QuestionResultType
  • "key" - String
  • "startTime" - String; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  • "endTime" - String; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  • "skipped" - Boolean
  • "value" - ResultFormat
ResultFormat:
  • Scale
    • "value" - Double
  • ContinuousScale
    • "value" - Double
  • TextScale
    • "value" - String
  • ValuePicker
    • "value" - String
  • ImageChoice
    • "value" - String
  • TextChoice
    • "value" - [String]
  • Boolean
    • "value" - Boolean
  • Numeric
    • "value" - Double
  • TimeOfDay
    • "value" - String; "HH:mm:ss"
  • Date
    • "value" - String; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  • Text
    • "value" - String
  • Email
    • "value" - String
  • TimeInterval
    • "value" - Double
  • Height
    • "value" - Double
  • Location
    • "value" - String; (lat,long)

Form Step

ParamValue
"type"String; "form"
"resultType"String; "grouped"
"key"String
"title"String
"text"String
"skippable"Boolean
"groupName"String; null
"repeatable"Boolean
"repeatableText"String
"destinations"Array
"steps"Array; [Question]

Form Result:

  • "resultType" - String; "grouped"
  • "key" - String
  • "startTime" - String; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  • "endTime" - String; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  • "skipped" - Boolean
  • "value" - [[QuestionResult]] Array of number of iterations of Q-results

Active Task Step

ParamValue
"type"String; "task"
"resultType"String; ActiveTaskType
"key"String
"text"String
"options"[ActiveTaskOptions]
"format"Dictionary; ActiveTaskFormat

ActiveTaskType:

  • fetalKickCounter
  • spatialSpanMemory
  • towerOfHanoi
ActiveTaskOptions:
  • excludeInstructions
  • excludeConclusion
  • excludeAccelerometer
  • excludeDeviceMotion
  • excludePedometer
  • excludeLocation
  • excludeHeartRate
  • excludeAudio
ActiveTaskFormat:
  • FetalKickCounter
    • "duration" - Number; in hours
    • “kickCount” - Number
  • SpatialSpanMemory
    • “initialSpan” - Integer
    • “minimumSpan” - Integer
    • “maximumSpan” - Integer
    • “playSpeed” - Integer
    • “maximumTests” - Integer
    • “maximumConsecutiveFailures” - Integer
    • “customTargetImage” - Image
    • “customTargetPluralName” - String
    • “requireReversal” - Bool
  • TowerOfHanoi
    • "numberOfDisks" - Integer;
Active Task Result:
  • "resultType" - String; ActiveTaskType (“grouped”)
  • "key" - String
  • "startTime" - String; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  • "endTime" - String; "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  • "value" - ActiveTaskResult
ActiveTaskResult:
  • FetalKickCounter
    [
    {
    "resultType" - “numeric”
    "key" - “duration”
    "startTime" - String; null
    "endTime" - String; null
    "skipped" - Boolean; false
    "value" - Double
    } ,
    {
    "resultType" - “numeric”
    "key" - “count”
    "startTime" - String; null
    "endTime" - String; null
    "skipped" - Boolean; false
    "value" - Double
    }
    ]
  • SpatialSpanMemory
    [
    {
    "resultType" - “numeric”
    "key" - “score”
    "startTime" - String; null
    "endTime" - String; null
    "skipped" - Boolean; false
    "value" - Integer
    } ,
    {
    "resultType" - “numeric”
    "key" - “numberOfGames”
    "startTime" - String; null
    "endTime" - String; null
    "skipped" - Boolean; false
    "value" - Integer
    },
    {
    "resultType" - “numeric”
    "key" - “numberOfFailures”
    "startTime" - String; null
    "endTime" - String; null
    "skipped" - Boolean; false
    "value" - Integer
    }
    ]
  • TowerOfHanoi
    [
    {
    "resultType" - “boolean
    "key" - “puzzleWasSolved”
    "startTime" - String; null
    "endTime" - String; null
    "skipped" - Boolean; false
    "value" - Boolean
    } ,
    {
    "resultType" - “numeric”
    "key" - “numberOfMoves”
    "startTime" - String; null
    "endTime" - String; null
    "skipped" - Boolean; false
    "value" - Integer
    }
    ]

Activity

Questionnaire

ParamValue
"type"String; "questionnaire"
"metadata"Dictionary;
{
"studyId" - String
"activityId" - String
"name" - String
"version" - String
"lastModified" - String
"startDate" - String
"endDate" - String
}
"steps"[Steps]; Does not contain ActiveTaskStep

Questionnaire Result:

  • "type" - String; "questionnaire"
  • "metadata" - Dictionary;
    {
    "studyId" - String
    "activityId" - String
    "version" - String
    "activityRunId" - String
    },
  • "participantId" - String
  • "data" - Dictionary;
    {
    "startTime" - String
    "endTime" - String
    "results" - [StepResult]
    }

Active Task

ParamValue
"type"String; "task"
"metadata"Dictionary
{
"studyId" - String
"activityId" - String
"name" - String
"version" - String
"lastModified" - String
"startDate" - String
"endDate" - String
}
"steps"[Steps]; Contains ActiveTaskStep

Active Task Result:

  • "type" - String; "task"
  • "metadata" - Dictionary;
    {
    "studyId" - String
    "activityId" - String
    "version" - String
    "activityRunId" - String
    },
  • "participantId" - String
  • "data" - Dictionary;
    {
    "startTime" - String
    "endTime" - String
    "results" - [StepResult]
    }

Related Topics