Esempio n. 1
0
        private void DetectPhaseOfBreath(SampleBreathing sampleBreathing, StepOfAnalysis flag, DateTime dateTime)
        {
            try
            {
                spiroData.Add(sampleBreathing);
                switch (indexOfPhase.IndexOf(0))
                {
                case 0:
                    if (sampleBreathing.Flow.ParameterValue.Value >= _flowThreshold)    //Inspiration flow
                    {
                        try
                        {
                            indexOfPhase[0] = spiroData.Count;
                            Logger.LogDebug($"Phase Inspiration dataFlow : {sampleBreathing.Flow.ParameterValue.Value} - dataO2 : {sampleBreathing.O2} - dataCO2 : {sampleBreathing.CO2}");
                        }
                        catch (Exception ex)
                        {
                            Logger.LogError(string.Format("Error: {0}, Stack: {1}", ex.Message, ex.StackTrace));
                        }
                    }
                    break;

                case 1:
                    if (sampleBreathing.Flow.ParameterValue.Value <= 0 && previous_dataflow >= 0)    //End inspiration
                    {
                        try
                        {
                            indexOfPhase[1] = spiroData.Count;
                            Logger.LogDebug($"Phase End inspiration dataFlow : {sampleBreathing.Flow.ParameterValue.Value} - previous_dataflow : {previous_dataflow} - dataO2 : {sampleBreathing.O2} - dataCO2 : {sampleBreathing.CO2}");
                        }
                        catch (Exception ex)
                        {
                            Logger.LogError(string.Format("Error: {0}, Stack: {1}", ex.Message, ex.StackTrace));
                        }
                    }
                    break;

                case 2:
                    if (sampleBreathing.Flow.ParameterValue.Value <= -_flowThreshold)    //Expiration
                    {
                        try
                        {
                            indexOfPhase[2] = spiroData.Count;
                            Logger.LogDebug($"Phase Expiration dataFlow : {sampleBreathing.Flow.ParameterValue.Value} - dataO2 : {sampleBreathing.O2} - dataCO2 : {sampleBreathing.CO2}");
                        }
                        catch (Exception ex)
                        {
                            Logger.LogError(string.Format("Error: {0}, Stack: {1}", ex.Message, ex.StackTrace));
                        }
                    }
                    break;

                case 3:
                    if (sampleBreathing.Flow.ParameterValue.Value >= 0 & previous_dataflow <= 0)    //End Expiration
                    {
                        try
                        {
                            Logger.LogDebug($"Phase End Expiration  dataFlow : {sampleBreathing.Flow.ParameterValue.Value} - previous_dataflow : {previous_dataflow} - dataO2 : {sampleBreathing.O2} - dataCO2 : {sampleBreathing.CO2}");

                            indexOfPhase[3] = spiroData.Count;
                            Calculate_Params_in_EndBreath(flag);
                            spiroData.Clear();
                            indexOfPhase = new List <int>(4)
                            {
                                0, 0, 0, 0
                            };
                        }
                        catch (Exception ex)
                        {
                            Logger.LogError(string.Format("Error: {0}, Stack: {1}", ex.Message, ex.StackTrace));
                        }
                    }
                    break;

                default:
                    break;
                }
                CalculateVolume(sampleBreathing, dateTime);
                previous_dataflow = sampleBreathing.Flow.ParameterValue.Value;
            }
            catch (Exception ex)
            {
                Logger.LogError(string.Format("Error: {0}, Stack: {1}", ex.Message, ex.StackTrace));
            }
        }