HIPAA-aligned PDF ops without sending PHI to five vendors.
Patient intake, lab results, referral packets. Compliant infrastructure so your engineers build features, not BAAs.
Why this breaks
Every PDF vendor your clinic or health-tech startup evaluates wants a separate BAA. Your compliance officer blocks the launch while legal negotiates four of them in parallel. Meanwhile, intake forms still live on paper because the digital alternative requires signing away patient data to OCR-as-a-service.
Four ops. One pipeline.
- 01 · 1. fill-form/fill-form ↗
Digital intake forms pre-populated from your EHR's patient record.
- 02 · 2. sign/sign ↗
Patient signature capture + typed HCP signature for orders.
- 03 · 3. ocr/ocr ↗
Scanned referral letters → searchable PDF with text extraction for EHR matching.
- 04 · 4. protect/protect ↗
AES-256 on every PDF that leaves the clinic.
In your language
// Patient intake flow (HIPAA context)
const { pdf: intake } = await snap.pdf.fillForm({
file: INTAKE_TEMPLATE,
values: {
patient_name: patient.legalName,
dob: patient.dob.toISOString().slice(0,10),
mrn: patient.mrn,
insurance_plan: patient.insurance.planName,
allergies: patient.allergies.join(', '),
},
flatten: false,
});
const { pdf: signed } = await snap.pdf.sign({
file: intake,
mode: 'image',
imagePng: signaturePng, // captured from tablet
field: { page: 3, x: 100, y: 120, width: 200, height: 50 },
timestamp: true,
});
const { pdf: locked } = await snap.pdf.protect({
file: signed,
ownerPassword: phi.keyForPatient(patient.mrn),
encryption: 'aes-256',
});
// Stored in the EHR; audit event fired
await ehr.attachDocument(patient.id, locked, { type: 'intake', signedAt: new Date() });intake = snap.pdf.fill_form(
file=INTAKE_TEMPLATE,
values={
"patient_name": patient.legal_name,
"dob": patient.dob.isoformat(),
"mrn": patient.mrn,
"insurance_plan": patient.insurance.plan_name,
"allergies": ", ".join(patient.allergies),
},
flatten=False,
)
signed = snap.pdf.sign(
file=intake.pdf,
mode="image",
image_png=signature_png,
field={"page": 3, "x": 100, "y": 120, "width": 200, "height": 50},
timestamp=True,
)
locked = snap.pdf.protect(
file=signed.pdf,
owner_password=phi.key_for_patient(patient.mrn),
encryption="aes-256",
)What the math looks like
Multi-specialty clinic with 50,000 patient visits/year
- ·50,000 visits × 3 PDFs (intake + consent + referrals out) = 150,000 ops/year.
- ·Current: staff time transcribing paper forms = 0.5 FTE at $58k/yr = $29,000.
- ·Compliance cost of vendor BAAs (legal review × 3 vendors) = $12,000 one-time.
| Metric | Before | After | Delta |
|---|---|---|---|
| Transcription staff | 0.5 FTE ($29k) | 0.05 FTE ($2.9k) | –$26,100/year |
| Vendor BAAs | 3 separate ($12k one-time) | 1 ($4k one-time) | –$8,000 |
| Chart-ready time | 24-48 hours | < 5 minutes | –99% |
| Lost paper forms | ~0.5% of intakes | 0% | –250 incidents/yr |
$34k/year recurring saved, plus one-time legal saving, plus patients stop calling "did you get my forms?".
“We used to have a banker's box of intake forms labeled "waiting to be scanned." Now there's no banker's box. The chart is ready before the patient leaves the parking lot.”
Questions we hear first
Do you sign a BAA?
Yes — available on Business and Enterprise plans. Request via /contact.
Where is PHI processed?
US-East by default. EU and AU residency on Enterprise. Nothing persists server-side beyond the request; working copies are in an encrypted memory buffer only.
Do you train on customer data?
Never.
FHIR integration?
Not natively — but extract-text + a FHIR Document Reference resource is a three-line wrapper.
What about 42 CFR Part 2 (substance use records)?
Same controls as HIPAA apply. Add the Part 2 addendum to your BAA during contract negotiation.
Need signatures with an audit trail?
SnapPDF preps the document. SignBolt routes the signatures — PAdES-grade, multi-party, court-ready.