Commit 0c39f529 authored by Jeff Webb's avatar Jeff Webb
Browse files

Lots of respiratory documentation updates.

Updated current vs initial patient logic in respiratory system.
Added a spirometry scenario and removed similar compliance validation scenario.
parent 4c7beabc
This diff is collapsed.
......@@ -6874,4 +6874,74 @@ on Severe Disability and Mortality After Head Injury},
pages={78--99},
year={2005},
publisher={Respiratory Care}
}
\ No newline at end of file
}
@article{barreiro2004approach,
title={An approach to interpreting spirometry},
author={Barreiro, Timothy J and Perillo, Irene and others},
journal={American family physician},
volume={69},
number={5},
pages={1107--1116},
year={2004},
publisher={Citeseer}
}
@article{aguirre2018lung,
title={Lung volumes and lung volume recruitment in ARDS: a comparison between supine and prone position},
author={Aguirre-Bermeo, Hernan and Turella, Marta and Bitondo, Maddalena and Grandjean, Juan and Italiano, Stefano and Festa, Olimpia and Mor{\'a}n, Indalecio and Mancebo, Jordi},
journal={Annals of intensive care},
volume={8},
number={1},
pages={25},
year={2018},
publisher={SpringerOpen}
}
@article{arndt1995linear,
title={A linear approximation of Brody's equation to predict oxygen consumption in adult humans},
author={Arndt, George A and Goulson, Daniel and Prielipp, Richard C and Stock, M Christine},
journal={Journal of clinical monitoring},
volume={11},
number={3},
pages={165--167},
year={1995},
publisher={Springer}
}
@article{bikker2008end,
title={End-expiratory lung volume during mechanical ventilation: a comparison with reference values and the effect of positive end-expiratory pressure in intensive care unit patients with different lung conditions},
author={Bikker, Ido G and van Bommel, Jasper and Miranda, Dinis Reis and Bakker, Jan and Gommers, Diederik},
journal={Critical Care},
volume={12},
number={6},
pages={R145},
year={2008},
publisher={BioMed Central}
}
@book{brunner2012pulmonary,
title={Pulmonary function indices in critical care patients},
author={Brunner, Josef X and Wolff, Gunther},
year={2012},
publisher={Springer Science \& Business Media}
}
@article{ibanez1982normal,
title={Normal values of functional residual capacity in the sitting and supine positions},
author={Ibanez, J and Raurich, JM},
journal={Intensive care medicine},
volume={8},
number={4},
pages={173--177},
year={1982},
publisher={Springer}
}
@misc{brunner2019lung,
title={Lung simulators for medical training: how should they be set to represent clinical reality?},
url={https://www.linkedin.com/pulse/lung-simulators-medical-training-how-should-set-clinical-brunner/},
journal={LinkedIn},
author={Brunner, Josef X.},
year={2019}
}
......@@ -1143,11 +1143,11 @@ void Respiratory::RespiratoryDriver()
//This is a piecewise function that plateaus at the Tidal Volume equal to 1/2 * Vital Capacity
//The Respiration Rate will make up for the Alveoli Ventilation difference
double dHalfVitalCapacity_L = m_data.GetCurrentPatient().GetVitalCapacity(VolumeUnit::L) / 2;
double dHalfVitalCapacity_L = m_data.GetInitialPatient().GetVitalCapacity(VolumeUnit::L) / 2;
dTargetTidalVolume_L = MIN(dTargetTidalVolume_L, dHalfVitalCapacity_L);
//Map the Target Tidal Volume to the Driver
double TargetVolume_L = m_data.GetCurrentPatient().GetFunctionalResidualCapacity(VolumeUnit::L) + dTargetTidalVolume_L;
double TargetVolume_L = m_data.GetInitialPatient().GetFunctionalResidualCapacity(VolumeUnit::L) + dTargetTidalVolume_L;
m_PeakInspiratoryPressure_cmH2O = VolumeToDriverPressure(TargetVolume_L);
//There's a maximum force the driver can try to achieve
m_PeakInspiratoryPressure_cmH2O = MAX(m_PeakInspiratoryPressure_cmH2O, m_MaxDriverPressure_cmH2O);
......@@ -1545,7 +1545,7 @@ void Respiratory::ConsciousRespiration()
releasePeriod_s = fi->GetReleasePeriod().GetValue(TimeUnit::s);
}
double TargetVolume_L = m_data.GetCurrentPatient().GetFunctionalResidualCapacity(VolumeUnit::L) + m_data.GetCurrentPatient().GetInspiratoryCapacity(VolumeUnit::L) * pressureFraction;
double TargetVolume_L = m_data.GetInitialPatient().GetFunctionalResidualCapacity(VolumeUnit::L) + m_data.GetInitialPatient().GetInspiratoryCapacity(VolumeUnit::L) * pressureFraction;
m_PeakInspiratoryPressure_cmH2O = VolumeToDriverPressure(TargetVolume_L);
double totalPeriod = risePeriod_s + holdPeriod_s + releasePeriod_s;
......@@ -1666,6 +1666,12 @@ void Respiratory::CalculateVitalSigns()
GetAlveolarDeadSpace().SetValue(AlveolarDeadSpace_L, VolumeUnit::L);
GetPhysiologicDeadSpace().SetValue(AnatomicDeadSpace_L + AlveolarDeadSpace_L, VolumeUnit::L);
//Aaron - Why is this different than the m_Lungs volume when there is there are alveolar dead space volumes?-------------
double Alveoli_L = m_LeftAlveoli->GetNextVolume(VolumeUnit::L) + m_RightAlveoli->GetNextVolume(VolumeUnit::L);
totalLungVolume_L = Alveoli_L + AnatomicDeadSpace_L + AlveolarDeadSpace_L;
GetTotalLungVolume().SetValue(totalLungVolume_L, VolumeUnit::L);
//Remove this when it's figured out--------------------------------------------------------------------------------------
double tracheaFlow_L_Per_s = m_MouthToCarina->GetNextFlow().GetValue(VolumePerTimeUnit::L_Per_s);
double previousInspiratoryFlow_L_Per_s = GetInspiratoryFlow(VolumePerTimeUnit::L_Per_s);
GetInspiratoryFlow().SetValue(tracheaFlow_L_Per_s, VolumePerTimeUnit::L_Per_s);
......@@ -1953,7 +1959,7 @@ double Respiratory::VolumeToDriverPressure(double TargetVolume_L)
double totalCompliance_L_Per_cmH2O = 1.0 / (1.0 / leftHealthyChestWallCompliance_L_Per_cmH2O + 1.0 / leftHealthyLungCompliance_L_Per_cmH2O) +
1.0 / (1.0 / rightHealthyChestWallCompliance_L_Per_cmH2O + 1.0 / rightHealthyLungCompliance_L_Per_cmH2O);
double driverPressure_cmH2O = -(TargetVolume_L - m_data.GetCurrentPatient().GetFunctionalResidualCapacity(VolumeUnit::L)) / totalCompliance_L_Per_cmH2O;
double driverPressure_cmH2O = -(TargetVolume_L - m_data.GetInitialPatient().GetFunctionalResidualCapacity(VolumeUnit::L)) / totalCompliance_L_Per_cmH2O;
return driverPressure_cmH2O;
}
......@@ -3109,6 +3115,10 @@ void Respiratory::ModifyDriverPressure()
//Just reduce the tidal volume by the percentage given
m_DriverPressure_cmH2O = m_DriverPressure_cmH2O * (1 - dyspneaSeverity);
#ifdef DEBUG
m_data.GetDataTrack().Probe("fatigueFactor", 1 - dyspneaSeverity);
#endif
}
//--------------------------------------------------------------------------------------------------
......@@ -3117,47 +3127,79 @@ void Respiratory::ModifyDriverPressure()
//--------------------------------------------------------------------------------------------------
void Respiratory::Debugging(SEFluidCircuit& RespirationCircuit)
{
m_data.GetDataTrack().Probe(RespirationCircuit);
double leftAlveoliPressure = m_LeftAlveoli->GetNextPressure(PressureUnit::cmH2O);
double leftAlveoliVolume = m_LeftAlveoli->GetNextVolume(VolumeUnit::L);
double leftPleuralPressure = m_LeftPleural->GetNextPressure(PressureUnit::cmH2O);
double leftPleuralVolume = m_LeftPleural->GetNextVolume(VolumeUnit::L);
double leftFlow = m_LeftAlveolarDeadSpaceToLeftAlveoli->GetNextFlow(VolumePerTimeUnit::L_Per_s);
double leftChestWallCompliance_L_Per_cmH2O = m_LeftPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O);
//m_data.GetDataTrack().Probe(RespirationCircuit);
//
//double leftAlveoliPressure = m_LeftAlveoli->GetNextPressure(PressureUnit::cmH2O);
//double leftAlveoliVolume = m_LeftAlveoli->GetNextVolume(VolumeUnit::L);
//double leftPleuralPressure = m_LeftPleural->GetNextPressure(PressureUnit::cmH2O);
//double leftPleuralVolume = m_LeftPleural->GetNextVolume(VolumeUnit::L);
//double leftFlow = m_LeftAlveolarDeadSpaceToLeftAlveoli->GetNextFlow(VolumePerTimeUnit::L_Per_s);
//double leftChestWallCompliance_L_Per_cmH2O = m_LeftPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O);
double leftLungCompliance_L_Per_cmH2O = m_LeftAlveoliToLeftPleuralConnection->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O);
double rightAlveoliPressure = m_RightAlveoli->GetNextPressure(PressureUnit::cmH2O);
double rightAlveoliVolume = m_RightAlveoli->GetNextVolume(VolumeUnit::L);
double rightPleuralPressure = m_RightPleural->GetNextPressure(PressureUnit::cmH2O);
double rightPleuralVolume = m_RightPleural->GetNextVolume(VolumeUnit::L);
double rightFlow = m_RightAlveolarDeadSpaceToRightAlveoli->GetNextFlow(VolumePerTimeUnit::L_Per_s);
double rightChestWallCompliance_L_Per_cmH2O = m_RightPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O);
//double rightAlveoliPressure = m_RightAlveoli->GetNextPressure(PressureUnit::cmH2O);
//double rightAlveoliVolume = m_RightAlveoli->GetNextVolume(VolumeUnit::L);
//double rightPleuralPressure = m_RightPleural->GetNextPressure(PressureUnit::cmH2O);
//double rightPleuralVolume = m_RightPleural->GetNextVolume(VolumeUnit::L);
//double rightFlow = m_RightAlveolarDeadSpaceToRightAlveoli->GetNextFlow(VolumePerTimeUnit::L_Per_s);
//double rightChestWallCompliance_L_Per_cmH2O = m_RightPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O);
double rightLungCompliance_L_Per_cmH2O = m_RightAlveoliToRightPleuralConnection->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O);
m_data.GetDataTrack().Probe("leftAlveoliPressure", leftAlveoliPressure);
m_data.GetDataTrack().Probe("leftAlveoliVolume", leftAlveoliVolume);
m_data.GetDataTrack().Probe("leftPleuralPressure", leftPleuralPressure);
m_data.GetDataTrack().Probe("leftPleuralVolume", leftPleuralVolume);
m_data.GetDataTrack().Probe("leftFlow", leftFlow);
m_data.GetDataTrack().Probe("leftChestWallCompliance_L_Per_cmH2O", leftChestWallCompliance_L_Per_cmH2O);
m_data.GetDataTrack().Probe("leftLungCompliance_L_Per_cmH2O", leftLungCompliance_L_Per_cmH2O);
m_data.GetDataTrack().Probe("rightAlveoliPressure", rightAlveoliPressure);
m_data.GetDataTrack().Probe("rightAlveoliVolume", rightAlveoliVolume);
m_data.GetDataTrack().Probe("rightPleuralPressure", rightPleuralPressure);
m_data.GetDataTrack().Probe("rightPleuralVolume", rightPleuralVolume);
m_data.GetDataTrack().Probe("rightFlow", rightFlow);
m_data.GetDataTrack().Probe("rightChestWallCompliance_L_Per_cmH2O", rightChestWallCompliance_L_Per_cmH2O);
m_data.GetDataTrack().Probe("rightLungCompliance_L_Per_cmH2O", rightLungCompliance_L_Per_cmH2O);
double AmbientPresure = 1033.23; // = 1 atm
m_data.GetDataTrack().Probe("LeftRelativePleuralPressure_cmH2O", leftPleuralPressure - AmbientPresure);
m_data.GetDataTrack().Probe("RightRelativePleuralPressure_cmH2O", rightPleuralPressure - AmbientPresure);
double leftSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / leftChestWallCompliance_L_Per_cmH2O + 1.0 / leftLungCompliance_L_Per_cmH2O);
double rightSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / rightChestWallCompliance_L_Per_cmH2O + 1.0 / rightLungCompliance_L_Per_cmH2O);
double totalCompliance_L_Per_cmH2O = leftSideCompliance_L_Per_cmH2O + rightSideCompliance_L_Per_cmH2O;
m_data.GetDataTrack().Probe("totalCompliance_L_Per_cmH2O", totalCompliance_L_Per_cmH2O);
//m_data.GetDataTrack().Probe("leftAlveoliPressure", leftAlveoliPressure);
//m_data.GetDataTrack().Probe("leftAlveoliVolume", leftAlveoliVolume);
//m_data.GetDataTrack().Probe("leftPleuralPressure", leftPleuralPressure);
//m_data.GetDataTrack().Probe("leftPleuralVolume", leftPleuralVolume);
//m_data.GetDataTrack().Probe("leftFlow", leftFlow);
//m_data.GetDataTrack().Probe("leftChestWallCompliance_L_Per_cmH2O", leftChestWallCompliance_L_Per_cmH2O);
//m_data.GetDataTrack().Probe("leftLungCompliance_L_Per_cmH2O", leftLungCompliance_L_Per_cmH2O);
//m_data.GetDataTrack().Probe("rightAlveoliPressure", rightAlveoliPressure);
//m_data.GetDataTrack().Probe("rightAlveoliVolume", rightAlveoliVolume);
//m_data.GetDataTrack().Probe("rightPleuralPressure", rightPleuralPressure);
//m_data.GetDataTrack().Probe("rightPleuralVolume", rightPleuralVolume);
//m_data.GetDataTrack().Probe("rightFlow", rightFlow);
//m_data.GetDataTrack().Probe("rightChestWallCompliance_L_Per_cmH2O", rightChestWallCompliance_L_Per_cmH2O);
//m_data.GetDataTrack().Probe("rightLungCompliance_L_Per_cmH2O", rightLungCompliance_L_Per_cmH2O);
//double AmbientPresure = 1033.23; // = 1 atm
//m_data.GetDataTrack().Probe("LeftRelativePleuralPressure_cmH2O", leftPleuralPressure - AmbientPresure);
//m_data.GetDataTrack().Probe("RightRelativePleuralPressure_cmH2O", rightPleuralPressure - AmbientPresure);
//double leftSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / leftChestWallCompliance_L_Per_cmH2O + 1.0 / leftLungCompliance_L_Per_cmH2O);
//double rightSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / rightChestWallCompliance_L_Per_cmH2O + 1.0 / rightLungCompliance_L_Per_cmH2O);
//double totalCompliance_L_Per_cmH2O = leftSideCompliance_L_Per_cmH2O + rightSideCompliance_L_Per_cmH2O;
//m_data.GetDataTrack().Probe("totalCompliance_L_Per_cmH2O", totalCompliance_L_Per_cmH2O);
//Parameter table outputs for methodology report
double leftAlveolarDeadSpace_L = 0.0;
double rightAlveolarDeadSpace_L = 0.0;
if (m_LeftAlveolarDeadSpace->HasNextVolume())
leftAlveolarDeadSpace_L = m_LeftAlveolarDeadSpace->GetNextVolume(VolumeUnit::L);
if (m_RightAlveolarDeadSpace->HasNextVolume())
rightAlveolarDeadSpace_L = m_RightAlveolarDeadSpace->GetNextVolume(VolumeUnit::L);
double totalAlveolarDeadSpace_L = leftAlveolarDeadSpace_L + rightAlveolarDeadSpace_L;
m_data.GetDataTrack().Probe("totalAlveolarDeadSpace_L", totalAlveolarDeadSpace_L);
double airwayResistance_cmH2O_s_Per_L = m_MouthToCarina->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L);
m_data.GetDataTrack().Probe("airwayResistance_cmH2O_s_Per_L", airwayResistance_cmH2O_s_Per_L);
double rightBronchiResistance_cmH2O_s_Per_L = m_CarinaToRightAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L);
double leftBronchiResistance_cmH2O_s_Per_L = m_CarinaToLeftAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L);
double averageBronchiResistance_cmH2O_s_Per_L = (rightBronchiResistance_cmH2O_s_Per_L + leftBronchiResistance_cmH2O_s_Per_L) / 2.0;
m_data.GetDataTrack().Probe("averageBronchiResistance_cmH2O_s_Per_L", averageBronchiResistance_cmH2O_s_Per_L);
double averageLungCompliance_L_Per_cmH2O = (rightLungCompliance_L_Per_cmH2O + leftLungCompliance_L_Per_cmH2O) / 2.0;
m_data.GetDataTrack().Probe("averageLungCompliance_L_Per_cmH2O", averageLungCompliance_L_Per_cmH2O);
double inspiratoryExpiratoryRatio = m_InspiratoryRiseFraction / (1.0 - m_InspiratoryRiseFraction);
m_data.GetDataTrack().Probe("inspiratoryExpiratoryRatio", inspiratoryExpiratoryRatio);
double diffusionSurfaceArea_m2 = m_data.GetCurrentPatient().GetAlveoliSurfaceArea(AreaUnit::m2);
m_data.GetDataTrack().Probe("diffusionSurfaceArea_m2", diffusionSurfaceArea_m2);
double rightPulmonaryCapillaryResistance_cmH2O_s_Per_L = m_RightPulmonaryCapillary->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L);
double leftPulmonaryCapillaryResistance_cmH2O_s_Per_L = m_LeftPulmonaryCapillary->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L);
double averagePulmonaryCapillaryResistance_cmH2O_s_Per_L = (rightPulmonaryCapillaryResistance_cmH2O_s_Per_L + leftPulmonaryCapillaryResistance_cmH2O_s_Per_L) / 2.0;
m_data.GetDataTrack().Probe("averagePulmonaryCapillaryResistance_cmH2O_s_Per_L", averagePulmonaryCapillaryResistance_cmH2O_s_Per_L);
}
......@@ -239,11 +239,6 @@ TensionPneumothoraxClosedVaried=ActionEventPlotter NoGrid Header=RightLungPulmon
TensionPneumothoraxClosedVaried=ActionEventPlotter NoGrid Header=OxygenSaturation VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=TensionPneumothoraxClosedVaried_O2Sat.jpg
TensionPneumothoraxClosedVaried=ActionEventPlotter NoGrid Header=MeanArterialPressure(mmHg) VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=TensionPneumothoraxClosedVaried_MAP.jpg
TensionPneumothoraxClosedVaried=ActionEventPlotter Header=TidalVolume(mL) VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents LegendOnly Title=TensionPneumothoraxClosedVariedLegend ImageDimensions=1720,150
TensionPneumothoraxBilateral=ActionEventPlotter NoGrid Header=TotalLungVolume(L) VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=TensionPneumothoraxBilateral_TotalLungVolume.jpg
TensionPneumothoraxBilateral=ActionEventPlotter NoGrid Header=TranspulmonaryPressure(cmH2O) VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=TensionPneumothoraxBilateral_TranspulmonaryPressure.jpg
TensionPneumothoraxBilateral=ActionEventPlotter NoGrid Header=OxygenSaturation VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=TensionPneumothoraxBilateral_O2Sat.jpg
TensionPneumothoraxBilateral=ActionEventPlotter NoGrid Header=MeanArterialPressure(mmHg) VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=TensionPneumothoraxBilateral_MAP.jpg
TensionPneumothoraxBilateral=ActionEventPlotter Header=TidalVolume(mL) VerificationDir=patient OutputOverride=./docs/html/plots/Respiratory/ NoEvents LegendOnly Title=TensionPneumothoraxBilateralLegend ImageDimensions=1720,150
EsophagealIntubation=ActionEventPlotter NoGrid Header=TotalLungVolume(L) VerificationDir=equipment OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=EsophagealIntubation_TotalLungVolume.jpg
EsophagealIntubation=ActionEventPlotter NoGrid Header=Stomach-InFlow(L/min) VerificationDir=equipment OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=EsophagealIntubation_StomachInflow.jpg
EsophagealIntubation=ActionEventPlotter NoGrid Header=OxygenSaturation VerificationDir=equipment OutputOverride=./docs/html/plots/Respiratory/ NoEvents RemoveLegends OutputFilename=EsophagealIntubation_O2Sat.jpg
......
......@@ -170,7 +170,7 @@ miscellaneous/HouseFireSmoke.json = ScenarioTest
miscellaneous/ImpairedAlveolarExchangeFraction.json = ScenarioTest
miscellaneous/ImpairedAlveolarExchangeSurfaceArea.json = ScenarioTest
miscellaneous/MultiDrug.json = ScenarioTest
miscellaneous/RespiratoryComplianceValidation.json = ScenarioTest
miscellaneous/SpirometryComparison.json = ScenarioTest
miscellaneous/SpirometryHealthy.json = ScenarioTest
miscellaneous/SpirometryPulmonaryFibrosis.json = ScenarioTest
miscellaneous/TBIandDrugs.json = ScenarioTest
......
{
"Name": "Respiratory Compliance Validation",
"Description": "Produce Lung-Thorax Relaxation Pressure Curve (i.e., lung volume vs intrapulmonary pressure curves) for healthy and diseased lungs.",
"Name": "Spirometry",
"Description": "Perform a spirometry breath.",
"StartType": { "PatientConfiguration": { "PatientFile": "StandardMale.json" }},
"DataRequestManager":
{
......@@ -27,47 +27,51 @@
{ "DecimalFormat": { }, "PropertyName": "InspiratoryReserveVolume", "Unit": "mL" },
{ "DecimalFormat": { }, "PropertyName": "ResidualVolume", "Unit": "mL" },
{ "DecimalFormat": { }, "PropertyName": "TotalLungCapacity", "Unit": "mL" },
{ "DecimalFormat": { }, "PropertyName": "VitalCapacity", "Unit": "mL" }
{ "DecimalFormat": { }, "PropertyName": "VitalCapacity", "Unit": "mL" },
{ "DecimalFormat": { "Precision": 6 }, "Category": "Physiology", "PropertyName": "ExpiratoryFlow", "Unit": "L/s"}
]
},
"AnyAction":
[
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 30.0, "Unit": "s" }}}},
[
{ "PatientAction": { "ConsciousRespiration": { "Command": [
{ "ForcedExhale": {
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.2 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } ,
"ReleasePeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } } },
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.0 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } },
{ "ForcedInhale": {
"InspiratoryCapacityFraction": { "Scalar0To1": { "Value": 1.2 } },
"InhalePeriod": { "ScalarTime": { "Value": 20.0, "Unit": "s" } } ,
"ReleasePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } }
"InspiratoryCapacityFraction": { "Scalar0To1": { "Value": 1.0 } },
"InhalePeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } ,
"HoldPeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } } },
{ "ForcedExhale": {
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.0 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } }
] } } },
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 1.5, "Unit": "min" }}}},
{ "PatientAction": { "ChronicObstructivePulmonaryDiseaseExacerbation":
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 1.0, "Unit": "min" }}}},
{ "PatientAction": { "ChronicObstructivePulmonaryDiseaseExacerbation":
{
"BronchitisSeverity": { "Scalar0To1": { "Value": 0.9 }},
"EmphysemaSeverity": { "Scalar0To1": { "Value": 0.9 }}
"BronchitisSeverity": { "Scalar0To1": { "Value": 0.6 }},
"EmphysemaSeverity": { "Scalar0To1": { "Value": 0.6 }}
}}
},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 30.0, "Unit": "s" }}}},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 10.0, "Unit": "s" }}}},
{ "PatientAction": { "ConsciousRespiration": { "Command": [
{ "ForcedExhale": {
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.2 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } ,
"ReleasePeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } } },
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.0 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } },
{ "ForcedInhale": {
"InspiratoryCapacityFraction": { "Scalar0To1": { "Value": 1.2 } },
"InhalePeriod": { "ScalarTime": { "Value": 20.0, "Unit": "s" } } ,
"ReleasePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } }
"InspiratoryCapacityFraction": { "Scalar0To1": { "Value": 1.0 } },
"InhalePeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } ,
"HoldPeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } } },
{ "ForcedExhale": {
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.0 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } }
] } } },
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 1.5, "Unit": "min" }}}},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 1.0, "Unit": "min" }}}},
{ "PatientAction": { "ChronicObstructivePulmonaryDiseaseExacerbation":
{
......@@ -76,39 +80,31 @@
}}
},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 30.0, "Unit": "s" }}}},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 10.0, "Unit": "s" }}}},
{ "PatientAction": { "LobarPneumoniaExacerbation":
{ "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation":
{
"Severity": { "Scalar0To1": { "Value": 0.9 }},
"Severity": { "Scalar0To1": { "Value": 0.6 }},
"LeftLungAffected": { "Scalar0To1": { "Value": 1.0 }},
"RightLungAffected": { "Scalar0To1": { "Value": 1.0 }}
}}
},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 30.0, "Unit": "s" }}}},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 10.0, "Unit": "s" }}}},
{ "PatientAction": { "ConsciousRespiration": { "Command": [
{ "ForcedExhale": {
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.2 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } ,
"ReleasePeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } } },
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.0 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } },
{ "ForcedInhale": {
"InspiratoryCapacityFraction": { "Scalar0To1": { "Value": 1.2 } },
"InhalePeriod": { "ScalarTime": { "Value": 20.0, "Unit": "s" } } ,
"ReleasePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } }
"InspiratoryCapacityFraction": { "Scalar0To1": { "Value": 1.0 } },
"InhalePeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } ,
"HoldPeriod": { "ScalarTime": { "Value": 1.0, "Unit": "s" } } } },
{ "ForcedExhale": {
"ExpiratoryReserveVolumeFraction": { "Scalar0To1": { "Value": 1.0 } },
"ExhalePeriod": { "ScalarTime": { "Value": 10.0, "Unit": "s" } } } }
] } } },
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 1.5, "Unit": "min" }}}},
{ "PatientAction": { "LobarPneumoniaExacerbation":
{
"Severity": { "Scalar0To1": { "Value": 0.0 }},
"LeftLungAffected": { "Scalar0To1": { "Value": 1.0 }},
"RightLungAffected": { "Scalar0To1": { "Value": 1.0 }}
}}
},
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 30.0, "Unit": "s" }}}}
{ "AdvanceTime": { "Time": { "ScalarTime": { "Value": 1.0, "Unit": "min" }}}}
]
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment