OHMOHM Studio

Field types

Every field type, what it produces, when to use it.

View as Markdown

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

TypeOutputUse for
textstringSingle-line free text
textareastringMulti-line free text
rich-textstring (Markdown bullets)HPI, assessment, plan narratives
numbernumberPlain numerics
datestring (ISO 8601)Visit date, follow-up date
booleanbooleanYes/no toggles
choicestringSingle-select enum
multi-choicestring[]Multi-select enum
code-liststring[]Generic enum array
repeaterobject[] (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 property
  • label — human-readable, shown in the Builder and (optionally) in your UI
  • description — surfaced to the LLM as part of the schema description
  • requiredtrue, "completion-only", or omit for optional
  • mentions — for rich-text, which @-pickers (dx, rx, lab, dr) are allowed
  • options — for choice / multi-choice / code-list