@glion/util-uid
v0.19.0
Published
Time-ordered unique IDs for HL7v2 — the ULID idea resized to a 20-character default that fits MSH-10 and other ST identifier fields
Maintainers
Readme
@glion/util-uid
Time-ordered, HL7v2-safe unique IDs.
What it does
@glion/util-uid generates short, sortable, HL7v2-safe unique IDs. Use them for MSH-10 message control IDs, order numbers, or any field that needs a unique identifier.
- Fits MSH-10. IDs are 20 characters — a standard ULID is 26 and does not fit.
- Sorts by time. IDs start with a timestamp, so sorting IDs sorts by creation time.
- Safe characters only. Digits and uppercase letters, minus I, L, O, and U: no HL7 delimiters, easy to read aloud, hard to mistype.
Install
npm install @glion/util-uidUse
import { uid } from "@glion/util-uid";
const controlId = uid(); // e.g. for MSH-10
// "01J9Z6M8QKT5W3XA9C0D" — 20 characters, sorts by generation timeNeed a branded ID? Compose it: "MKE" + uid({ size: 17 }).
API
uid(options?)
Generates a time-ordered unique identifier.
| Parameter | Type | Default | Description |
| -------------- | -------- | ------- | -------------------------------- |
| options.size | number | 20 | Total length of the generated ID |
The time part needs 10 characters: keep size >= 11, or the ID degrades to a pure-random tail (unique, but not time-ordered). size must be a positive integer (RangeError otherwise). Per-millisecond uniqueness rests entirely on the random tail, so prefer the full default width when volumes are high.
Part of Glion
@glion/util-uid is part of Glion, the application framework for HL7v2. See the Glion README for the full package catalog and architecture.
