Skip to main content
Version: v0.0.3

Type Alias: Observation

Observation = ObservationBase & { value: number | undefined; valueType: "NM"; } | { value: SN | undefined; valueType: "SN"; } | { value: TS | undefined; valueType: "TS" | "DT"; } | { value: CWE | CE | undefined; valueType: "CWE" | "CE"; } | { value: string | undefined; valueType: string; }

One OBX segment as a typed Observation. value is discriminated by valueType (OBX-2) per D-13:

  • "NM"number | undefined
  • "SN"SN | undefined (structured numeric: comparator / range / ratio)
  • "TS" | "DT"TS | undefined (fidelity parts preserved)
  • "CWE" | "CE"CWE | CE | undefined (full composite per D-14)
  • other ("ST", "TX", "FT", "ID", "IS", "NA", unknown) → string | undefined (decoded, D-23)

D-22: value is undefined when OBX-5 is empty OR malformed for its declared type (never throws, never NaN). A TS/DT value is always the TS structure; check its .valid flag rather than expecting a Date.

Example

import type { Observation } from "@cosyte/hl7";
const glucose: Observation = {
setId: "1",
identifier: { identifier: "GLU", text: "Glucose" },
valueType: "NM",
value: 120,
units: { identifier: "mg/dL" },
referenceRange: "80-110",
abnormalFlags: "H",
status: "F",
};