Skip to main content

Measurement field catalog

measurementFieldCatalog is exported from @ovok/native/bt-management. It is the canonical field vocabulary used by custom Bluetooth declarations and the optional UI components. Each field records its unit and decode bounds; some fields also include adult, resting reference ranges for non-diagnostic UI feedback:

FieldUnitNormal range
Blood pressure systolicmmHg90–120
Blood pressure diastolicmmHg60–80
Heart rate / pulse ratebpm60–100
Body temperature°C36.5–37.3
Blood oxygen%95–100
Respiratory rate/min12–20

These are display hints, not diagnostic thresholds. Body weight, blood glucose, perfusion index, and RR interval remain unset because their expected values depend on context such as height, fasting state, device, activity, altitude, or clinical history.

Field shape​

interface CatalogField {
unit: string;
min: number;
max: number;
required?: boolean;
display?: string;
normalMin?: number;
normalMax?: number;
}

min and max are protocol/decode bounds. A decoded value outside those bounds is treated as a malformed reading by declaration validation. required identifies fields needed for a complete result case. normalMin and normalMax are optional presentation hints and must not be used as diagnosis or alarm thresholds.

import { MeasurementTypeKey } from "@ovok/core";
import {
measurementFieldCatalog,
} from "@ovok/native/bt-management";

const fields = measurementFieldCatalog[MeasurementTypeKey.bloodPressure];
const systolicUnit = fields?.systolic.unit; // "mmHg"

The catalog includes blood pressure, body weight, temperature, blood glucose, blood oxygen/pulse rate, heart rate, respiratory rate, urine analysis, and uric acid fields. ECG and other multi-notification streams are handled by their protocol implementations rather than a simple declarative field map.

Sources: MedlinePlus vital signs, American Heart Association blood pressure, and FDA pulse oximeter basics.