Comments (8)
Measuring direct tracings show that systolic features (upstroke to dicrotic notch) ~ 23% of cardiac cycle in bradycardia ~ 44 bpm (sample image in Atlas of Cardiovascular Monitoring by Mark, 1998, p.94). This would accurately prevent bradycardia from elongating the entire waveform uncontrollably.
Consider modeling both femoral and aortic pressures as options present in hemodynamics panel? But would need to delay the dicrotic notch compared to the aortic tracing... For example:
Judging by the rough typical model of systole being ~33% of the cardiac cycle; this could be the target in normocardia unless a better implementable model exists.
- Systolic-diastolic ratio for tachycardia?
from infirmary-integrated.
If modeling both aortic arch and femoral artery... also consider changes in initiation of systole (timer delay). Noted in graphic from Mark, 1998 but is clearer in
from Esper, S. A., & Pinsky, M. R. (2014). Arterial waveform analysis. Best Practice & Research Clinical Anaesthesiology, 28(4), 363–380. https://doi.org/10.1016/j.bpa.2014.08.002
from infirmary-integrated.
Can also consider modeling based on various factors included in:
from Alastruey, J., Charlton, P. H., Bikia, V., Paliakaite, B., Hametner, B., Bruno, R. M., Mulder, M. P., Vennin, S., Piskin, S., Khir, A. W., Guala, A., Mayer, C. C., Mynard, J., Hughes, A. D., Segers, P., & Westerhof, B. E. (2023). Arterial pulse wave modeling and analysis for vascular-age studies: A review from VascAgeNet. American Journal of Physiology-Heart and Circulatory Physiology, 325(1), H1–H29. https://doi.org/10.1152/ajpheart.00705.2022
from infirmary-integrated.
Best way to model (for both bradycardia, tachycardia, etc) would be to split systolic and diastolic modeling routines, to draw systole as a finite (plotted!) waveform, complete the diacrotic notch using finite plotting, and then model the diastolic runoff as a geometric function with a consistent downward slope that ends at 0 mmHg. Then, on the following systole (regardless of heart rate), the next triggered beat could draw over the diastolic runoff.
This would work for arterial waveforms and plethysmography! And would dynamically draw accurately without clipping for heart rates up to ~170 bpm (assuming systolic time ~0.35 per tracings from Alastruey et al., 2023). Potential clipping (stacking systolic upstrokes/downstrokes) would still appear realistic but without diastolic runoff (as diastolic fill time would be reducing as well, systolic amplitude would drop per current modeling system).
Should also reference this for arterial and pulse oximetry timings:
from
And place dicrotic notch at 0.33 * HR and at .66 * SBP (maximum amplitude) per "approximately one-third of the heart period, and around one-third down the descending part of the wave (Fig. 5A and Fig. 6A; ages, 30–39 and 40–49 yr)." (Alastruey et al., 2023).
from infirmary-integrated.
Thoughts for implementation:
- Modify physiology events to differentiate between systole and diastole for triggering
- Rename Cardiac_Ventricular_Mechanical to Cardiac_Ventricular_Systole
- Add Cardiac_Ventricular_Diastole
- Modify physiology timers to allow for timing of systole versus diastole
- Rename TimerCardiac_Ventricular_Mechanical to TimerCardiac_Ventricular_Systole
- Add TimerCardiac_Ventricular_Diastole
- Sift through current modeling to separate systole from diastole
- For drawing of pressure waveforms
- On systole, time the expected length of systole (.33 * HR)
- Start the timer to trigger diastole after length_of_systole
- Draw all systole pressure waveforms (until dicrotic notch)
- May need to account for delay in distal pressure monitoring (e.g. time delay in femoral readings compared to aortic readings)
- On diastole, trigger diastolic event
- Draw remaining pressure waveforms including dicrotic notch to diastolic runoff
from infirmary-integrated.
This is actually true for all plotted waveforms (e.g. idioventricular rhythms).
To balance development time/effort against functional benefits, going to circumvent the modeling with some hard-coded time thresholds. Rather than model systole and diastole triggering as mentioned in #197 (comment) it would reap bigger rewards quicker to just clamp draw times to realistic thresholds.
This is especially true for bradycardias which currently look horrendous with plotted waveforms stretching across 5 seconds.
from infirmary-integrated.
Plan for implementation
- Implement constant in plotted waveforms for declaring systolic time
- Implement in Waveform Editor
- Ensure pipeline propagates the value through Waveform Dictionary Builder to Waveform Plots
- Calculate ratio of systolic time in waveform plot versus patient's systolic time
- Calculate accurate approximation of systolic time for patient for all cardiac rates (brady, normo, tachy)
- Edit all pulsatile and/or ECG waveforms w/ systolic dependence re: timing/stretching and rebuild waveform dictionary to declare systolic times
- ABP_Default.iiwf
- CVP_Atrioventricular.iiwf
- CVP_Ventricular.iiwf
- ECG_Complex_Idioventricular.iiwf
- ECG_Complex_VT.iiwf
- ECG_CPR_Artifact.iiwf
-
IABP_ABP_Default.iiwf -
IABP_ABP_Ectopic.iiwf - ICP_HighCompliance.iiwf
- ICP_LowCompliance.iiwf
- PA_Default.iiwf
- PCW_Default.iiwf
- RV_Default.iiwf
- SpO2_Default.iiwf
- Ensure routines use SystoleTime in calculations for stretching for:
- ABP_Default.iiwf
- CVP_Atrioventricular.iiwf
- CVP_Ventricular.iiwf
- ECG_Complex_Idioventricular.iiwf
- ECG_Complex_VT.iiwf
- ECG_CPR_Artifact.iiwf
- IABP_ABP_Default.iiwf
- IABP_ABP_Ectopic.iiwf
-
IAP_Default.iiwf - ICP_HighCompliance.iiwf
- ICP_LowCompliance.iiwf
- PA_Default.iiwf
- PCW_Default.iiwf
- RV_Default.iiwf
- SpO2_Default.iiwf
- Give a SystoleTime of 0 to non-applicable waveforms:
- ECG_Defibrillation.iiwf
- ECG_Pacemaker.iiwf
- EFM_Contraction.iiwf
- ETCO2_Default.iiwf
- IAP_Default.iiwf
- IABP_ABP_Nonpulsatile.iiwf
- IABP_Balloon_Default.iiwf
- Ensure non-applicable waveforms are plotted based on other factors (e.g. HR, RR intervals)
- ECG_Defibrillation.iiwf
- ECG_Pacemaker.iiwf
- EFM_Contraction.iiwf
- ETCO2_Default.iiwf
- IAP_Default.iiwf
- IABP_ABP_Nonpulsatile.iiwf
- IABP_Balloon_Default.iiwf
- Solve #188 (from which systolic times are calculated in tachy/brady situations!)
from infirmary-integrated.
Implemented in 66511cb
from infirmary-integrated.
Related Issues (20)
- Expand Patient's Chart Functionality: Vital Signs & Results (e.g. Labs) HOT 2
- Default QRS Width for Cardiac Rhythms HOT 3
- Tracing Realism: A-Fib & A-Flutter HOT 1
- Tracing Realism: SpO2/ABP on Ectopic Beats HOT 2
- IABP Timing Realism: Irregular cardiac rhythm not in sync w/ IABP balloon HOT 2
- IABP: Not running on pulseless rhythms w/ organized electrical activity HOT 3
- DeviceDefib: Add Viewboxes around Textblocks? HOT 1
- Defibrillator: Sync Mode Displays Tick Marks Over R Wave
- IABP Balloon Timing Early
- IABP Timing Functionality & Realism
- Issue with installing infirmary-integrated on MacBook Air M1 - Assistance needed (Beginner) HOT 2
- MAR Feature Request HOT 1
- Ability to Hide Window Decorations in Devices (e.g. Monitor, Defib, 12L ECG) HOT 2
- CVP Waveform Choppy HOT 2
- PA Waveform w/ Right Atrial Placement (CVP) Not Drawing/Scaling Correctly HOT 2
- Auto-Scaling Strips Drawing Waveforms Too High HOT 1
- Add Implanted Pacemaker Modeling (IPPM)
- 12 Lead ECG Crashing HOT 5
- Convert Plotted ECG Waveforms to Geometrically Drawn HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from infirmary-integrated.