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.

. 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 recruitment website integrationexternal 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.1-oas3 title: ClinSpark Recruit paths: /saveVolunteer: post: tags: - recruit summary: Saves a new volunteer operationId: saveVolunteer requestBody: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
        contentexternalId:
          application/jsontype: string
          example: '987123'
schema:          description: Unique identifier in originating $ref: '#/components/schemas/Volunteer'recruitment system
        descriptiontitle:
  JSON volunteer to add     type: string
  required: true       responsesexample: Mr
        '200'firstName:
          descriptiontype: 'Success:string
OK message.'         '401'example: Joseph
         descriptionmiddleName:
'Unauthorized: Must add Basic Authentication headers'     type: string
  '422':
          description: >-
 -
          Invalid request: Therecan arebe inputan validationinitial, errors;if lookno atvalue theis JSONprovided a '-' will be stored with
      response for details.    the volunteer reocord
security:         - basicAuthexample: Peter
[]   /findActiveStudySites:     getlastName:
      tags:    type:  string
  - recruit       summaryexample: FindsPadres
study sites that are actively recruiting   genderMale:
   parameters:         - nametype: studyNameboolean
        ethnicHispanic:
 in: query        type: boolean
 description: >-        description: null indicates unknown
 Case insensitive study name used to match studyotherRace:
sites with the        type: string
   corresponding name      description: additional race details  required:if falserace type doesn't match
       schema:   example: Asian
        typedateOfBirth:
string         - nametype: siteIdstring
          inexample: query'1980-05-27'
          description: >-ISO DOB in form of yyyy-MM-dd
       ID ofnameSuffix:
a given site; only study sites with the corresponding site type: string
          willdescription: bejr, returnedII
          requiredexample: falseJr
          schemanationality:
 
          type: numberstring
            formatexample: int64Belgian
        - namepreferredLanguage:
siteName           intype: querystring
          descriptionexample: >-English
        address:
   Case insensitive site name used to match studytype: sitesstring
with the         example:    corresponding name
 123 Yellobrick Lane
        requiredcity: false
          schematype: string
           typeexample: stringChicago
        - nameregion: locationOid
          intype: querystring
          description: >-
            Caseshould sensitivematch locationregions OIDconfigured usedin tothe matchvolunteer studyconfiguration
sites with the          component; ie state corresponding/ OIDprovince
          requiredexample: falseChicago
          schemacountry:
 
          type: string

     responses:         '200'example: US
         description: successful operationpostalCode:
          contenttype: string
           application/json:example: 60657
        homePhone:
     schema:     type: string
          typedescription: array>-
            tightly validated based on items:the general settings configured; should
            be as close $ref: '#/components/schemas/StudySite'
        '401':to ISO format as possible with leading country code.
            description: 'Unauthorized: Must add Basic Authentication headers'https://github.com/google/libphonenumber is used for underlying
         security:   validation
     - basicAuth: []   /findUnassignedAppointmentsexample: +1312 554 1218
 get:       tagsworkPhone:
        - recruit type: string
    summary: Finds appointments for the given studydescription: sitesee homePhone
     parameters:     example: +1312 554 1218
- name: studySiteId      mobilePhone:
    in: query     type: string
    description: ID of a given study sitedescription: same rules apply as homePhone, but must be unique in required: truedatabase
          schemaexample: +1312 554 1218
         typephoneNotes:
number          type: string
 format: int64        description: -can name:be cohortNamearbitrary notes to guide recruiters about making phone calls
  in: query       example: 
  description: >-     contactableByPhone:
       Case insensitive cohort nametype: usedboolean
for a wild card search; only     description: volunteer's permission to be contacted by phone
appointments that have an assigned cohort matching will be returned default: true
        requiredcontactableBySms: false
          schematype: boolean
           typedescription: stringvolunteer's permission to be contacted by SMS
  - name: appointmentType      default: true
   in: query    contactableByEmailCampaign:
      description: >-   type: boolean
        Case insensitive appointment typed used for a wild card search; only
 description: volunteer's permission to be contacted by emails
          default: appointmentstrue
that have an apointment type matching will be returnednextOfKin:
          requiredtype: falsestring
          schemadescription: >-
           type: stringnotes generally about who to contact should responses:there be a reason to do
   '200':         so in description:an successfulemergency operationsituation
          contentvolunteerEmploymentStatus:
            application/jsontype: string
          enum:
  schema:          - Unemployed
     type: array      - Student
         items:   - EmployedPartTime
            - EmployedFullTime
$ref: '#/components/schemas/RecruitmentAppointment'         '401':  - Retired
       description: 'UnauthorizedweightKilos:
Must add Basic Authentication headers'       security:  type: number
     - basicAuth: []   /volunteerStudySearchformat: double
   get:       tagsexample: 123.45
       - recruitheightMeters:
      summary: >-   type: number
    Finds matching studies for the found volunteerformat: usingdouble
the advanced         volunteerexample: search2.12
The advanced searches must be not be archived andvegetarian:
must         have atype: studyboolean
associated while actively recruiting. If the advanced    description: null indicates unknown
 search also specifies a site, that site insurgicallySterile:
question must match the       type: boolean
volunteer. The boolean eligible property in the response array indicates default: false
      whether or notcontraceptionType:
a study match has occurred.       parameterstype: string
         - nameexample: volunteerIdAbstinence
          indescription: should match querya type configured in the volunteer configure component
   description: primary key of the volunteernumberOfChildren:
          requiredtype: falseinteger
          schema:
   description: value should only be present for females
        type: integer minimum: 0
          formatmaximum: int6420
        - namemenstruationStartAge: externalId
          intype: queryinteger
          description: IDvalue fromshould sourceonly systembe present for females
       required: false  minimum: 8
       schema:   maximum: 50
        typemenstruationEndAge:
string         - nametype: emailAddressinteger
          indescription: value queryshould only be present for females
     description: Case insensitive email address minimum: 10
        required: false maximum: 100
        schemalastPeriodStartDate:
 
          type: string
         - nameexample: mobilePhone'2024-05-27'
          indescription: In form query
       of yyyy-MM-dd; value should only be present for females
  description: Will be converted to ISO formatregularPeriodIntervalDays:
before a query takes place      type: integer
   required: false      description: value should only be schema:present for females
          typeminimum: 0
   string       responsesmaximum: 100
        '200'regularPeriodDurationDays:
          descriptiontype: successful operationinteger
          contentdescription: value should only be present for females
     application/json:     minimum: 0
        schema:  maximum: 100
        currentlyPregnant:
    type: array     type: boolean
          itemsdescription: value should only  be present for females
          $refdefault: '#/components/schemas/VolunteerSearchResult'false
        '401'currentlyBreastFeeding:
          descriptiontype: 'Unauthorized:boolean
Must add Basic Authentication headers'       securitydescription: value should only be present for  females
- basicAuth: []   /listVolunteerAppointments:     getdefault: false
     tags:   childBearingPotential:
     - recruit    type: boolean
 summary: >-        description: Findsvalue appointmentsshould foronly thebe givenpresent volunteerfor foundfemales
by one of the       default: false
parameters supplied       parametersallergies:
         - nametype: volunteerIdboolean
          indescription: querynull indicates unknown
        descriptionemailAddress:
primary key of the volunteer           requiredtype: falsestring
          schemaexample:  something@domain.com
          typedescription: integer>-
            format:must int64be unique; strictly validated using Apache Commons Email
 - name: externalId         Validator framework
in: query           description: ID from source systemcontactSource:
            requiredtype: falsestring
          schemadescription: >-
            type:describes stringhow a volunteer contact occurred; should match a source
- name: emailAddress          configured in: the queryvolunteer configure component
        descriptiongeneralPractitioner: Case
insensitive email address           requiredtype: falsestring
          schemadescription: volunteer's physician
          typeexample: stringJoseph Smith
       - namegeneralPractitionerPhoneNumber:
mobilePhone           intype: querystring
          description: Will be converted to ISO format before a query takes placevolunteer's physician phone number
          requiredexample: false+1312 555 1212
        schemageneralPractitionerAddress:
 
          type: string
      responses:    description: volunteer's physician address
 '200':           descriptionexample: successful232 operationYellobrick Lane
         contentsiteName:
            application/jsontype: string
          example: Base Site
schema:          description: >-
     type: array      the name of the site that the volunteer should be associated items:with;
            if not provided, use siteId
 $ref: '#/components/schemas/RecruitmentAppointment'      siteId:
  '401':        type: integer
 description: 'Unauthorized: Must add Basic Authentication headers'   format: integer
  security:        example: -1
basicAuth:  []   /assignAppointment:     postdescription: >-
     tags:       the id -of recruitthe site that the volunteer should be summary:associated Allowswith; forif
assigning a given appointment to a matching volunteer     not provided, parameters:use siteName
       - namepaymentStrategy:
 recruitmentAppointmentId           intype: string
 query           descriptionenum:
 ID from source system          - required:IBAN
true           schema:   - ABA
        type: number   example: IBAN
        formatibanAccount: 
int64         - nametype: volunteerIdstring
          inexample: queryES9121000418450200051332
          description: ID from the volunteer
    Used if IBAN is chosen as Payment Strategy. Validated using iban4j.org
      required  ibanBank:
false           schematype: string
          example: type:CAIXESBB666
int64         - namedescription: Used externalIdif IBAN is chosen as Payment Strategy. Validated using iban4j.org
 in: query      abaAccount:
    description: ID from source system  type: string
       required: false  example: 123456789
       schema:   description: Used if ABA is chosen as Payment Strategy. Validated type:using stringABANumberCheckDigit library.
       - nameabaBank: emailAddress
          intype: querystring
          descriptionexample: Case021000021
insensitive email address           requireddescription: falseUsed if ABA is chosen as Payment Strategy. Validated using ABANumberCheckDigit schema:library.
            typepreviousStudyParticipation:
string         - nametype: mobilePhoneboolean
          involunteerAnswers:
query          type: description:array
Will be converted to ISO format before a query takes placeexample:
          required: false - question: Favorite web application?
     schema:         answer: Gmail
  type: string         - namequestion: appointmentNotesFavorite number?
         in: query    answer: '123'
     required: false      - question: Favorite decimal?
 schema:             typeanswer: string'123.4'
      responses:      -   '200'question: Favorite date?
        description: successful operation    answer: '1969-07-20'
     content:     description: >-
      application/json:      array of simple objects with verbatim ClinSpark questions and
schema:            corresponding answers
   type: object      items:
  '401':           description$ref: 'Unauthorized: Must add Basic Authentication headers'#/components/schemas/VolunteerAnswer'
        volunteerNotes:
     '422':     type: array
    description: rendered if appointment could not beexample:
found       security:     - Volunteer travels often
- basicAuth: []   /cancelAppointment:     post:  - Is afraid of needles
tags:         - recruitdescription: Simple notes that move to a summary:volunteer Allowsnotes forsection
canceling a given appointment       parametersitems:
         - name: recruitmentAppointmentId type: string
        involunteerRaces:
query          type: description:array
ID from source system       example:
   required: true        - American Indian schema:or Alaska Native
          typedescription: numberMust match race names defined in ClinSpark
      format: int64   items:
   responses:         '200'type:
 string
        descriptionvolunteerSubstanceUse:
 successful operation        type: array
 content:         example:
   application/json:         - substanceUseCategory: Alcohol
   schema:           name: Beer
    type: object         '401'useFrequency: Week
         description: 'Unauthorized: Must add Basic AuthenticationuseConsumption: headers'5'
        '422':      consumptionUnit: Glass/Bottle (.5L)
  description: rendered if appointment could not be found       securitysubstanceUseStatus: Social
       - basicAuth: [] servers:   - url: https://altasciences-sandbox.clinspark.com/api/v1/recruit
components:startDate: '2001'
   securitySchemes:     basicAuth:       typelastConsumed: http'2021-07-21'
      scheme: basic   schemas:     VolunteerAnswersubstanceNotes: Enjoys heavy  IPAs
  type: object       propertiesdescription: >-
        question:    array of simple objects with verbatim ClinSpark type:questions stringand
          example: Favorite webcorresponding application?answers
          descriptionitems:
Verbatim custom volunteer question         answer:$ref: '#/components/schemas/VolunteerSubstanceUse'
    VolunteerUpdate:
      type: object
string      properties:
    description: Answer format must matchid:
that defined by the custom question     Volunteertype: integer
     type: object       properties: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
        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
        dateOfBirth:
          type: string
          example: '1980-05-27'
          description: ISO DOB in form of yyyy-MM-dd
        nameSuffix:
          type: string
          description: jr, II
        nationality:
          type: string
        preferredLanguage:
          type: string
        address:
          type: string
        city:
          type: string
        region:
          type: string
          description: >-
            should match regions configured in the volunteer configuration
            component; ie state / province
        country:
          type: string
        postalCode:
          type: string
        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
        workPhone:
          type: string
          description: see homePhone
        mobilePhone:
          type: string
          description: same rules apply as homePhone, but must be unique in database
        phoneNotes:
          type: string
          description: can be arbitrary notes to guide recruiters about making phone calls
        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 unknownnull indicates unknown
        emailAddress:
          emailAddresstype: string
          typeexample: stringsomething@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
        generalPractitionerPhoneNumber:
          type: string
          description: volunteer's physician phone number
        generalPractitionerAddress:
          type: string
          description: volunteer's physician address
 
      siteName:           type: string
          example: Base Site
          description: >-
            the name of the site that the volunteer should be associated with;
   generalPractitionerAddress:
          type: string
         if not provided, use siteIddescription: volunteer's physician address
        siteId:
          type: integer
          format: int64integer
          example: -1
          description: >-
            the id of the site that the volunteer should be associated with; if
            not provided, use siteName
        volunteerAnswerspaymentStrategy:
            type: string
 array           exampleenum:
              - IBAN
question: Favorite web application?           - ABA
  answer: Gmail         example: IBAN
  - question: Favorite number?   ibanAccount: 
          answertype: string
 '123'         example: ES9121000418450200051332
  - question: Favorite decimal?     description: Used if IBAN is chosen as Payment Strategy. Validated answer:using '123.4'iban4j.org
        ibanBank:
    - question: Favorite date?   type: string
          answerexample: '1969-07-20'CAIXESBB666
          description: >-Used if IBAN is chosen as Payment Strategy. Validated using iban4j.org
  array of simple objects with verbatim ClinSparkabaAccount:
questions and             corresponding answerstype: string
           itemsexample: 123456789
           $refdescription: '#/components/schemas/VolunteerAnswer'
        volunteerNotes:
 Used if ABA is chosen as Payment Strategy. Validated using ABANumberCheckDigit library.
        typeabaBank: array
          exampletype: string
          example: 021000021
- Volunteer travels often       description: Used if ABA is chosen -as IsPayment afraidStrategy. ofValidated needlesusing ABANumberCheckDigit library.
        descriptionpreviousStudyParticipation:
Simple notes that move to a volunteer notes section  type: boolean
    VolunteerSubstanceUse:
  items:    type: object
       typeproperties: string
        volunteerRacessubstanceUseCategory:
          type: arraystring
          example: Alcohol
          enum:
- American Indian or Alaska Native       - Alcohol
  description: Must match race names defined in ClinSpark   - Caffeine
      items:      - Tobacco
     type: string      - Drugs
 volunteerSubstanceUse:       name:
   type: array      type: string
   example:       description: >-
    - substanceUseCategory: Alcohol      must be associated with the relevant category defined in name:the
Beer            volunteer configure component
useFrequency: Week        useFrequency:
      useConsumption: '5'   type: string
          consumptionUnitdescription: Glass/Bottle (.5L)
  provides context to the useConsumption
           substanceUseStatusdefault: SocialWeek
          enum:
   startDate: '2001'        - Day
     lastConsumed: '2021-07-21'      -   Week
     substanceNotes: Enjoys heavy IPAs    - Month
     description: >-      - Year
     array of simple objectsuseConsumption:
with verbatim ClinSpark questions and      type: string
     corresponding answers    description: >-
     items:       the amount of the substance consumed $ref: '#/components/schemas/VolunteerSubstanceUse'
 in the defined frequency;
  VolunteerSubstanceUse:       type: object  should be a number
 properties:         substanceUseCategorydefault: '5'
         typeconsumptionUnit:
string           exampletype: Alcoholstring
          enumdescription: >-
           - Alcoholmust be associated with the relevant category / name defined in the
 - Caffeine          volunteer configure component
- Tobacco         default:    - DrugsGlass/Bottle (.5L)
          namesubstanceUseStatus:
          type: string
          enum:
   description: >-        - Social
   must be associated with the relevant category defined in the- Regular
           volunteer configure- componentPrevious
        useFrequencystartDate:
          type: string
          description: provides>-
context to the useConsumption         yyyy-MM-dd; for default:partial Weekdates, simply omit the fields 2009 would be
   enum:         2009, Jan of 2008 -would Daybe 2008-01, Feb 12 2007 would be  2007-02-12
    - Week   endDate:
         - Monthtype: string
          description: -see YearstartDate
        useConsumptionlastConsumed:
          type: string
          description: >- see startDate
        substanceNotes:
          type: string
the amount of the substance consumed in the defined frequency; description: general notes about the substance use
    RecruitmentAppointment:
should be a number   type: object
      defaultproperties: '5'
        consumptionUnitid:
          type: stringinteger
          descriptionformat: >-integer
        appointmentType:
   must be associated with the relevant category /type: namestring
defined in the        example: Screening
   volunteer configure component     description: configured with study site details
default: Glass/Bottle (.5L)         substanceUseStatusappointmentNumber:
          type: string
          enumexample: A0001
        estimatedAppointmentDurationMinutes:
      - Social   type: integer
        - Regular format: int32
          -example: Previous60
        startDateappointmentNotes:
          type: string
          descriptionappointmentTime:
>-          type: string
 yyyy-MM-dd; for partial dates, simply omit the fields 2009 woulddescription: beISO date time in UTC
        2009,cohort:
Jan of 2008 would be 2008-01, Feb 12 2007 would be 2007-02-12$ref: '#/components/schemas/Cohort'
        endDaterecruitmentAppointmentStatus:
          type: string
          descriptionenum:
see startDate         lastConsumed:  - Unassigned
       type: string    - Assigned
     description: see startDate     - CheckedIn
  substanceNotes:          - type:Failed
string           description: general- notesSuccess
about the substance use     RecruitmentAppointmentdateCreated:
          type: string
   object       propertiesformat: date-time
        idlastUpdated:
          type: integerstring
          format: int64date-time
        appointmentTypestudyName: 
          type: string
          example: Screening ABC123
        studyId:
        description: configured withtype: studyinteger
site details         appointmentNumberexample: 113
        studyState:
type: string         type: string
example: A0001         estimatedAppointmentDurationMinutesenum:
          type: integer - ACTIVE
        format: int32   - ARCHIVED
    appointmentNotes:        - DESIGN
 type: string         appointmentTime: - LOCKED
        typeepochs:
string           descriptiontype: ISOarray
date time in UTC       items:
 cohort:           $ref: '#/components/schemas/CohortEpochShort'
        
recruitmentAppointmentStatus:    Cohort:
      type: stringobject
      properties:
        enum:disabled:
          type: boolean
       - Unassigned  default: false
        requireVolunteerRecruitment:
- Assigned         type: boolean
  -    CheckedIn    default: false
       - Failedname:
          type: string
- Success         dateCreatedexample: Cohort 1
        typedescription:
string           formattype: date-timestring
        lastUpdatedsubjectNumberAction:
          type: string
          formatenum:
  date-time     Cohort:     - SCREENING
type: object       properties:    - LEAD_IN
   disabled:         - RANDOMIZATION
type: boolean           default:- falseAPPOINTMENT
        requireVolunteerRecruitmentdataLocked:
          type: boolean
          defaultdescription: false>-
        name:    is data associated with the cohort locked type:for stringfurther data
         example: Cohort 1 collection?
       description:   default: false
      type: string recruitmentActive:
       subjectNumberAction:   type: boolean
      type: string   description: is the cohort active for recruitment
 enum:       recruitmentMaleGoal:
     - SCREENING    type: number
       - LEAD_IN  format: int32
        recruitmentFemaleGoal:
- RANDOMIZATION         type: number
  - APPOINTMENT         dataLockedformat: int32
         typerecruitmentGoal:
boolean          type: description:number
>-          format: int32
 is data associated withVolunteerSearchResult:
the cohort locked for further data type: object
      properties:
   collection?     eligible:
     default: false    type: boolean
   recruitmentActive:       description: true if the type:volunteer booleanmatches criteria of the volunteer search
     description: is the cohort active fordefault: recruitmentfalse
        recruitmentMaleGoalname:
          type: numberstring
          format: int32description: the name of the advanced search
        recruitmentFemaleGoalstudy:
          type$ref: number'#/components/schemas/Study'
        site:
 format: int32         recruitmentGoal$ref: '#/components/schemas/Site'
         typecohort:
number           format$ref: int32'#/components/schemas/Cohort'
    VolunteerSearchResultSite:
      type: object
      properties:
        eligibleid:
          type: booleaninteger
          descriptionformat: trueinteger
if the volunteer matches criteria of the volunteer searcharchived:
          defaulttype: boolean
 false         namedescription: is site archived?
       type: string  default:  false
      description: the name:
of the advanced search       type:  study:string
          $refexample: '#/components/schemas/Study'Grafton
        sitevolunteerRegionLabel:
          $reftype: '#/components/schemas/Site'string
        cohort:  example: State
       $ref: '#/components/schemas/Cohort'     Sitedescription: allows for customizing a region (ie type: object
 State, Province, etc)
    properties:         idvolunteerEnrollmentConfirmationStatement:
          type: integerstring
          formatdescription: int64statement made during point of enrollment when staff is archived:present
          typeheightUnits:
boolean           descriptiontype: is site archived?string
          defaultenum:
false         name:   - Meters
      type: string     - Centimeters
    example: Grafton       -  volunteerRegionLabel:Inches
          typeweightUnits: string
          exampletype: Statestring
          descriptionenum:
allows for customizing a region (ie State, Province, etc)    - Kilo
   volunteerEnrollmentConfirmationStatement:         - Pound
type: string       address:
   description: statement made during point of enrollment whentype: staffstring
is present         heightUnitsdescription: street address
        typecity:
string          type: enum:string
        stateProvince:
   - Meters      type: string
     - Centimeters  postalCode:
          -type: Inchesstring
        weightUnitscountry:
          type: string
        phoneNumber:
    enum:      type: string
     - Kilo  faxNumber:
          -type: Poundstring
        addresstimeZoneId:
          type: string
          descriptioninvestigatorId:
street address         citytype: string
        investigatorName:
type: string         stateProvincetype: string
    Study:
      type: stringobject
        postalCodeproperties:
         id:
type: string         countrytype: integer
          typeformat: stringinteger
        phoneNumberstudyState:
          type: string
          faxNumberenum:
            type:- stringDESIGN
        timeZoneId:    - ACTIVE
     type: string      - LOCKED
 investigatorId:           type:- stringARCHIVED
        investigatorNamename:
          type: string
    Study:    description:
  type: object       propertiestype: string
        idprotocolName:
          type: integerstring
        epochs:
 format: int64        type: studyState:array
          typeitems: string
          enum:  $ref: '#/components/schemas/Epoch'
    Epoch:
    - DESIGN type: object
      properties:
   - ACTIVE    disabled:
        - LOCKED type: boolean
          -default: ARCHIVEDfalse
        name:
          type: string
          descriptionexample: Treatment
        description:
type: string         protocolNametype: string
          typeexample: stringTreatment
        epochscohorts:
          type: array
          items:
            $ref: '#/components/schemas/EpochCohort'
    EpochEpochShort:
      type: object
      properties:
        disabled:
          type: boolean
          default: false
        name:
          type: string
          example: Treatment
        description:
          type: string
          example: Treatment
  
     cohorts:
          type: array
          items:
            $ref: '#/components/schemas/Cohort'
    StudySite:
      type: object
      properties:
        id:
          type: integer
          format: int64integer
        unassignedAppointmentCount:
          type: number
          format: int32
        appointmentTypes:
          type: array
          example:
            - Screening
            - OPV
          items:
            type: string
        locationOid:
          type: string
          example: '1'
        investigatorId:
          type: string
        investigatorName:
          type: string
        appointmentsRequireRecruitmentVolunteer:
          type: boolean
        appointmentsRequireRecruitmentVolunteerInCohort:
          type: boolean
        recruitmentDescription:
          type: string
        defaultAppointmentDurationMinutes:
          type: number
          format: int32
        recruitmentMaleGoal:
          type: number
          format: int32
        recruitmentFemaleGoal:
          type: number
          format: int32
        site:
          $ref: '#/components/schemas/Site'
        study:
          $ref: '#/components/schemas/Study'

See Also

  1. Recruitment Website Integration