Your own identifier formats
The shipped detectors know names, dates, phone numbers, emails, addresses, employers, occupations, UK postcodes, and the structured identifiers of four countries (New Zealand, Australia, the United Kingdom, and the United States). They do not know your record-number format, your ward and clinic names, or your local date style. Nothing can, in advance. So before the first run on a new dataset, find what the detectors leave in place, and tell the SDK about it in the config.1. Survey a sample
AA-9A9A9A9A9 and the example KZ-7B******* are enough to recognise a format, and no value
leaves your boundary.
--json gives the same rows as data.
2. Add an entry for each format
The identifier types a
type can name:
The config is checked when it loads, not when a pattern first fires. An invalid expression, an
unknown type or check, a pattern that matches the empty string, or one loose enough to match
every word stops the command with the entry’s name in the message.
A custom pattern wins an overlap with the built-in detectors.
Kowhai Ward configured as a
LOCALITY stays one, whatever the name model thinks of it.
A custom pattern is an instruction, not a guess, so the detection guards never refuse it. The
guards keep a clinician role, a generic department, a relative time, or a word tagged as a number
in the text when a detector proposes one; a hit on your own format is always replaced, even when
it has no digits or reads like a date phrase.
Custom patterns run inside the Presidio member, so they apply whenever presidio is in
detectors, including the default [presidio, gliner-pii-open].
3. Survey again
What the survey cannot see
It reads text. A value that is spoken as words (“my number is four four one seven”), a value that changes shape between records, or a value that is an ordinary word in your data (a clinic named “Sunrise”) will not appear as a shape. Read a few cleaned transcripts by eye once per dataset;run writes them into the local ledger, which stays inside your boundary.