Skip to content

Add IMV episode detection function#128

Open
clifford-clif wants to merge 1 commit intoCommon-Longitudinal-ICU-data-Format:mainfrom
clifford-clif:feature/imv-episodes
Open

Add IMV episode detection function#128
clifford-clif wants to merge 1 commit intoCommon-Longitudinal-ICU-data-Format:mainfrom
clifford-clif:feature/imv-episodes

Conversation

@clifford-clif
Copy link
Copy Markdown

Summary

Adds a new utility function to identify discrete invasive mechanical ventilation (IMV) episodes from respiratory_support data.

Changes

  • New file: \clifpy/utils/imv_episodes.py\
  • New functions:
    • \detect_imv_episodes(): Identifies IMV episodes from respiratory_support data
    • \calculate_ventilator_free_days(): Calculates VFDs from episodes
  • Comprehensive test suite in \ ests/test_imv_episodes.py\

Episode Logic

Leverages the fact that observed ventilator measurements don't occur when the ventilator is in standby:

  1. IMV_start: First documented *_obs\ variable (OTHER than
    esp_rate_obs) where \device_category = 'IMV'\
  2. IMV_end: Last *_obs\ followed by ANY documentation of non-IMV respiratory data (any other \device_category\ OR \lpm_set > 0)

Relevant *_obs\ columns (excluding resp_rate_obs):

  • \ idal_volume_obs\
  • \plateau_pressure_obs\
  • \peak_inspiratory_pressure_obs\
  • \peep_obs\
  • \minute_vent_obs\
  • \mean_airway_pressure_obs\

Output

\\python
from clifpy.utils import detect_imv_episodes

episodes = detect_imv_episodes(respiratory_support_df)

Returns DataFrame:

hospitalization_id | imv_episode_id | imv_start_dttm | imv_end_dttm | duration_hours | has_tracheostomy

\\

VFD Calculation

\\python
from clifpy.utils import calculate_ventilator_free_days

vfds = calculate_ventilator_free_days(episodes, hospitalization_df, observation_window_days=28)

Returns: hospitalization_id | ventilator_free_days | total_imv_days | died

\\

Closes #127

Implements logic to identify discrete invasive mechanical ventilation episodes
from respiratory_support data. Leverages the fact that observed ventilator
measurements don't occur when the ventilator is in standby.

Episode logic:
- IMV_start: First *_obs variable (excluding resp_rate_obs) with device_category='IMV'
- IMV_end: Last *_obs followed by non-IMV documentation (other device or lpm_set>0)

New functions:
- detect_imv_episodes(): Returns DataFrame with one row per IMV episode
- calculate_ventilator_free_days(): Calculates VFDs from episodes

Closes Common-Longitudinal-ICU-data-Format#127
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add IMV episode detection function

1 participant