Skip to main content

Common EHR integration patterns

Most Zentake–EHR integrations follow the same shape: send intake to the patient, wait for it to be completed, and sync the result into the chart. The pieces below can be swapped (which trigger sends the packet, which system fetches the data) but the flow itself is consistent.

The core flow

  1. Your system sends a packet. When a visit is scheduled, or on whatever trigger your workflow uses, your integration creates a Message that sends a Packet (or a single Form) to a Patient by SMS or email. Messages can also be scheduled ahead of time rather than sent immediately.
  2. The patient completes it on their phone, filling out demographics, insurance, consent and e-signatures, and any medical history questions. Required fields and required signatures are enforced before Zentake will accept the submission.
  3. Zentake fires a webhook. As soon as the Packet Response (or the individual Response, for a single-form send) is submitted, a webhook event is delivered to your configured target URL, no polling required.
  4. Your system fetches the response(s). On receiving the webhook, call the Responses API (or the packet-response download endpoint) to retrieve the structured answers as JSON, or the filled PDF.
  5. Your system exports into the EHR. Map the structured answers to chart fields, or attach the generated PDF to the patient's record, whichever your EHR's own integration surface supports.
Structured data vs. PDF

You don't have to choose one: a single completed response can be read as JSON (for field-by-field mapping into the EHR) and downloaded as a PDF (for attaching to the chart as a document) from the same resource.

Sequence diagram

Variations on the flow

  • Single form instead of a packet. The same pattern applies to sending one Form directly. You get one Response back instead of a Packet Response grouping several.
  • Reminders and scheduling. Instead of sending immediately, a Message can be scheduled for a later time (e.g., the morning of the visit), and reminders are tracked on the message record.
  • No webhook yet? You can still poll the Responses API filtered by patient, form, or packet, and check is_submitted / submitted_at. Webhooks just remove the need to poll.
  • Migrating existing patients first. Many integrations start with a CSV batch upload of existing patients (see What Zentake can integrate with) so that intake sends can reference patients that already exist in Zentake.