Praxium
The clinic desk: book, treat, follow up

Praxium is practice software for outpatient clinics. It is not a ward EHR and not a separate calendar bolted onto a notes app. One place holds the diary, the patient record, the task list, and the portal the patient uses to book and read what they are allowed to see.

Copy and photographs on this page are original. They describe the product as it exists today — live at praxium.nl — without lifting marketing lines or dashboard shots from the site. Built in the Netherlands. Patient data stays in the EU.

Appointments Records EU · encrypted
Clinic receptionist at the front desk with a laptop
Today’s book
One record
EU hosted
08:40 · front desk opens the day
Slots, held times, and who is coming — one screen, not three subscriptions
Outpatient
Booking → note One journey
Per clinic Isolated database
20 years Patient-access logs (NL law)
EU Frankfurt · Paris · Dublin

What this product actually is

A small clinic’s day is four jobs: fill the diary without double-booking, keep a legal patient file, chase the work that happens after the visit, and let the patient do simple things themselves. Praxium is those four jobs in one tenant.

Clinician and patient in a consultation room
During the visit

The record, not a Word file

Configurable sections (history, treatment, files, scales). Staff fill fields the clinic designed. Notes can be drafted with AI in beta — a human still approves before they land on the file.

Patient in a waiting room using a phone
The patient

Book and read without calling

Self-book, reminder the day before, reschedule from the confirmation link. Portal access is scoped: the clinic chooses what the person can see or complete.

Outpatient clinic corridor with multiple rooms
The organisation

More than one site

Prices, booking pages, public answers, and staff lists can differ per location. A single-site clinic is not punished with extra screens. Admin rights stay on the site that person works.

How a customer uses it on a Tuesday

  1. PatientOpens the clinic’s own booking page (or the portal). Picks a service and a slot that is actually free. Gets a reminder. Changes the time from the link if the bus is late — reception does not take that call.
  2. Front deskSees the book across therapists. Holds a slot. Books for someone who walked in. Does not keep a second calendar in a consumer app.
  3. ClinicianOpens the same person’s record: history, last episode, files. Writes (or reviews a draft) in the fields this clinic defined. Hands a follow-up to a colleague as a task with a deadline.
  4. Practice managerInvites staff by email, sets roles, catalogue and prices per site, logo and colours on admin + portal, languages (Dutch and English first). Connects the public website through the API / SDK / webhooks so opening hours are not copy-pasted twice.

In production at a clinic, still growing

Live today: diary, customisable records, locations, tasks, branding, patient portal, staff, service catalogue, own-domain mail, website connection, AI note drafts (review-before-save).

Not yet: insurer declarations (VECOZO is planned) and a full self-pay invoice-to-payment loop. Clinics that already bill insurers keep that tool beside Praxium until those pieces ship.

Clinic first. Hospital outpatient next.

Praxium is built for practices, not for ICU monitors or theatre lists. In a hospital it belongs on the outpatient / polyclinic floor — the part of the building that already behaves like a clinic: named slots, named clinicians, follow-up calls, and a file that must survive an audit.

Outpatient department

Fewer no-shows, fewer double books

Held slots and availability rules stop two secretaries giving away the same 14:00. Day-before reminders and self-reschedule cut the empty chairs that still cost a specialist hour. That is the same pain in a city hospital polyclinic as in a private practice.

The legal file

Who opened the record, and when

Dutch rules keep patient-access logs for twenty years. Field-level encryption means a copied disk is not a readable dump. Each clinic (or hospital site) sits in its own database — a tenant cannot browse another tenant’s patients. MFA and IP limits sit on the admin side.

Several floors / sites

One group, local prices and staff

A hospital with two outpatient buildings can give each its booking page, prices, and public answers without cloning the whole product. A receptionist at site A should not administer site B by accident.

After the visit

Follow-up is a task, not a sticky note

Lab chase, call-back, letter to the GP: owner, deadline, files, and a ping when it is done. That is how an outpatient team stops losing work in a shared inbox — the same failure mode on a hospital corridor as in a two-room practice.

From a diary to a tenant platform

01

The book

A consumer calendar plus a paper list at the desk. Double-booked 14:00s.

Rules, held slots, self-book, reminder, reschedule link. Front desk and website share one availability.

02

The file

A generic form that does not match this specialism.

Dozens of field types, drag-and-drop sections, documents on the same record. Encrypted at field level.

03

The website

Opening hours edited twice. Stale prices on the public site.

HMAC tenant API, TypeScript SDK, webhooks. The clinic site reads team, services, FAQ, hours from the same tenant.

OpenAPI tenant. TypeScript on the clinic site.

Each practice is a tenant at {slug}.admin.praxium.nl — diary, records, tasks, branding, and the patient portal on that host. The public API is an OpenAPI contract. The official client is TypeScript @praxium/sdk, generated from that spec. Clinic marketing sites typically sit on Next.js 14+ (the SDK’s peer) so a webhook can revalidate cached pages instead of waiting for a cron.

The website authenticates with an HMAC API key created under API Profiles. Tenant slug and profile slug live inside the key; the platform also checks the hostname, so one key cannot be pointed at another clinic. Locales on the wire: nl, en, ro via Accept-Language.

When team, FAQ, hours, or services change, the platform posts a structured CloudEvent (application/cloudevents+json) signed with HMAC-SHA256, timing-safe compare, five-minute replay window. Sensitive record fields are encrypted one-by-one. Each clinic’s data is isolated at the database. MFA and IP allowlists are native. Compute and backups stay in the EU: Frankfurt, Paris, Dublin.

TypeScript @praxium/sdk OpenAPI Next.js HMAC-SHA256 CloudEvents Field encryption Per-clinic DB MFA / IP rules EU (FRA · PAR · DUB)
Clinic app (web)

Admin on the tenant host: calendar, custom records, tasks, staff, catalogue, branding. Matching patient portal and booking page. Dutch and English first.

Public API + SDK

Locations, team, hours, FAQ, bookable services, insurance, policies, contact form. Typed errors (401 / 403 / 404 / 429). Custom fields by set + identifier, not guessed labels.

Webhooks

Events such as location.updated and staff.deleted. Next.js ISR, search index, or CDN purge on the clinic site — not a second CMS.

Isolation + audit

Per-clinic database so a dump of another tenant is not readable here. Patient-access logs kept to Dutch healthcare periods. AI note drafts stay behind a human approve.

Paperwork stops following people home

The slot is true

Website and desk share availability. A held slot cannot be given away twice.

The file is the clinic’s

Sections match the specialism. Encryption and logs match the regulator, not a generic SaaS checkbox.

The patient does the simple work

Book, remind, reschedule, read what they are allowed. Reception keeps the hard cases.

Need a clinic desk that is also a tenant API?

Booking, records, tasks, portal, EU isolation — the Praxium shape for outpatient work.