public void WhenNotConfiguredFromAssembly_ReturnsNonEmptyList() { var sut = new MicStepsService(new NullLogger <MicStepsService>()); var steps = sut.StepsByTestingMethodAndAgent(SpeciesTestingMethod.ETest, AntifungalAgent.Caspofungin); steps.Should().NotBeEmpty(); }
internal IEnumerable <BrothMicrodilutionStandard> Standards() { var standards = MicStepsService.Standards(TestingMethod).ToList(); if (!standards.Contains(Standard)) { Standard = standards.First(); } return(standards); }
internal IEnumerable <MicStep> MicSteps(AntimicrobialSensitivityTestRequest sensitivityTest) { var matchingSteps = MicStepsService.StepsByTestingMethodAndAgent(sensitivityTest.TestingMethod, sensitivityTest.AntifungalAgent); if (sensitivityTest.MinimumInhibitoryConcentration.HasValue && matchingSteps.Any() && matchingSteps.All(s => !s.Value.Equals(sensitivityTest.MinimumInhibitoryConcentration))) { sensitivityTest.MinimumInhibitoryConcentration = matchingSteps.First().Value; } return(matchingSteps); }
//TODO move resistance evaluation to a pure business logic class internal string ResistanceBadge(AntimicrobialSensitivityTestRequest sensitivityTest) { Logger.LogInformation("Resistance update"); var breakpoint = AllBreakpoints.FirstOrDefault(b => b.Id == sensitivityTest.ClinicalBreakpointId); if (breakpoint?.MicBreakpointResistent == null || !breakpoint.MicBreakpointSusceptible.HasValue) { if (breakpoint == null) { Logger.LogWarning($"No breakpoint found for {sensitivityTest.TestingMethod}/{sensitivityTest.AntifungalAgent} where id is {sensitivityTest.ClinicalBreakpointId}"); } else { Logger.LogInformation($"Breakpoints {breakpoint.Id} (resistant/susceptible) values are not complete ({breakpoint.MicBreakpointResistent}/{breakpoint.MicBreakpointSusceptible})"); } sensitivityTest.Resistance = Resistance.NotDetermined; return("bg-info"); } var selectedStep = MicStepsService.StepsByTestingMethodAndAgent(sensitivityTest.TestingMethod, sensitivityTest.AntifungalAgent) .FirstOrDefault(s => s.Value.Equals(sensitivityTest.MinimumInhibitoryConcentration)); if (selectedStep != null && Math.Abs(breakpoint.MicBreakpointSusceptible.Value - EucastExtraLowSusceptibleValueToAlwaysGetIntermediate) > 0.001f) { if (selectedStep.LowerBoundary && sensitivityTest.MinimumInhibitoryConcentration > breakpoint.MicBreakpointSusceptible || selectedStep.UpperBoundary && sensitivityTest.MinimumInhibitoryConcentration < breakpoint.MicBreakpointResistent) { sensitivityTest.Resistance = Resistance.NotEvaluable; return("bg-info"); } } Logger.LogInformation($"Found breakpoint for {sensitivityTest.TestingMethod}/{sensitivityTest.AntifungalAgent} where id is {sensitivityTest.ClinicalBreakpointId}: {breakpoint.Title}"); var mic = sensitivityTest.MinimumInhibitoryConcentration; if (IsResistantAccordingToEucastDefinition(mic, breakpoint)) { sensitivityTest.Resistance = Resistance.Resistant; return("bg-danger"); } if (IsResistantAccordingToClsiDefinition(mic, breakpoint)) { sensitivityTest.Resistance = Resistance.Resistant; return("bg-danger"); } if (IsSusceptibleAccordingToBothDefinitions(mic, breakpoint)) { sensitivityTest.Resistance = Resistance.Susceptible; return("bg-success"); } sensitivityTest.Resistance = Resistance.Intermediate; return("bg-warning"); }
internal void AddAntimicrobialSensitivityTest() { var antifungalAgents = MicStepsService.IsMultiAgentSystem(TestingMethod) ? MicStepsService.AntifungalAgents(TestingMethod) : new List <AntifungalAgent> { AntifungalAgent }; foreach (var antifungalAgent in antifungalAgents) { AddAntimicrobialSensitivityTest(new AntimicrobialSensitivityTestRequest { TestingMethod = TestingMethod, AntifungalAgent = antifungalAgent, Standard = Standard }); } }
internal IEnumerable <AntifungalAgent> AntifungalAgents() { return(MicStepsService.AntifungalAgents(TestingMethod)); }
internal IEnumerable <SpeciesTestingMethod> TestingMethods() { return(MicStepsService.TestingMethods()); }