Capability · Validators

Checksum-strict validation, at commit time.

Nineteen field validators run before anything is committed — from IBAN mod-97 and GTIN check digits to NPI Luhn and LOINC codes. Invalid rows are flagged with a precise code, never silently written.

POST /v1/validate-row

What you get

Built for regulated workloads

A mapping that lands the right column but writes a malformed value is still a bad import. Every field can carry a validator, and they run at commit — not as a loose regex, but as the real check: IBANs are verified mod-97, GTINs against the GS1 check digit, NPIs against Luhn. A row that fails is flagged (or skipped) with a specific code so you know exactly what broke, and it never reaches your system of record silently.

Strict

Real checksums, not regex theatre

IBAN mod-97, BIC structure, GTIN GS1 check digit, NPI Luhn, GLN, pharmacode and UUID are verified by algorithm — a value that looks right but fails its check digit is caught, not waved through.
Clinical

Healthcare code systems

LOINC, ICD-10, ATC and CPT codes are validated against their format rules, so a lab result or a claim line carries a code that will actually resolve downstream.
General

The everyday checks too

regex, enum, date_range, number_range, email, phone and url cover the ordinary fields — dates in range, enums in their allowed set, contacts well-formed — under the same commit gate.
Fail loud

Flagged, never silently committed

An invalid row is flagged or skipped with a precise validator code — you always know which field failed and why. Nothing malformed slips into your system of record unnoticed.

Reference

The 19 validators

ValidatorWhat it checksExample
regexCustom pattern match^[A-Z]{2}\d{6}$
enumValue in an allowed setactive | inactive
date_rangeDate within bounds1900-01-01 … today
number_rangeNumeric within bounds0 … 120
emailWell-formed addressada@example.org
phoneValid phone format+41 44 000 00 00
urlWell-formed URLhttps://example.org
ibanMod-97 checksumCH93 0076 2011 6238 5295 7
bicSWIFT/BIC structureUBSWCHZH80A
uuidRFC 4122 UUID9f1c…-…
gtinGS1 check digit4006381333931
pharmacodePharmacode checksum1234567
fhir_referenceFHIR reference formPatient/123
loinc_codeLOINC format4548-4
icd10_codeICD-10 formatE11.9
atc_codeATC formatA10BA02
cpt_codeCPT format99213
npiNPI Luhn check1234567893
glnGLN check digit7601234567890

SNOMED was deliberately removed — it required a SNOMED International Affiliate License and no template used it. Do not expect a snomed_code validator.

FAQ

Common questions

At commit, on the resolved value about to be written — not as an afterthought. A row that fails its field validator is flagged or skipped with a specific code, so malformed data never lands in your system of record silently.
No. Where a field has a real check algorithm we run it: IBANs are verified mod-97, GTINs against the GS1 check digit, NPIs against Luhn, GLNs against their check digit. A value that matches a loose pattern but fails its checksum is still rejected.
It was removed on purpose. SNOMED CT requires a SNOMED International Affiliate License and no template ever used it, so carrying a snomed_code validator was a compliance liability with no benefit. We don’t plan to reintroduce it.
Yes — the regex, enum, date_range and number_range validators are parameterised, so a field can enforce your own pattern, allowed set or bounds alongside the built-in checksum validators.

Ready when you are

Put validators in production — without shipping raw records.

Spin up a key in minutes. Top up a $10 prepaid wallet — every map is a few tokens.

$10 minimum to start · pay only for what you map · PHI under BAA coverage