Skip to main content

Flow Examples

Components of Interaction

  • Candidate: Interacts with webpage.
  • Webpage: Displays form for performing self-assessment and collects contact information.
  • Trialbee Incremental Candidate API: Provides a REST API concerning incremental enrolment of candidate.
  • Trialbee Honey: Triaging area for candidate. Used by screening nurses and site users in order to process candidate.

Flow example

Sequence diagram

Visual example

Entering form

When the candidate enters the webpage, requests being sent are:

  • GET /rest/v1/candidates/questionnaires/:studyId
  • POST /rest/v1/candidates

The first request returns the configuration of the questionnaire. This data will be used for rendering the form with questions, contact detail fields.

The second request creates a pending candidate which can then be enriched with contact details and answers to questions.

Get questionnaire configuration

Request

GET /rest/v1/candidates/questionnaires/:studyId?locale=en-US

Response

{
"study": {
"id": "DEMO3",
"publicStudyName": "Genericazeram Demo"
},
"textDirection": "ltr",
"questions": [
{
"id": "35302",
"type": "dateofbirth",
"question": "What is your year of birth? This will allow us to calculate your age.",
"description": "",
"key": "dob",
"options": {
"dateFormat": "yyyy"
},
"items": null,
"visibleIf": null
},
{
"id": "35298",
"type": "yesno",
"question": "Do you have a doctor’s diagnosis of Parkinson’s disease?",
"description": "",
"key": "diagnosis",
"options": {},
"items": null,
"visibleIf": null
},
{
"id": "35299",
"type": "radiobutton",
"question": "Do your Parkinson’s symptoms cause you to be wheelchair bound or bedridden?",
"description": "",
"key": "wheelchair_bedridden",
"options": {},
"items": [
{
"key": "wheelchair",
"label": "Yes, wheelchair bound",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "bedridden",
"label": "Yes, bedridden",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "neither",
"label": "Neither of these",
"inlineText": null,
"unique": null,
"maxLength": null
}
],
"visibleIf": "answer.diagnosis == 'true'"
},
{
"id": "35300",
"type": "scale",
"question": "Please rate the severity of your symptoms from Parkinson's disease. ",
"description": "",
"key": "stiffness_shaking",
"options": {},
"items": [
{
"key": "1",
"label": "Very low",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "5",
"label": "Very high",
"inlineText": null,
"unique": null,
"maxLength": null
}
],
"visibleIf": "answer.diagnosis == 'true'"
},
{
"id": "35301",
"type": "checkbox",
"question": "Are you currently taking any of the following levodopa medication for Parkinson’s?",
"description": "Please select all that you are taking.",
"key": "levodopa_meds",
"options": {},
"items": [
{
"key": "sinemet",
"label": "Sinemet",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "sinemet_cr",
"label": "Sinemet CR",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "rytary",
"label": "Rytary",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "inbrija",
"label": "Inbrija",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "stelavo",
"label": "Stalevo",
"inlineText": null,
"unique": null,
"maxLength": null
},
{
"key": "none",
"label": "None of these",
"inlineText": null,
"unique": true,
"maxLength": null
}
],
"visibleIf": "answer.diagnosis == 'true'"
}
],
"consent": {
"id": "4890",
"questions": [
{
"id": "42031",
"type": "data_consent",
"question": "MANDATORY. I consent to and give permission for Trialbee on behalf of Generica Ltd to process my personal data including the health information that I have given. For more information, view our privacy policy and the full consent. ",
"description": "I consent to and give permission to Trialbee to process and use my personal data on behalf of Generica Ltd as the data controller for my personal data, including my Identity Data, Contact Data, and Health Data as described in the [privacy policy](https://trialbee.com/privacy-policy/), for the purposes of completing my registration request and to consider whether I am eligible/suitable for participating in a clinical research study, related to a clinical investigation, or clinical support program sponsored by Generica Ltd.\n\nI understand that my personal data may be shared with healthcare providers and medical researchers involved in the pre-screening process. \n\nI understand that I have the right to withdraw my consent at any time. To withdraw my consent, I can contact [Contact Information]. Upon withdrawal, Trialbee will cease processing my personal data and will delete or anonymize my data in accordance with applicable laws and regulations. Withdrawal of consent will not affect the lawfulness of processing based on consent before its withdrawal.\n\nTo learn more about how Trialbee stores and uses my data, I can read the full privacy policy [here](https://trialbee.com/privacy-policy/).\n",
"key": "data_consent",
"options": {},
"items": null,
"visibleIf": null
},
{
"id": "42032",
"type": "lead_consent",
"question": "OPTIONAL. I consent to Trialbee processing my personal and health data for Generica Ltd to contact me regarding future studies I may be suitable for. ",
"description": "I consent to and give permission to Trialbee to process and use my personal data on behalf of Generica Ltd as the data controller for my personal data, including my Identity Data, Contact Data, and Health Data as described in the privacy policy [here], for the purposes of considering my suitability for future clinical trials sponsored by Generica Ltd.\n\nI understand that my personal data may be shared with healthcare providers and medical researchers involved in the pre-screening process. My data will be retained for 3 years unless I opt to re-consent when given the option.\n\nI understand that I have the right to withdraw my consent at any time using the link in the welcome email received upon registration. Upon withdrawal, Trialbee will cease processing my personal data and will anonymize my data in accordance with applicable laws and regulations. \n\nWithdrawal of consent will not affect the lawfulness of processing based on consent before its withdrawal. To learn more about how Trialbee stores and uses my data, I can read the full privacy policy [here].\n",
"key": "lead_consent",
"options": {},
"items": null,
"visibleIf": null
}
],
"criteria": "[{\"criteria\":{\"data_consent\":\"true\"},\"studyIds\":[\"DEMO3\"]}]"
},
"config": {
"welcomeImage": null,
"colorMain": "#146b98",
"colorLight": "#f8f7f3",
"fontInclude": null,
"fontFamily": null,
"messages": {
"ContactDetails.PostalCode": "Zip code"
},
"contactForm": [
{
"name": "name",
"type": "name",
"isDefault": true
},
{
"name": "email",
"type": "email",
"confirm": false,
"isDefault": true
},
{
"name": "phone",
"type": "phone",
"isDefault": true
},
{
"name": "postalCode",
"type": "postalCode",
"isDefault": true
},
{
"name": "preferredContactHours",
"type": "select",
"options": ["8-20", "8-12", "12-16", "16-20"],
"isDefault": false,
"defaultValue": "8-20"
},
{
"name": "preferredContactWay",
"type": "select",
"options": ["Phone call", "SMS", "Email", "WhatsApp"],
"isDefault": false,
"defaultValue": "Phone call"
}
],
"steps": ["questionnaire", "siteSelector", "contactDetails", "completed"],
"autoScroll": true,
"customPages": {
"completed": {
"title": "Registration completed! ",
"text": "Thank you for your interest. An email has been sent to ${email}. You will be contacted by the study medical team shortly to further assess your eligibility and potential study participation.",
"subText": "Should you have any questions or concerns, please email us at support@trialbee.com. ",
"buttonText": null,
"buttonAction": null
},
"leave": {
"title": "Are you sure you want to leave?",
"text": "Any information you have entered in this self-assessment will not be saved.",
"subText": null,
"buttonText": null,
"buttonAction": null
},
"ineligible": {
"title": "Thank you for taking the time to learn about this study and answering our questions. ",
"text": "Unfortunately, one or more of your responses indicates that you do not meet the requirements to take part in the study, at this time.\n\nDo you want to sign up for future studies you may be suitable for? Sign up below!",
"subText": null,
"buttonText": "Sign up for future studies!",
"buttonAction": "https://demotrialbee.com/lead-registration/"
}
}
}
}
Create candidate

Request

POST /rest/v1/candidates

{
"studyId": "DEMO3",
"locale": "en-US",
"candidateId": "candidate-12345",
"referrerToken": "patient-advocacy-group-one"
}

Outcome

  • Created applying candidate in Honey

Example form being created from data returned by /rest/v1/candidates/questionnaires/

Answering questions

Upon answering a question, the webpage sends a request to PUT /rest/v1/candidates/:candidateId/answers/:questionKey.

Answer question

Request

PUT /rest/v1/candidates/:candidateId/answers/:questionKey

{
"answer": "1994"
}

Outcome

  • Answer is recorded in Trialbee Honey.

Questions being answered, resulting in requests to /rest/v1/candidates//answers/

note

Note that question 3 now shows up due to the visibleIf condition being true ("visibleIf": "answer.diagnosis == 'true'").

Entering candidate details

Upon entering all required contact information, and checking the data consent checkbox, and pressing the Submit button, the webpage sends a request to POST /rest/v1/candidates/:candidateId/details. The request will return 400 Bad Request if the pii object is provided without consents.data_consent being set to true, or if the pii object does not contain all required fields.

Enter candidate details

Request

POST /rest/v1/candidates/:candidateId/details

{
"pii": {
"name": "Jane Doe",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"phoneNumber": "+15551234567",
"postalCode": "12345",
"timezone": "Europe/Stockholm"
},
"consents": {
"data_consent": true,
"lead_consent": false,
"lookalike_consent": false
},
"preferences": {
"contactHours": "8-20",
"site": { "id": "SITE-001", "studyId": "DEMO3" },
"contactMethod": "SMS"
}
}

Outcome

  • Candidate details are recorded in Trialbee Honey.

Example contact detail form Example contact detail form

Finishing form

When all steps have been completed, the candidate is shown a completion page, and the webpage sends a request to POST /rest/v1/candidates/:candidateId.

Submit candidate

Request

POST /rest/v1/candidates/:candidateId

{
"status": "COMPLETED"
}

Outcome

  • Submitted candidate, preventing further changes

Registration complete page