Compliance & Privacy

Data Protection & Compliance Overview

Effective date: March 11, 2026  ·  HelloDoc Jamaica Limited  ·  v4.0

This page provides a complete account of every privacy, security, and data governance measure built into the HelloDoc platform. It maps each measure to the eight Data Protection Standards under Jamaica's Data Protection Act, 2020 (“the Act”), and notes where GDPR principles also apply.

Platform at a glance

HelloDoc is a multi-platform healthcare management system connecting patients with healthcare providers across Jamaica. It is available on the web, iOS, and Android, supporting six user roles: Patient, Doctor, Nurse, Receptionist, Facility Manager, and Administrator, with facility-scoped and system-scoped permissions enforced in PostgreSQL Row Level Security. The backend runs on Supabase (PostgreSQL + Auth + Storage + pg_cron) hosted on AWS infrastructure, with push notifications delivered via Firebase Cloud Messaging and email notifications via Resend.


Standard 1

Fairness and Lawfulness

The Act requires that personal data is obtained fairly, that there is a legitimate reason for processing it, and that consent is informed, freely given, specific, and unequivocal.

Informed consent at registration — two explicit checkboxes

When a patient creates an account, the registration form requires two separate consent checkboxes before the account can be submitted. Neither can be pre-ticked.

  1. Terms & Privacy Policy consent: Records the exact timestamp of acceptance in profiles.terms_accepted_at, written to the database immediately on account creation via a database trigger. Cannot be altered after the fact.
  2. Cross-border transfer consent: Records a separate timestamp inprofiles.cross_border_consent_at. The checkbox links directly to /privacy#cross-border for full disclosure.

Consent for walk-in patients registered by staff

When a receptionist registers a patient in-person, the system records staff_consent_obtained (boolean) and staff_consent_obtained_at (timestamp), ensuring a traceable consent record exists regardless of how the account was created.

Per-doctor consent for medical data access

HelloDoc enforces doctor access at the database layer using a layered model: doctor-authored records, authorised same-facility continuity records, and internal-referral handoff records can be visible for care delivery. Patient-entered baseline history remains per-doctor consent-gated. Patients grant or revoke consent-gated access at any time from Privacy Settings; revocation is immediate with no cache delay.

Nurse-initiated consent request flow

Nurses can request access to a patient's vitals history from the patient detail panel. A pending row is created in patient_nurse_consent, and the patient sees the request in their Privacy Settings page with the nurse's name, the request date, and the ability to Grant or Revoke.

Medical disclaimer acknowledgement

All users are presented with a medical disclaimer during onboarding on every platform (web, iOS, Android). Acceptance is recorded and enforced before accessing clinical features.


Standard 2

Purpose Limitation

Data must only be obtained for a specific and lawful purpose and must not be used for any purpose incompatible with that original purpose without consent.

Declared purposes in the Privacy Policy

Section 3 of the Privacy Policy explicitly enumerates every processing purpose: delivering healthcare services, securing the platform, and communicating about care. The Privacy Policy explicitly states: “We do not sell your personal data. We do not use your data for advertising.”

No third-party data sharing integrations

The application has no marketing, analytics, or advertising integrations. The Content Security Policy technically enforces this at the browser level — the application cannot make network requests to any domain other than itself and Supabase.

Role-scoped data access

Each user role can only access data categories relevant to their function, enforced at the database layer via Row Level Security:

Data categoryPatientDoctorNurseReceptionistFacility ManagerAdmin
Own profileOwn onlyOwn onlyOwn onlyOwn onlyOwn onlyOwn only
Patient demographicsOwn onlyAppt/facility context + consented historyFacility patientsFacility patientsAssigned facility scopeNo access
Medical historyOwn onlyConsent required (baseline history)No accessNo accessNo accessNo access
Consultation notesOwn (if visible)Author + same facility + referral handoff + consented historyNoNoNo accessNo access
PrescriptionsOwn onlyAuthor + same facility + referral handoff + consented historyNoNoNo accessNo access
Vital signsOwn onlyAuthor + same facility + referral handoff + consented historyFacility patients or consentNo accessNo accessNo access
Referral lettersOwn onlyReferring + referred doctor rolesNoNoNo accessNo access
Uploaded documentsOwn (if not hidden)Author + same facility + referral handoff + consented historyNoNoNo accessNo access
Finance & billingNo accessOwn invoices / claimsNo accessNo accessAssigned facility financeAll
InventoryNo accessNo accessFacility (read/write)No accessFacility (read/write)No access
Audit logsNo accessNo accessNo accessNo accessAssigned facility (read)All (read)

Record of Processing Activities (ROPA)

A full ROPA is maintained covering 23 discrete processing activities, each documented with legal basis, data categories, retention period, and third-party recipients. The ROPA is an internal document available to legal counsel, the Data Protection Officer, and external auditors on request. Request a copy.


Standard 3

Data Minimisation

Only data that is adequate, relevant, and necessary for the stated purpose should be collected.

  • Registration collects only what is necessary: first name, last name, email, phone number, and password. Nothing else is required to create an account.
  • Health profile fields are entirely optional — completed during a separate onboarding step with every field optional. The system functions without a complete profile.
  • Nurse access restricted to vitals only — nurses cannot access medical history, consultation notes, prescriptions, or referrals. Enforced at the database layer.
  • Receptionist access restricted to demographics only — name, date of birth, contact details, address, insurance. Cannot access clinical data at all.
  • Notification PHI minimisation: all automated patient notifications (push and email) are generated by database trigger functions specifically designed to exclude clinical content. Notification bodies contain no diagnoses, medication names, or note text.
  • Finance data minimisation: billing records reference appointment IDs and provider IDs only — no clinical narrative is stored in invoices or insurance claims.
  • Inactive account detection: accounts with no authenticated activity for more than 2 years are automatically flagged for administrator review by a weekly pg_cron job. Flagged accounts appear in a dedicated panel on the Admin → Users page. Administrators confirm deletion — accounts are never auto-deleted to protect against false positives.

Standard 4

Accuracy

Personal data must be accurate and kept up to date. Reasonable steps must be taken to verify accuracy.

  • Patients can update their own records — profile, demographics, and medical history. Changes take effect immediately.
  • Formal data correction request mechanism: patients can formally dispute any clinical record, specifying the record type and inaccuracy. Requests are stored in data_correction_requests and reviewed by an administrator or facility manager. Satisfies Section 21 (Right to Rectification) of the Act.
  • Field-level change history: a clinical_record_changes table captures a full before/after JSONB snapshot on every UPDATE to consultation notes, prescriptions, referral letters, doctor notes, and vital documents. Append-only — no UPDATE or DELETE policies exist.
  • Finance correction integrity: ledger entries are immutable. Corrections require new offsetting entries, preserving a complete and auditable financial history.

Standard 5

Storage Limitation

Personal data must not be kept for longer than is necessary and must be disposed of appropriately.

Defined retention periods

Data CategoryRetention Period
Account and profile dataWhile the account is active
Clinical records (consultation notes, prescriptions, referrals, vitals)Minimum 10 years from date of creation
Finance and billing records (invoices, expenses, insurance claims)Minimum 7 years (statutory financial records requirement)
Security and audit logsUp to 2 years
Notification outbox entries30-day rolling purge (with legal-hold bypass)

Account deletion with 30-day grace period — fully automated

  1. Patient requests deletion via the “Delete My Account” page on any platform (web, iOS, or Android), requiring the phrase DELETE MY ACCOUNT to confirm intent.
  2. Immediate soft-deletion: Profile marked with a deleted_at timestamp; patient signed out immediately; data becomes invisible to all staff at once.
  3. 30-day grace period: Patient can contact luke@hellodocja.com to reverse deletion.
  4. Automatic hard-deletion: A pg_cron job runs daily at 02:00 UTC and permanently deletes accounts soft-deleted more than 30 days ago, cascading through all linked tables.
  5. Audit record: Every deletion is logged with the 30-day expiry timestamp.

10-year clinical records retention floor

A BEFORE DELETE trigger (enforce_clinical_retention) is active on consultation notes, prescriptions, referral letters, and vital documents. Any attempt to delete a signed or sent clinical record younger than 10 years raises a database exception, regardless of whether the deletion was initiated by the application, a cascade, or a direct admin query.


Standard 6

Rights of the Data Subject

Personal data must be processed in accordance with the rights of the data subject, including the right to access, rectify, restrict processing, and erase data.

Right to Access

Patients can download all personal data held by HelloDoc at any time at no cost via the Export My Data page. Available on web, iOS, and Android. Every export is audit-logged.

Right to Rectification

Patients update their own profile and demographics directly. For clinical records, they submit formal correction requests reviewed by an administrator or facility manager.

Right to Erasure

Fully automated with 30-day grace period, available on web, iOS, and Android. Hard-deletion runs within the database, not relying on application availability.

Right to Data Portability

Data export is provided in structured JSON format, a standard machine-readable format suitable for transfer to another service.

Right to Withdraw Consent

Patients revoke per-doctor and per-nurse consent any time from Privacy Settings on any platform. Revocation is immediate. Cross-border and Terms consent can be withdrawn by submitting a deletion request.

Right to Restrict Processing

Patients can freeze specific record types from new downstream uses without deleting their account. Active restrictions are displayed in Privacy Settings and automatically suppress related automated notifications. Stored in processing_restrictions with RLS.

Right to Object

Patients formally object to specific processing activities. Objections are reviewed by administrators from the Admin → Processing Objections page. Statuses: pending → under review → upheld / rejected. Active objections gate automated processing.

Staff data export

All user roles have self-service data export via GET /api/user/export-data. Doctors receive authored clinical records; nurses receive vital readings; receptionists receive appointment records; administrators receive their audit log entries. Every export is audit-logged.


Standard 7

Technical & Organisational Measures

Appropriate technical and organisational measures must be in place to protect personal data against unauthorised or unlawful processing, accidental loss, destruction, or damage.

7.1 Encryption In Transit

All browser-to-server and app-to-server communication is exclusively over HTTPS (TLS 1.2+). The header Strict-Transport-Security: max-age=31536000; includeSubDomains is sent on every response. All Supabase database communication also uses TLS.

7.2 Encryption At Rest

All data stored in the Supabase-managed PostgreSQL database is encrypted at rest using AES-256 at the infrastructure level (managed by Supabase / AWS). Database-level encryption protects against physical storage compromise; Row Level Security protects against logical access by unauthorised users.

7.3 Authentication

  • Password handling delegated entirely to Supabase Auth (bcrypt hashing, session token issuance, token refresh).
  • Sessions managed via cookies using the Supabase SSR library, refreshed automatically at the middleware layer on every request.
  • iOS app supports biometric unlock preference, persisted in the device Keychain per user account.
  • Staff invitations use single-use expiring tokens; expired tokens are automatically rejected.

7.4 Role-Based Access Control (RBAC) and Row Level Security (RLS)

Access control is enforced at the database layer using PostgreSQL Row Level Security. RLS is enabled across all core identity, clinical, finance, rights, and governance tables. Every SELECT, INSERT, UPDATE, and DELETE query is automatically filtered by policies checking the identity and role of the requesting user. Key boundaries enforced at the database level:

  • A patient can never read another patient's data
  • Doctor access is layered: author records, same-facility continuity records, referral handoff records, and consent-gated baseline history
  • A nurse can read clinical data only for patients at their assigned facility (or via explicit patient consent)
  • A receptionist can read patient demographics only for patients at their assigned facility
  • A facility manager is limited to assigned-facility finance, inventory, and audit log access — with no access to patient clinical data
  • A doctor can only see their own invoices and insurance claims — cross-doctor finance access is blocked at the database level
  • A facility manager's finance access is limited to their assigned facility
  • Soft-deleted accounts are invisible to all staff immediately after deletion is requested
  • Administrators can manage users, facilities, roles, and governance workflows — they cannot access patient clinical data (medical history, consultation notes, prescriptions, vitals, referrals, or documents)

Security-definer functions are hardened with explicit REVOKE ALL FROM PUBLIC followed by explicit grants to required roles, preventing privilege escalation through stored procedure invocation.

7.5 Audit Logging and Breach Management

An append-only audit log is maintained in the audit_logs table. Records can be inserted but never modified or deleted. Every entry captures the requester's IP address and User-Agent string, extracted server-side. Clinical reads, writes, data exports, account deletions, finance exports, and consent events are all logged. Administrators can view, filter, search, and export the full log from the Admin → Activity Log page.

A dedicated breach_incidents table records data breach investigations with severity classification, investigation status, OIC notification tracking, affected user counts, and data category inventories. The table is accessible only to administrators via RLS, and every create or update event is written to audit_logs.

A documented Breach Notification Policy covers: breach definitions, roles and responsibilities, 72-hour OIC notification procedures, individual notification requirements, and 2-year record-keeping obligations. Request a copy.

7.6 Notification PHI Controls and Compliance

All patient-facing notifications — push (Firebase Cloud Messaging) and email (Resend) — are generated by database trigger functions that explicitly exclude clinical content. Notifications are additionally gated by:

  • Active doctor-patient consent relationship (absent consent → notification suppressed)
  • Active processing restrictions (restriction present → notification suppressed)
  • Patient channel preferences (push, email, SMS toggles respected per patient)
  • Deduplication keys prevent duplicate dispatch of the same notification event
  • 30-day rolling purge removes notification outbox entries on schedule

7.7 Mobile Platform Security Controls

  • iOS screen privacy overlay: the app detects app-switcher backgrounding and screen capture events and renders a privacy mask, preventing PHI from appearing in screenshots or the app switcher preview.
  • Persisted privacy settings: all privacy/security preferences (biometric, analytics sharing, screen protection) are stored in user_privacy_security_settings and synchronised across sessions.
  • iOS Keychain storage: biometric unlock preferences are stored in the device Keychain, not in application storage or iCloud.
  • Android privacy settings: privacy settings, data export, and account deletion workflows are available natively on Android via dedicated screens.

7.8 Rate Limiting

Endpoint TypeLimitWindow
Authentication endpoints (/login, /register, /admin-register, /api/auth/*)10 attemptsPer 15 minutes
All other API endpoints (/api/*)120 requestsPer minute

Exceeding a limit returns HTTP 429. This protects against brute-force login attacks and automated scraping.

7.9 HTTP Security Headers

HeaderValuePurpose
Strict-Transport-Securitymax-age=31536000; includeSubDomainsForces HTTPS for 12 months
X-Frame-OptionsDENYPrevents clickjacking
X-Content-Type-OptionsnosniffPrevents MIME-type sniffing
Referrer-Policystrict-origin-when-cross-originLimits URL info sent cross-origin
Permissions-Policycamera=(), microphone=(), geolocation=()Disables camera, mic, geolocation
Content-Security-Policydefault-src 'self'; connect-src *.supabase.co; frame-ancestors 'none'Prevents XSS and data exfiltration

7.10 Document Storage Access Controls

Patient medical documents are stored in a private Supabase Storage bucket (patient-documents). Not publicly accessible. Path structure: {doctor_id}/{patient_id}/{filename} — enforced by storage policies. Doctors can access their own folder only; patients can read their own subfolder only.

7.11 Input Validation

All API routes validate required fields, string lengths, enum values, and UUID formats before any database operation. PostgreSQL parameterised queries prevent SQL injection.

7.12 Service Role Key Protection

The Supabase service role key bypasses Row Level Security and has full database access. It is used only in server-side API routes and the notification dispatch endpoint, and is never sent to the browser or included in any mobile application binary.


Standard 8

Cross-Border Data Transfers

Personal data must not be transferred outside Jamaica unless the receiving territory ensures an adequate level of protection.

What is in place

  • Section 9 of the Privacy Policy discloses that HelloDoc is hosted on Supabase using AWS infrastructure in West US (North California), us-west-1.
  • Every patient account requires a separate, specific checkbox consent for cross-border data transfer at registration — on web, iOS, and Android. The timestamp (profiles.cross_border_consent_at) is permanently recorded. This satisfies the consent exception under the Act.
  • Email notifications are delivered via Resend (processor/sub-processor). Push notifications are delivered via Firebase Cloud Messaging (Google infrastructure). Both are disclosed in the Privacy Policy.

Ongoing contractual and documentation work

HelloDoc is in the process of completing formal processor agreements and Transfer Impact Assessment documentation covering Supabase/AWS, Resend, and Firebase/Google. In the interim, consent-based transfer authorisation is in place for all data subjects. For enquiries about our cross-border transfer documentation status, contact luke@hellodocja.com.


Summary

Compliance Status

StandardStatusConfidence
1 — Fairness & LawfulnessSubstantially implementedHigh — dual consent captured at registration (web, iOS, Android) with permanent timestamps; layered doctor access enforced at DB layer (author + facility + referral + consent-gated history); nurse-initiated consent flow; medical disclaimer acknowledgement across all platforms
2 — Purpose LimitationSubstantially implementedHigh — role-scoped RLS including finance isolation and facility manager controls; declared purposes in Privacy Policy; no advertising integrations; full 23-activity ROPA maintained
3 — Data MinimisationSubstantially implementedHigh — lean registration; role access segmentation; PHI minimisation in all notification triggers; finance data references IDs only; inactive accounts auto-flagged after 2 years
4 — AccuracySubstantially implementedHigh — formal correction requests; field-level change history on all clinical tables; immutable ledger entries for finance
5 — Storage LimitationSubstantially implementedHigh — retention periods published for all data categories; automated soft/hard-delete (30-day grace); 10-year clinical floor enforced by BEFORE DELETE trigger; 7-year finance retention; 30-day notification outbox purge
6 — Rights of the Data SubjectSubstantially implementedHigh — export (all roles, all platforms), erasure (all platforms), rectification, consent withdrawal, restriction of processing, and right to object all functional; restriction/objection flags gate automated processing
7 — Technical & Organisational MeasuresSubstantially implementedHigh — HTTPS/HSTS, CSP, RLS across all data domains including finance, privilege hardening, rate limiting, append-only audit log, breach incident register, notification PHI controls, iOS screen privacy overlay, Android privacy settings, server-only privileged keys, breach notification policy
8 — Cross-Border TransfersPartially implementedSubstantially implemented — explicit consent with permanent timestamp; AWS region named in Privacy Policy; processor agreements and TIA documentation in progress

Contact & Escalation

Get in Touch

All data subject requests (access, correction, erasure, objection) should be acknowledged within 5 business days and fully responded to within 30 days, as required by Section 20 of the Jamaica Data Protection Act, 2020.

PurposeContact
Privacy enquiries, data subject requestsluke@hellodocja.com
Legal and contractual mattersluke@hellodocja.com
General enquiries+31(0)647283266
Request the Record of Processing Activities (ROPA)luke@hellodocja.com
Request the Breach Notification Policyluke@hellodocja.com

This page was last revised on March 11, 2026 (v4.0). Document classification: Public — prepared for data subjects, legal counsel, Data Protection Officer, and external auditors.