Field types
Every field type, what it produces, when to use it.
OHM Studio supports 16 field types. Medical primitives (vitals, diagnoses, medications, allergies, …) are first-class — no JSON-Schema gymnastics, no string-typed fields pretending to be lists.
Basic
| Type | Output | Use for |
|---|---|---|
text | string | Single-line free text |
textarea | string | Multi-line free text |
rich-text | string (Markdown bullets) | HPI, assessment, plan narratives |
number | number | Plain numerics |
date | string (ISO 8601) | Visit date, follow-up date |
boolean | boolean | Yes/no toggles |
choice | string | Single-select enum |
multi-choice | string[] | Multi-select enum |
code-list | string[] | Generic enum array |
repeater | object[] (typed) | Custom nested rows |
Clinical primitives
These are what OHM is for — every primitive has been tuned with hundreds of consultations.
vitals-block
{
bp?: { systolic?: number; diastolic?: number };
hr?: number; // /min
rr?: number; // /min
temp?: number; // °C
spo2?: number; // %
weight?: number; // kg
height?: number; // cm
}The Foundation Block enforces vital sanity ranges. Out-of-range values are dropped, not coerced.
diagnosis-list
Array<{
name: string;
code?: string;
system?: "icd10" | "snomed" | "icd11";
status?: "active" | "provisional" | "differential" | "ruled-out";
}>Negation handling is built in: "no fever" / "denies chest pain" never shows up as a diagnosis. Uncertainty markers ("probably", "rule out") get status: "provisional".
medication-list
Array<{
name: string;
dosage?: string;
frequency?: string; // OD/BD/TDS/QID/HS/SOS/PRN
route?: string; // Oral/IV/IM/SC/Topical/Inhaled
duration?: string;
instructions?: string;
}>allergy-list, investigation-list, referral-list, procedure-list
Similar structured shapes. See API reference for full schemas.
Field configuration
Every field carries:
key— the JSON output propertylabel— human-readable, shown in the Builder and (optionally) in your UIdescription— surfaced to the LLM as part of the schema descriptionrequired—true,"completion-only", or omit for optionalmentions— for rich-text, which @-pickers (dx,rx,lab,dr) are allowedoptions— for choice / multi-choice / code-list