ECG Record schema 1.0 — field reference¶
Written by ecg-records 0.1; read by this release (emitted: 1.1.0). Readers accept schema major 1. JSON Schema: ecgfeat/schemas/ecg-record/1.0/schema.json ($id urn:ecg-record:1.0).
Validation tiers come only from the shipped registry (validation-evidence.json); a field can claim more than unvalidated only by citing an evidence manifest (see tools/check_validation_registry.py).
Published fields¶
| Pointer | Profiles | Validation (ceiling) | Evidence | Validated for | Engine source | Known limitations |
|---|---|---|---|---|---|---|
/delineation/fiducials/p_onset |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/p/onset |
P-wave delineation is the weakest endpoint in the repository's LUDB/QTDB benchmarks; P waves are frequently missed at short RR (<600 ms) or when the P wave overlaps the preceding T wave. |
/delineation/fiducials/p_offset |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/p/offset |
P-wave delineation is the weakest endpoint in the repository's LUDB/QTDB benchmarks; P waves are frequently missed at short RR (<600 ms) or when the P wave overlaps the preceding T wave. |
/delineation/fiducials/qrs_onset |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/qrs/onset |
— |
/delineation/fiducials/r_peak |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/r_peak_index |
— |
/delineation/fiducials/qrs_offset |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/qrs/offset |
— |
/delineation/fiducials/j_point |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/j_index |
— |
/delineation/fiducials/t_offset |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/t/offset |
— |
/measurements/intervals/p_duration_ms |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/p_dur_ms |
P-wave delineation is the weakest endpoint in the repository's LUDB/QTDB benchmarks; P waves are frequently missed at short RR (<600 ms) or when the P wave overlaps the preceding T wave. |
/measurements/intervals/pr_interval_ms |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/pr_ms |
P-wave delineation is the weakest endpoint in the repository's LUDB/QTDB benchmarks; P waves are frequently missed at short RR (<600 ms) or when the P wave overlaps the preceding T wave. |
/measurements/intervals/qrs_duration_ms |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/qrs_ms |
Per-beat per-lead QRS width; the record-level consensus QRS can differ from per-lead widths near 100-120 ms. |
/measurements/intervals/qt_interval_ms |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/qt_ms |
Raw measured interval; it is not formal QT reporting and is not rate corrected. |
/measurements/intervals/tpeak_tend_ms |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/tpe_ms |
— |
/measurements/intervals/jt_interval_ms |
all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/jt_ms |
— |
/measurements/amplitudes/p_amplitude_uv |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/p_amp_mv |
LUDB distributes amplitude-normalised signals, so LUDB results cannot validate amplitudes. P-wave delineation is the weakest endpoint in the repository's LUDB/QTDB benchmarks; P waves are frequently missed at short RR (<600 ms) or when the P wave overlaps the preceding T wave. |
/measurements/amplitudes/r_amplitude_uv |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/r_amp_mv |
LUDB distributes amplitude-normalised signals, so LUDB results cannot validate amplitudes. |
/measurements/amplitudes/s_amplitude_uv |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/s_amp_mv |
LUDB distributes amplitude-normalised signals, so LUDB results cannot validate amplitudes. |
/measurements/amplitudes/st_80ms_uv |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/st_80ms_mv |
LUDB distributes amplitude-normalised signals, so LUDB results cannot validate amplitudes. Legacy native ST level at J+80 ms on the analysis signal; the opt-in hybrid ST sources do not replace this published value. |
/measurements/amplitudes/t_amplitude_uv |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/t_amp_mv |
LUDB distributes amplitude-normalised signals, so LUDB results cannot validate amplitudes. |
/measurements/amplitudes/u_amplitude_uv |
all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/u_amp_signed_mv |
LUDB distributes amplitude-normalised signals, so LUDB results cannot validate amplitudes. |
/measurements/areas/qrs_signed_area_uv_ms |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /beat_features/*/qrs_signed_area |
Trapezoid integral of the baseline-subtracted analysis signal over [QRS onset, QRS offset] inclusive; legacy unit mV x internal sample converted by 1e6 / internal_fs. |
/measurements/global/heart_rate_bpm |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /global_features/heart_rate_bpm |
— |
/measurements/global/frontal_qrs_axis_deg |
summary, all, debug | unvalidated (benchmark_validated) | — | — | /global_features/qrs_axis_deg |
not_applicable(input_mode_limited) for limited input. |
/measurements/global/qtc_bazett_ms |
all, debug | unvalidated (benchmark_validated) | — | — | /global_features/qtc_bazett_ms |
Formal QTc; not_applicable(input_mode_limited) for limited input. |
/measurements/global/qrs_wide_ms |
all, debug | unvalidated (benchmark_validated) | — | — | /global_features/qrs_wide_ms |
— |
Debug-only and capped quantities¶
| Quantity | Tier | Ceiling | Reason |
|---|---|---|---|
/debug/st_morphology |
internal_debug | known_problem | The four-class ST morphology was never validated and is anti-correlated with ischemia; it must not be used as ischemia evidence. |
/debug/st_pattern_class |
internal_debug | unvalidated | No stable definition or validation. |
/debug/st_t_confusion |
internal_debug | unvalidated | No stable definition or validation. |
st_hybrid_* |
internal_debug | unvalidated | Experimental opt-in ST bypass (22 legacy keys); may appear only in debug output. |
twelve_sl_* |
internal_debug | unvalidated | Vendor-style compatibility block (16 legacy keys); not part of the core schema. |
Top-level members¶
| Member | Required |
|---|---|
schema_version |
yes |
profile |
yes |
record_id |
yes |
intended_use |
no |
acquisition |
yes |
axes |
yes |
quality |
yes |
provenance |
yes |
delineation |
yes |
measurements |
yes |
artifacts |
yes |
metadata |
no |
debug |
no |
extensions |
no |
Absence states¶
Plain null (no stronger claim), unmeasurable(reason) and not_applicable(reason). Dense fields encode reasons as a whole-field {kind, reason}, a per-field default state, and sparse <beat_id>|<lead> maps that override it.