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); } } }
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); }
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); }
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() }; }