{ //SURVEY "name": "23R2 Veeva ePRO Survey JSON with Comments", //Human-readable survey identifier "description": "The Survey JSON is the required formatting for survey configuration in the Veeva ePRO module.", //[Optional] Short description of this survey (for internal use only) "licenseText": "©Veeva License Text", //[Optional] License/copyright information that displays at the beginning of the survey "licenseImage": { //[Optional] License/copyright image that displays at the beginning of the survey "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/122169/survey/7af75cef-241a-4199-9c45-abbeb75bb326/attachments/image/13cbdad9-09c4-4aaf-a550-6a9ea4d71ffb/veeva1.png", //The URL you get when you upload an image to the ePRO Module "description": "License Logo 300x90" //Description of the image, to be used as alt text }, "sections": [ //Every block must be in a section. Section is not currently used to make any display changes. { //SECTION "name": "section1", //Human-readable section identifier (must be unique within this survey) "blocks": [ //Blocks are the boxes of information displayed in the survey. { //TEXT BLOCK "type": "text", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "instruction", //Human-readable unique block identifier (must be unique within this survey) "headingImage": { //[Optional] Used to display an image in the block heading "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/122169/survey/7af75cef-241a-4199-9c45-abbeb75bb326/attachments/image/93710c59-9db1-42ab-ab60-d3b3ff8ef93d/globe.png", //The URL you get when you upload an image to the ePRO Module "description": "Globe 2000x977" //Description of the image, to be used as alt text }, "heading": "

How good or bad is your health TODAY.

Let's find out.
Ok?", //Text that displays at the top of this block (supports basic HTML formatting) "condition": null //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display }, { //SINGLE CHOICE QUESTION BLOCK "type": "singleChoice", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q1", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "1", //[Optional] Number that will display before the heading "heading": "MOBILITY", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "answerSet": { //answerSet contains parameters applicable to the set of answers for this question "answers": [ //Answers are the options that appear under the question header text { "name": "1", //Human-readable unique answer identifier (must be unique within this Single Choice Question) "answer": "I have no problems in walking about", //Text that displays for this answer (supports basic HTML formatting) "answerImage": { //[Optional] Used to display an image in the answer choice "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/122169/survey/7af75cef-241a-4199-9c45-abbeb75bb326/attachments/image/5779462e-a88d-43ac-b7c0-dbf81a8f44b5/opened.png", //The URL you get when you upload an image to the ePRO Module "description": "Answer Image 1" //Description of the image, to be used as alt text } }, { "name": "2", //Human-readable unique answer identifier (must be unique within this Single Choice Question) "answer": "I have slight problems in walking about", //Text that displays for this answer (supports basic HTML formatting) "answerImage": { //[Optional] Used to display an image in the answer choice "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/122169/survey/7af75cef-241a-4199-9c45-abbeb75bb326/attachments/image/5779462e-a88d-43ac-b7c0-dbf81a8f44b5/opened.png", //The URL you get when you upload an image to the ePRO Module "description": "Answer Image 2" //Description of the image, to be used as alt text } }, { "name": "3", //Human-readable unique answer identifier (must be unique within this Single Choice Question) "answer": "I have moderate problems in walking about", //Text that displays for this answer (supports basic HTML formatting) "answerImage": { //[Optional] Used to display an image in the answer choice "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/122169/survey/7af75cef-241a-4199-9c45-abbeb75bb326/attachments/image/5779462e-a88d-43ac-b7c0-dbf81a8f44b5/opened.png", //The URL you get when you upload an image to the ePRO Module "description": "Answer Image 3" //Description of the image, to be used as alt text } }, { "name": "4", //Human-readable unique answer identifier (must be unique within this Single Choice Question) "answer": "I have severe problems in walking about", //Text that displays for this answer (supports basic HTML formatting) "answerImage": { //[Optional] Used to display an image in the answer choice "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/122169/survey/7af75cef-241a-4199-9c45-abbeb75bb326/attachments/image/5779462e-a88d-43ac-b7c0-dbf81a8f44b5/opened.png", //The URL you get when you upload an image to the ePRO Module "description": "Answer Image 4" //Description of the image, to be used as alt text } }, { "name": "5", //Human-readable unique answer identifier (must be unique within this Single Choice Question) "answer": "I am unable to walk about", //Text that displays for this answer (supports basic HTML formatting) "answerImage": { //[Optional] Used to display an image in the answer choice "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/122169/survey/7af75cef-241a-4199-9c45-abbeb75bb326/attachments/image/5779462e-a88d-43ac-b7c0-dbf81a8f44b5/opened.png", //The URL you get when you upload an image to the ePRO Module "description": "Answer Image 5" //Description of the image, to be used as alt text } } ] } }, { //VISUAL ANALOG SCALE QUESTION BLOCK "type": "visualScale", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q2", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "2", //[Optional] Number that will display before the heading "heading": "Please tap on the scale to indicate how your
health is TODAY.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "blockSettings": { //blockSettings contain parameters that change how a block is displayed "orientation": "vertical", //[Optional, defaults to vertical] Determines the orientation of the visual analog scale. Only vertical is allowed today "minNumber": 0, //Lowest number on the scale "maxNumber": 100, //Highest number on the scale "increment": 1, //[Optional, defaults to 1] Determines the incremental value that can be selected on the scale (e.g. increment of "1" means 0, 1, 2, 3... can be selected, whereas an increment of "10" means 0, 10, 20, 30... can be selected). Only 1 is supported today "minLabel": "The worst health
you can imagine", //[Optional] Label below the lowest number "maxLabel": "The best health
you can imagine", //[Optional] Label above the highest number "markDisplayInterval": 10, //[Optional] How often to display marks on the scale (e.g. markDisplayInterval of "10" results in marks at 0, 10, 20, 30...) "markNumberInterval": 0 //[Optional] How often to display numbers next to the marks on the scale (e.g. markNumberInterval of "50" results in displayed numbers at marks 0, 50, and 100) } } { //NUMERIC RATING SCALE QUESTION BLOCK "type": "numberScale", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q3", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "3", //[Optional] Number that will display before the heading "heading": "Please select on the scale how happy you feel today.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "blockSettings": { //blockSettings contain parameters that change how a block is displayed "minNumber": 0, //Lowest number on the scale "maxNumber": 10, //Highest number on the scale "increment": 1, //Determines the incremental value that can be selected on the scale (e.g. increment of "1" means 0, 1, 2, 3... can be selected, whereas an increment of "10" means 0, 10, 20, 30... can be selected) [Only "1" is supported today] "customMarks": [ //[Optional] customMarks contain the list of numbers that should be displayed with a label on the numeric rating scale { "positions": [0], //The label displays below the number entered here (only a single position is supported today) "label": "Severely Unhappy" //The label that displays at the specified position (HTML formatting is not supported) }, { "positions": [10], //The label displays below the number entered here (only a single position is supported today) "label": "Incredibly Happy" //The label that displays at the specified position (HTML formatting is not supported) } ], "answerImage": { //[Optional] Used to display an image above the numeric rating scale "image": "https://patients-us-ft.myveeva.com/public-assets/epro/original/vault/138835/survey/2fd870e5-663e-4e5f-9a1e-fd67c90e1d1d/attachments/image/c71cec1a-98cf-4f56-8de7-0e03bd1d39cb/NRSFaces800x96.png", //The URL you get when you upload an image to the ePRO Module "description": "Numeric Rating Scale Image" //Description of image, to be used as alt text } } }, { //NUMBER ENTRY QUESTION BLOCK WITH 1 FIELD "type": "numberEntry", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q4", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "4", //[Optional] Number that will display before the heading "heading": "Please enter how many cups of water you drank today.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "answerSet": { //answerSet contains parameters applicable to the set of answers for this question "answers": [ //Answers are the number entry fields that appear in the block. 1 or 2 answers are allowed { "name": "cups", //Human-readable unique answer identifier (must be unique within this Number Entry Question) "label": "Cups", //The label that displays above this field "placeholder": "Number of Cups", //[Optional] The placeholder is a string that displays in the field before the user enters a value "minNumber": 0, //The lowest number that can be entered "maxNumber": 100, //The highest number that can be entered "increment": 0.5 //The response must be a multiple of this number } ] } }, { //NUMBER ENTRY QUESTION BLOCK WITH 2 FIELDS "type": "numberEntry", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q5", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "5", //[Optional] Number that will display before the heading "heading": "Please enter how tall you are in feet and inches.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "answerSet": { //answerSet contains parameters applicable to the set of answers for this question "answers": [ //Answers are the number entry fields that appear in the block. 1 or 2 answers are allowed { "name": "feet", //Human-readable unique answer identifier (must be unique within this Number Entry Question) "label": "Feet", //The label that displays above this field "minNumber": 0, //The lowest number that can be entered "maxNumber": 10, //The highest number that can be entered "increment": 1 }, { "name": "inches", //Human-readable unique answer identifier (must be unique within this Number Entry Question) "label": "Inches", //The label that displays above this field "minNumber": 0, //The lowest number that can be entered "maxNumber": 11, //The highest number that can be entered "increment": 1 //The response must be a multiple of this number }] } }, { //DATE ENTRY QUESTION BLOCK "type": "date", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q6", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "6", //[Optional] Number that will display before the heading "heading": "Please enter the date of your clinic visit in August.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "blockSettings": { //blockSettings contain parameters that change the constraints of the block "minValue": { //The earliest date that can be entered "type": "static", //Options: dynamic, static "value": "2022-08-01" //Static value must be in the format yyyy-mm-dd }, "maxValue": { //The latest date that can be entered "type": "dynamic", //Options: dynamic, static "offset": { //Offset from the current date at which the user is entering a response. Can be null "value": 1, //The number of units to offset from the current date (can be positive or negative) "unit": "weeks" //The unit of time to offset. Options: days, weeks, months, years } }, "default": { //[Optional] The default date populated in the field "type": "static", //Options: dynamic, static "value": "2022-08-01" //Static value must be in the format yyyy-mm-dd }, } }, { //TIME ENTRY QUESTION BLOCK "type": "time", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q7", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "7", //[Optional] Number that will display before the heading "heading": "Please enter the time you took your study drug this morning.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "blockSettings": { //blockSettings contain parameters that change the constraints of the block "minValue": { //[Optional, defaults to static and "00:00"] The earliest time that can be entered "type": "static", //Options: dynamic, static "value": "00:00" //Static value must be in the format hh:mm (24hr time) }, "maxValue": { //[Optional, defaults to static and "23:59"] The latest time that can be entered "type": "static", //Options: dynamic, static "value": "12:00" //Static value must be in the format hh:mm (24hr time) }, "default": { //[Optional] The default time populated in the field "type": "dynamic", //Options: dynamic, static "offset": { //Offset from the current time at which the user is entering a response. Can be null "value": 3, //The number of units to offset from the current time (can be positive or negative) "unit": "hours" //The unit of time to offset. Options: minutes, hours } }, } }, { "type": "dateTime", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q8", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "8", //[Optional] Number that will display before the heading "heading": "Please enter the date and time of your clinic visit.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "blockSettings": { //blockSettings contain parameters that change the constraints of the block "minValue": { //The earliest dateTime that can be entered "type": "static", //Options: dynamic, static "value": "2022-09-01T00:00" //Static value must be in the format yyyy-dd-mmThh:mm (24hr time) }, "maxValue": { //The latest dateTime that can be entered "type": "dynamic", //Options: dynamic, static "offset": { //Offset from the current time at which the user is entering a response. Can be null "value": -30, //The number of units to offset from the current dateTime (can be positive or negative) "unit": "minutes" //The unit of time to offset. Options: minutes, hours, days, weeks, months, years } }, "default": null //[Optional] The default dateTime populated in the field } }, { "type": "multipleChoice", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q9", //Human-readable unique block identifier (must be unique within this survey) "questionNumber": "9", //[Optional] Number that will display before the heading "heading": "Please select all symptoms you are experiencing.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "condition": null, //[Optional] The value from the "name" parameter on the condition. If that condition is met, this block will display "answerSet": { //answerSet contains parameters applicable to the set of answers for this question "answers": [ //Answers are the options that appear under the question header text { "name": "1", //Human-readable unique answer identifier (must be unique within this Multiple Choice Question) "answer": "Chills" //Text that displays for this answer (supports basic HTML formatting) }, { "name": "2", //Human-readable unique answer identifier (must be unique within this Multiple Choice Question) "answer": "Cough" //Text that displays for this answer (supports basic HTML formatting) }, { "name": "3", //Human-readable unique answer identifier (must be unique within this Multiple Choice Question) "answer": "Fatigue" //Text that displays for this answer (supports basic HTML formatting) }, { "name": "4", //Human-readable unique answer identifier (must be unique within this Multiple Choice Question) "answer": "Fever" //Text that displays for this answer (supports basic HTML formatting) }, { "name": "5", //Human-readable unique answer identifier (must be unique within this Multiple Choice Question) "answer": "Muscle aches" //Text that displays for this answer (supports basic HTML formatting) } ] }, "optionalAnswers": [ //[Optional] optionalAnswers contains parameters applicable to the set of optional answers for this question { "name": "opt-1", //Human-readable unique answer identifier (must be unique within this Multiple Choice Question) "answer": "None of the above" //Text that displays for this answer (supports basic HTML formatting) } ], }, { "type": "textEntry", //Options: text, singleChoice, visualScale, numberScale, numberEntry, date, time, dateTime, multipleChoice, textEntry "name": "q10", //Human-readable unique block identifier (must be unique within this survey) "heading": "Please describe any other symptoms you are experiencing.", //Text that displays at the top of this block after the questionNumber (supports basic HTML formatting) "questionNumber": "10", //Number that will display before the header (can be left blank to exclude a question number) "condition": null, //The value from the "name" parameter on the condition. If that condition is met, this block will display (can be removed or null if there are no conditions) "blockSettings": { //blockSettings contain parameters that change the constraints of the block "label": "Symptoms", //[Optional] The label that will display above the text entry field "placeholder": "I experienced...", //[Optional] The placeholder is a string that displays in the field before the user enters a value "maxLength": 1500 //The maximum number of characters a user can enter in the field } } ] } ], "conditions": [ { "name": "condition1", //Human-readable unique condition identifier (must be unique within this survey) "type": "single", //Options: single or compound ("single" is a condition against a single question. "compound" is a condition against multiple conditions) "blockName": "q1", //The value from the "name" parameter on the block you're evaluating (required for "single" condition types) "operation": "==", //Options: ==, !=, <, >, <=, >=, AND, OR, INCLUDES, NOT_INCLUDES "answer": { //Answer contains the answer on the specified block that would trigger this condition. (required for "single" condition types) "type": "name", //Options: name, number, static (Use "name" when populating a name below. Use "number" when populating a number below. Use "static" when populating a static date/time/dateTime value below.) "name": "1" //The value from the "name" parameter on the answer that would trigger this condition. Supports the following operations: ==, != (only used for conditions against singleChoice blocks) } }, { "name": "condition2", //Human-readable unique condition identifier (must be unique within this survey) "type": "single", //Options: single or compound ("single" is a condition against a single question. "compound" is a condition against multiple conditions) "blockName": "q2", //The value from the "name" parameter on the block you're evaluating (required for "single" condition types) "operation": "<=", //Options: ==, !=, <, >, <=, >=, AND, OR, INCLUDES, NOT_INCLUDES "answer": { //Answer contains the answer on the specified block that would trigger this condition. (required for "single" condition types) "type": "number", //Options: name, number, static (Use "name" when populating a name below. Use "number" when populating a number below. Use "static" when populating a static date/time/dateTime value below.) "number": 10 //The value from number-selection/entry questions that would trigger this condition. Supports the following operations: <, >, <=, >=, ==, != (only used for conditions against numberScale, visualScale, numberEntry blocks) } }, { "name": "condition3", //Human-readable unique condition identifier (must be unique within this survey) "type": "compound", //Options: single or compound ("single" is a condition against a single question. "compound" is a condition against multiple conditions) "operation": "OR", //Options: ==, !=, <, >, <=, >=, AND, OR, INCLUDES, NOT_INCLUDES "conditions": ["condition1", "condition2"] //Required for "compound" condition types. Supports the following operations: AND, OR) }, { "name": "condition4", //Human-readable unique condition identifier (must be unique within this survey) "type": "single", //Options: single or compound ("single" is a condition against a single question. "compound" is a condition against multiple conditions) "blockName": "q5", //The value from the "name" parameter on the block you're evaluating (required for "single" condition types) "operation": ">", //Options: ==, !=, <, >, <=, >=, AND, OR, INCLUDES, NOT_INCLUDES "answer": { //Answer contains the answer on the specified block that would trigger this condition. (required for "single" condition types) "type": "static", //Options: name, number, static (Use "name" when populating a name below. Use "number" when populating a number below. Use "static" when populating a static date/time/dateTime value below.) "value": "2022-08-31" //The value of the answer that would trigger this condition. Supports the following operations: ==, !=, <, >, <=, => (only used for conditions against date, time, dateTime blocks). Must be in the appropriate format for the block (yyyy-mm-dd, hh:mm, yyyy-mm-ddThh:mm). } }, { "name": "condition5", //Human-readable unique condition identifier (must be unique within this survey) "type": "single", //Options: single or compound ("single" is a condition against a single question. "compound" is a condition against multiple conditions) "blockName": "q9", //The value from the "name" parameter on the block you're evaluating (required for "single" condition types) "operation": "INCLUDES", //Options: ==, !=, <, >, <=, >=, AND, OR, INCLUDES, NOT_INCLUDES "answer": { //Answer contains the answer on the specified block that would trigger this condition. (required for "single" condition types) "type": "name", //Options: name, number, static (Use "name" when populating a name below. Use "number" when populating a number below. Use "static" when populating a static date/time/dateTime value below.) "name": "1" //The value from the "name" parameter on the answer that would trigger this condition. Supports the following operations: INCLUDES, NOT_INCLUDES (only used for conditions against multipleChoice blocks) } }] }