Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Introduction

The Recruit API was introduced in ClinSpark 1.5.5, and significantly expands the capabilities of the previously implemented Recruitment API. Capabilities of the API are also accompanied by the use of enables customers to integrate their recruitment websites with ClinSpark. It also contains the flexibility to support other recruitment-based workflows.

Certain capabilities of the API are maintained through the ‘RecruitmentApiHandler’ system setting in ClinSpark, available to Foundry Health ‘superadmin’ users.

Currently, both APIs exist for use with recruitment website integrations. ClinSpark customers who are already integrated using the Recruitment API should continue to use as currently implemented/documented within it’s section of the help site.

If there are questions about use of the API for recruitment website integration. This system setting is managed by IQVIA superadmin users but can be modified as needed to meet customer-specific needs, depending on the use case.

...

If there are questions about use of the Recruit API for external integrations with ClinSpark, please reach out to the Foundry Health IQVIA team via the service desk.

This API is documented (and is testable using Swagger), below.

Swagger integration

showCommonExtensionstrue
supportedSubmitMethodsget, post
openapi: 3.0.0 info: description: >- Allows for adding of volunteers, assignment and cancellation of appointments. version: 1.0.0-oas3 title: ClinSpark Recruit servers: - url: 'https://{customerId}.clinspark.com/api/v1/recruit' variables: customerId: default: community-dev description: Customer ID assigned by the service provider - url: 'https://{ngrokPrefix}.ngrok.io/clinspark/api/v1/recruit' variables: ngrokPrefix: default: 04f5b951df6d description: first part of ngrok-assigned id paths: /saveVolunteer: post: tags: - recruit summary: Saves a new volunteer operationId: saveVolunteer requestBody: content: application/json: schema: $ref: '#/components/schemas/Volunteer' description: JSON volunteer to add required: true responses: '200': description: 'Success: OK message.' '401': Specific support for the design and configuration of your website is not provided, but we are able to support our APIs.

Important information on setting up the integration to your website can be found here Recruitment Website Integration

Excerpt
nameRecruit API Functionality

Functionality

Your participant recruitment website developer will be able to use this API for the following:

  • allow the import of new volunteers

  • allow existing volunteers to express interest in a specific study / cohort

  • allow volunteers to update their own details

  • match volunteers to suitable studies based on details they submit

  • allows volunteers to select an open appointment for a study they are qualified for

  • allows volunteers to cancel their own appointment

Interactive Documentation with Swagger

This API is documented (and is testable using Swagger), below.

Swagger integration
showCommonExtensionstrue
supportedSubmitMethodsget, post
openapi: 3.0.0
info: # working version: https://app.swaggerhub.com/apis/brock57/ClinSparkRecruit/1.0.0
  description: >-
    Allows for adding of volunteers, assignment and cancellation of
    appointments.
  version: 1.0.1-oas3
  title: ClinSpark Recruit
servers:
  - url: 'https://{customerId}.clinspark.com/api/v1/recruit'
    variables:
      customerId:
        default: community-dev
        description: Customer ID assigned by the service provider
  - url: 'https://{ngrokPrefix}.ngrok-free.app/clinspark/api/v1/recruit'
    variables:
      ngrokPrefix:
        default: 8232-73-217-91-70
        description: first part of ngrok-assigned id
paths:
  /updateVolunteer:
    post:
      tags:
        - recruit
      summary: Updates a new volunteer
      operationId: updateVolunteer
      parameters:
        - name: reasonForChange
          in: query
          description: Reason for Change
          required: true
          schema:
            type: string
      requestBody:
        description: JSON volunteer to add
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VolunteerUpdate'
      responses:
        '200':
          description: 'Success: OK message.'
        '401':
          description: 'Unauthorized: Must add Basic Authentication headers'
        '422':
          description: >-
            Invalid request: There are input validation errors; look at the JSON
            response for details.
      security:
        - basicAuth: []
  /saveVolunteer:
    post:
      tags:
        - recruit
      summary: Saves a new volunteer
      operationId: saveVolunteer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Volunteer'
        description: JSON volunteer to add
        required: true
      responses:
        '200':
          description: 'Success: OK message.'
        '401':
          description: 'Unauthorized: Must add Basic Authentication headers'
        '422':
          description: >-
            Invalid request: There are input validation errors; look at the JSON
            response for details.
      security:
        - basicAuth: []
  /findActiveStudySites:
      get:
        tags:
          - recruit
        summary: Finds study sites that are actively recruiting
        parameters:
          - name: studyName
            in: query
            description: >-
              Case insensitive study name used to match study sites with the
              corresponding name
            required: false
            schema:
              type: string
          - name: siteId
            in: query
            description: >-
              ID of a given site; only study sites with the corresponding site
              will be returned
            required: false
            schema:
              type: number
              format: integer
          - name: siteName
            in: query
            description: >-
              Case insensitive site name used to match study sites with the
              corresponding name
            required: false
            schema:
              type: string
          - name: locationOid
            in: query
            description: >-
              Case sensitive location OID used to match study sites with the
              corresponding OID
            required: false
            schema:
              type: string
        responses:
          '200':
            description: successful operation
            content:
              application/json:
                schema:
                  type: array
                  items:
                    $ref: '#/components/schemas/StudySite'
          '401':
            description: 'Unauthorized: Must add Basic Authentication headers'
        security:
          - basicAuth: []
  /findUnassignedAppointments:
    get:
      tags:
        - recruit
      summary: Finds appointments for the given study site
      parameters:
        - name: studySiteId
          in: query
          description: ID of a given study site
          required: true
          schema:
            type: number
            format: integer
        - name: cohortName
          in: query
          description: >-
            Case insensitive cohort name used for a wild card search; only
            appointments that have an assigned cohort matching will be returned
          required: false
          schema:
            type: string
        - name: appointmentType
          in: query
          description: >-
            Case insensitive appointment typed used for a wild card search; only
            appointments that have an apointment type matching will be returned
          required: false
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RecruitmentAppointment'
        '401':
          description: 'Unauthorized: Must add Basic Authentication headers'
      security:
        - basicAuth: []
  /volunteerStudySearch:
    get:
      tags:
        - recruit
      summary: >-
        Finds matching studies for the found volunteer using the advanced
        volunteer search. The advanced searches must be not be archived and must
        have a study associated while actively recruiting. If the advanced
        search also specifies a site, that site in question must match the
        volunteer. The boolean eligible property in the response array indicates
        whether or not a study match has occurred.
      parameters:
        - name: volunteerId
          in: query
          description: primary key of the volunteer
          required: false
          schema:
            type: integer
            format: integer
        - name: externalId
          in: query
          description: ID from source system
          required: false
          schema:
            type: string
        - name: emailAddress
          in: query
          description: Case insensitive email address
          required: false
          schema:
            type: string
        - name: mobilePhone
          in: query
          description: Will be converted to ISO format before a query takes place
          required: false
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VolunteerSearchResult'
        '401':
          description: 'Unauthorized: Must add Basic Authentication headers'
      security:
        - basicAuth: []
  /listVolunteerAppointments:
    get:
      tags:
        - recruit
      summary: >-
        Finds appointments for the given volunteer found by one of the
        parameters supplied
      parameters:
        - name: volunteerId
          in: query
          description: primary key of the volunteer
          required: false
          schema:
            type: integer
            format: integer
        - name: externalId
          in: query
          description: ID from source system
          required: false
          schema:
            type: string
        - name: emailAddress
          in: query
          description: Case insensitive email address
          required: false
          schema:
            type: string
        - name: mobilePhone
          in: query
          description: Will be converted to ISO format before a query takes place
          required: false
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RecruitmentAppointment'
        '401':
          description: 'Unauthorized: Must add Basic Authentication headers'
      security:
        - basicAuth: []
  /assignAppointment:
    post:
      tags:
        - recruit
      summary: Allows for assigning a given appointment to a matching volunteer
      parameters:
        - name: recruitmentAppointmentId
          in: query
          description: ID from source system
          required: true
          schema:
            type: number
            format: integer
        - name: volunteerId
          in: query
          description: ID from the volunteer
          required: false
          schema:
            type: integer
        - name: externalId
          in: query
          description: ID from source system
          required: false
          schema:
            type: string
        - name: emailAddress
          in: query
          description: Case insensitive email address
          required: false
          schema:
            type: string
        - name: mobilePhone
          in: query
          description: Will be converted to ISO format before a query takes place
          required: false
          schema:
            type: string
        - name: appointmentNotes
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
        '401':
          description: 'Unauthorized: Must add Basic Authentication headers'
        '422':
          description: rendered if appointment could not be found
      security:
        - basicAuth: []
  /cancelAppointment:
    post:
      tags:
        - recruit
      summary: Allows for canceling a given appointment
      parameters:
        - name: recruitmentAppointmentId
          in: query
          description: ID from source system
          required: true
          schema:
            type: number
            format: integer
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
        '401':
          description: 'Unauthorized: Must add Basic Authentication headers'
        '422':
          description: rendered if appointment could not be found
      security:
        - basicAuth: []
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
  schemas:
    VolunteerAnswer:
      type: object
      properties:
        question:
          type: string
          example: Favorite web application?
          description: Verbatim custom volunteer question
        answer:
          type: string
          description: Answer format must match that defined by the custom question
    Volunteer:
      type: object
      properties:
        id:
          type: integer
          format: integer
        externalId:
          type: string
          example: '987123'
          description: Unique identifier in originating recruitment system
        title:
          type: string
          example: Mr
        firstName:
          type: string
          example: Joseph
        middleName:
          type: string
          description: >-
            can be an initial, if no value is provided a '-' will be stored with
            the volunteer reocord
          example: Peter
        lastName:
          type: string
          example: Padres
        genderMale:
          type: boolean
        ethnicHispanic:
          type: boolean
          description: null indicates unknown
        otherRace:
          type: string
          description: additional race details if race type doesn't match
          example: Asian
        dateOfBirth:
          type: string
          example: '1980-05-27'
          description: ISO DOB in form of yyyy-MM-dd
        nameSuffix:
          type: string
          description: jr, II
          example: Jr
        nationality:
          type: string
          example: Belgian
        preferredLanguage:
          type: string
          example: English
        address:
          type: string
          example: 123 Yellobrick Lane
        city:
          type: string
          example: Chicago
        region:
          type: string
          description: >-
            should match regions configured in the volunteer configuration
            component; ie state / province
          example: Chicago
        country:
          type: string
          example: US
        postalCode:
          type: string
          example: 60657
        homePhone:
          type: string
          description: >-
            tightly validated based on the general settings configured; should
            be as close to ISO format as possible with leading country code.
            https://github.com/google/libphonenumber is used for underlying
            validation
          example: +1312 554 1218
        workPhone:
          type: string
          description: see homePhone
          example: +1312 554 1218
        mobilePhone:
          type: string
          description: same rules apply as homePhone, but must be unique in database
          example: +1312 554 1218
        phoneNotes:
          type: string
          description: can be arbitrary notes to guide recruiters about making phone calls
          example: 
        contactableByPhone:
          type: boolean
          description: volunteer's permission to be contacted by phone
          default: true
        contactableBySms:
          type: boolean
          description: volunteer's permission to be contacted by SMS
          default: true
        contactableByEmailCampaign:
          type: boolean
          description: volunteer's permission to be contacted by emails
          default: true
        nextOfKin:
          type: string
          description: >-
            notes generally about who to contact should there be a reason to do
            so in an emergency situation
        volunteerEmploymentStatus:
          type: string
          enum:
            - Unemployed
            - Student
            - EmployedPartTime
            - EmployedFullTime
            - Retired
        weightKilos:
          type: number
          format: double
          example: 123.45
        heightMeters:
          type: number
          format: double
          example: 2.12
        vegetarian:
          type: boolean
          description: null indicates unknown
        surgicallySterile:
          type: boolean
          default: false
        contraceptionType:
          type: string
          example: Abstinence
          description: should match a type configured in the volunteer configure component
        numberOfChildren:
          type: integer
          description: value should only be present for females
          minimum: 0
          maximum: 20
        menstruationStartAge:
          type: integer
          description: value should only be present for females
          minimum: 8
          maximum: 50
        menstruationEndAge:
          type: integer
          description: value should only be present for females
          minimum: 10
          maximum: 100
        lastPeriodStartDate:
          type: string
          example: '2024-05-27'
          description: In form of yyyy-MM-dd; value should only be present for females
        regularPeriodIntervalDays:
          type: integer
          description: value should only be present for females
          minimum: 0
          maximum: 100
        regularPeriodDurationDays:
          type: integer
          description: value should only be present for females
          minimum: 0
          maximum: 100
        currentlyPregnant:
          type: boolean
          description: value should only be present for females
          default: false
        currentlyBreastFeeding:
          type: boolean
          description: value should only be present for females
          default: false
        childBearingPotential:
          type: boolean
          description: value should only be present for females
          default: false
        allergies:
          type: boolean
          description: null indicates unknown
        emailAddress:
          type: string
          example: something@domain.com
          description: >-
            must be unique; strictly validated using Apache Commons Email
            Validator framework
        contactSource:
          type: string
          description: >-
            describes how a volunteer contact occurred; should match a source
            configured in the volunteer configure component
        generalPractitioner:
          type: string
          description: volunteer's physician
          example: Joseph Smith
        generalPractitionerPhoneNumber:
          type: string
          description: volunteer's physician phone number
          example: +1312 555 1212
        generalPractitionerAddress:
          type: string
          description: volunteer's physician address
          example: 232 Yellobrick Lane
        siteName:
          type: string
          example: Base Site
          description: >-
            the name of the site that the volunteer should be associated with;
            if not provided, use siteId
        siteId:
          type: integer
          format: integer
          example: -1
          description: >-
            the id of the site that the volunteer should be associated with; if
            not provided, use siteName
        paymentStrategy:
            type: string
            enum:
              - IBAN
              - ABA
            example: IBAN
        ibanAccount: 
          type: string
         description: 'Unauthorizedexample: Must add BasicES9121000418450200051332
Authentication headers'         '422'description: Used if IBAN is chosen as Payment Strategy. Validated  description: >-using iban4j.org
        ibanBank:
   Invalid request: There are input validation errors; looktype: atstring
the JSON         example: CAIXESBB666
  response for details.       securitydescription: Used if IBAN is chosen as Payment Strategy. Validated - basicAuth: []using iban4j.org
   /findActiveStudySites:     getabaAccount:
      tags:    type: string
   - recruit       summaryexample: Finds123456789
study sites that are actively recruiting       parametersdescription: Used if ABA is chosen as Payment Strategy. -Validated name:using studyNameABANumberCheckDigit library.
         inabaBank: query
          descriptiontype: >-string
          example:  Case021000021
insensitive study name used to match study sites with the   description: Used if ABA is chosen as Payment Strategy. Validated correspondingusing nameABANumberCheckDigit library.
         requiredpreviousStudyParticipation: false
          schematype: boolean
           typevolunteerAnswers:
string         - nametype: siteIdarray
          inexample:
query           description: >- question: Favorite web application?
         ID of a given site; onlyanswer: studyGmail
sites with the corresponding site        - question: Favorite number?
 will be returned           required: falseanswer: '123'
            - schemaquestion: Favorite decimal?
          type: number    answer: '123.4'
       format: int64    - question: Favorite date?
 - name: siteName           inanswer: query'1969-07-20'
          description: >-
            Casearray insensitiveof sitesimple nameobjects usedwith toverbatim matchClinSpark study sites with thequestions and
            corresponding nameanswers
          requireditems:
false            schema$ref: '#/components/schemas/VolunteerAnswer'
           typevolunteerNotes:
string         - nametype: locationOidarray
          inexample:
query           description: >- Volunteer travels often
         Case sensitive location OID- usedIs toafraid match study sites with theof needles
          description: Simple notes correspondingthat OIDmove to a volunteer notes section
     required: false           schemaitems:
            type: string
      responses:         '200'volunteerRaces:
          descriptiontype: successful operationarray
          contentexample:
            - application/json:American Indian or Alaska Native
          schemadescription: Must match race names defined in ClinSpark
          typeitems:
array            type: string
   items:        volunteerSubstanceUse:
          type: objectarray
          example:
       properties: {}    -   securitysubstanceUseCategory: Alcohol
       - basicAuth: []   /findUnassignedAppointments:     getname: Beer
     tags:         -useFrequency: recruitWeek
      summary: Finds appointments for the given study site useConsumption: '5'
    parameters:         - nameconsumptionUnit: studySiteId
Glass/Bottle (.5L)
         in: query    substanceUseStatus:  Social
    description: ID of a given study site    startDate: '2001'
     required: true        lastConsumed: '2021-07-21'
 schema:             typesubstanceNotes: numberEnjoys heavy IPAs
          formatdescription: int64>-
        - name: cohortName  array of simple objects with verbatim ClinSpark questions and
in: query           description:corresponding >-answers
          items:
 Case insensitive cohort name used for a wild card search; only $ref: '#/components/schemas/VolunteerSubstanceUse'
    VolunteerUpdate:
     appointments thattype: haveobject
an assigned cohort matching will be returnedproperties:
          requiredid:
false           schematype: integer
           typeformat: stringinteger
        - nameexternalId: appointmentType
          intype: querystring
          descriptionexample: >-
  '987123'
         Case insensitivedescription: appointmentUnique typedidentifier usedin fororiginating arecruitment wildsystem
card search; only      title:
      appointments that have an apointment type: matchingstring
will be returned           requiredexample: falseMr
        firstName:
 schema:         type: string
  type: string       responsesexample: Joseph
       '200' middleName:
          descriptiontype: successfulstring
operation           contentdescription: >-
           application/json: can be an initial, if no value is provided a '-' will be stored schema:with
            the volunteer reocord
 type: array      lastName:
          itemstype: string
          example: Padres
        $refgenderMale: '#/components/schemas/RecruitmentAppointment'
          '400'type: boolean
         descriptionethnicHispanic:
Invalid username supplied         '404':type: boolean
          description: null indicates Userunknown
not found       securityotherRace:
        -  basicAuthtype: string
  []   /listVolunteerAppointments:     getdescription: additional race details if race type doesn't tags:match
        -dateOfBirth:
 recruit       summary: >- type: string
      Finds appointments for the given volunteer found by one of theexample: '1980-05-27'
          description: ISO DOB parametersin suppliedform of yyyy-MM-dd
    parameters:    nameSuffix:
    - name: externalId    type: string
     in: query    description: jr, II
    description: ID from source systemnationality:
          requiredtype: falsestring
          schemapreferredLanguage:
 
          type: string
        - nameaddress:
emailAddress           intype: querystring
          descriptioncity: Case
insensitive email address           requiredtype: falsestring
          schemaregion:
 
          type: string
         - namedescription: >-
mobilePhone           in: queryshould match regions configured in the volunteer configuration
   description: Will be converted to ISO format before a querycomponent; takesie placestate / province
        requiredcountry:
false           schematype: string
        postalCode:
  type: string       responsestype: string
       '200' homePhone:
          descriptiontype: string
successful  operation        description: >-
 content:           tightly validated application/json:based on the general settings configured; should
        schema:    be as close to ISO format as possible with leading country code.
 type: array          https://github.com/google/libphonenumber is used for underlying
  items:          validation
        $refworkPhone:
'#/components/schemas/RecruitmentAppointment'          '400'type: string
          description: Invalidsee usernamehomePhone
supplied         '404'mobilePhone:
          descriptiontype: Userstring
not found       security:  description: same rules apply as homePhone, but -must basicAuth:be []unique in  /assignAppointment:
database
   post:       tagsphoneNotes:
        - recruit type: string
    summary: Allows for assigning a given appointmentdescription: tocan abe matchingarbitrary volunteernotes to guide recruiters about making phone parameters:calls
        - namecontactableByPhone: recruitmentAppointmentId
          intype: queryboolean
          description: ID from source system volunteer's permission to be contacted by phone
          requireddefault: true
        contactableBySms:
 schema:         type: boolean
  type: number       description: volunteer's permission to be contacted by format:SMS
int64         - namedefault: externalIdtrue
          incontactableByEmailCampaign: query
          descriptiontype: IDboolean
from source system        description: volunteer's permission required:to falsebe contacted by emails
       schema:   default: true
        typenextOfKin:
string         - nametype: emailAddressstring
          indescription: query>-
          description: Case insensitivenotes emailgenerally addressabout who to contact should there be a reason to do
required: false           schema:so in an emergency situation
        typevolunteerEmploymentStatus:
string         - nametype: mobilePhonestring
          inenum:
  query          - description:Unemployed
 Will be converted to ISO format before a query takes place - Student
        required: false   - EmployedPartTime
      schema:      - EmployedFullTime
     type: string      - responses:Retired
        '200'weightKilos:
          descriptiontype: number
successful operation         format: double
content:          example: 123.45
 application/json:       heightMeters:
       schema:   type: number
          format: double
type: object         '422'example: 2.12
         descriptionvegetarian:
rendered if appointment could not be found    type: boolean
 security:         - basicAuthdescription: []null indicates unknown
/cancelAppointment:     post:   surgicallySterile:
   tags:       type: boolean
- recruit       summary: Allows fordefault: cancelingfalse
a given appointment      contraceptionType:
parameters:         - nametype: recruitmentAppointmentIdstring
          inexample: queryAbstinence
          description: ID from source system
  should match a type configured in the volunteer configure component
        requirednumberOfChildren:
true           schematype: integer
           typedescription: numbervalue should only be present for females
      format: int64   minimum: 0
  responses:         '200'maximum:
 20
        descriptionmenstruationStartAge: successful operation
          contenttype: integer
           application/jsondescription: value should only be present for females
       schema:   minimum: 8
            typemaximum: object50
        '422'menstruationEndAge:
          descriptiontype: renderedinteger
 if appointment could not be found    description: value should security:only be present for females
    - basicAuth: [] components:   securitySchemesminimum: 10
   basicAuth:       typemaximum: 100
 http       schemelastPeriodStartDate:
  basic   schemas:     VolunteerAnswertype: string
     type: object    example: '2024-05-27'
 properties:         questiondescription: In form of yyyy-MM-dd; value should only be present for type:females
string        regularPeriodIntervalDays:
  example: Favorite web application?     type: integer
    description: Verbatim custom volunteer question  description: value should only be present for answer:females
          typeminimum: string0
          descriptionmaximum: Answer100
format must match that defined by the custom question
regularPeriodDurationDays:
   Volunteer:       type: objectinteger
      properties:    description: value should only  externalId:be present for females
          typeminimum: string0
          examplemaximum: 100
'987123'        currentlyPregnant:
  description: Unique identifier in originating recruitment system  type: boolean
     title:     description: value should only be present type:for stringfemales
          exampledefault: Mrfalse
        firstNamecurrentlyBreastFeeding:
          type: stringboolean
          exampledescription: Joseph
  value should only be present for middleName:females
          typedefault: stringfalse
        childBearingPotential:
 description: >-        type: boolean
   can be an initial, if no value isdescription: providedvalue a '-' willshould only be storedpresent withfor females
          default: thefalse
volunteer reocord         lastNameallergies:
          type: stringboolean
          exampledescription: Padresnull indicates unknown
        genderMaleemailAddress:
          type: booleanstring
          ethnicHispanicexample: something@domain.com
          typedescription: >-
boolean            must description:be nullunique; indicatesstrictly unknownvalidated using Apache Commons Email
    otherRace:        Validator framework
 type: string      contactSource:
    description: additional race details if race type: string
doesn't match         dateOfBirthdescription: >-
         type: string  describes how a volunteer contact occurred; should match a example: '1980-05-27'source
           description: ISOconfigured DOBin inthe formvolunteer of yyyy-MM-ddconfigure component
        nameSuffixgeneralPractitioner:
          type: string
          description: volunteer'jr,s II'physician
        nationalitygeneralPractitionerPhoneNumber:
          type: string
        preferredLanguage:  description: volunteer's physician phone number
    type: string         addressgeneralPractitionerAddress:
          type: string
          citydescription: volunteer's physician address
        typesiteId:
 string         regiontype: integer
          typeformat: stringinteger
          descriptionexample: >-1
            should match regions configured in the volunteer configurationdescription: >-
            the id of component;the iesite statethat /the provincevolunteer should be associated with; if
   country:         not provided, type:use stringsiteName
        postalCodepaymentStrategy:
            type: string
         homePhone:   enum:
             type: string- IBAN
         description: >-    - ABA
       tightly validated based on the generalexample: settingsIBAN
configured; should       ibanAccount: 
    be as close to ISO format astype: possiblestring
with leading country code.       example: ES9121000418450200051332
    https://github.com/google/libphonenumber is used for underlying  description: Used if IBAN is chosen as Payment Strategy. Validated using validationiban4j.org
        workPhoneibanBank:
          type: string
          descriptionexample: CAIXESBB666
see homePhone         mobilePhonedescription: Used if IBAN is chosen as Payment Strategy. Validated using type:iban4j.org
string        abaAccount:
  description: 'same rules apply as homePhone, but must betype: uniquestring
in database'         phoneNotesexample: 123456789
          typedescription: stringUsed if ABA is chosen as Payment Strategy. Validated using ABANumberCheckDigit description:library.
 can be arbitrary notes to guide recruiters aboutabaBank: making
phone calls         contactableByPhonetype: string
          typeexample: boolean021000021
          description: volunteer'sUsed permissionif toABA beis contactedchosen byas phonePayment           default: trueStrategy. Validated using ABANumberCheckDigit library.
        contactableBySmspreviousStudyParticipation:
          type: boolean
    VolunteerSubstanceUse:
      descriptiontype: volunteer'sobject
permission to be contacted by SMS properties:
        substanceUseCategory:
default: true         contactableByEmailCampaigntype: string
          typeexample: booleanAlcohol
          descriptionenum:
 volunteer's permission to be contacted by emails     - Alcohol
    default: true       - Caffeine
nextOfKin:           type: string- Tobacco
         description: >-  - Drugs
        name:
notes generally about who to contact should there be a reasontype: tostring
do          description: >-
 so in an emergency situation       must be volunteerEmploymentStatus:associated with the relevant category defined in the
   type: string        volunteer configure component
enum:        useFrequency:
    - Unemployed     type: string
      - Student   description: provides context to the useConsumption
    - EmployedPartTime     default: Week
      - EmployedFullTime   enum:
         - Retired  - Day
     weightKilos:       - Week
  type: number         - Month
format: double           example: 123.45- Year
        heightMetersuseConsumption:
          type: numberstring
          formatdescription: >-
double            the example: 2.12
        vegetarian:amount of the substance consumed in the defined frequency;
            type:should booleanbe a number
        description: null indicates unknowndefault: '5'
        surgicallySterileconsumptionUnit:
          type: booleanstring
          defaultdescription: false>-
        contraceptionType:    must be associated with the relevant category type:/ stringname defined in the
       example: Abstinence      volunteer configure component
  description: should match a type configured in the volunteer configure componentdefault: Glass/Bottle (.5L)
        numberOfChildrensubstanceUseStatus:
          type: integerstring
          descriptionenum:
value should only be present for females      - Social
   minimum: 0        - Regular
 maximum: 20         menstruationStartAge: - Previous
        typestartDate:
integer          type: description:string
value should only be present for females    description: >-
     minimum: 8      yyyy-MM-dd; for partial dates, simply maximum:omit 50the fields 2009 would be
    menstruationEndAge:        2009, Jan of type:2008 integerwould be 2008-01, Feb 12 2007 would be 2007-02-12
  description: value should only be present forendDate:
females           minimumtype: 10string
          maximumdescription: see 100startDate
        lastPeriodStartDatelastConsumed:
          type: string
          description: Insee formstartDate
of yyyy-MM-dd; value should only be present for females
        regularPeriodIntervalDays substanceNotes:
          type: integerstring
          description: valuegeneral shouldnotes onlyabout bethe presentsubstance foruse
females    RecruitmentAppointment:
      minimumtype: 0object
          maximumproperties:
100         regularPeriodDurationDaysid:
          type: integer
          descriptionformat: integer
value   should only be present for femalesappointmentType:
          minimumtype: 0string
          maximumexample: 100Screening
        currentlyPregnant:  description: configured with study site  details
  type: boolean      appointmentNumber:
    description: value should only be present fortype: femalesstring
          defaultexample: falseA0001
        currentlyBreastFeedingestimatedAppointmentDurationMinutes:
          type: booleaninteger
          descriptionformat: valueint32
should only be present for females           defaultexample: false60
        childBearingPotentialappointmentNotes:
          type: booleanstring
          descriptionappointmentTime:
value should only be present for females    type: string
     default: false    description: ISO date time in allergies:UTC
          typecohort:
boolean           description: null indicates unknown$ref: '#/components/schemas/Cohort'
        emailAddressrecruitmentAppointmentStatus:
          type: string
          descriptionenum:
>-             must be unique; strictly validated using Apache Commons Email- Unassigned
            -  Assigned
   Validator framework         contactSource:  - CheckedIn
       type: string    - Failed
     description: >-      - Success
     describes how a volunteerdateCreated:
contact occurred; should match a source     type: string
      configured in the volunteer configure componentformat: date-time
        generalPractitionerlastUpdated:
          type: string
          descriptionformat: volunteer's physiciandate-time
        studyName: generalPractitionerPhoneNumber:
          type: string
          descriptionexample: volunteer's physicianABC123
phone number         generalPractitionerAddressstudyId:
          type: stringinteger
          descriptionexample: volunteer's physician113
address         siteNamestudyState:
          type: string
          exampleenum:
Base  Site          - description:ACTIVE
>-            - theARCHIVED
name of the site that the volunteer should be associated with;  - DESIGN
         if not provided, use- siteIdLOCKED
        siteIdepochs:
          type: integerarray
          formatitems:
 int64           example$ref: -1'#/components/schemas/EpochShort'
        
    descriptionCohort:
>-
       type: object
      properties:
   the  id of the sitedisabled:
that the volunteer should be associated with; if   type: boolean
        not provided, usedefault: siteNamefalse
        volunteerAnswersrequireVolunteerRecruitment:
          type: arrayboolean
          exampledefault: false
        name:
   - question: Favorite web application?   type: string
          answerexample: GmailCohort 1
        description:
  - question: Favorite number?     type: string
        answersubjectNumberAction: '123'
          type: string
- question: Favorite decimal?       enum:
       answer: '123.4'    - SCREENING
       - question: Favorite date?  - LEAD_IN
           answer: '1969-07-20'- RANDOMIZATION
           description: >- APPOINTMENT
        dataLocked:
  array of simple objects with verbatim ClinSpark questions andtype: boolean
          description: corresponding>-
answers           items: is data associated with the cohort locked for further data
  $ref: '#/components/schemas/VolunteerAnswer'         volunteerRaces:collection?
          typedefault: arrayfalse
        recruitmentActive:
 example:         type: boolean
  - American Indian or Alaska Native   description: is the cohort active for recruitment
 description: Must match race names defined in ClinSparkrecruitmentMaleGoal:
          itemstype: number
           typeformat: stringint32
        volunteerSubstanceUserecruitmentFemaleGoal:
          type: arraynumber
          exampleformat: int32
        recruitmentGoal:
  - substanceUseCategory: Alcohol      type: number
       name: Beer  format: int32
    VolunteerSearchResult:
      useFrequencytype: Weekobject
      properties:
        useConsumptioneligible:
'5'          type: boolean
   consumptionUnit: Glass/Bottle (.5L)     description: true if the volunteer matches criteria of the volunteer substanceUseStatus:search
Social          default: false
   startDate: '2001'    name:
          lastConsumedtype: '2021-07-21'string
          description: the name of substanceNotes:the Enjoysadvanced heavysearch
IPAs           description: >-study:
            array of simple objects with verbatim ClinSpark questions and
  $ref: '#/components/schemas/Study'
        site:
         corresponding answers
$ref: '#/components/schemas/Site'
         itemscohort:
            $ref: '#/components/schemas/VolunteerSubstanceUseCohort'
    VolunteerSubstanceUseSite:
      type: object
      properties:
        substanceUseCategoryid:
          type: stringinteger
          exampleformat: Alcoholinteger
          enumarchived:
          type: boolean
- Alcohol         description: is site archived?
- Caffeine         default: false
  - Tobacco     name:
       - Drugs  type: string
     name:     example: Grafton
    type: string   volunteerRegionLabel:
       description: >-  type: string
         must beexample: associatedState
with the relevant category defined in the    description: allows for customizing a region (ie State, Province, volunteeretc)
configure component         useFrequencyvolunteerEnrollmentConfirmationStatement:
          type: string
          description: providesstatement contextmade toduring thepoint useConsumptionof enrollment when staff is present
     default: Week  heightUnits:
        enum:  type: string
         - Dayenum:
            - WeekMeters
            - MonthCentimeters
            - YearInches
        useConsumptionweightUnits:
          type: string
          descriptionenum:
>-            - theKilo
amount of the substance consumed in the defined frequency;    - Pound
       should beaddress:
a number         type: string
default: '5'         consumptionUnitdescription: street address
        typecity:
string          type: description:string
>-        stateProvince:
    must be associated with the relevant categorytype: /string
name defined in the     postalCode:
       volunteer configure component type: string
        defaultcountry:
Glass/Bottle (.5L)         substanceUseStatustype: string
         typephoneNumber:
string           enumtype: string
        faxNumber:
  - Social       type: string
    -  Regular  timeZoneId:
          -type: Previousstring
        startDateinvestigatorId:
          type: string
          descriptioninvestigatorName:
>-          type: string
 yyyy-MM-dd; for partial dates,Study:
simply omit the fields 2009 would betype: object
      properties:
    2009, Jan of 2008 wouldid:
be 2008-01, Feb 12 2007 would be 2007-02-12   type: integer
    endDate:      format: integer
   type: string    studyState:
      description: see startDate  type:   string
   lastConsumed:       enum:
   type: string        - DESIGN
 description: see startDate         substanceNotes:- ACTIVE
         type: string  - LOCKED
       description: general notes about the substance- useARCHIVED
    RecruitmentAppointment:    name:
  type: object       propertiestype: string
        iddescription:
          type: integerstring
         protocolName:
format: int64         appointmentTypetype: string
         typeepochs:
string           exampletype: Screeningarray
          descriptionitems:
configured with study site details         appointmentNumber:$ref: '#/components/schemas/Epoch'
    Epoch:
      type: stringobject
          example: A0001properties:
        estimatedAppointmentDurationMinutesdisabled:
          type: integerboolean
          formatdefault: int32false
        appointmentNotesname:
          type: string
  
     appointmentTime:           typeexample: string
 Treatment
        description:
ISO date time in UTC         cohort:type: string
          $refexample: '#/components/schemas/Cohort'Treatment
        recruitmentAppointmentStatuscohorts:
          type: stringarray
          enumitems:
            - Unassigned$ref: '#/components/schemas/Cohort'
    EpochShort:
      type: -object
Assigned      properties:
      - CheckedIn disabled:
          type: -boolean
Failed          default: false
 - Success         dateCreatedname:
          type: string
          formatexample: date-timeTreatment
        lastUpdateddescription:
          type: string
          formatexample: date-timeTreatment
    CohortStudySite:
      type: object
      properties:
        disabledid:
          type: booleaninteger
          defaultformat: falseinteger
        requireVolunteerRecruitmentunassignedAppointmentCount:
          type: booleannumber
          defaultformat: falseint32
        nameappointmentTypes:
          type: stringarray
          example:
Cohort 1         description:  - Screening
       type: string    - OPV
   subjectNumberAction:       items:
   type: string           enumtype:  string
        locationOid:
 - SCREENING        type: string
   - LEAD_IN      example: '1'
     - RANDOMIZATION  investigatorId:
          -type: APPOINTMENTstring
        dataLockedinvestigatorName:
          type: booleanstring
        appointmentsRequireRecruitmentVolunteer:
    description: >-     type: boolean
       is dataappointmentsRequireRecruitmentVolunteerInCohort:
associated with the cohort locked for further data   type: boolean
        collection?recruitmentDescription:
          defaulttype: falsestring
        recruitmentActivedefaultAppointmentDurationMinutes:
          type: booleannumber
          descriptionformat: is the cohort active for recruitmentint32
        recruitmentMaleGoal:
          type: number
          format: int32
        recruitmentFemaleGoal:
          type: number
          format: int32
        recruitmentGoalsite:
          type: number$ref: '#/components/schemas/Site'
        study:
          format$ref: int32'#/components/schemas/Study'

See Also

  1. Recruitment Website Integration