Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 IQVIA ‘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 it 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 IQVIA team via the service desk.

Functionality

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

Specific support for the design and configuration of your website is not provided, but we are able to support our APIs.

Interactive Documentation with Swagger

...

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 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:
        default: community-dev   type: string
    description: Customer IDresponses:
assigned by the service provider   - url: '200'https://{ngrokPrefix}.ngrok-free.app/clinspark/api/v1/recruit'

   variables:       ngrokPrefixdescription: successful operation
       default: 8232-73-217-91-70  content:
      description: first part of ngrok-assigned id pathsapplication/json:
  /updateVolunteer:     post:       tagsschema:
        - recruit       summarytype: Updatesobject
a new volunteer       operationId'401':
updateVolunteer       parameters:   description: 'Unauthorized: Must add Basic Authentication -headers'
name: reasonForChange           in: query'422':
          description: Reasonrendered forif Changeappointment could not be found
      requiredsecurity:
true        - basicAuth:  schema[]
  /cancelAppointment:
    post:
       typetags:
string       requestBody: - recruit
      descriptionsummary: JSONAllows volunteerfor tocanceling adda given appointment
      requiredparameters:
true        - contentname: recruitmentAppointmentId
          application/jsonin: query
           schemadescription: ID from source system
          $refrequired: '#/components/schemas/Volunteer' true
          responsesschema:
        '200':    type: number
            descriptionformat: 'Success: OK message.'integer
      responses:
        '401200':
          description: 'Unauthorized:successful Mustoperation
add Basic Authentication headers'       content:
 '422':           descriptionapplication/json:
>-             Invalid requestschema:
   There are input validation errors; look at the JSON     type: object
      response for details. '401':
      security:    description: 'Unauthorized: Must add Basic -Authentication basicAuth:headers'
[]   /saveVolunteer:     post'422':
       tags:   description: rendered if appointment could not -be recruitfound
      summarysecurity: Saves
a new volunteer      - operationIdbasicAuth: saveVolunteer[]
components:
  securitySchemes:
  requestBody:  basicAuth:
      contenttype: http
      scheme: basic
  application/jsonschemas:
    VolunteerAnswer:
      type: object
schema:      properties:
        $refquestion: '#/components/schemas/Volunteer'
          descriptiontype: JSON volunteerstring
to add         requiredexample: trueFavorite web application?
    responses:      description: Verbatim custom '200':volunteer question
         description: 'Successanswer:
OK message.'         '401'type: string
          description: 'Unauthorized:Answer Mustformat addmust Basicmatch Authenticationthat headers'defined by the custom question
    '422'Volunteer:
      type: object
  description: >-   properties:
        id:
Invalid request: There are input validation errors; look at the JSONtype: integer
          format: responseinteger
for details.       securityexternalId:
         - basicAuthtype: string
[]   /findActiveStudySites:       getexample: '987123'
       tags:   description: Unique identifier in originating recruitment system
 - recruit      title:
  summary: Finds study sites that are actively recruiting type: string
      parameters:    example:  Mr
    - name: studyName  firstName:
          intype: string
query          example: Joseph
 description: >-      middleName:
        Case insensitive studytype: namestring
used to match study sites with the    description: >-
         corresponding name  can be an initial, if no value is provided a '-' required:will falsebe stored with
          schema:  the volunteer reocord
          typeexample: stringPeter
        lastName:
   - name: siteId     type: string
      in: query   example: Padres
        descriptiongenderMale:
>-          type:  boolean
  ID of a given site; only studyethnicHispanic:
sites with the corresponding site      type: boolean
       will be returned description: null indicates unknown
        requiredotherRace:
false          type: string
 schema:         description: additional race details if race type: numberdoesn't match
             formatexample: int64Asian
          - name: siteNamedateOfBirth:
            intype: querystring
            descriptionexample: >-'1980-05-27'
          description: ISO DOB in form Case insensitive site name used to match study sites with theof yyyy-MM-dd
        nameSuffix:
          type: string
  corresponding name       description: jr,  II
  required: false       example: Jr
    schema:    nationality:
          type: string
          - nameexample: locationOidBelgian
        preferredLanguage:
   in: query      type: string
     description: >-    example: English
        address:
Case sensitive location OID used to match study sites with thetype: string
          example: 123 Yellobrick corresponding OIDLane
        city:
   required: false      type: string
     schema:     example: Chicago
        typeregion:
 string         responsestype: string
          '200'description: >-
           description: successfulshould operationmatch regions configured in the volunteer configuration
      content:      component; ie state /  province
   application/json:       example: Chicago
        schemacountry:
          type: string
      type: array    example: US
        postalCode:
          itemstype: string
          example: 60657
        $refhomePhone:
'#/components/schemas/StudySite'           '401'type:  string
          description: 'Unauthorized:>-
Must add Basic Authentication headers'        tightly security:validated based on the general settings configured; should
   - basicAuth: []   /findUnassignedAppointments:    be get:as close to ISO format as possible tags:with leading country  code.
    - recruit       summary: Finds appointments for the given study sitehttps://github.com/google/libphonenumber is used for underlying
            validation
parameters:         - nameexample: studySiteId+1312 554 1218
        inworkPhone:
query           descriptiontype: IDstring
of a given study site      description: see   homePhone
required: true           schemaexample: +1312 554 1218
         typemobilePhone:
number             format: int64type: string
         - namedescription: cohortNamesame rules apply as homePhone, but must be   unique in: querydatabase
          descriptionexample: >-+1312 554 1218
        phoneNotes:
 Case insensitive cohort name used for a wild card search;type: onlystring
          description: can appointmentsbe thatarbitrary havenotes anto assignedguide cohortrecruiters matchingabout willmaking bephone returnedcalls
          requiredexample: false
          schemacontactableByPhone:
 
          type: boolean
string         - namedescription: appointmentType
 volunteer's permission to be contacted by phone
  in: query       default: true
  description: >-     contactableBySms:
       Case insensitive appointment typedtype: usedboolean
for a wild card search; only     description: volunteer's permission to be contacted by SMS
appointments that have an apointment type matching will be returned default: true
        requiredcontactableByEmailCampaign: false
          schematype: boolean
           type: string
      responses:description: volunteer's permission to be contacted by emails
          '200':default: true
        nextOfKin:
  description: successful operation      type: string
   content:       description: >-
    application/json:        notes generally about who to contact should schema:there be a reason to do
           type: arrayso in an emergency situation
        volunteerEmploymentStatus:
   items:       type: string
          $refenum:
'#/components/schemas/RecruitmentAppointment'         '401':   - Unemployed
      description: 'Unauthorized: Must add Basic Authentication headers'- Student
     security:       - EmployedPartTime
- basicAuth: []   /volunteerStudySearch:     get:  - EmployedFullTime
   tags:         - recruitRetired
      summary: >- weightKilos:
       Finds matching studies fortype: thenumber
found volunteer using the advanced      format: double
 volunteer search. The advanced searches must be not be archived and mustexample: 123.45
         have a study associated while actively recruiting. If the advancedheightMeters:
          type: number
   search also specifies a site, that site informat: questiondouble
must match the        example: volunteer2.12
The boolean eligible property in the response array indicatesvegetarian:
        whether or nottype: aboolean
study match has occurred.       parametersdescription: null indicates unknown
       - namesurgicallySterile: volunteerId
          intype: queryboolean
          description: primary key of the volunteerdefault: false
        contraceptionType:
          requiredtype: falsestring
          schemaexample: Abstinence
          description: should match a type: configured integerin the volunteer configure component
        formatnumberOfChildren:
int64         - nametype: externalIdinteger
          in: querydescription: value should only be present for females
          descriptionminimum: 0
ID from source system       maximum: 20
  required: false     menstruationStartAge:
     schema:     type: integer
      type: string   description: value should only be present - name: emailAddressfor females
          inminimum: query8
          descriptionmaximum: Case50
insensitive email address      menstruationEndAge:
    required: false     type: integer
    schema:      description: value should only be present for type:females
string         - nameminimum: mobilePhone10
          inmaximum: query100
        lastPeriodStartDate:
 description: Will be converted to ISO format before a querytype: takesstring
place           requiredexample: false'2024-05-27'
          schemadescription: In form of yyyy-MM-dd; value should only be present for females
  type: string     regularPeriodIntervalDays:
 responses:         '200'type: integer
          description: successful operationvalue should only be present for females
    content:      minimum: 0
     application/json:     maximum: 100
        schemaregularPeriodDurationDays:
          type: integer
    type: array     description: value should only be present for females
    items:      minimum: 0
           $refmaximum: '#/components/schemas/VolunteerSearchResult'100
        '401'currentlyPregnant:
          descriptiontype: 'Unauthorized:boolean
Must add Basic Authentication headers'       securitydescription: value should only be present for  females
- basicAuth: []   /listVolunteerAppointments:     getdefault: false
     tags:   currentlyBreastFeeding:
     - recruit    type: boolean
 summary: >-        description: Findsvalue appointmentsshould foronly thebe givenpresent volunteerfor foundfemales
by one of the       default: false
parameters supplied       parameterschildBearingPotential:
        -  nametype: volunteerIdboolean
          indescription: queryvalue should only be present for females
    description: primary key of the volunteer default: false
        requiredallergies: false
          schematype: boolean
           typedescription: integernull indicates unknown
          formatemailAddress:
int64         - nametype: externalIdstring
          inexample: querysomething@domain.com
          description: ID from source system >-
            must be unique; strictly validated using required:Apache falseCommons Email
         schema:   Validator framework
        typecontactSource:
string         - nametype: emailAddressstring
          indescription: query>-
          description: Case insensitivedescribes emailhow addressa volunteer contact occurred; should match a source
   required: false        configured in the schema:volunteer configure   component
        typegeneralPractitioner:
string         - nametype: mobilePhonestring
          indescription: volunteer's queryphysician
          descriptionexample: WillJoseph beSmith
converted to ISO format before a query takes placegeneralPractitionerPhoneNumber:
          requiredtype: falsestring
          schemadescription: volunteer's physician phone number
        type: string example: +1312 555 1212
  responses:         '200'generalPractitionerAddress:
          descriptiontype: successfulstring
operation           content:
 description: volunteer's physician address
          application/jsonexample: 232 Yellobrick Lane
        siteName:
   schema:       type: string
        type: array example: Base Site
          description: >-
 items:           the name of the site that the volunteer $ref: '#/components/schemas/RecruitmentAppointment'
 should be associated with;
      '401':      if not provided, use siteId
description: 'Unauthorized: Must add Basic Authentication headers'  siteId:
    security:      type: integer
 - basicAuth: []   /assignAppointment:     postformat: integer
     tags:     example: -1
  - recruit       summarydescription: Allows>-
for assigning a given appointment to a matching volunteer    the id of parameters:the site that the volunteer should be associated with; -if
name: recruitmentAppointmentId           in:not queryprovided, use siteName
        descriptionpaymentStrategy:
ID from source system         type: string
required: true           schemaenum:
            type: number - IBAN
          format: int64   -   ABA
  - name: volunteerId           inexample: query
 IBAN
        descriptionibanAccount: ID
from the volunteer           requiredtype: falsestring
          schemaexample: ES9121000418450200051332
           typedescription: int64Used if IBAN is chosen as Payment Strategy. Validated - name: externalIdusing iban4j.org
        ibanBank:
  in: query       type: string
  description: ID from source system    example: CAIXESBB666
     required: false    description: Used if IBAN is chosen as schema:Payment Strategy. Validated using iban4j.org
        typeabaAccount:
string         - nametype: emailAddressstring
          inexample: query123456789
          description: Case insensitive email address
  Used if ABA is chosen as Payment Strategy. Validated using ABANumberCheckDigit library.
        requiredabaBank: false
          schematype: string
           typeexample: string
 021000021
      - name: mobilePhone  description: Used if ABA is chosen as Payment Strategy. in:Validated queryusing ABANumberCheckDigit library.
        descriptionpreviousStudyParticipation:
Will be converted to ISO format before a query takes placetype: boolean
         requiredvolunteerAnswers: false
          schematype: array
           typeexample:
string         - name: appointmentNotes - question: Favorite web application?
     in: query        answer: Gmail
 required: false          - schemaquestion: Favorite number?
          type: string       responsesanswer:  '123'
      '200':      - question: Favorite decimal?
 description: successful operation           contentanswer: '123.4'
           application/json: - question: Favorite date?
          schema:      answer: '1969-07-20'
          typedescription: object>-
        '401':    array of simple objects with verbatim ClinSpark description: 'Unauthorized: Must add Basic Authentication headers'questions and
            corresponding '422':answers
          descriptionitems: rendered
if appointment could not be found       security$ref: '#/components/schemas/VolunteerAnswer'
       - basicAuthvolunteerNotes:
  []   /cancelAppointment:     posttype: array
     tags:     example:
   - recruit       summary: Allows- forVolunteer cancelingtravels a givenoften
appointment       parameters:     - Is afraid of -needles
name: recruitmentAppointmentId         description: Simple in:notes querythat move to a volunteer notes section
    description: ID from source system  items:
        required: true   type: string
      schema:  volunteerRaces:
          type: numberarray
          example:
 format: int64       responses:   - American Indian or Alaska Native
'200':
          description: successful operation Must match race names defined in ClinSpark
          contentitems:
            application/jsontype: string
        volunteerSubstanceUse:
     schema:     type: array
          typeexample:
 object         '401':  - substanceUseCategory: Alcohol
      description: 'Unauthorized: Must add Basic Authentication headers'  name: Beer
     '422':         useFrequency: Week
description: rendered if appointment could not be found       securityuseConsumption: '5'
        - basicAuth: [] components:   securitySchemesconsumptionUnit: Glass/Bottle (.5L)
   basicAuth:       type: http   substanceUseStatus: Social
  scheme: basic   schemas:     VolunteerAnswer:   startDate: '2001'
  type: object       properties:    lastConsumed: '2021-07-21'
   question:           typesubstanceNotes: Enjoys heavy stringIPAs
          exampledescription: Favorite>-
 web application?          array description:of Verbatimsimple customobjects volunteerwith questionverbatim ClinSpark questions and
     answer:       corresponding answers
  type: string       items:
   description: Answer format must match that defined by the custom question$ref: '#/components/schemas/VolunteerSubstanceUse'
    VolunteerVolunteerUpdate:
      type: object
      properties:
        id:
          type: integer
          format: int64integer
        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 unknown
        descriptionemailAddress:
null indicates unknown        type: emailAddress: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: >-
      number
      the name ofgeneralPractitionerAddress:
the site that the volunteer should be associated with;  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: arraystring
          example:  enum:
          - question: Favorite web application?- IBAN
             answer: Gmail- ABA
           - questionexample: FavoriteIBAN
number?        ibanAccount: 
     answer: '123'    type: string
       - question: Favorite decimal?example: ES9121000418450200051332
             answerdescription: '123.4'Used if IBAN is chosen as Payment Strategy. Validated     - question: Favorite date?using iban4j.org
         ibanBank:
     answer: '1969-07-20'    type: string
     description: >-    example: CAIXESBB666
       array of simple objectsdescription: withUsed verbatimif ClinSparkIBAN questionsis andchosen as Payment Strategy. Validated using iban4j.org
       corresponding answersabaAccount:
          itemstype: string
          example: 123456789
$ref: '#/components/schemas/VolunteerAnswer'         volunteerNotesdescription: Used if ABA is chosen as Payment Strategy. Validated using ABANumberCheckDigit library.
type: array       abaBank: 
  example:        type: string
   - Volunteer travels often    example: 021000021
       - Is afraid ofdescription: needlesUsed if ABA is chosen as Payment Strategy. Validated using ABANumberCheckDigit description:library.
Simple notes that move to a volunteer notes sectionpreviousStudyParticipation:
          itemstype: boolean
    VolunteerSubstanceUse:
      type: stringobject
        volunteerRacesproperties:
          typesubstanceUseCategory:
array           exampletype: string
          example: -Alcohol
American Indian or Alaska Native      enum:
    description: Must match race names defined in ClinSpark - Alcohol
        items:    - Caffeine
       type: string    - Tobacco
   volunteerSubstanceUse:         - Drugs
type: array       name:
   example:       type: string
    - substanceUseCategory: Alcohol    description: >-
         name: Beer  must be associated with the relevant category defined in  the
  useFrequency: Week         volunteer configure component
   useConsumption: '5'    useFrequency:
          consumptionUnittype: string
Glass/Bottle (.5L)         description: provides context to the useConsumption
substanceUseStatus: Social         default: Week
    startDate: '2001'     enum:
         lastConsumed: '2021-07-21'  - Day
           substanceNotes: Enjoys- heavyWeek
IPAs           description: >- Month
            array- ofYear
simple objects with verbatim ClinSpark questions and  useConsumption:
          correspondingtype: answersstring
          itemsdescription: >-
            $ref: '#/components/schemas/VolunteerSubstanceUse'
    VolunteerSubstanceUse:
 the amount of the substance consumed in the defined frequency;
    type: object       properties:should be a number
     substanceUseCategory:     default: '5'
    type: string   consumptionUnit:
       example: Alcohol  type: string
       enum:   description: >-
        - Alcohol   must be associated with the relevant category / name defined -in Caffeinethe
            -volunteer Tobaccoconfigure component
          default: - DrugsGlass/Bottle (.5L)
        namesubstanceUseStatus:
          type: string
          descriptionenum:
   >-         - 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:
          -type: Monthstring
          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   default: Glass/Bottle (.5L)site details
        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
  string
          example: ABC123
        examplestudyId: Screening
          descriptiontype: configuredinteger
with study 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: object
    string  properties:
        enum:
 disabled:
          type: boolean
          -default: Unassignedfalse
        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:       type:- objectSCREENING
      properties:      - LEAD_IN
 disabled:           - RANDOMIZATION
type: boolean           default:- falseAPPOINTMENT
        requireVolunteerRecruitmentdataLocked:
          type: boolean
          defaultdescription: >-
false         name:   is data associated with the cohort locked  type: stringfor further data
            example:collection?
Cohort 1         descriptiondefault: false
        recruitmentActive:
type: string         subjectNumberActiontype: boolean
          type: string
 description: is the cohort active for recruitment
        enumrecruitmentMaleGoal:
          type: number
 - SCREENING        format: int32
   - LEAD_IN    recruitmentFemaleGoal:
        - RANDOMIZATION type: number
          -format: APPOINTMENTint32
        dataLockedrecruitmentGoal:
          type: booleannumber
          descriptionformat: >-int32
    VolunteerSearchResult:
      type: isobject
data associated with the cohort locked forproperties:
further data       eligible:
     collection?     type: boolean
    default: false         recruitmentActivedescription: true if the volunteer matches criteria of the volunteer  type:search
boolean           descriptiondefault: isfalse
the cohort active for recruitment    name:
    recruitmentMaleGoal:      type: string
   type: number      description: the name of the format:advanced int32search
        recruitmentFemaleGoalstudy:
          type$ref: number'#/components/schemas/Study'
         site:
format: int32         recruitmentGoal$ref: '#/components/schemas/Site'
         typecohort:
number           format: int32$ref: '#/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
      properties:State, Province, etc)
        idvolunteerEnrollmentConfirmationStatement:
          type: integerstring
          formatdescription: int64statement made during point of enrollment when staff is archived:present
          typeheightUnits:
boolean           descriptiontype: isstring
site archived?           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        type: country: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         studyStatetype: array
          typeitems:
string            enum$ref: '#/components/schemas/Epoch'
    Epoch:
      -type: DESIGNobject
      properties:
     - ACTIVE  disabled:
          -type: LOCKEDboolean
            - ARCHIVEDdefault: false
        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'

...