Пример #1
0
        private void CalculateViralLoadTestConducted()
        {
            _vlPatientsRequiringOneSymptomDirectedTest = (VLTestProtocol.SymptomDirectedAmt / 100d);
            _vlRepeatsduetoClinicianRequest            = (VLTestProtocol.TestReapeated / 100d);
            _vlAdditionalTestsDuetoWastage             = (InvAssumption.ViralLoad / 100d);


            for (int i = 1; i <= 12; i++)
            {
                MOutputViralLoad hemout = new MOutputViralLoad();
                hemout.Month = i;
                foreach (ProtocolPanel panel in VLTestProtocol.ProtocolPanels)
                {
                    hemout.ExistingAdultPatientsinTreatment += CalculatedPatientNos[i].ArtAdultPreExistingPatients * panel.AdultInTreatmentDistribution;
                    hemout.ExistingPedPatientsinTreatment   += CalculatedPatientNos[i].ArtPediatricPreExistingPatients * panel.PediatricInTreatmentDistribution; // ((pediatricsinTreatment / 12)*preExistingPatientsonPanel);
                    hemout.ExistingAdultPatientsinPreArt    += CalculatedPatientNos[i].PreArtAdultPreExistingPatients * panel.AdultPreARTDistribution;           // ((adultspreART / 12)*preExistingPatientsonPanel);
                    hemout.ExistingPedPatientsinTreatment   += CalculatedPatientNos[i].PreArtPediatricPreExistingPatients * panel.PediatricPreARTDistribution;   // ((pediatricspreART / 12)*preExistingPatientsonPanel);

                    for (int x = 1; x <= i; x++)
                    {
                        hemout.NewAdultPatientstoTreatment += CalculatedPatientNos[i].GetArtAdultPatientsEntering(x) * panel.AdultArtTestGivenInMonth((i - x) + 1) * (panel.AITNewPatient / 100d);
                        hemout.NewPedPatientstoTreatment   += CalculatedPatientNos[i].GetArtPediatricPatientsEntering(x) * panel.PediatricArtTestGivenInMonth((i - x) + 1) * (panel.PITNewPatient / 100d);
                        hemout.NewAdultPatientstoPreArt    += CalculatedPatientNos[i].GetPreArtAdultPatientsEntering(x) * panel.AdultPreArtTestGivenInMonth((i - x) + 1) * (panel.APARTNewPatient / 100d);
                        hemout.NewPedPatientstoPreArt      += CalculatedPatientNos[i].GetPreArtPediatricPatientsEntering(x) * panel.PediatricPreArtTestGivenInMonth((i - x) + 1) * (panel.PPARTNewPatient / 100d);
                    }
                }
                _vlMonthlyOutputs.Add(i, hemout);
            }

            double patientEnterPerMonth            = 0;
            double symptomDirectedTestsAtstartYear = CurrentAdultinTreatment + CurrentPediatricinTreatment + CurrentAdultinPreArt + CurrentPediatricinPreArt;

            symptomDirectedTestsAtstartYear = (symptomDirectedTestsAtstartYear * _vlPatientsRequiringOneSymptomDirectedTest) / 12d;

            int pmonth, buffmonth;

            for (int i = 1; i <= 12; i++)
            {
                patientEnterPerMonth  = CalculatedPatientNos[i].GetArtAdultPatientsEntering(i) + CalculatedPatientNos[i].GetArtPediatricPatientsEntering(i);
                patientEnterPerMonth += CalculatedPatientNos[i].GetPreArtAdultPatientsEntering(i) + CalculatedPatientNos[i].GetPreArtPediatricPatientsEntering(i);
                patientEnterPerMonth  = (patientEnterPerMonth * _vlPatientsRequiringOneSymptomDirectedTest) / 12d;

                _vlMonthlyOutputs[i].SymptomDirectedTests += symptomDirectedTestsAtstartYear + patientEnterPerMonth;

                for (int x = i + 1; x <= 12; x++)
                {
                    _vlMonthlyOutputs[x].SymptomDirectedTests += patientEnterPerMonth;
                }

                _vlMonthlyOutputs[i].RepeatDuetoClinicianRequest = (_vlMonthlyOutputs[i].TestFromProtocols() * _vlRepeatsduetoClinicianRequest) + (_vlMonthlyOutputs[i].SymptomDirectedTests * _vlRepeatsduetoClinicianRequest);

                pmonth = buffmonth = 0;
                if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth)
                {
                    pmonth = 1;
                }
                if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth)
                {
                    buffmonth = 1;
                }

                _vlMonthlyOutputs[i].TestsBasedonProtocols = _vlMonthlyOutputs[i].TotalTestConducted() * pmonth;
                _vlMonthlyOutputs[i].TestsforBufferStock   = _vlMonthlyOutputs[i].TotalTestConducted() * buffmonth;

                _vlMonthlyOutputs[i].AdditionalTestsdueToWastage          = (_vlMonthlyOutputs[i].TestsBasedonProtocols / (1 - _vlAdditionalTestsDuetoWastage)) - _vlMonthlyOutputs[i].TestsBasedonProtocols;
                _vlMonthlyOutputs[i].AdditionalTestsdueToWastageForBuffer = (_vlMonthlyOutputs[i].TestsforBufferStock / (1 - _vlAdditionalTestsDuetoWastage)) - _vlMonthlyOutputs[i].TestsforBufferStock;
            }
        }
Пример #2
0
        private void CalculateViralLoadTestConducted()
        {
            _vlPatientsRequiringOneSymptomDirectedTest = (VLTestProtocol.SymptomDirectedAmt / 100d);
            _vlRepeatsduetoClinicianRequest = (VLTestProtocol.TestReapeated / 100d);
            _vlAdditionalTestsDuetoWastage = (InvAssumption.ViralLoad / 100d);

            for (int i = 1; i <= 12; i++)
            {
                MOutputViralLoad hemout = new MOutputViralLoad();
                hemout.Month = i;
                foreach (ProtocolPanel panel in VLTestProtocol.ProtocolPanels)
                {

                    hemout.ExistingAdultPatientsinTreatment += CalculatedPatientNos[i].ArtAdultPreExistingPatients * panel.AdultInTreatmentDistribution;
                    hemout.ExistingPedPatientsinTreatment += CalculatedPatientNos[i].ArtPediatricPreExistingPatients * panel.PediatricInTreatmentDistribution; // ((pediatricsinTreatment / 12)*preExistingPatientsonPanel);
                    hemout.ExistingAdultPatientsinPreArt += CalculatedPatientNos[i].PreArtAdultPreExistingPatients * panel.AdultPreARTDistribution;  // ((adultspreART / 12)*preExistingPatientsonPanel);
                    hemout.ExistingPedPatientsinTreatment += CalculatedPatientNos[i].PreArtPediatricPreExistingPatients * panel.PediatricPreARTDistribution; // ((pediatricspreART / 12)*preExistingPatientsonPanel);

                    for (int x = 1; x <= i; x++)
                    {
                        hemout.NewAdultPatientstoTreatment += CalculatedPatientNos[i].GetArtAdultPatientsEntering(x) * panel.AdultArtTestGivenInMonth((i - x) + 1) * (panel.AITNewPatient / 100d);
                        hemout.NewPedPatientstoTreatment += CalculatedPatientNos[i].GetArtPediatricPatientsEntering(x) * panel.PediatricArtTestGivenInMonth((i - x) + 1) * (panel.PITNewPatient/100d);
                        hemout.NewAdultPatientstoPreArt += CalculatedPatientNos[i].GetPreArtAdultPatientsEntering(x) * panel.AdultPreArtTestGivenInMonth((i - x) + 1) * (panel.APARTNewPatient/100d);
                        hemout.NewPedPatientstoPreArt += CalculatedPatientNos[i].GetPreArtPediatricPatientsEntering(x) * panel.PediatricPreArtTestGivenInMonth((i - x) + 1) * (panel.PPARTNewPatient/100d);
                    }
                }
                _vlMonthlyOutputs.Add(i, hemout);
            }

            double patientEnterPerMonth = 0;
            double symptomDirectedTestsAtstartYear = CurrentAdultinTreatment + CurrentPediatricinTreatment + CurrentAdultinPreArt + CurrentPediatricinPreArt;
            symptomDirectedTestsAtstartYear = (symptomDirectedTestsAtstartYear * _vlPatientsRequiringOneSymptomDirectedTest) / 12d;

            int pmonth, buffmonth;
            for (int i = 1; i <= 12; i++)
            {
                patientEnterPerMonth = CalculatedPatientNos[i].GetArtAdultPatientsEntering(i) + CalculatedPatientNos[i].GetArtPediatricPatientsEntering(i);
                patientEnterPerMonth += CalculatedPatientNos[i].GetPreArtAdultPatientsEntering(i) + CalculatedPatientNos[i].GetPreArtPediatricPatientsEntering(i);
                patientEnterPerMonth = (patientEnterPerMonth * _vlPatientsRequiringOneSymptomDirectedTest) / 12d;

                _vlMonthlyOutputs[i].SymptomDirectedTests += symptomDirectedTestsAtstartYear + patientEnterPerMonth;

                for (int x = i + 1; x <= 12; x++)
                {
                    _vlMonthlyOutputs[x].SymptomDirectedTests += patientEnterPerMonth;
                }

                _vlMonthlyOutputs[i].RepeatDuetoClinicianRequest = (_vlMonthlyOutputs[i].TestFromProtocols() * _vlRepeatsduetoClinicianRequest) + (_vlMonthlyOutputs[i].SymptomDirectedTests * _vlRepeatsduetoClinicianRequest);

                pmonth = buffmonth = 0;
                if (i >= PeriodInfo.FirstMonth && i <= PeriodInfo.LastMonth)
                    pmonth = 1;
                if (i >= PeriodInfo.BeginsOnmonth && i <= PeriodInfo.EndOnMonth)
                    buffmonth = 1;

                _vlMonthlyOutputs[i].TestsBasedonProtocols = _vlMonthlyOutputs[i].TotalTestConducted() * pmonth;
                _vlMonthlyOutputs[i].TestsforBufferStock = _vlMonthlyOutputs[i].TotalTestConducted() * buffmonth;

                _vlMonthlyOutputs[i].AdditionalTestsdueToWastage = (_vlMonthlyOutputs[i].TestsBasedonProtocols / (1 - _vlAdditionalTestsDuetoWastage)) - _vlMonthlyOutputs[i].TestsBasedonProtocols;
                _vlMonthlyOutputs[i].AdditionalTestsdueToWastageForBuffer = (_vlMonthlyOutputs[i].TestsforBufferStock / (1 - _vlAdditionalTestsDuetoWastage)) - _vlMonthlyOutputs[i].TestsforBufferStock;
            }
        }