Pharma Commercial Mock
GET/api/veeva/calls

Veeva CRM field call export

Veeva CRM field call export with HCP, channel, samples, reactions.

Simulates Veeva CRM Call2_vod__c records — the canonical activity object pharma reps use to log every HCP interaction. Includes Account_vod (HCP) with real NUCC v24.0 specialty codes and Luhn-valid NPIs, Call2_Key_Message_vod reactions, and sample drop records with lot numbers (PDMA audit field). Channel mix calibrated to post-COVID oncology field force patterns.

Query parameters

NameTypeDescription
productrequiredstring
Brand name being detailed.
e.g. ZENVARA
startrequiredstring (ISO date)
Inclusive start of the period.
endrequiredstring (ISO date)
Inclusive end of the period.
rep_idstring
Filter by rep. Pass 'all' or specific REP-### (e.g., REP-005).
default: all

Response schema

PathTypeDescription
productstring
Echo of the product param.
period{ start, end }
The window queried.
total_callsinteger
Count of calls in the window. Range 30-200 for monthly windows.
calls[]array
Call records, sorted by call_date ascending.
calls[].call_idstring
Veeva auto-number (e.g., CA-00000148).
calls[].salesforce_idstring (18-char)
Salesforce record Id.
calls[].statusenum
Saved_vod | Submitted_vod | Planned_vod — Veeva Status_vod__c picklist.
Source: Veeva CRM Help
calls[].rep_idstring
Rep identifier (REP-###).
calls[].rep_namestring
Rep full name.
calls[].territorystring
Rep's assigned sub-region (northeast / southeast / midwest / west).
calls[].hcpobject
HCP / Account_vod record.
calls[].hcp.account_idstring
Salesforce Account Id.
calls[].hcp.npistring (10 digits)
Real NPI passing the CMS Luhn checksum over '80840' prefix.
Source: CMS NPI Check Digit spec
calls[].hcp.specialtystring
Specialty name (Medical Oncology, etc.).
calls[].hcp.specialty_nucc_codestring
NUCC v24.0 taxonomy code (e.g., 207RX0202X = Medical Oncology).
Source: NUCC v24.0
calls[].hcp.credentialsenum
MD | DO | NP | PA | PharmD.
calls[].call_datestring
ISO date in the period window.
calls[].call_datetimestring
ISO 8601 with UTC offset.
calls[].call_channelenum
Face_to_face_vod | Video_vod | Phone_vod | Email_vod | Message_vod | Other_vod — Veeva Call_Channel_vod__c.
Source: Veeva CRM Help — Call Channel
calls[].duration_mininteger
Face-to-face 2-50 min (lunch programs longer), video 5-45 min, etc.
calls[].details[]array
Call2_Detail_vod records — products detailed on the call.
calls[].details[].priorityenum
P1_vod | P2_vod | P3_vod — Veeva Priority_vod__c.
Source: Veeva CRM Help — Customizing Product Discussions
calls[].details[].key_message_reactionenum
Positive_vod | Neutral_vod | Negative_vod — captured on Call2_Key_Message_vod.
Source: Veeva CRM Help — Key Messages
calls[].samples[]array
Call2_Sample_vod records with quantity + lot (PDMA-required audit fields).
calls[].notesstring
Free-text rep notes. Drawn from positive / neutral / objection pools.
calls[].next_call_datestring
Suggested next call date 14-45 days out.

Behaviour notes

  • ·Every NPI passes the real CMS Luhn checksum over '80840' + 9 digits.
  • ·Specialty mix is oncology-dominated (≥55%) per launch field force composition.
  • ·Channel mix: ~50% face-to-face, ~28% video, post-COVID norm (ZS / Blue Matter).
  • ·Sample drops only on face-to-face calls (~45% of those carry a sample).
  • ·Status picklist values use Veeva _vod suffix convention.

Examples

Monthly export
curl 'http://localhost:3000/api/veeva/calls?product=ZENVARA&start=2026-02-01&end=2026-03-01'
Single rep
curl 'http://localhost:3000/api/veeva/calls?product=ZENVARA&start=2026-02-01&end=2026-02-15&rep_id=REP-005'

Sources