Distributed as an ESM package with React as a peer dependency.
Ignitron Clinical UI
Open-source React components for clinical software with explicit data contracts, predictable interaction states, and no backend dependency—starting with Odontogram.
This package has not completed clinical validation. APIs may change before the first stable release.
Start with one package.
The package owns rendering and domain values. Your application keeps authentication, storage, audit history, and signatures.
$ npm install @ignitrondev/odontogram@alphaDomain models and component contracts ship with generated declarations.
No hidden persistence, identity provider, or proprietary API requirement.
Odontogram
A controlled dental chart for whole-tooth findings across permanent, primary, and mixed dentition.
<Odontogram
value={value}
onChange={setValue}
numberingSystem="FDI"
dentition="PERMANENT"
conditions={conditions}
/>Test the contract, not a screenshot.
Choose a finding, select teeth, switch numbering systems, and inspect the structured value emitted by the component.
Dental chart
Odontogram
{
"schemaVersion": 1,
"findings": [
{
"id": "finding-16-caries",
"toothId": "PERMANENT:MAXILLARY:RIGHT:6",
"conditionCode": "CARIES"
},
{
"id": "finding-24-filled",
"toothId": "PERMANENT:MAXILLARY:LEFT:4",
"conditionCode": "FILLED"
},
{
"id": "finding-36-missing",
"toothId": "PERMANENT:MANDIBULAR:LEFT:6",
"conditionCode": "MISSING"
}
]
}Small surface. Explicit ownership.
| Prop | Type | Default | Description |
|---|---|---|---|
value | OdontogramValue | Required | Structured, controlled clinical value. |
onChange | (value, event) => void | Optional | Receives the next value and domain event. |
conditions | OdontogramCondition[] | Required | Terminology, symbols, and visual accents. |
numberingSystem | FDI | UNIVERSAL | PALMER | FDI | Visible tooth numbering convention. |
dentition | PRIMARY | PERMANENT | MIXED | PERMANENT | Dentition rendered by the chart. |
mode | edit | readOnly | print | edit | Interaction and output mode. |
The visual is not the record.
Every mark shown in the chart is derived from a serializable clinical value. Colors and paths never become the source of truth.
type OdontogramValue = {
schemaVersion: 1;
findings: {
id: string;
toothId: CanonicalToothId;
conditionCode: string;
surface?: ToothSurface;
note?: string;
}[];
};Tooth IDs do not change when the visible numbering convention changes.
Findings persist a condition code, never a presentation color alone.
Stored values declare their contract version for future migrations.
Early software. Human review required.
This alpha package has not completed clinical validation. It is not a medical device and must not replace clinical review, organizational policy, or integration testing.
