コード例 #1
0
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastOtherTest)
            {
                #region test usage
                foreach (Test t in _testingArea.Tests)
                {
                    double svalue = GetSumofTest(t.Id);
                    if (svalue == 0)
                    {
                        continue;
                    }

                    IList <ProductUsage> list = DataRepository.GetProductUsageByTestId(t.Id, false);
                    foreach (var pusage in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = pusage.Product.Id;
                        pqr.UnitCost  = pusage.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = pusage.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = pusage.Product.BasicUnit;

                        double testperpack = Convert.ToDouble(pqr.PackSize / pusage.Rate);
                        pqr.Value           = testperpack > 0 ? svalue / testperpack : 0;
                        pqr.MinimumQuantity = pusage.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }

                #endregion
            }
        }
コード例 #2
0
ファイル: CalcRapidTest.cs プロジェクト: opianHealth/ForLAB
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastVCT)
            {
                double value;
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Rapid_Tests.ToString())
                        value = _s1 + _s2 + _s3 + _c1 + _c2 + _c3 + _t1 + _t2 + _t3;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Screenings.ToString())
                        value = _s1 + _s2 + _s3;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Confirmatory_Tests.ToString())
                        value = _c1 + _c2 + _c3;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Tie_Breaker_Tests.ToString())
                        value = _t1 + _t2 + _t3;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Screenings_Plus_Confirmatory.ToString())
                        value = _s1 + _s2 + _s3 + _c1 + _c2 + _c3;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Screenings_Plus_Tie_Breaker.ToString())
                        value = _s1 + _s2 + _s3 + _t1 + _t2 + _t3;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Confirmatory_Plus_Tie_Breaker.ToString())
                        value = _c1 + _c2 + _c3 + _t1 + _t2 + _t3;

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = qm.Id;
                        qval.SiteValue = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                for (int i = 1; i <= 3; i++)
                {
                    int prodcutId = RTestAlgorithm.GetProductId(TestingSpecificationGroup.Screening, i);
                    if (prodcutId > 0)
                    {
                        QuantifyMenu pqm = _platformObject.GetQuantifyMenuByProductId(prodcutId);
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = pqm.Id;
                        qval.ReferalSiteValue = 0;

                        if (i == 1)
                            qval.SiteValue = _s1;
                        else if (i == 2)
                            qval.SiteValue = _s2;
                        else
                            qval.SiteValue = _s3;
                        _listOfQMenuWithValue.Add(qval);
                    }

                    prodcutId = RTestAlgorithm.GetProductId(TestingSpecificationGroup.Confirmatory, i);
                    if (prodcutId > 0)
                    {
                        QuantifyMenu pqmC = _platformObject.GetQuantifyMenuByProductId(prodcutId);
                        QMenuWithValue qvalC = new QMenuWithValue();
                        qvalC.QuantifyMenuId = pqmC.Id;
                        qvalC.ReferalSiteValue = 0;

                        if (i == 1)
                            qvalC.SiteValue = _c1;
                        else if (i == 2)
                            qvalC.SiteValue = _c2;
                        else
                            qvalC.SiteValue = _c3;
                        _listOfQMenuWithValue.Add(qvalC);
                    }

                    prodcutId = RTestAlgorithm.GetProductId(TestingSpecificationGroup.Tie_Breaker, i);
                    if (prodcutId > 0)
                    {
                        QuantifyMenu pqmT = _platformObject.GetQuantifyMenuByProductId(prodcutId);
                        QMenuWithValue qvalT = new QMenuWithValue();
                        qvalT.QuantifyMenuId = pqmT.Id;
                        qvalT.ReferalSiteValue = 0;

                        if (i == 1)
                            qvalT.SiteValue = _t1;
                        else if (i == 2)
                            qvalT.SiteValue = _t2;
                        else
                            qvalT.SiteValue = _t3;
                        _listOfQMenuWithValue.Add(qvalT);
                    }
                }

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList<QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);

                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit = r.Product.BasicUnit;

                        double testperpack = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        double valueofmetric = r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Collection.ToString() ? qm.SiteValue : qm.TotalValue;
                        if (ArtSite.Site.CD4RefSite > 0 && r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Testing.ToString())
                            valueofmetric = 0;
                        pqr.Value = testperpack > 0 ? valueofmetric / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #3
0
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastVCT)
            {
                double value;
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Rapid_Tests.ToString())
                    {
                        value = _s1 + _s2 + _s3 + _c1 + _c2 + _c3 + _t1 + _t2 + _t3;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Screenings.ToString())
                    {
                        value = _s1 + _s2 + _s3;
                    }
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Confirmatory_Tests.ToString())
                    {
                        value = _c1 + _c2 + _c3;
                    }
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Tie_Breaker_Tests.ToString())
                    {
                        value = _t1 + _t2 + _t3;
                    }
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Screenings_Plus_Confirmatory.ToString())
                    {
                        value = _s1 + _s2 + _s3 + _c1 + _c2 + _c3;
                    }
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Screenings_Plus_Tie_Breaker.ToString())
                    {
                        value = _s1 + _s2 + _s3 + _t1 + _t2 + _t3;
                    }
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Confirmatory_Plus_Tie_Breaker.ToString())
                    {
                        value = _c1 + _c2 + _c3 + _t1 + _t2 + _t3;
                    }

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = qm.Id;
                        qval.SiteValue        = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                for (int i = 1; i <= 3; i++)
                {
                    int prodcutId = RTestAlgorithm.GetProductId(TestingSpecificationGroup.Screening, i);
                    if (prodcutId > 0)
                    {
                        QuantifyMenu   pqm  = _platformObject.GetQuantifyMenuByProductId(prodcutId);
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = pqm.Id;
                        qval.ReferalSiteValue = 0;

                        if (i == 1)
                        {
                            qval.SiteValue = _s1;
                        }
                        else if (i == 2)
                        {
                            qval.SiteValue = _s2;
                        }
                        else
                        {
                            qval.SiteValue = _s3;
                        }
                        _listOfQMenuWithValue.Add(qval);
                    }

                    prodcutId = RTestAlgorithm.GetProductId(TestingSpecificationGroup.Confirmatory, i);
                    if (prodcutId > 0)
                    {
                        QuantifyMenu   pqmC  = _platformObject.GetQuantifyMenuByProductId(prodcutId);
                        QMenuWithValue qvalC = new QMenuWithValue();
                        qvalC.QuantifyMenuId   = pqmC.Id;
                        qvalC.ReferalSiteValue = 0;

                        if (i == 1)
                        {
                            qvalC.SiteValue = _c1;
                        }
                        else if (i == 2)
                        {
                            qvalC.SiteValue = _c2;
                        }
                        else
                        {
                            qvalC.SiteValue = _c3;
                        }
                        _listOfQMenuWithValue.Add(qvalC);
                    }

                    prodcutId = RTestAlgorithm.GetProductId(TestingSpecificationGroup.Tie_Breaker, i);
                    if (prodcutId > 0)
                    {
                        QuantifyMenu   pqmT  = _platformObject.GetQuantifyMenuByProductId(prodcutId);
                        QMenuWithValue qvalT = new QMenuWithValue();
                        qvalT.QuantifyMenuId   = pqmT.Id;
                        qvalT.ReferalSiteValue = 0;

                        if (i == 1)
                        {
                            qvalT.SiteValue = _t1;
                        }
                        else if (i == 2)
                        {
                            qvalT.SiteValue = _t2;
                        }
                        else
                        {
                            qvalT.SiteValue = _t3;
                        }
                        _listOfQMenuWithValue.Add(qvalT);
                    }
                }

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList <QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);

                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost  = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = r.Product.BasicUnit;

                        double testperpack   = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        double valueofmetric = r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Collection.ToString() ? qm.SiteValue : qm.TotalValue;
                        if (ArtSite.Site.CD4RefSite > 0 && r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Testing.ToString())
                        {
                            valueofmetric = 0;
                        }
                        pqr.Value           = testperpack > 0 ? valueofmetric / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #4
0
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastOtherTest)
            {
                double value;

                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Syphilis_RPR_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.Syphilis_RPR);
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TB_AFB_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.TB_AFB);
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Hepatitis_HBsAG_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.Hepatitis_HBsAG);
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Hepatitis_Anti_HCV_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.Hepatitis_Anti_HCV);
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TB_Culture_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.TB_Culture);
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TB_DST_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.TB_DST);
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_PAP_Smear_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.PAP_Smear);
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Genotype_Resistance_Testing_Test.ToString())
                    {
                        value = GetSumofTest(OtherTestNameEnum.Genotype_Resistance_Testing);
                    }
                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = qm.Id;
                        qval.SiteValue        = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                double testperpack;
                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList <QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);
                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost  = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = r.Product.BasicUnit;

                        testperpack         = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        pqr.Value           = testperpack > 0 ? qm.TotalValue / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #5
0
ファイル: CalcViralLoad.cs プロジェクト: opianHealth/ForLAB
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastViralLoad)
            {
                int    allHemQMid = 0;
                double value, allHemInsQty = 0;
                double referralValue;
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value         = 0;
                    referralValue = 0;

                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Viral_Load_Tests.ToString())
                    {
                        value         = GetTotalVLTestForSite();
                        referralValue = GetTotalVLTestForReferral();
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Instrument_All_Viral_Load_Instruments.ToString())
                    {
                        allHemQMid = qm.Id;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Day_All_Viral_Load_Instruments.ToString() && _vlPlatformTests.Count > 0)
                    {
                        value = ArtSite.Site.ViralLoadTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                    }

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = qm.Id;
                        qval.SiteValue        = value;
                        qval.ReferalSiteValue = referralValue;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                TestingDurationEnum[] tduration = LqtUtil.EnumToArray <TestingDurationEnum>();

                foreach (PlatformTestsAndControls cpt in _vlPlatformTests)
                {
                    allHemInsQty += cpt.Quantity;

                    PlatformQuantifyMenu pqm = (PlatformQuantifyMenu)_platformObject.GetPlatformQuantifyMenuByInsId(cpt.InstrumentId);
                    if (pqm != null)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = pqm.GetQuantifyMenuId(TestTypeEnum.Test);
                        qval.SiteValue        = cpt.TotalSumOfTestOnInstrument();
                        qval.ReferalSiteValue = cpt.TotalSumOfSampleReferredTestOnInstrumanet();
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = pqm.GetQuantifyMenuId(TestTypeEnum.PerInstrument);
                        qval.SiteValue        = cpt.Quantity;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = pqm.GetQuantifyMenuId(TestTypeEnum.PerDay);
                        qval.SiteValue        = ArtSite.Site.CD4TestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        for (int i = 0; i < tduration.Length; i++)
                        {
                            qval = new QMenuWithValue();
                            qval.QuantifyMenuId = pqm.GetQuantifyMenuId(tduration[i]);
                            qval.SiteValue      = cpt.GetSumOfControlsByDuration(tduration[i]);
                            if (tduration[i] == TestingDurationEnum.TotalControl || tduration[i] == TestingDurationEnum.PerTest)
                            {
                                qval.ReferalSiteValue = cpt.SampleReferredTotalControls();
                            }
                            else
                            {
                                qval.ReferalSiteValue = 0;
                            }
                            _listOfQMenuWithValue.Add(qval);
                        }
                    }
                }

                //Per Instrument - All Chemistry Instruments
                QMenuWithValue qv = new QMenuWithValue();
                qv.QuantifyMenuId   = allHemQMid;
                qv.SiteValue        = allHemInsQty;
                qv.ReferalSiteValue = 0;
                _listOfQMenuWithValue.Add(qv);

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList <QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);

                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost  = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = r.Product.BasicUnit;

                        double testperpack   = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        double valueofmetric = r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Collection.ToString() ? qm.SiteValue : qm.TotalValue;
                        if (ArtSite.Site.ViralLoadRefSite > 0 && r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Testing.ToString())
                        {
                            valueofmetric = 0;
                        }
                        pqr.Value           = testperpack > 0 ? valueofmetric / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #6
0
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastChemistry)
            {
                InitTotalValues();

                #region per test consumable

                foreach (Test t in _testingArea.Tests)
                {
                    if (GetTotalValues(t.Id) > 0)
                    {
                        IList <ConsumableUsage> pu = DataRepository.GetConsumableUsageByTestId(t.Id, QuanifyConsumableBasedOnEnum.PerTest);
                        foreach (var pusage in pu)
                        {
                            PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                            pqr.ProductId = pusage.Product.Id;
                            pqr.UnitCost  = pusage.Product.GetActiveProductPrice(DateTime.Now).Price;
                            pqr.PackSize  = pusage.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                            pqr.Unit      = pusage.Product.BasicUnit;

                            double svalue         = (GetTotalValues(t.Id) * Convert.ToDouble(pusage.ProductUsageRate)) / pusage.NoOfTest;
                            double sreferralValue = 0;

                            double testperpack   = Convert.ToDouble(pqr.PackSize / pusage.ProductUsageRate);
                            double valueofmetric = pusage.Product.CollectionSupplieAppliedTo ? svalue : svalue + sreferralValue;
                            if (ArtSite.Site.CD4RefSite > 0 && !pusage.Product.CollectionSupplieAppliedTo)
                            {
                                valueofmetric = 0;
                            }

                            pqr.Value           = testperpack > 0 ? valueofmetric / testperpack : 0;
                            pqr.MinimumQuantity = pusage.Product.MinimumPackSize;
                            _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                        }
                    }
                }
                #endregion

                #region Per Period consumable

                IList <ConsumableUsage> pusages = DataRepository.GetConsumableUsageByTestArea(_testingArea.Id, QuanifyConsumableBasedOnEnum.PerPeriod);
                foreach (var pusage in pusages)
                {
                    double svalue = 0;
                    switch (pusage.PeriodToEnum)
                    {
                    case PeriodEnum.Daily:
                        svalue = ArtSite.Site.ChemistryTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                        break;

                    case PeriodEnum.Weekly:
                        svalue = PeriodInfo.WeeksinBudgetPeriod;
                        break;

                    case PeriodEnum.Monthly:
                        svalue = PeriodInfo.NumberofMonthsinBudgetPeriod;
                        break;

                    case PeriodEnum.Quarterly:
                        svalue = PeriodInfo.QuartersinBudgetPeriod;
                        break;

                    case PeriodEnum.Yearly:
                        svalue = 1;
                        break;
                    }

                    PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                    pqr.ProductId = pusage.Product.Id;
                    pqr.UnitCost  = pusage.Product.GetActiveProductPrice(DateTime.Now).Price;
                    pqr.PackSize  = pusage.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                    pqr.Unit      = pusage.Product.BasicUnit;

                    double testperpack = Convert.ToDouble(pqr.PackSize / pusage.ProductUsageRate);
                    pqr.Value           = testperpack > 0 ? svalue / testperpack : 0;
                    pqr.MinimumQuantity = pusage.Product.MinimumPackSize;
                    _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                }
                #endregion

                #region per instrument consumable
                foreach (SiteInstrument ins in ArtSite.Site.GetInstrumentByPlatform(ClassOfMorbidityTestEnum.Chemistry))
                {
                    IList <ConsumableUsage> pusagesIns = DataRepository.GetConsumableUsageByTestArea(_testingArea.Id, QuanifyConsumableBasedOnEnum.PerInstrument, ins.Id);
                    foreach (var pusage in pusagesIns)
                    {
                        double svalue = 0;
                        switch (pusage.PeriodToEnum)
                        {
                        case PeriodEnum.Daily:
                            svalue = ArtSite.Site.ChemistryTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                            break;

                        case PeriodEnum.Weekly:
                            svalue = PeriodInfo.WeeksinBudgetPeriod;
                            break;

                        case PeriodEnum.Monthly:
                            svalue = PeriodInfo.NumberofMonthsinBudgetPeriod;
                            break;

                        case PeriodEnum.Quarterly:
                            svalue = PeriodInfo.QuartersinBudgetPeriod;
                            break;

                        case PeriodEnum.Yearly:
                            svalue = 1;
                            break;
                        }

                        svalue = svalue * ins.Quantity;

                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = pusage.Product.Id;
                        pqr.UnitCost  = pusage.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = pusage.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = pusage.Product.BasicUnit;

                        double testperpack = Convert.ToDouble(pqr.PackSize / pusage.ProductUsageRate);
                        pqr.Value           = testperpack > 0 ? svalue / testperpack : 0;
                        pqr.MinimumQuantity = pusage.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
                #endregion

                #region test and control-test usage
                foreach (ChemistryPlatformTests cpt in _chemPlatformTests)
                {
                    #region test usage
                    foreach (Test t in _testingArea.Tests)
                    {
                        if (ParameterIncluded(t.Id))
                        {
                            IList <ProductUsage> list = DataRepository.GetProductUsageByInsId(cpt.InstrumentId, false);
                            foreach (var pusage in list)
                            {
                                PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                                pqr.ProductId = pusage.Product.Id;
                                pqr.UnitCost  = pusage.Product.GetActiveProductPrice(DateTime.Now).Price;
                                pqr.PackSize  = pusage.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                                pqr.Unit      = pusage.Product.BasicUnit;

                                double SiteValue        = 0;
                                double ReferalSiteValue = 0;
                                double testperpack      = Convert.ToDouble(pqr.PackSize / pusage.Rate);

                                SiteValue = cpt.TotalTestsOnInstrument(t.Id);
                                double valueofmetric = pusage.Product.CollectionSupplieAppliedTo ? SiteValue : SiteValue + ReferalSiteValue;
                                if (ArtSite.Site.ChemistryRefSite > 0 && !pusage.Product.CollectionSupplieAppliedTo)
                                {
                                    valueofmetric = 0;
                                }

                                pqr.Value           = testperpack > 0 ? valueofmetric / testperpack : 0;
                                pqr.MinimumQuantity = pusage.Product.MinimumPackSize;
                                _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                            }
                        }
                    }
                    #endregion

                    #region control test usage
                    IList <ProductUsage> conlist = DataRepository.GetProductUsageByInsId(cpt.InstrumentId, true);
                    foreach (var pusage in conlist)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = pusage.Product.Id;
                        pqr.UnitCost  = pusage.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = pusage.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = pusage.Product.BasicUnit;

                        double SiteValue        = 0;
                        double ReferalSiteValue = 0;
                        double testperpack      = Convert.ToDouble(pqr.PackSize / pusage.Rate);

                        SiteValue = cpt.GetSumOfControlsByDuration(pusage.Instrument.ControlTestDurationEnum);

                        double valueofmetric = pusage.Product.CollectionSupplieAppliedTo ? SiteValue : SiteValue + ReferalSiteValue;
                        if (ArtSite.Site.ChemistryRefSite > 0 && !pusage.Product.CollectionSupplieAppliedTo)
                        {
                            valueofmetric = 0;
                        }

                        pqr.Value           = testperpack > 0 ? valueofmetric / testperpack : 0;
                        pqr.MinimumQuantity = pusage.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }

                    #endregion
                }
                #endregion
            }
        }
コード例 #7
0
ファイル: CalcViralLoad.cs プロジェクト: opianHealth/ForLAB
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastViralLoad)
            {
                int allHemQMid = 0;
                double value, allHemInsQty = 0;
                double referralValue;
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value = 0;
                    referralValue = 0;

                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Viral_Load_Tests.ToString())
                    {
                        value = GetTotalVLTestForSite();
                        referralValue = GetTotalVLTestForReferral();
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Instrument_All_Viral_Load_Instruments.ToString())
                        allHemQMid = qm.Id;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Day_All_Viral_Load_Instruments.ToString() && _vlPlatformTests.Count > 0)
                        value = ArtSite.Site.ViralLoadTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = qm.Id;
                        qval.SiteValue = value;
                        qval.ReferalSiteValue = referralValue;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                TestingDurationEnum[] tduration = LqtUtil.EnumToArray<TestingDurationEnum>();

                foreach (PlatformTestsAndControls cpt in _vlPlatformTests)
                {
                    allHemInsQty += cpt.Quantity;

                    PlatformQuantifyMenu pqm = (PlatformQuantifyMenu)_platformObject.GetPlatformQuantifyMenuByInsId(cpt.InstrumentId);
                    if (pqm != null)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = pqm.GetQuantifyMenuId(TestTypeEnum.Test);
                        qval.SiteValue = cpt.TotalSumOfTestOnInstrument();
                        qval.ReferalSiteValue = cpt.TotalSumOfSampleReferredTestOnInstrumanet();
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId = pqm.GetQuantifyMenuId(TestTypeEnum.PerInstrument);
                        qval.SiteValue = cpt.Quantity;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId = pqm.GetQuantifyMenuId(TestTypeEnum.PerDay);
                        qval.SiteValue = ArtSite.Site.CD4TestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        for (int i = 0; i < tduration.Length; i++)
                        {
                            qval = new QMenuWithValue();
                            qval.QuantifyMenuId = pqm.GetQuantifyMenuId(tduration[i]);
                            qval.SiteValue = cpt.GetSumOfControlsByDuration(tduration[i]);
                            if (tduration[i] == TestingDurationEnum.TotalControl || tduration[i] == TestingDurationEnum.PerTest)
                                qval.ReferalSiteValue = cpt.SampleReferredTotalControls();
                            else
                                qval.ReferalSiteValue = 0;
                            _listOfQMenuWithValue.Add(qval);
                        }
                    }
                }

                //Per Instrument - All Chemistry Instruments
                QMenuWithValue qv = new QMenuWithValue();
                qv.QuantifyMenuId = allHemQMid;
                qv.SiteValue = allHemInsQty;
                qv.ReferalSiteValue = 0;
                _listOfQMenuWithValue.Add(qv);

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList<QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);

                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit = r.Product.BasicUnit;

                        double testperpack = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        double valueofmetric = r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Collection.ToString() ? qm.SiteValue : qm.TotalValue;
                        if (ArtSite.Site.ViralLoadRefSite > 0 && r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Testing.ToString())
                            valueofmetric = 0;
                        pqr.Value = testperpack > 0 ? valueofmetric / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #8
0
ファイル: ListOfPrimeryQR.cs プロジェクト: geab/forlabv2-beta
 public void AddPrimeryQR(PrimeryQuantifyedReagent pqr)
 {
     _listofPQR.Add(pqr);
 }
コード例 #9
0
ファイル: CalcConsumable.cs プロジェクト: opianHealth/ForLAB
        private void CalculateOtherTest()
        {
            _adultArtNewPatientBloodDraws         = ArtSite.AITNewPatientBloodDraws;
            _adultArtExistingPatientBloodDraws    = ArtSite.AITExistingPatientBloodDraws;
            _adultPreArtNewPatientBloodDraws      = ArtSite.AIPNewPatientBloodDraws;
            _adultPreArtExistingPatientBloodDraws = ArtSite.AIPExistingPatientBloodDraws;

            _pedArtNewPatientBloodDraws         = ArtSite.PITNewPatientBloodDraws;
            _pedArtExistingPatientBloodDraws    = ArtSite.PITExistingPatientBloodDraws;
            _pedPreArtNewPatientBloodDraws      = ArtSite.PIPNewPatientBloodDraws;
            _pedPreArtExistingPatientBloodDraws = ArtSite.PIPExistingPatientBloodDraws;


            for (int i = 1; i <= 12; i++)
            {
                MOutputConsumable otherOut = new MOutputConsumable();
                otherOut.Month = i;
                otherOut.AdultArtExistingPatientBloodDraws    = (CalculatedPatientNos[i].ArtAdultPreExistingPatients * (_adultArtExistingPatientBloodDraws / 12d));
                otherOut.AdultArtNewPatientBloodDraws         = (CalculatedPatientNos[i].TotalArtAdultPatientsEntering() * (_adultArtNewPatientBloodDraws / 12d));
                otherOut.AdultPreArtExistingPatientBloodDraws = (CalculatedPatientNos[i].PreArtAdultPreExistingPatients * (_adultPreArtExistingPatientBloodDraws / 12d));
                otherOut.AdultPreArtNewPatientBloodDraws      = (CalculatedPatientNos[i].TotalPreArtAdultPatientsEntering() * (_adultPreArtNewPatientBloodDraws / 12d));

                otherOut.PediatricArtExistingPatientBloodDraws    = (CalculatedPatientNos[i].ArtPediatricPreExistingPatients * (_pedArtExistingPatientBloodDraws / 12d));
                otherOut.PediatricArtNewPatientBloodDraws         = (CalculatedPatientNos[i].TotalArtPediatricPatientsEntering() * (_pedArtNewPatientBloodDraws / 12d));
                otherOut.PediatricPreArtExistingPatientBloodDraws = (CalculatedPatientNos[i].PreArtPediatricPreExistingPatients * (_pedPreArtExistingPatientBloodDraws / 12d));
                otherOut.PediatricPreArtNewPatientBloodDraws      = (CalculatedPatientNos[i].TotalPreArtPediatricPatientsEntering() * (_pedPreArtNewPatientBloodDraws / 12d));

                if ((i + 1 >= PeriodInfo.BeginsOnmonth) && (i + 1 <= PeriodInfo.EndOnMonth))
                {
                    otherOut.TotalAdultBloodDrawsBeyondForecastPeriod     = otherOut.GetSumOfAdultBloodDraws();
                    otherOut.TotalPediatricBloodDrawsBeyondForecastPeriod = otherOut.GetSumOfPediatricBloodDraws();
                    otherOut.TotalBloodDrawsBeyondForecastPeriod          = otherOut.GetSumOfAdultBloodDraws() + otherOut.GetSumOfPediatricBloodDraws();
                }
                else
                {
                    otherOut.TotalAdultBloodDrawsBeyondForecastPeriod     = 0;
                    otherOut.TotalPediatricBloodDrawsBeyondForecastPeriod = 0;
                    otherOut.TotalBloodDrawsBeyondForecastPeriod          = 0;
                }

                if ((i + 1 >= PeriodInfo.FirstMonth) && (i + 1 <= PeriodInfo.LastMonth))
                {
                    otherOut.TotalAdultBloodDraws     = otherOut.GetSumOfAdultBloodDraws();
                    otherOut.TotalPediatricBloodDraws = otherOut.GetSumOfPediatricBloodDraws();

                    otherOut.PositiveDiagnoses                        = RapidTestOutputs[i].AdultsPositiveDiagnoses + RapidTestOutputs[i].PediatricsPositiveDiagnoses;
                    otherOut.PositiveDiagnosesToReceiveCD4            = CD4MonthlyOutputs[i].TotalReceivingCD4Test();
                    otherOut.PositiveDiagnosesBufferStock             = 0;
                    otherOut.PositiveDiagnosesToReceiveCD4BufferStock = 0;
                }
                else
                {
                    otherOut.TotalAdultBloodDraws     = 0;
                    otherOut.TotalPediatricBloodDraws = 0;

                    otherOut.PositiveDiagnoses                        = 0;
                    otherOut.PositiveDiagnosesToReceiveCD4            = 0;
                    otherOut.PositiveDiagnosesBufferStock             = RapidTestOutputs[i].AdultsPositiveDiagnoses + RapidTestOutputs[i].PediatricsPositiveDiagnoses;
                    otherOut.PositiveDiagnosesToReceiveCD4BufferStock = CD4MonthlyOutputs[i].TotalReceivingCD4Test();
                }
                _othMonthlyOutputs.Add(i, otherOut);
            }

            _adultTotalBufferBeyondForecastPeriod              = _othMonthlyOutputs[12].GetSumOfAdultBloodDraws() * PeriodInfo.NumberofBufferMonthsBeyondForecast;
            _pedTotalBufferBeyondForecastPeriod                = _othMonthlyOutputs[12].GetSumOfPediatricBloodDraws() * PeriodInfo.NumberofBufferMonthsBeyondForecast;
            _PositiveDiagnosesBeyondForecastPeriod             = (RapidTestOutputs[12].AdultsPositiveDiagnoses + RapidTestOutputs[12].PediatricsPositiveDiagnoses) * PeriodInfo.NumberofBufferMonthsBeyondForecast;
            _PositiveDiagnosesToReceiveCD4BeyondForecastPeriod = CD4MonthlyOutputs[12].TotalReceivingCD4Test() * PeriodInfo.NumberofBufferMonthsBeyondForecast;

            QMenuWithValue qvalue;

            //DOES THIS SITE RECEIVE CONSUMMABLE SUPPLIES?
            if (ArtSite.ForecastConsumable)
            {
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    double value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Positive_Diagnoses.ToString())
                    {
                        value = TotalPositiveDiagnoses();
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Positive_Diagnoses_to_Receive_CD4.ToString())
                    {
                        value = TotalPositiveDiagnosestoReceiveCD4();
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Blood_Draws.ToString())
                    {
                        value = TOTALBloodDraws();
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Blood_Draws_Adult.ToString())
                    {
                        value = TotalAdultBloodDraws();
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Blood_Draws_Pediatric.ToString())
                    {
                        value = TotalPediatricBloodDraws();
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerDay_PerSite.ToString())
                    {
                        value = PeriodInfo.WorkingDaysinBudgetPeriod;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerWeek_PerSite.ToString())
                    {
                        value = PeriodInfo.WeeksinBudgetPeriod;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerMonth_PerSite.ToString())
                    {
                        value = PeriodInfo.NumberofMonthsinBudgetPeriod;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerQuarter_PerSite.ToString())
                    {
                        value = PeriodInfo.QuartersinBudgetPeriod;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerYear_PerSite.ToString())
                    {
                        value = 1;
                    }
                    else
                    {
                        qvalue = null;
                        switch (qm.ClassOfTestToEnum)
                        {
                        case ClassOfMorbidityTestEnum.CD4:
                            qvalue = CD4TestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                            break;

                        case ClassOfMorbidityTestEnum.Chemistry:
                            qvalue = ChemistryTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                            break;

                        case ClassOfMorbidityTestEnum.Hematology:
                            qvalue = HematologyTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                            break;

                        case ClassOfMorbidityTestEnum.ViralLoad:
                            qvalue = ViralTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                            break;

                        case ClassOfMorbidityTestEnum.RapidTest:
                            qvalue = RapidTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                            break;
                        }
                        if (qvalue != null)
                        {
                            value = qvalue.SiteValue;
                        }
                    }

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = qm.Id;
                        qval.SiteValue        = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList <QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);
                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost  = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = r.Product.BasicUnit;

                        double testperpack = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        pqr.Value           = testperpack > 0 ? qm.SiteValue / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #10
0
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastChemistry)
            {
                InitTotalValues();
                int    allChemQMid = 0;
                double value, allChemInsQty = 0;
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Chemistry_Patient_Samples_Run_On_All_Instruments.ToString())
                    {
                        value = TotalPatientSamples;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Chemistry_controls_for_all_instruments.ToString())
                    {
                        value = TotalControls;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_ALP_Tests_on_all_instruments.ToString())
                    {
                        value = TotalALP;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_ALT_Tests_on_all_instruments.ToString())
                    {
                        value = TotalALT;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_AMY_Tests_on_all_instruments.ToString())
                    {
                        value = TotalAMY;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_AST_Tests_on_all_instruments.ToString())
                    {
                        value = TotalAST;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_CHO_Tests_on_all_instruments.ToString())
                    {
                        value = TotalCHO;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_CO2_Tests_on_all_instruments.ToString())
                    {
                        value = TotalCO2;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_CRE_Tests_on_all_instruments.ToString())
                    {
                        value = TotalCRE;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Electrolyte_Panel_tests_on_all_instruments.ToString())
                    {
                        value = TotalElectrolyte;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_GGT_Tests_on_all_instruments.ToString())
                    {
                        value = TotalGGT;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_GLC_Tests_on_all_instruments.ToString())
                    {
                        value = TotalGLC;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TG_Tests_on_all_instruments.ToString())
                    {
                        value = TotalTG;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Urea_tests_on_all_instruments.ToString())
                    {
                        value = TotalUrea;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Instrument_All_Chemistry_Instruments.ToString())
                    {
                        allChemQMid = qm.Id;
                    }
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Day_All_Chemistry_Instruments.ToString() && _chemPlatformTests.Count > 0)
                    {
                        value = ArtSite.Site.ChemistryTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                    }

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = qm.Id;
                        qval.SiteValue        = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                ChemistryTestNameEnum[] chemTests = LqtUtil.EnumToArray <ChemistryTestNameEnum>();
                TestingDurationEnum[]   tduration = LqtUtil.EnumToArray <TestingDurationEnum>();

                foreach (ChemistryPlatformTests cpt in _chemPlatformTests)
                {
                    allChemInsQty += cpt.Quantity;

                    CTestPlatformQuantifyMenu pqm = (CTestPlatformQuantifyMenu)_platformObject.GetPlatformQuantifyMenuByInsId(cpt.InstrumentId);
                    if (pqm != null)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = pqm.TotalPatientSamplesRunOnIns;
                        qval.SiteValue        = cpt.TotalSmaples();
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = pqm.GetQuantifyMenuId(TestTypeEnum.PerInstrument);
                        qval.SiteValue        = cpt.Quantity;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId   = pqm.GetQuantifyMenuId(TestTypeEnum.PerDay);
                        qval.SiteValue        = ArtSite.Site.ChemistryTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        for (int i = 0; i < chemTests.Length; i++)
                        {
                            if (ParameterIncluded(chemTests[i]))
                            {
                                qval = new QMenuWithValue();
                                qval.QuantifyMenuId   = pqm.GetChemQuantifyMenuId(chemTests[i]);
                                qval.SiteValue        = cpt.TotalTestsOnInstrument(chemTests[i]);
                                qval.ReferalSiteValue = 0;
                                _listOfQMenuWithValue.Add(qval);
                            }
                        }

                        for (int i = 0; i < tduration.Length; i++)
                        {
                            qval = new QMenuWithValue();
                            qval.QuantifyMenuId   = pqm.GetQuantifyMenuId(tduration[i]);
                            qval.SiteValue        = cpt.GetSumOfControlsByDuration(tduration[i]);
                            qval.ReferalSiteValue = 0;
                            _listOfQMenuWithValue.Add(qval);
                        }
                    }
                }

                //Per Instrument - All Chemistry Instruments
                QMenuWithValue qv = new QMenuWithValue();
                qv.QuantifyMenuId   = allChemQMid;
                qv.SiteValue        = allChemInsQty;
                qv.ReferalSiteValue = 0;
                _listOfQMenuWithValue.Add(qv);

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList <QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);

                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost  = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize  = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit      = r.Product.BasicUnit;

                        double testperpack   = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        double valueofmetric = r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Collection.ToString() ? qm.SiteValue : qm.TotalValue;
                        if (ArtSite.Site.ChemistryRefSite > 0 && r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Testing.ToString())
                        {
                            valueofmetric = 0;
                        }
                        pqr.Value           = testperpack > 0 ? valueofmetric / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #11
0
ファイル: ListOfPrimeryQR.cs プロジェクト: opianHealth/ForLAB
 public void AddPrimeryQR(PrimeryQuantifyedReagent pqr)
 {
     _listofPQR.Add(pqr);
 }
コード例 #12
0
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastChemistry)
            {
                InitTotalValues();
                int allChemQMid = 0;
                double value, allChemInsQty = 0;
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Chemistry_Patient_Samples_Run_On_All_Instruments.ToString())
                        value = TotalPatientSamples;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Chemistry_controls_for_all_instruments.ToString())
                        value = TotalControls;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_ALP_Tests_on_all_instruments.ToString())
                        value = TotalALP;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_ALT_Tests_on_all_instruments.ToString())
                        value = TotalALT;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_AMY_Tests_on_all_instruments.ToString())
                        value = TotalAMY;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_AST_Tests_on_all_instruments.ToString())
                        value = TotalAST;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_CHO_Tests_on_all_instruments.ToString())
                        value = TotalCHO;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_CO2_Tests_on_all_instruments.ToString())
                        value = TotalCO2;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_CRE_Tests_on_all_instruments.ToString())
                        value = TotalCRE;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Electrolyte_Panel_tests_on_all_instruments.ToString())
                        value = TotalElectrolyte;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_GGT_Tests_on_all_instruments.ToString())
                        value = TotalGGT;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_GLC_Tests_on_all_instruments.ToString())
                        value = TotalGLC;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TG_Tests_on_all_instruments.ToString())
                        value = TotalTG;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Urea_tests_on_all_instruments.ToString())
                        value = TotalUrea;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Instrument_All_Chemistry_Instruments.ToString())
                        allChemQMid = qm.Id;
                    else if (qm.Title == GeneralQuantifyMenuEnum.Per_Day_All_Chemistry_Instruments.ToString() && _chemPlatformTests.Count > 0)
                        value = ArtSite.Site.ChemistryTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = qm.Id;
                        qval.SiteValue = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                ChemistryTestNameEnum[] chemTests = LqtUtil.EnumToArray<ChemistryTestNameEnum>();
                TestingDurationEnum[] tduration = LqtUtil.EnumToArray<TestingDurationEnum>();

                foreach(ChemistryPlatformTests cpt in _chemPlatformTests)
                {
                    allChemInsQty += cpt.Quantity;

                    CTestPlatformQuantifyMenu pqm = (CTestPlatformQuantifyMenu)_platformObject.GetPlatformQuantifyMenuByInsId(cpt.InstrumentId);
                    if (pqm != null)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = pqm.TotalPatientSamplesRunOnIns;
                        qval.SiteValue = cpt.TotalSmaples();
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId = pqm.GetQuantifyMenuId(TestTypeEnum.PerInstrument);
                        qval.SiteValue = cpt.Quantity;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        qval = new QMenuWithValue();
                        qval.QuantifyMenuId = pqm.GetQuantifyMenuId(TestTypeEnum.PerDay);
                        qval.SiteValue = ArtSite.Site.ChemistryTestingDaysPerMonth * (PeriodInfo.NumberofBufferMonthsBeyondForecast + PeriodInfo.NumberofMonthsinBudgetPeriod);
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);

                        for (int i = 0; i < chemTests.Length; i++)
                        {
                            if (ParameterIncluded(chemTests[i]))
                            {
                                qval = new QMenuWithValue();
                                qval.QuantifyMenuId = pqm.GetChemQuantifyMenuId(chemTests[i]);
                                qval.SiteValue = cpt.TotalTestsOnInstrument(chemTests[i]);
                                qval.ReferalSiteValue = 0;
                                _listOfQMenuWithValue.Add(qval);
                            }
                        }

                        for (int i = 0; i < tduration.Length; i++)
                        {
                            qval = new QMenuWithValue();
                            qval.QuantifyMenuId = pqm.GetQuantifyMenuId(tduration[i]);
                            qval.SiteValue = cpt.GetSumOfControlsByDuration(tduration[i]);
                            qval.ReferalSiteValue = 0;
                            _listOfQMenuWithValue.Add(qval);
                        }
                    }
                }

                //Per Instrument - All Chemistry Instruments
                QMenuWithValue qv = new QMenuWithValue();
                qv.QuantifyMenuId = allChemQMid;
                qv.SiteValue = allChemInsQty;
                qv.ReferalSiteValue = 0;
                _listOfQMenuWithValue.Add(qv);

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList<QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);

                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit = r.Product.BasicUnit;

                        double testperpack = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        double valueofmetric = r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Collection.ToString() ? qm.SiteValue : qm.TotalValue;
                        if (ArtSite.Site.ChemistryRefSite > 0 && r.CollectionSupplieAppliedTo == CollectionSupplieAppliedToEnum.Testing.ToString())
                            valueofmetric = 0;
                        pqr.Value = testperpack > 0 ? valueofmetric / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #13
0
ファイル: CalcOtherTest.cs プロジェクト: opianHealth/ForLAB
        private void DoQuantification()
        {
            //DOES THIS SITE RECEIVE Chemistry SUPPLIES?
            if (ArtSite.ForecastOtherTest)
            {
                double value;

                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Syphilis_RPR_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.Syphilis_RPR);
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TB_AFB_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.TB_AFB);
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Hepatitis_HBsAG_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.Hepatitis_HBsAG);
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Hepatitis_Anti_HCV_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.Hepatitis_Anti_HCV);
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TB_Culture_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.TB_Culture);
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_TB_DST_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.TB_DST);
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_PAP_Smear_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.PAP_Smear);
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Genotype_Resistance_Testing_Test.ToString())
                        value = GetSumofTest(OtherTestNameEnum.Genotype_Resistance_Testing);
                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = qm.Id;
                        qval.SiteValue = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                double testperpack;
                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList<QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);
                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit = r.Product.BasicUnit;

                        testperpack = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        pqr.Value = testperpack > 0 ? qm.TotalValue / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }
コード例 #14
0
ファイル: CalcConsumable.cs プロジェクト: opianHealth/ForLAB
        private void CalculateOtherTest()
        {
            _adultArtNewPatientBloodDraws = ArtSite.AITNewPatientBloodDraws;
            _adultArtExistingPatientBloodDraws = ArtSite.AITExistingPatientBloodDraws;
            _adultPreArtNewPatientBloodDraws = ArtSite.AIPNewPatientBloodDraws;
            _adultPreArtExistingPatientBloodDraws = ArtSite.AIPExistingPatientBloodDraws;

            _pedArtNewPatientBloodDraws = ArtSite.PITNewPatientBloodDraws;
            _pedArtExistingPatientBloodDraws = ArtSite.PITExistingPatientBloodDraws;
            _pedPreArtNewPatientBloodDraws = ArtSite.PIPNewPatientBloodDraws;
            _pedPreArtExistingPatientBloodDraws = ArtSite.PIPExistingPatientBloodDraws;

            for (int i = 1; i <= 12; i++)
            {
                MOutputConsumable otherOut = new MOutputConsumable();
                otherOut.Month = i;
                otherOut.AdultArtExistingPatientBloodDraws = (CalculatedPatientNos[i].ArtAdultPreExistingPatients * (_adultArtExistingPatientBloodDraws / 12d));
                otherOut.AdultArtNewPatientBloodDraws = (CalculatedPatientNos[i].TotalArtAdultPatientsEntering() * (_adultArtNewPatientBloodDraws / 12d));
                otherOut.AdultPreArtExistingPatientBloodDraws = (CalculatedPatientNos[i].PreArtAdultPreExistingPatients * (_adultPreArtExistingPatientBloodDraws / 12d));
                otherOut.AdultPreArtNewPatientBloodDraws = (CalculatedPatientNos[i].TotalPreArtAdultPatientsEntering() * (_adultPreArtNewPatientBloodDraws / 12d));

                otherOut.PediatricArtExistingPatientBloodDraws = (CalculatedPatientNos[i].ArtPediatricPreExistingPatients * (_pedArtExistingPatientBloodDraws / 12d));
                otherOut.PediatricArtNewPatientBloodDraws = (CalculatedPatientNos[i].TotalArtPediatricPatientsEntering() * (_pedArtNewPatientBloodDraws / 12d));
                otherOut.PediatricPreArtExistingPatientBloodDraws = (CalculatedPatientNos[i].PreArtPediatricPreExistingPatients * (_pedPreArtExistingPatientBloodDraws / 12d));
                otherOut.PediatricPreArtNewPatientBloodDraws = (CalculatedPatientNos[i].TotalPreArtPediatricPatientsEntering() * (_pedPreArtNewPatientBloodDraws / 12d));

                if ((i + 1 >= PeriodInfo.BeginsOnmonth) && (i + 1 <= PeriodInfo.EndOnMonth))
                {
                    otherOut.TotalAdultBloodDrawsBeyondForecastPeriod = otherOut.GetSumOfAdultBloodDraws();
                    otherOut.TotalPediatricBloodDrawsBeyondForecastPeriod = otherOut.GetSumOfPediatricBloodDraws();
                    otherOut.TotalBloodDrawsBeyondForecastPeriod = otherOut.GetSumOfAdultBloodDraws() + otherOut.GetSumOfPediatricBloodDraws();
                }
                else
                {
                    otherOut.TotalAdultBloodDrawsBeyondForecastPeriod = 0;
                    otherOut.TotalPediatricBloodDrawsBeyondForecastPeriod = 0;
                    otherOut.TotalBloodDrawsBeyondForecastPeriod = 0;
                }

                if ((i + 1 >= PeriodInfo.FirstMonth) && (i + 1 <= PeriodInfo.LastMonth))
                {
                    otherOut.TotalAdultBloodDraws = otherOut.GetSumOfAdultBloodDraws();
                    otherOut.TotalPediatricBloodDraws = otherOut.GetSumOfPediatricBloodDraws();

                    otherOut.PositiveDiagnoses = RapidTestOutputs[i].AdultsPositiveDiagnoses + RapidTestOutputs[i].PediatricsPositiveDiagnoses;
                    otherOut.PositiveDiagnosesToReceiveCD4 = CD4MonthlyOutputs[i].TotalReceivingCD4Test();
                    otherOut.PositiveDiagnosesBufferStock = 0;
                    otherOut.PositiveDiagnosesToReceiveCD4BufferStock = 0;
                }
                else
                {
                    otherOut.TotalAdultBloodDraws = 0;
                    otherOut.TotalPediatricBloodDraws = 0;

                    otherOut.PositiveDiagnoses = 0;
                    otherOut.PositiveDiagnosesToReceiveCD4 = 0;
                    otherOut.PositiveDiagnosesBufferStock = RapidTestOutputs[i].AdultsPositiveDiagnoses + RapidTestOutputs[i].PediatricsPositiveDiagnoses;
                    otherOut.PositiveDiagnosesToReceiveCD4BufferStock = CD4MonthlyOutputs[i].TotalReceivingCD4Test();
                }
                _othMonthlyOutputs.Add(i, otherOut);
            }

            _adultTotalBufferBeyondForecastPeriod = _othMonthlyOutputs[12].GetSumOfAdultBloodDraws() * PeriodInfo.NumberofBufferMonthsBeyondForecast;
            _pedTotalBufferBeyondForecastPeriod = _othMonthlyOutputs[12].GetSumOfPediatricBloodDraws() * PeriodInfo.NumberofBufferMonthsBeyondForecast;
            _PositiveDiagnosesBeyondForecastPeriod = (RapidTestOutputs[12].AdultsPositiveDiagnoses + RapidTestOutputs[12].PediatricsPositiveDiagnoses) * PeriodInfo.NumberofBufferMonthsBeyondForecast;
            _PositiveDiagnosesToReceiveCD4BeyondForecastPeriod = CD4MonthlyOutputs[12].TotalReceivingCD4Test() * PeriodInfo.NumberofBufferMonthsBeyondForecast;

            QMenuWithValue qvalue;
            //DOES THIS SITE RECEIVE CONSUMMABLE SUPPLIES?
            if (ArtSite.ForecastConsumable)
            {
                foreach (QuantifyMenu qm in _platformObject.GeneralQuantifyMenus)
                {
                    double value = 0;
                    if (qm.Title == GeneralQuantifyMenuEnum.Total_Positive_Diagnoses.ToString())
                        value = TotalPositiveDiagnoses();
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Positive_Diagnoses_to_Receive_CD4.ToString())
                        value = TotalPositiveDiagnosestoReceiveCD4();
                    else if (qm.Title == GeneralQuantifyMenuEnum.Total_Blood_Draws.ToString())
                        value = TOTALBloodDraws();
                    else if (qm.Title == GeneralQuantifyMenuEnum.Blood_Draws_Adult.ToString())
                        value = TotalAdultBloodDraws();
                    else if (qm.Title == GeneralQuantifyMenuEnum.Blood_Draws_Pediatric.ToString())
                        value = TotalPediatricBloodDraws();
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerDay_PerSite.ToString())
                        value = PeriodInfo.WorkingDaysinBudgetPeriod;
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerWeek_PerSite.ToString())
                        value = PeriodInfo.WeeksinBudgetPeriod;
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerMonth_PerSite.ToString())
                        value = PeriodInfo.NumberofMonthsinBudgetPeriod;
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerQuarter_PerSite.ToString())
                        value = PeriodInfo.QuartersinBudgetPeriod;
                    else if (qm.Title == GeneralQuantifyMenuEnum.PerYear_PerSite.ToString())
                        value = 1;
                    else
                    {
                        qvalue = null;
                        switch (qm.ClassOfTestToEnum)
                        {
                            case ClassOfMorbidityTestEnum.CD4:
                                qvalue = CD4TestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                                break;
                            case ClassOfMorbidityTestEnum.Chemistry:
                                qvalue = ChemistryTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                                break;
                            case ClassOfMorbidityTestEnum.Hematology:
                                qvalue = HematologyTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                                break;
                            case ClassOfMorbidityTestEnum.ViralLoad:
                                qvalue = ViralTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                                break;
                            case ClassOfMorbidityTestEnum.RapidTest:
                                qvalue = RapidTestCalculator.GetQMenuWithValueByQuantifyMenuId(qm.Id);
                                break;
                        }
                        if (qvalue != null)
                            value = qvalue.SiteValue;
                    }

                    if (value > 0)
                    {
                        QMenuWithValue qval = new QMenuWithValue();
                        qval.QuantifyMenuId = qm.Id;
                        qval.SiteValue = value;
                        qval.ReferalSiteValue = 0;
                        _listOfQMenuWithValue.Add(qval);
                    }
                }

                foreach (QMenuWithValue qm in _listOfQMenuWithValue)
                {
                    IList<QuantificationMetric> list = _platformObject.GetQuanMetricByQuanMenuId(qm.QuantifyMenuId);
                    foreach (QuantificationMetric r in list)
                    {
                        PrimeryQuantifyedReagent pqr = new PrimeryQuantifyedReagent();
                        pqr.ProductId = r.Product.Id;
                        pqr.UnitCost = r.Product.GetActiveProductPrice(DateTime.Now).Price;
                        pqr.PackSize = r.Product.GetActiveProductPrice(DateTime.Now).PackSize;
                        pqr.Unit = r.Product.BasicUnit;

                        double testperpack = r.Product.GetActiveProductPrice(DateTime.Now).PackSize / r.UsageRate;
                        pqr.Value = testperpack > 0 ? qm.SiteValue / testperpack : 0;
                        pqr.MinimumQuantity = r.Product.MinimumPackSize;
                        _lstPrimaryQuanReagents.AddPrimeryQR(pqr);
                    }
                }
            }
        }