MEDWEAR

Schemas

JSON and ROS 2 definitions for physiological signals

MEDWEAR Physiological Signal Schemas

Below are the core MEDWEAR message types for common physiological signals. JSON Schemas are maintained in the ord_schemas repository. ROS 2 message definitions are in the healthcare_msgs repository.

Signal JSON Schema ROS 2 Message
Ballistocardiogram (BCG) bcg_schema.json BCG.msg
Electrocardiogram (ECG) ecg_schema.json ECG.msg
Electrodermal Activity (EDA) eda_schema.json EDA.msg
Electroencephalogram (EEG) eeg_schema.json EEG.msg
Electromyography (EMG) emg_schema.json EMG.msg
Electrooculogram (EOG) eog_schema.json EOG.msg
Impedance Cardiogram (ICG) icg_schema.json ICG.msg
Photoplethysmogram (PPG) ppg_schema.json PPG.msg

BCG Example Schema Reference

The BCG schema represents waveform data from a specific lead with signal quality and temporal context. The BCGInfo schema captures metadata about the sensor and acquisition parameters. Every BCG data message references a BCGInfo session via session_id.

JSON Schemas

BCG.json - waveform data
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "BCG Data",
  "description": "Waveform data from a specific BCG lead with signal quality and temporal context.",
  "type": "object",
  "definitions": {
    "time_frame":    { "$ref": "time-frame-1.0.json" },
    "time_interval": { "$ref": "time-interval-1.0.json" }
  },
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Session identifier matching BCGInfo's session_id"
    },
    "sample_size": {
      "type": "integer",
      "minimum": 0,
      "maximum": 65535,
      "description": "Number of samples in the bcg and signal_quality arrays"
    },
    "bcg": {
      "type": "array",
      "items": { "type": "number" },
      "description": "Raw or filtered BCG values"
    },
    "signal_quality": {
      "type": "array",
      "items": { "type": "number", "minimum": 0, "maximum": 1 },
      "description": "Signal quality per sample, from 0 (poor) to 1 (excellent)"
    }
  },
  "required": ["session_id", "sample_size", "bcg", "signal_quality"]
}
BCGInfo.json - acquisition metadata
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "BCGInfo",
  "description": "Metadata describing BCG data acquisition parameters and sensor characteristics.",
  "type": "object",
  "definitions": {
    "device_info": {
      "type": "object",
      "properties": {
        "manufacturer":  { "type": "string" },
        "model":         { "type": "string" },
        "serial_number": { "type": "string" }
      },
      "required": ["manufacturer", "model"]
    },
    "filter_base": {
      "type": "object",
      "properties": {
        "filter_type":         { "type": "string" },
        "cutoff_frequency_hz": { "type": "number" },
        "order":               { "type": "integer" }
      }
    }
  },
  "properties": {
    "device_info": { "$ref": "#/definitions/device_info" },
    "session_id":  { "type": "string" },
    "sampling_frequency":          { "type": "number", "minimum": 0 },
    "window_size_samples":         { "type": "integer", "minimum": 1 },
    "quality_window_size_samples": { "type": "integer", "minimum": 1 },
    "units": {
      "type": "string",
      "enum": ["UNIT_UNKNOWN","UNIT_MV","UNIT_UV","UNIT_COUNTS","UNIT_M_S2","UNIT_NEWTON"]
    },
    "gain":           { "type": "number" },
    "adc_resolution": { "type": "integer", "minimum": 1, "maximum": 32 },
    "sensor_placement": {
      "type": "string",
      "enum": ["PLACEMENT_UNKNOWN","PLACEMENT_CHEST","PLACEMENT_BACK","PLACEMENT_MATTRESS",
               "PLACEMENT_CHAIR","PLACEMENT_ANKLE","PLACEMENT_FOOT","PLACEMENT_WRIST",
               "PLACEMENT_ARM","PLACEMENT_DESK","PLACEMENT_CLOTHING","PLACEMENT_CUSTOM"]
    },
    "sensing_direction": {
      "type": "string",
      "enum": ["DIRECTION_UNKNOWN","DIRECTION_DORSO_VENTRAL","DIRECTION_LONGITUDINAL",
               "DIRECTION_MEDIO_LATERAL","DIRECTION_CUSTOM"]
    },
    "sensing_modality": {
      "type": "string",
      "enum": ["MODALITY_UNKNOWN","MODALITY_PIEZOELECTRIC_FILM","MODALITY_FORCEPLATE",
               "MODALITY_ACCELEROMETER","MODALITY_PIEZOELECTRIC_CRYSTAL","MODALITY_CUSTOM"]
    },
    "measurement_system": {
      "type": "string",
      "enum": ["SYSTEM_UNKNOWN","SYSTEM_STARR","SYSTEM_NICKERSON","SYSTEM_DOCK","SYSTEM_CUSTOM"]
    },
    "filter": { "$ref": "#/definitions/filter_base" }
  },
  "required": [
    "device_info","session_id","sampling_frequency","window_size_samples",
    "quality_window_size_samples","units","gain","adc_resolution",
    "sensor_placement","sensing_direction","sensing_modality","measurement_system"
  ]
}

ROS 2 Message Definitions

BCG.msg
std_msgs/Header header

string session_id                     # Match BCGInfo's session_id
uint16 sample_size
float32[] bcg                         # Raw or filtered BCG values
float32[] signal_quality              # 0 (poor) to 1 (excellent)
BCGInfo.msg
DeviceInfo device_info
string session_id

float32 sampling_frequency            # Hz
uint32 window_size_samples
uint32 quality_window_size_samples

uint8 UNIT_UNKNOWN=0
uint8 UNIT_MV=1  uint8 UNIT_UV=2  uint8 UNIT_COUNTS=3
uint8 UNIT_M_S2=4  uint8 UNIT_NEWTON=5
uint8 units

float32 gain
uint8   adc_resolution

uint8 PLACEMENT_UNKNOWN=0  uint8 PLACEMENT_CHEST=1  uint8 PLACEMENT_BACK=2
uint8 PLACEMENT_MATTRESS=3  uint8 PLACEMENT_CHAIR=4  uint8 PLACEMENT_ANKLE=5
uint8 PLACEMENT_FOOT=6  uint8 PLACEMENT_WRIST=7  uint8 PLACEMENT_ARM=8
uint8 PLACEMENT_DESK=9  uint8 PLACEMENT_CLOTHING=10  uint8 PLACEMENT_CUSTOM=255
uint8 sensor_placement

uint8 DIRECTION_UNKNOWN=0  uint8 DIRECTION_DORSO_VENTRAL=1
uint8 DIRECTION_LONGITUDINAL=2  uint8 DIRECTION_MEDIO_LATERAL=3
uint8 DIRECTION_CUSTOM=255
uint8 sensing_direction

uint8 MODALITY_UNKNOWN=0  uint8 MODALITY_PIEZOELECTRIC_FILM=1
uint8 MODALITY_FORCEPLATE=2  uint8 MODALITY_ACCELEROMETER=3
uint8 MODALITY_PIEZOELECTRIC_CRYSTAL=4  uint8 MODALITY_CUSTOM=255
uint8 sensing_modality

uint8 SYSTEM_UNKNOWN=0  uint8 SYSTEM_STARR=1  uint8 SYSTEM_NICKERSON=2
uint8 SYSTEM_DOCK=3  uint8 SYSTEM_CUSTOM=255
uint8 measurement_system

FilterBase filter