POST patient/lead data to Objective Health. The API normalizes phone (digits only), DOB (YYYY-MM-DD), maps race and recruitment_status to their values, then forwards to Objective Health.
555-123-4567 → 5551234567)YYYY-MM-DDRequest body
{
"key": "your-objective-health-api-key",
"study_id": 869,
"site_id": 9,
"email": "john.doe@example.com",
"phone_number": "555-123-4567",
"first_name": "John",
"last_name": "Doe",
"postal_code": "12345",
"date_of_birth": "12/17/1992",
"gender": "Male",
"race": "white",
"ethnicity": "Not Hispanic or Latino",
"recruitment_status": "Qualified for Screening"
}POST /api/objective-health/send-patient
Forwards to https://api.screen.objective.health/api/vip/patients with x-api-key and normalized body.
API key: send key, apiKey, or x-api-key in the request body (or set OBJECTIVE_HEALTH_API_KEY in the environment).
{
"key": "your-objective-health-api-key",
"study_id": 869,
"site_id": 9,
"email": "john.doe@example.com",
"phone_number": "(555) 123-4567",
"first_name": "John",
"last_name": "Doe",
"postal_code": "12345",
"date_of_birth": "1992-12-17",
"height": 70,
"height_unit": "in",
"weight": 180,
"weight_unit": "lb",
"gender": "Male",
"race": "Caucasian",
"ethnicity": "Not Hispanic or Latino",
"recruitment_status": "Not Contacted",
"questions": [
{ "question": "Are you 18 years or older?", "answer": "Yes" },
{ "question": "Do you have Type 2 diabetes?", "answer": "Yes" }
]
}{
"key": "your-api-key",
"study_id": 869,
"site_id": 9,
"email": "jane@example.com",
"phone_number": "5559876543",
"first_name": "Jane",
"last_name": "Smith",
"date_of_birth": "01/15/1985",
"race": "black",
"recruitment_status": "DNQ - Not Qualified",
"question_1": "Are you 18 years or older?",
"answer_1": "Yes",
"question_2": "Are you currently pregnant?",
"answer_2": "No"
}key / apiKey / x-api-key - Objective Health API keystudy_id - study ID (changes per submission)site_id - site ID (changes per submission)email, phone_number, first_name, last_name, date_of_birth, racepostal_code, gender / sex, ethnicityheight, height_unit (default "in"), weight, weight_unit (default "lb")recruitment_status - we map to "Referral" or "Not eligible"questions array or question_1/answer_1, question_2/answer_2, …{
"success": true,
"message": "Data successfully sent to Objective Health",
"objectiveHealthResponse": { /* response from Objective Health */ }
}