private void CalcInstrumentDetailsAndControls() { int noofControls; int noofTestdays = ArtSite.Site.ViralLoadTestingDaysPerMonth; double testRunpercent; double controlTest = 0; foreach (SiteInstrument ins in ArtSite.Site.GetInstrumentByPlatform(ClassOfMorbidityTestEnum.ViralLoad)) { PlatformTestsAndControls hemPlat = new PlatformTestsAndControls(); hemPlat.InstrumentId = ins.Instrument.Id; hemPlat.Quantity = ins.Quantity; testRunpercent = Convert.ToDouble(ins.TestRunPercentage) / 100d; int currentQuarter = PeriodInfo.FirstMonth; for (int i = 1; i <= 12; i++) { TestsAndControls ctc = new TestsAndControls(i); ctc.TestsonInstrumentForecastPeriod = _vlMonthlyOutputs[i].TestsBasedonProtocols * testRunpercent; ctc.TestsonInstrumentBufferStock = _vlMonthlyOutputs[i].TestsforBufferStock * testRunpercent; noofControls = ins.Instrument.MaxTestBeforeCtrlTest; if (noofControls > 0) { ctc.ControlsPerNoOfTests = (ctc.TestsonInstrumentForecastPeriod / noofControls); ctc.ControlsPerNoOfTestsBuffer = (ctc.TestsonInstrumentBufferStock / noofControls); } noofControls = ins.Instrument.DailyCtrlTest; controlTest = ((noofControls / (1d - _vlAdditionalTestsDuetoWastage)) * ins.Quantity) * noofTestdays; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) { ctc.ControlsPerDay = controlTest; } if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) { ctc.ControlsPerDayBuffer = controlTest; } noofControls = ins.Instrument.WeeklyCtrlTest; controlTest = ((noofControls / (1 - _vlAdditionalTestsDuetoWastage)) * ins.Quantity) * 4; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) { ctc.ControlsPerWeek = controlTest; } if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) { ctc.ControlsPerWeekBuffer = controlTest; } noofControls = ins.Instrument.MonthlyCtrlTest; controlTest = ((noofControls / (1 - _vlAdditionalTestsDuetoWastage)) * ins.Quantity) * 1; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) { ctc.ControlsPerMonth = controlTest; } if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) { ctc.ControlsPerMonthBuffer = controlTest; } noofControls = ins.Instrument.QuarterlyCtrlTest; controlTest = ((noofControls / (1 - _vlAdditionalTestsDuetoWastage)) * ins.Quantity); if (i == currentQuarter) { currentQuarter += 3; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) { ctc.ControlsPerQuarter = controlTest; } if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) { ctc.ControlsPerQuarterBuffer = controlTest; } } //Samples Referred from Elsewhere ctc.SampleReferredTestsForecastPeriod = _vlMonthlyOutputs[i].TestsonInstrumentForecastPeriodFromReferringSites * testRunpercent; ctc.SampleReferredTestsBufferStock = _vlMonthlyOutputs[i].TestsonInstrumentBufferStockFromReferringSites * testRunpercent; noofControls = ins.Instrument.MaxTestBeforeCtrlTest; if (noofControls > 0) { ctc.SampleReferredControlsPerNoOfTests = ctc.SampleReferredTestsForecastPeriod / noofControls; ctc.SampleReferredControlsPerNoOfTestsBuffer = ctc.SampleReferredTestsBufferStock / noofControls; } hemPlat.AddTestAndControl(ctc); } hemPlat.AddTestAndControl(DoByondForcastCalc(ins, noofTestdays, currentQuarter)); _vlPlatformTests.Add(hemPlat); } }
private void CalcInstrumentDetailsAndControls() { int noofControls; int noofTestdays = ArtSite.Site.ViralLoadTestingDaysPerMonth; double testRunpercent; double controlTest = 0; foreach (SiteInstrument ins in ArtSite.Site.GetInstrumentByPlatform(ClassOfMorbidityTestEnum.ViralLoad)) { PlatformTestsAndControls hemPlat = new PlatformTestsAndControls(); hemPlat.InstrumentId = ins.Instrument.Id; hemPlat.Quantity = ins.Quantity; testRunpercent = Convert.ToDouble(ins.TestRunPercentage) / 100d; int currentQuarter = PeriodInfo.FirstMonth; for (int i = 1; i <= 12; i++) { TestsAndControls ctc = new TestsAndControls(i); ctc.TestsonInstrumentForecastPeriod = _vlMonthlyOutputs[i].TestsBasedonProtocols * testRunpercent; ctc.TestsonInstrumentBufferStock = _vlMonthlyOutputs[i].TestsforBufferStock * testRunpercent; noofControls = ins.Instrument.MaxTestBeforeCtrlTest; if (noofControls > 0) { ctc.ControlsPerNoOfTests = (ctc.TestsonInstrumentForecastPeriod / noofControls); ctc.ControlsPerNoOfTestsBuffer = (ctc.TestsonInstrumentBufferStock / noofControls); } noofControls = ins.Instrument.DailyCtrlTest; controlTest = ((noofControls / (1d - _vlAdditionalTestsDuetoWastage)) * ins.Quantity) * noofTestdays; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) ctc.ControlsPerDay = controlTest; if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) ctc.ControlsPerDayBuffer = controlTest; noofControls = ins.Instrument.WeeklyCtrlTest; controlTest = ((noofControls / (1 - _vlAdditionalTestsDuetoWastage)) * ins.Quantity) * 4; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) ctc.ControlsPerWeek = controlTest; if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) ctc.ControlsPerWeekBuffer = controlTest; noofControls = ins.Instrument.MonthlyCtrlTest; controlTest = ((noofControls / (1 - _vlAdditionalTestsDuetoWastage)) * ins.Quantity) * 1; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) ctc.ControlsPerMonth = controlTest; if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) ctc.ControlsPerMonthBuffer = controlTest; noofControls = ins.Instrument.QuarterlyCtrlTest; controlTest = ((noofControls / (1 - _vlAdditionalTestsDuetoWastage)) * ins.Quantity); if (i == currentQuarter) { currentQuarter += 3; if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth) ctc.ControlsPerQuarter = controlTest; if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth) ctc.ControlsPerQuarterBuffer = controlTest; } //Samples Referred from Elsewhere ctc.SampleReferredTestsForecastPeriod = _vlMonthlyOutputs[i].TestsonInstrumentForecastPeriodFromReferringSites * testRunpercent; ctc.SampleReferredTestsBufferStock = _vlMonthlyOutputs[i].TestsonInstrumentBufferStockFromReferringSites * testRunpercent; noofControls = ins.Instrument.MaxTestBeforeCtrlTest; if (noofControls > 0) { ctc.SampleReferredControlsPerNoOfTests = ctc.SampleReferredTestsForecastPeriod / noofControls; ctc.SampleReferredControlsPerNoOfTestsBuffer = ctc.SampleReferredTestsBufferStock / noofControls; } hemPlat.AddTestAndControl(ctc); } hemPlat.AddTestAndControl(DoByondForcastCalc(ins, noofTestdays, currentQuarter)); _vlPlatformTests.Add(hemPlat); } }