Beispiel #1
0
        public void GetHrvConclusion(TestRawData hrvData, Guid testId, out PreShiftHrvConclusion conclusion)
        {
            _log.Info("Getting HRV conclusion");

            double statM     = 0;
            double statSigma = 0;
            double IN        = 0;

            conclusion = null;

            try
            {
                ProcessHrvData(hrvData, out var hrvOutData);

                Upft130HrvClassifier classifier = new Upft130HrvClassifier();
                conclusion = classifier.MakePreshiftConclusion(hrvOutData);

                var LSR = conclusion.LSR_Text;
                if (string.IsNullOrEmpty(LSR))
                {
                    throw new Exception("LSR_Text must be non-empty.");
                }

                statM     = hrvOutData.CRV_STAT.m;
                statSigma = hrvOutData.CRV_STAT.sigma;
                IN        = hrvOutData.Indicators.IN;
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                if (null == conclusion)
                {
                    conclusion = new PreShiftHrvConclusion();
                }
                conclusion.Status         = PsaStatus.Fail;
                conclusion.LSR_Text       = strings.UnknownError;
                conclusion.VSR            = -1;
                conclusion.StateMatrixRow = -1;
                conclusion.StateMatrixCol = -1;
                conclusion.LSR            = LSR_HrvFunctionalState.Critical_0;
            }

            conclusion.TestId = testId;
            conclusion.Text   = PsaStatusTextProvider.StatusText(conclusion.Status);
            //      conclusion.Color = PsaStatusColorProvider.StatusColor(conclusion.Status);
            conclusion.MeanHR  = 60000.0 / statM;
            conclusion.IN      = IN;
            conclusion.Comment =
                $"LSR={conclusion.LSR_Text}, VSR={conclusion.VSR:0.000}, MRR={statM:#}, " +
                $"SRR={statSigma:#}, SMLoc=({conclusion.StateMatrixRow};{conclusion.StateMatrixCol})";
        }
        private static void ValidateExpectedState(PsaStatus expectedFinalStatus, PsaStatus[] svmr_states, LSR_HrvFunctionalState[] hrv_states)
        {
            var hrv  = new PreShiftHrvConclusion();
            var svmr = new PreShiftSvmrConclusion();

            for (int i = 0; i < svmr_states.Length; ++i)
            {
                for (int j = 0; j < hrv_states.Length; ++j)
                {
                    hrv.LSR     = hrv_states[j];
                    svmr.Status = svmr_states[i];

                    Assert.AreEqual(expectedFinalStatus, FinalStatusProvider.GetFinalConclusion(hrv, svmr).Status);
                }
            }
        }
Beispiel #3
0
        public PreShiftHrvConclusion MakePreshiftConclusion(HrvResults neuroLabHrvData)
        {
            Upft130VsrCalculator calc = new Upft130VsrCalculator();
            double VSR = calc.HRV_to_VSR(neuroLabHrvData.CRV_STAT.m, neuroLabHrvData.CRV_STAT.sigma);
            PreShiftHrvConclusion conclusion = new PreShiftHrvConclusion();

            conclusion.StateMatrixRow = calc.Mrr2SmRow(neuroLabHrvData.CRV_STAT.m);
            conclusion.StateMatrixCol = calc.SigmaRR2SmCol(conclusion.StateMatrixRow, neuroLabHrvData.CRV_STAT.sigma);
            conclusion.VSR            = VSR;
            conclusion.LSR            = Vsr2Lsr(VSR);
            conclusion.LSR_Text       = Lsr2String(conclusion.LSR);
            // refs #200
            // см. таблицу в разделе 4.6.2 в ТЗ
            conclusion.Status = Lsr2Status(conclusion.LSR);
            return(conclusion);
        }
Beispiel #4
0
        public static PreShiftFinalConclusion GetFinalConclusion(PreShiftHrvConclusion hrvConclusion, PreShiftSvmrConclusion svmrConclusion)
        {
            PreShiftFinalConclusion finalConclusion = new PreShiftFinalConclusion();

            switch (svmrConclusion.Status)
            {
            case PsaStatus.Pass: // IPN1 is high
                if (hrvConclusion.LSR < LSR_HrvFunctionalState.OnTheEdge_2)
                {
                    finalConclusion.Status = PsaStatus.Fail;
                }
                else if (hrvConclusion.LSR == LSR_HrvFunctionalState.OnTheEdge_2)
                {
                    finalConclusion.Status = PsaStatus.Conditional_Pass;
                }
                else
                {
                    finalConclusion.Status = PsaStatus.Pass;
                }
                break;

            case PsaStatus.Conditional_Pass: // IPN1 is medium
                if (hrvConclusion.LSR < LSR_HrvFunctionalState.OnTheEdge_2)
                {
                    finalConclusion.Status = PsaStatus.Fail;
                }
                else
                {
                    finalConclusion.Status = PsaStatus.Conditional_Pass;
                }
                break;

            case PsaStatus.Fail: // IPN1 is low -- total failure
                finalConclusion.Status = PsaStatus.Fail;
                break;

            default:
                finalConclusion.Status = PsaStatus.Fail;
                break;
            }

            finalConclusion.Text = FinalStatusTextProvider.StatusText(finalConclusion);
            return(finalConclusion);
        }
Beispiel #5
0
        private void PrepareData(out Employee patient, out PreShiftHrvConclusion hrvConclusion, out PreShiftSvmrConclusion svmrConclusion, out PreShiftFinalConclusion finalConclusion)
        {
            var hrvStatus = PsaStatus.Fail;

            hrvConclusion = new PreShiftHrvConclusion
            {
                Status = hrvStatus,
                Text   = PsaStatusTextProvider.StatusText(hrvStatus),
                TestId = Guid.NewGuid()
            };

            var svmrStatus = PsaStatus.Pass;

            svmrConclusion = new PreShiftSvmrConclusion
            {
                Status = svmrStatus,
                Text   = PsaStatusTextProvider.StatusText(svmrStatus),
                TestId = Guid.NewGuid()
            };

            var finalStatus = PsaStatus.Fail;

            finalConclusion = new PreShiftFinalConclusion
            {
                Status       = finalStatus,
                InspectionId = Guid.NewGuid()
            };
            finalConclusion.Text = FinalStatusTextProvider.StatusText(finalConclusion);

            patient = new Employee()
            {
                Id               = Guid.NewGuid(),
                FullName         = "John Smith",
                BranchOfficeName = string.Empty,
                BranchOfficeId   = Guid.NewGuid(),
                DepartmentName   = string.Empty,
                DepartmentId     = Guid.NewGuid(),
                PositionName     = "Main Control Post",
                PositionId       = Guid.NewGuid()
            };
        }