Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BVM use with or without supplemental O2 does not affect SpO2 recovery #679

Open
mrschick opened this issue Dec 30, 2024 · 1 comment
Open

Comments

@mrschick
Copy link
Contributor

mrschick commented Dec 30, 2024

CBA Settings

CBA Settings
force kat_breathing_BVMOxygen_Multiplier = 8;
force kat_breathing_SpO2_MultiplyNegative = 1.5;
force kat_breathing_SpO2_MultiplyPositive = 1.2;
force kat_breathing_SpO2_perfusion = true;
force kat_breathing_SpO2_PerfusionMultiplier = 1.2;

Description:

  • Using a BVM (with or without O2) on an unconscious and breathing patient with stable airways, does not affect SpO2 recovery in any way.
    Unless I'm mistaken, supplemental O2 should definitely shorten recovery time. BVM without O2 might help as well, due to the increased air volume that it forces into the lungs relative to unconscious breathing.

Steps to reproduce:

  1. Get yourself an AI guinea pig;
  2. Set PaO2 to ~35% with the Airways Zeus Module and then stabilize the AI's airways with a King LT;
  3. By monitoring the time taken for the SpO2 to reach a stable value across multiple repetitions (without, with BVM, with O2), you'll notice that the times are almost identical, even with kat_breathing_BVMOxygen_Multiplier = 8;;

Where did the issue occur?

  • Editor (Singleplayer)

Additional information:
The issue is caused by a combination of:

  • A unit's _status always being 100 regardless of airway state or respiration rate, leading to the calculated _output (which BVM use increases) not affecting _finalOutput;
    _finalOutput = _status + _output;
    if (_finalOutput > 100) then {
    _finalOutput = 100;
    };
  • _pALVo2 only being a reference for _pao2 to shift towards, but the difference between them not affecting the shift's speed;
    // Alveolar Gas equation. PALVO2 is largely impacted by Barometric Pressure and FiO2
    private _pALVo2 = ((_fio2 * (_baroPressure - 47)) - (_paco2 / _anerobicPressure)) max 1;
    // PaO2 cannot be higher than PALVO2 and comes from ventilation shortage multipled by RBC volume
    private _pao2 = (DEFAULT_PAO2 - ((DEFAULT_ECB / ((GET_BODY_FLUID(_unit) select 0) max 500)) * ((_demandVentilation - _actualVentilation) / 120))) min _pALVo2;

RPT log file:

mazinskihenry added a commit that referenced this issue Jan 27, 2025
**When merged this pull request will:**
- Adjust PaO2 Calculation to better move with PALVO2 changes
- Fixes issue #679 

### IMPORTANT

- [Development Guidelines](https://ace3.acemod.org/wiki/development/)
are read, understood and applied.
- Title of this PR uses our standard template `Component -
Add|Fix|Improve|Change|Make|Remove {changes}`.
@mrschick
Copy link
Contributor Author

mrschick commented Jan 29, 2025

Only got around to testing the new changes now with v3.0.5, unfortunately it seems to me that the issue is still present, as the repro still works.
I'm concluding that it's caused by L119 still capping the PaO2 shift by the same criteria (ignoring kat_breathing_BVMOxygen_Multiplier), which causes recovery to take the same time, regardless of _pao2 at L115 now being set to >300 when O2 is used.

_pao2 = if (_previousCyclePao2 != _pao2) then { ([ (_previousCyclePao2 - ((PAO2_MAX_CHANGE * EGVAR(breathing,SpO2_MultiplyNegative) * _arrestPerfusion) * _deltaT)) , (_previousCyclePao2 + ((PAO2_MAX_CHANGE * EGVAR(breathing,SpO2_MultiplyPositive)) * _deltaT))] select ((_previousCyclePao2 - _pao2) < 0)) } else { _pao2 };

@mazinskihenry mazinskihenry reopened this Jan 29, 2025
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

No branches or pull requests

2 participants