Security & Compliance Posture

A reference page for hospital CMIOs, compliance officers, and IT security teams evaluating Veridoc for procurement sign-off. The seven sections below cover the controls we are willing to verify before pilot kickoff — TLS in transit, encryption at rest, RBAC, audit-log retention, deletion on request, hosting region, and the privacy frameworks that govern patient data across our Southeast Asia and Gulf destinations.

TLS Encryption at Rest RBAC Audit Retention Deletion on Request Hosting Region Privacy Frameworks

Data in transit — TLS

All Veridoc traffic is served over HTTPS. TLS 1.2 is the minimum protocol version accepted at the edge; TLS 1.3 is negotiated where client-capable. Render terminates TLS upstream of our application servers, with HTTP Strict Transport Security (HSTS) enabled — browsers will refuse to load any page over a downgraded plaintext connection.

Data at rest — Encryption

Patient identifiers and consent records live in a managed Postgres cluster (Neon). Cluster-level AES-256 encryption at rest is enabled on the storage tier; backups and snapshots inherit the same posture. Uploaded clinical documents — pre-op imaging, lab reports, intake forms — are stored in Cloudflare R2 with server-side encryption (SSE) enabled by default on every bucket.

Provider PINs — the credential our partner agencies and hospitals use to access the admin dashboard — are never stored as plaintext. They are PBKDF2-hashed at hashing time (sha512, 100,000 iterations), and the resulting hash + salt are the only values persisted in the providers table.

Role-based access control

Access is scoped by role. A patient sees only their own consent record. A treating clinician sees the records of the patients on their active case load. A hospital admin sees the records their hospital has issued. A counterparty (insurer, regulator, home physician) sees only what the public verifier link exposes — and only when a hospital staff member has explicitly shared it.

Per-site scoping for multi-site hospital networks is enforced via the case_participants table, which records who has access to which case (and therefore which clinical record). A Network-tier customer with five sites cannot see records issued by a site they do not administer.

The surfaces a verifier sees — without needing Veridoc access or training — are /verify/<recordId> (the public audit view) and /staff/<slug>/verify (staff-scoped inline verification). Both pages render the same cryptographic proof a regulator would see, scoped to the record the holder is asking about.

Audit-log retention

Every PHI access is recorded in the audit_log table, with user_id, user_type, action, resource_type, resource_id, ip_address, user_agent, metadata, and created_at. Explicit audit entries are written for consent reads (GET /api/consents and GET /api/consents/:id), notarization events, void / append actions, role transitions, and verifier-page loads.

Retention windows:

Deletion on request — GDPR Art. 17 / PDPA right to erasure

Veridoc's notarized consent records are insert-only by design. Once a consent is signed it cannot be edited or deleted — that immutability is the point. What we can do today, in line with GDPR Article 17 and the right-to-erasure provisions of the PDPA frameworks we operate under, is the following:

The notarized row itself is append-only — that is an architectural commitment to your auditors, not a deletion that can be reversed. To request erasure or revocation, contact privacy@veridoc.health or carlos@veridoc.health. We acknowledge erasure requests within two business days and complete them within 30 days.

Hosting region

Application hosting is provided by Render. The Postgres cluster is provisioned through Neon, which offers a regional residency option selected at signup. Pilot and Network tiers default to Singapore (ap-southeast-1) — closest to our most common Southeast Asia and Gulf customer footprint. Enterprise tier customers can select from Singapore, US-East (Virginia), and additional regions on request, to align with their Business Associate Agreement and data-residency commitments.

Document blob storage lives in Cloudflare R2, which is replicated across the region selected at bucket creation time. We do not move customer data between regions without a written change-control request from the customer's security officer.

Privacy frameworks — PDPA + GDPR Article 9

Patient data flowing through Veridoc is governed by the privacy framework of the patient's jurisdiction. For our Southeast Asia + Gulf destinations — Thailand, Singapore, Malaysia, and the partner hospitals we onboard in the Gulf — the controlling statute is the local PDPA:

For EU patients, health data is classified as a special category of personal data under GDPR Article 9. Our lawful bases for processing Article 9 health data are: explicit consent (Art. 9(2)(a)) captured at the moment the patient signs the consent form, and preventive medicine / occupational medicine (Art. 9(2)(h)) where the patient is under the care of a treating clinician and the data is processed for the delivery of care.

For deeper coverage of the regulatory framing — including HHS / HIPAA Technical Safeguards, FDA 21 CFR Part 11 e-signature requirements, and the EU/UK cross-border mechanics — see our HIPAA consent checklist at /resources/hipaa-consent-checklist and the patient-data portability rights guide at /resources/patient-data-portability-rights.

Procurement sign-off

If your team needs a more detailed controls walkthrough, an Enterprise DPA or BAA redline, or a SOC-style evidence pack, open a procurement conversation and we will respond within one business day.

Security review queue: privacy@veridoc.health Sales: carlos@veridoc.health