示例#1
0
        public void WhenNotConfiguredFromAssembly_ReturnsNonEmptyList()
        {
            var sut = new MicStepsService(new NullLogger <MicStepsService>());

            var steps = sut.StepsByTestingMethodAndAgent(SpeciesTestingMethod.ETest, AntifungalAgent.Caspofungin);

            steps.Should().NotBeEmpty();
        }
示例#2
0
        internal IEnumerable <BrothMicrodilutionStandard> Standards()
        {
            var standards = MicStepsService.Standards(TestingMethod).ToList();

            if (!standards.Contains(Standard))
            {
                Standard = standards.First();
            }
            return(standards);
        }
示例#3
0
        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);
        }
示例#4
0
        //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");
        }
示例#5
0
        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
                });
            }
        }
示例#6
0
 internal IEnumerable <AntifungalAgent> AntifungalAgents()
 {
     return(MicStepsService.AntifungalAgents(TestingMethod));
 }
示例#7
0
 internal IEnumerable <SpeciesTestingMethod> TestingMethods()
 {
     return(MicStepsService.TestingMethods());
 }