Versions Compared

Key

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

Introduction

The Recruit was 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 API 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. Specific support for the design and configuration of your website is not provided, but we are able to support our APIs. 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

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
        descriptiongeneralPractitionerAddress:
Customer ID assigned by the service provider   - urltype: 'https://{ngrokPrefix}.ngrok.io/clinspark/api/v1/recruit'string
    variables:       ngrokPrefix:
 description: volunteer's physician address
      default: 04f5b951df6d   example: 232 Yellobrick Lane
  description: first part of ngrok-assigned id pathssiteName:
  /saveVolunteer:      post:  type: string
   tags:       example: Base -Site
recruit       summary: Saves a newdescription: volunteer>-
      operationId: saveVolunteer     the name requestBody:of the site that the volunteer should be associated content:with;
          application/json:  if not provided, use siteId
      schema:  siteId:
          type: integer
$ref: '#/components/schemas/Volunteer'         descriptionformat: JSON volunteerinteger
to add         requiredexample: -1
true       responses:   description: >-
    '200':        the id of description: 'Success: OK message.'
    the site that the volunteer should be associated with; if
   '401':         not provided, description: 'Unauthorized: Must add Basic Authentication headers'use siteName
        paymentStrategy:
    '422':        type: string
 description: >-          enum:
  Invalid request: There are input validation errors; look at the JSON  - IBAN
         response for details.   - ABA
  security:         - basicAuthexample: []IBAN
   /findActiveStudySites:     getibanAccount: 
     tags:     type: string
  - recruit       summaryexample: ES9121000418450200051332
Finds study sites that are actively recruiting    description: Used if parameters:IBAN is chosen as Payment Strategy. Validated using iban4j.org
-  name: studyName     ibanBank:
     in: query    type: string
     description: >-    example: CAIXESBB666
       Case insensitive study namedescription: usedUsed toif matchIBAN studyis siteschosen withas thePayment Strategy. Validated using iban4j.org
        corresponding nameabaAccount:
          requiredtype: falsestring
          schemaexample: 123456789
           typedescription: stringUsed if ABA is chosen as Payment Strategy. Validated -using name:ABANumberCheckDigit siteIdlibrary.
          inabaBank: query
          descriptiontype: string
>-          example: 021000021
 ID of a given site; only study sites with thedescription: correspondingUsed siteif ABA is chosen as Payment Strategy. Validated using ABANumberCheckDigit library.
  will be returned    previousStudyParticipation:
      required: false   type: boolean
      schema:  volunteerAnswers:
          type: array
number          example:
  format: int64         - namequestion: siteNameFavorite web    application?
     in: query           description: >-
answer: Gmail
           Case insensitive- sitequestion: nameFavorite usednumber?
to match study sites with the         answer: '123'
  corresponding name         - question: required:Favorite falsedecimal?
          schema:    answer: '123.4'
       type: string    - question: Favorite date?
 - name: locationOid           inanswer: query'1969-07-20'
          description: >-
            Casearray sensitiveof locationsimple OIDobjects usedwith toverbatim matchClinSpark studyquestions sitesand
with the             corresponding OIDanswers
          requireditems:
 false           schema:$ref: '#/components/schemas/VolunteerAnswer'
        volunteerNotes:
          type: array
string        responses:  example:
      '200':      - Volunteer travels often
 description: successful operation         - Is content:afraid of needles
          application/jsondescription: Simple notes that move to a volunteer notes section
      schema:    items:
            type: arraystring
        volunteerRaces:
       items:   type: array
          example:
    type: object       - American Indian or Alaska Native
      properties: {}   description: Must match race security:names defined in ClinSpark
     - basicAuth: []   /findUnassignedAppointmentsitems:
    get:        tagstype: string
       - recruitvolunteerSubstanceUse:
      summary: Finds appointments for the given study sitetype: array
      parameters:    example:
    - name: studySiteId      - substanceUseCategory: Alcohol
  in: query           descriptionname: ID ofBeer
a given study site           requireduseFrequency: trueWeek
          schema:    useConsumption: '5'
       type: number      consumptionUnit: Glass/Bottle (.5L)
    format: int64         - namesubstanceUseStatus: cohortNameSocial
          in: query   startDate: '2001'
      description: >-       lastConsumed: '2021-07-21'
    Case insensitive cohort name used for a wild card search; onlysubstanceNotes: Enjoys heavy IPAs
         appointments thatdescription: have>-
an assigned cohort matching will be returned       array of simple objects required:with falseverbatim ClinSpark questions and
       schema:     corresponding answers
      type: string   items:
     - name: appointmentType     $ref: '#/components/schemas/VolunteerSubstanceUse'
    inVolunteerUpdate:
query      type: object
   description: >-  properties:
        id:
 Case insensitive appointment typed used for a wild card search;type: onlyinteger
          format: integer
appointments that have an apointment type matching will be returnedexternalId:
          requiredtype: falsestring
          schemaexample: '987123'
           typedescription: stringUnique identifier in originating recruitment   responses:system
        '200'title:
          descriptiontype: string
successful  operation        example: Mr
 content:       firstName:
     application/json:     type: string
        schema:  example: Joseph
        middleName:
    type: array     type: string
          itemsdescription: >-
            can be an initial, if $ref: '#/components/schemas/RecruitmentAppointment'
        '400':no value is provided a '-' will be stored with
           description: Invalidthe usernamevolunteer suppliedreocord
        '404'lastName:
          descriptiontype: string
 User not found       securityexample: Padres
       - basicAuthgenderMale:
[]     /listVolunteerAppointments:     gettype: boolean
     tags   ethnicHispanic:
        - recruit  type: boolean
   summary: >-      description: null indicates Findsunknown
appointments for the given volunteer found by one ofotherRace:
the         parameters suppliedtype: string
     parameters:     description: additional race details -if name:race externalIdtype doesn't match
        indateOfBirth:
query           descriptiontype: IDstring
from source system        example: '1980-05-27'
 required: false        description: ISO DOB schema:in form of yyyy-MM-dd
         typenameSuffix:
string         - nametype: emailAddressstring
          indescription: queryjr, II
         descriptionnationality:
Case insensitive email address           requiredtype: falsestring
          schemapreferredLanguage:
 
          type: string
        - nameaddress: mobilePhone
          intype: querystring
        city:
 description: Will be converted to ISO format before a query takestype: placestring
        region:
 required: false        type: string
 schema:         description: >-
  type: string       responses:  should match regions configured in the volunteer '200':configuration
          description: successful operationcomponent; ie state / province
      content:  country:
          application/jsontype: string
        postalCode:
    schema:      type: string
        homePhone:
type: array         type: string
      items:    description: >-
            tightly $ref: '#/components/schemas/RecruitmentAppointment'
        '400':validated based on the general settings configured; should
            be description:as Invalidclose usernameto suppliedISO format as possible with leading country code.
 '404':           description: User not foundhttps://github.com/google/libphonenumber is used for underlying
       security:     validation
   - basicAuth: []   /assignAppointmentworkPhone:
    post:       tagstype: string
       - recruit  description: see homePhone
  summary: Allows for assigning a given appointmentmobilePhone:
to a matching volunteer       parameterstype: string
       - name: recruitmentAppointmentId description: same rules apply as homePhone, but must be unique in: querydatabase
          descriptionphoneNotes:
ID from source system           requiredtype: truestring
          schemadescription: can be arbitrary notes to guide recruiters about making phone  calls
type: number       contactableByPhone:
     format: int64    type: boolean
   - name: externalId     description: volunteer's permission to be contacted in:by queryphone
          descriptiondefault: IDtrue
from source system      contactableBySms:
    required: false     type: boolean
    schema:      description: volunteer's permission to be contacted by type:SMS
string         - namedefault: emailAddresstrue
          incontactableByEmailCampaign:
query           descriptiontype: Caseboolean
insensitive email address        description: volunteer's permission required:to falsebe contacted by emails
       schema:   default: true
        typenextOfKin:
string         - nametype: mobilePhonestring
          indescription: query>-
          description: Will benotes convertedgenerally toabout ISOwho formatto beforecontact ashould querythere takesbe placea reason to do
       required: false    so in an emergency situation
  schema:      volunteerEmploymentStatus:
      type: string    type: string
 responses:         '200'enum:
          description: successful operation- Unemployed
         content:   - Student
        application/json:    - EmployedPartTime
         schema:   - EmployedFullTime
            type:- objectRetired
        '422'weightKilos:
          descriptiontype: renderednumber
if appointment could not be found     format: double
security:         - basicAuthexample: []123.45
   /cancelAppointment:     postheightMeters:
      tags:    type: number
   - recruit       summaryformat: Allowsdouble
for canceling a given appointment       parametersexample: 2.12
       - namevegetarian: recruitmentAppointmentId
          intype: queryboolean
          description: IDnull fromindicates sourceunknown
system           requiredsurgicallySterile:
true           schematype: boolean
          default: false
type: number       contraceptionType:
     format: int64    type: string
 responses:         '200'example: Abstinence
          description: successfulshould operationmatch a type configured in the volunteer configure component
  content:      numberOfChildren:
       application/json:   type: integer
          schemadescription: value should only be present for females
          typeminimum: 0
object          '422'maximum: 20
         descriptionmenstruationStartAge:
rendered if appointment could not be found    type: integer
 security:         -description: basicAuth:value []should components:only be present securitySchemes:for females
   basicAuth:       typeminimum: http8
      scheme: basic   schemasmaximum:   50
 VolunteerAnswer:       type: object
   menstruationEndAge:
  properties:        type: question:integer
          typedescription: stringvalue should only be present for females
    example: Favorite web application?   minimum: 10
       description: Verbatim custom volunteermaximum: question100
        answerlastPeriodStartDate:
          type: string
          descriptionexample: Answer format must match that defined by the custom question
    Volunteer:
      type: object'2024-05-27'
          description: In form of yyyy-MM-dd; value should only be present for females
        propertiesregularPeriodIntervalDays:
        externalId  type: integer
         type description: stringvalue should only be present for females
     example: '987123'    minimum: 0
     description: Unique identifier in originating recruitmentmaximum: system100
        titleregularPeriodDurationDays:
          type: stringinteger
          exampledescription: Mrvalue should only be present for females
  firstName:           typeminimum: string0
          examplemaximum: Joseph100
        middleNamecurrentlyPregnant:
          type: stringboolean
          description: >-value should only be present for females
      can be an initial, ifdefault: nofalse
value is provided a '-' will be stored withcurrentlyBreastFeeding:
          type: boolean
the volunteer reocord         lastNamedescription: value should only be present for   females
 type: string           exampledefault: Padresfalse
        genderMalechildBearingPotential:
          type: boolean
        ethnicHispanic:  description: value should only be present    type: booleanfor females
          descriptiondefault: nullfalse
indicates unknown         otherRaceallergies:
          type: stringboolean
          description: additionalnull race details if race type doesn't matchindicates unknown
           dateOfBirthemailAddress:
          type: string
          example: '1980-05-27'something@domain.com
          description: ISO>-
DOB in form of yyyy-MM-dd        must nameSuffix:be unique; strictly validated using Apache Commons Email
   type: string        Validator framework
 description: 'jr, II'         nationalitycontactSource:
          type: string
        preferredLanguage:           typedescription: string>-
        address:    describes how a volunteer contact occurred; should type:match stringa   source
     city:       configured in the volunteer type:configure stringcomponent
        regiongeneralPractitioner:
          type: string
          description: >-volunteer's physician
        generalPractitionerPhoneNumber:
  should match regions configured in the volunteer configuration type: string
          component; ie state / provincedescription: volunteer's physician phone number
        countrygeneralPractitionerAddress:
          type: string
          postalCodedescription: volunteer's physician address
        typesiteId:
 string         homePhonetype: integer
          typeformat: stringinteger
          descriptionexample: >-1
          description: >-
tightly validated based on the general settings configured; should    the id of the site that the volunteer should be as close to ISO format as possibleassociated with; leadingif
country code.           not  https://github.com/google/libphonenumber is used for underlyingprovided, use siteName
        paymentStrategy:
      validation      type: string
 workPhone:           typeenum:
 string           description: see homePhone- IBAN
       mobilePhone:       - ABA
  type: string         example: IBAN
description: 'same rules apply as homePhone, but must beibanAccount: unique
in database'         phoneNotestype: string
          typeexample: stringES9121000418450200051332
          description: canUsed beif arbitraryIBAN notesis tochosen guideas recruitersPayment aboutStrategy. makingValidated phoneusing callsiban4j.org
        contactableByPhoneibanBank:
          type: booleanstring
          descriptionexample: volunteer's permission to be contacted by phone
          default: true CAIXESBB666
          description: Used if IBAN is chosen as Payment Strategy. Validated using iban4j.org
        contactableBySmsabaAccount:
          type: booleanstring
          descriptionexample: volunteer's123456789
permission to be contacted by SMS     description: Used if ABA is chosen default:as truePayment Strategy. Validated using ABANumberCheckDigit library.
   contactableByEmailCampaign:     abaBank: 
    type: boolean     type: string
    description: volunteer's permission to be contacted byexample: emails021000021
          defaultdescription: trueUsed if ABA is chosen as Payment Strategy. Validated nextOfKin:using ABANumberCheckDigit library.
        typepreviousStudyParticipation:
 string         type: boolean
description: >-   VolunteerSubstanceUse:
      type: object
 notes generally about who to contactproperties:
should there be a reason to do  substanceUseCategory:
          sotype: instring
an emergency situation        example: volunteerEmploymentStatus:Alcohol
          typeenum:
  string          - enum:Alcohol
            - UnemployedCaffeine
            - StudentTobacco
            - EmployedPartTime Drugs
        name:
         - EmployedFullTimetype: string
          description: >-
Retired         weightKilos:   must be associated with the relevant category defined type:in the
number           format: doublevolunteer configure component
        exampleuseFrequency:
123.45          heightMeterstype: string
          typedescription: provides numbercontext to the useConsumption
       format: double  default: Week
       example: 2.12  enum:
      vegetarian:      - Day
   type: boolean        - Week
 description: null indicates unknown        - surgicallySterile:Month
          type: boolean - Year
        defaultuseConsumption:
 false         contraceptionTypetype: string
          typedescription: string >-
         example: Abstinence  the amount of the substance consumed in the defined description:frequency;
should match a type configured in the volunteer configure component   should be a number
  numberOfChildren:        default: '5'
 type: integer      consumptionUnit:
    description: value should only be present fortype: femalesstring
          minimumdescription: 0>-
          maximum: 20 must be associated with the relevant category / menstruationStartAge:name defined in the
       type: integer    volunteer configure component
    description: value should only be present for femalesdefault: Glass/Bottle (.5L)
        minimumsubstanceUseStatus:
8           maximumtype: 50string
        menstruationEndAge:  enum:
        type: integer   - Social
      description: value should only be present for- femalesRegular
          minimum: 10 - Previous
        maximumstartDate:
 100         lastPeriodStartDatetype: string
          typedescription: string>-
          description: In form of yyyy-MM-dd; valuefor shouldpartial onlydates, besimply presentomit forthe femalesfields 2009 would be
     regularPeriodIntervalDays:       2009, Jan of 2008 type:would integerbe 2008-01, Feb 12 2007 would be 2007-02-12
   description: value should only be present forendDate:
females           minimumtype: 0string
          maximumdescription: 100see startDate
        regularPeriodDurationDayslastConsumed:
          type: integerstring
          description: see startDate
  value should only be present for femalessubstanceNotes:
          minimumtype: 0string
          maximumdescription: general 100notes about the substance use
    currentlyPregnantRecruitmentAppointment:
      type: object
      typeproperties:
 boolean       id:
    description: value should only be present fortype: femalesinteger
          defaultformat: falseinteger
        currentlyBreastFeedingappointmentType:
          type: booleanstring
          descriptionexample: valueScreening
should only be present for females     description: configured with study site details
default: false         childBearingPotentialappointmentNumber:
          type: booleanstring
          descriptionexample: A0001
  value should only be present for femalesestimatedAppointmentDurationMinutes:
          defaulttype: integer
 false         allergiesformat: int32
          type: booleanexample: 60
        appointmentNotes:
       description:  null indicatestype: unknownstring
        emailAddressappointmentTime:
          type: string
          description: >-ISO date time in UTC
        mustcohort:
be unique; strictly validated using Apache Commons Email   $ref: '#/components/schemas/Cohort'
        recruitmentAppointmentStatus:
Validator framework         contactSourcetype: string
          typeenum:
string           description: >- Unassigned
            - describesAssigned
    how a volunteer contact occurred; should match a source- CheckedIn
           configured in- theFailed
volunteer configure component         generalPractitioner: - Success
        typedateCreated:
string          type: description:string
volunteer's physician         generalPractitionerPhoneNumberformat: date-time
         typelastUpdated:
string           descriptiontype: volunteer'sstring
physician phone number         generalPractitionerAddressformat:  date-time
        typestudyName: string
          descriptiontype: volunteer'sstring
physician address         siteNameexample: ABC123
         typestudyId: string
          exampletype: Baseinteger
Site           descriptionexample: >-113
        studyState:
   the name of the site that the volunteertype: shouldstring
be associated with;        enum:
    if not provided, use siteId    - ACTIVE
   siteId:         - ARCHIVED
 type: integer          - format:DESIGN
int64           example: -1 LOCKED
         descriptionepochs:
>-          type: array
 the id of the site that the volunteer should beitems:
associated with; if          $ref: '#/components/schemas/EpochShort'
 not provided, use siteName    
    volunteerAnswersCohort:
   
      type: object
 array     properties:
     example:   disabled:
         - questiontype: Favoriteboolean
web application?         default: false
    answer: Gmail   requireVolunteerRecruitment:
         - questiontype: Favoriteboolean
 number?         default: false
    answer: '123'   name:
         - questiontype: Favoritestring
decimal?          example: Cohort 1
  answer: '123.4'     description:
       - question: Favorite date?type: string
        subjectNumberAction:
    answer: '1969-07-20'     type: string
    description: >-     enum:
       array of simple objects with verbatim- ClinSparkSCREENING
questions and           - LEAD_IN
corresponding answers           items:- RANDOMIZATION
           $ref: '#/components/schemas/VolunteerAnswer' - APPOINTMENT
        volunteerRacesdataLocked:
          type: arrayboolean
          exampledescription: >-
           - Americanis Indiandata orassociated Alaskawith Nativethe cohort locked for further data
     description: Must match race names defined in ClinSparkcollection?
          itemsdefault: false
        recruitmentActive:
   type: string      type: boolean
 volunteerSubstanceUse:         description: is type: array
 the cohort active for recruitment
        examplerecruitmentMaleGoal:
          type: number
   - substanceUseCategory: Alcohol     format: int32
        namerecruitmentFemaleGoal:
Beer          type: number
   useFrequency:  Week     format: int32
        useConsumptionrecruitmentGoal:
'5'          type: number
      consumptionUnit: Glass/Bottle (.5L)  format: int32
    VolunteerSearchResult:
      substanceUseStatustype: object
Social      properties:
        startDateeligible:
'2001'          type: boolean
   lastConsumed: '2021-07-21'      description: true if the volunteer matches criteria of the substanceNotes:volunteer Enjoyssearch
heavy IPAs         default: false
description: >-       name:
     array of simple objects with verbatimtype: ClinSparkstring
questions and         description: the name of correspondingthe answersadvanced search
         itemsstudy:
 
          $ref: '#/components/schemas/VolunteerSubstanceUseStudy'
    VolunteerSubstanceUse:    site:
  type: object       properties:$ref: '#/components/schemas/Site'
        substanceUseCategorycohort:
          type: string$ref: '#/components/schemas/Cohort'
    Site:
      exampletype: Alcohol
  object
       enumproperties:
        id:
   - Alcohol      type: integer
     - Caffeine    format: integer
       - Tobaccoarchived:
          type: boolean
- Drugs         namedescription: is site archived?
       type:  string default: false
        descriptionname:
>-          type: string
 must be associated with the relevant category defined in theexample: Grafton
        volunteerRegionLabel:
  volunteer configure component      type: string
 useFrequency:           typeexample: stringState
          description: allows for providescustomizing contexta toregion the(ie useConsumptionState, Province, etc)
        defaultvolunteerEnrollmentConfirmationStatement: Week
          enumtype: string
          description: -statement Daymade during point of enrollment when staff is present
    - Week     heightUnits:
       - Month  type: string
         - Yearenum:
        useConsumption:    - Meters
     type: string      - Centimeters
   description: >-        - Inches
   the amount of the substance consumedweightUnits:
in the defined frequency;       type: string
    should be a number   enum:
       default: '5'    - Kilo
   consumptionUnit:         - Pound
type: string       address:
   description: >-      type: string
     must be associated with the relevantdescription: categorystreet /address
name defined in the     city:
       volunteer configure component type: string
        defaultstateProvince:
Glass/Bottle (.5L)         substanceUseStatustype: string
         typepostalCode:
string           enumtype: string
        country:
  - Social       type: string
     - Regular  phoneNumber:
          -type: Previousstring
        startDatefaxNumber:
          type: string
        timeZoneId:
 description: >-        type: string
   yyyy-MM-dd; for partial dates, simply omitinvestigatorId:
the fields 2009 would be      type: string
     2009, Jan of 2008investigatorName:
would be 2008-01, Feb 12 2007 would be 2007-02-12  type: string
     endDateStudy:
      type: object
  type:  string  properties:
        descriptionid:
see startDate         lastConsumedtype: integer
          typeformat: stringinteger
          descriptionstudyState:
see startDate         substanceNotestype: string
          type: stringenum:
            - DESIGN
    description: general notes about the substance use  - ACTIVE
 RecruitmentAppointment:       type: object   - LOCKED
  properties:         id: - ARCHIVED
        typename:
integer           formattype: int64string
        appointmentTypedescription:
          type: string
          exampleprotocolName:
Screening           descriptiontype: configuredstring
with study site details         appointmentNumberepochs:
          type: stringarray
          exampleitems:
   A0001         estimatedAppointmentDurationMinutes$ref: '#/components/schemas/Epoch'
    Epoch:
      type: integerobject
      properties:
        formatdisabled:
 int32         appointmentNotestype: boolean
          typedefault: stringfalse
        appointmentTimename:
          type: string
          descriptionexample: ISO date time in UTC Treatment
        description:
          cohorttype: string
         $ref: '#/components/schemas/Cohort' example: 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: string
 boolean       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: int32$ref: '#/components/schemas/Study'

See Also

  1. Recruitment Website Integration