Legacy export → ECG Record crosswalk

How each value of the legacy to_dict export maps to an ECG Record address (ecg-record:<record_id>@<schema_version>#<pointer>). Source: schemas/ecg-record/1.1/crosswalk-legacy-v0.json, the same table the parity gates (tools/check_record_crosswalk.py, snapshot_regression.py) use.

Per-beat, per-lead fields

Record pointer Legacy member of beat_features[*] Transform Profiles
/delineation/fiducials/p_onset p/onset native_sample summary, all, debug
/delineation/fiducials/p_peak p/peak native_sample all, debug
/delineation/fiducials/p_offset p/offset native_sample summary, all, debug
/delineation/fiducials/qrs_onset qrs/onset native_sample summary, all, debug
/delineation/fiducials/r_peak r_peak_index native_sample summary, all, debug
/delineation/fiducials/qrs_offset qrs/offset native_sample summary, all, debug
/delineation/fiducials/j_point j_index native_sample summary, all, debug
/delineation/fiducials/t_offset t/offset native_sample summary, all, debug
/delineation/fiducials/t_onset t/onset native_sample all, debug
/delineation/fiducials/t_peak t/peak native_sample all, debug
/measurements/intervals/p_duration_ms p_dur_ms round_half_even summary, all, debug
/measurements/intervals/pr_interval_ms pr_ms round_half_even summary, all, debug
/measurements/intervals/qrs_duration_ms qrs_ms round_half_even summary, all, debug
/measurements/intervals/qt_interval_ms qt_ms round_half_even summary, all, debug
/measurements/intervals/tpeak_tend_ms tpe_ms round_half_even summary, all, debug
/measurements/intervals/jt_interval_ms jt_ms round_half_even all, debug
/measurements/amplitudes/p_amplitude_uv p_amp_mv mv_to_uv summary, all, debug
/measurements/amplitudes/r_amplitude_uv r_amp_mv mv_to_uv summary, all, debug
/measurements/amplitudes/s_amplitude_uv s_amp_mv mv_to_uv summary, all, debug
/measurements/amplitudes/st_80ms_uv st_80ms_mv mv_to_uv summary, all, debug
/measurements/amplitudes/t_amplitude_uv t_amp_mv mv_to_uv summary, all, debug
/measurements/amplitudes/u_amplitude_uv u_amp_signed_mv mv_to_uv all, debug
/measurements/areas/qrs_signed_area_uv_ms qrs_signed_area mv_internal_sample_to_uv_ms summary, all, debug

Record-level fields

Record pointer Legacy pointer Transform
/measurements/global/heart_rate_bpm /global_features/heart_rate_bpm round_half_even
/measurements/global/frontal_qrs_axis_deg /global_features/qrs_axis_deg round_half_even
/measurements/global/qtc_bazett_ms /global_features/qtc_bazett_ms round_half_even
/measurements/global/qrs_wide_ms /global_features/qrs_wide_ms round_half_even
/measurements/global/p_duration_ms /global_features/p_duration_ms round_half_even
/measurements/global/pr_interval_ms /global_features/pr_ms round_half_even
/measurements/global/qrs_duration_ms /global_features/qrs_ms round_half_even
/measurements/global/qt_interval_ms /global_features/qt_ms round_half_even
/measurements/global/qtc_fridericia_ms /global_features/qtc_fridericia_ms round_half_even
/measurements/global/qtc_framingham_ms /global_features/qtc_framingham_ms round_half_even
/measurements/global/qtc_hodges_ms /global_features/qtc_hodges_ms round_half_even
/measurements/global/p_axis_deg /global_features/p_axis_deg round_half_even
/measurements/global/t_axis_deg /global_features/t_axis_deg round_half_even
/measurements/global/qrs_t_angle_deg /global_features/qrs_t_angle_deg round_half_even
/measurements/global/atrial_rate_bpm /global_features/atrial_rate_bpm round_half_even
/measurements/global/heart_rate_min_bpm /global_features/heart_rate_min_bpm round_half_even
/measurements/global/heart_rate_max_bpm /global_features/heart_rate_max_bpm round_half_even
/measurements/global/rr_mean_ms /global_features/rr_mean_ms round_half_even
/measurements/global/rr_sd_ms /global_features/rr_sd_ms round_half_even
/measurements/global/rmssd_ms /global_features/rmssd_ms round_half_even
/measurements/global/qt_dispersion_ms /global_features/qt_dispersion_ms round_half_even
/axes/beats/*/r_sample /beats/*/r_index native_sample
/quality/record/grade /metadata/record_quality/record_grade identity
/quality/record/status /metadata/record_quality/record_grade grade_in_Q0_Q1_usable_else_limited
/quality/leads/<lead>/status /quality/<slot>/reliable true_usable_else_limited(reason quality_gate)
/provenance/internal_sample_rate_hz /fs float
/provenance/mains_frequency_hz /metadata/mains_frequency_hz identity
/debug/legacy_metadata/<key> /metadata/<key> json_safe

Transforms

  • native_sample: round_half_even(v * acquisition.sample_rate_hz / legacy fs); a result outside [0, sample_count) -> unmeasurable(sample_outside_acquisition)
  • round_half_even: round_half_even(v)
  • mv_to_uv: round_half_even(v * 1000)
  • mv_internal_sample_to_uv_ms: round_half_even(v * 1_000_000 / legacy fs)

Legacy sections without a record 1.0 equivalent

  • fs: mapped: /provenance/internal_sample_rate_hz (engine rate); native rate is /acquisition/sample_rate_hz
  • quality: partially mapped: per-lead reliability -> /quality/leads//status; detailed quality diagnostics are not in record 1.0
  • beats: mapped: beat axis /axes/beats (ids b0001.., r_sample in native samples)
  • beat_features: partially mapped: the 18 summary + 2 all-profile per-beat/per-lead fields above; the other legacy per-beat keys are unpublished in 1.0 (debug/provenance/implementation per document 02 section C)
  • representative_leads: not in record 1.0: implementation intermediate (document 02 section B); legacy consumers read it through ecgfeat.compat.export_v0 during the compatibility window
  • groups: not in record 1.0: implementation intermediate
  • global_features: partially mapped: heart_rate_bpm, qrs_axis_deg, qtc_bazett_ms, qrs_wide_ms; other global values are unpublished in 1.0
  • p_wave_assessments: not in record 1.0: intermediate assessment (document 02 section A.1)
  • metadata: partially mapped: record_quality grade, mains_frequency_hz, and (debug profile) input_contract, limited_lead_capabilities, refinement_config; pacing/QT policy metadata becomes structured policy provenance in the staged pipeline
  • interpretation: removed: interpretation document (separate schema/distribution)
  • clinical_interpretation: removed: interpretation document (separate schema/distribution)
  • statement_engine: removed: interpretation document (separate schema/distribution)
  • rhythm_inputs: not in record 1.0: implementation input for interpretation (document 02 section B)
  • morphology_inputs: not in record 1.0: implementation input for interpretation (document 02 section B)
  • reference_metadata: not in record 1.0: provenance of the legacy exporter