//add a base health input stock to the baseStat.HealthCareCost1s dictionary
        public static bool AddInputHCStocksToDictionary(this InputHCStock baseStat,
                                                        int filePosition, int nodePosition, HealthCareCost1Calculator hcInputStock)
        {
            bool bIsAdded = false;

            if (filePosition < 0 || nodePosition < 0)
            {
                baseStat.ErrorMessage
                    = Errors.MakeStandardErrorMsg("ANALYSES_INDEX_OUTOFBOUNDS");
                return(false);
            }
            if (baseStat.HealthCareCost1s == null)
            {
                baseStat.HealthCareCost1s
                    = new Dictionary <int, List <HealthCareCost1Calculator> >();
            }
            if (baseStat.HealthCareCost1s.ContainsKey(filePosition))
            {
                if (baseStat.HealthCareCost1s[filePosition] != null)
                {
                    for (int i = 0; i <= nodePosition; i++)
                    {
                        if (baseStat.HealthCareCost1s[filePosition].Count <= i)
                        {
                            baseStat.HealthCareCost1s[filePosition]
                            .Add(new HealthCareCost1Calculator());
                        }
                    }
                    baseStat.HealthCareCost1s[filePosition][nodePosition]
                             = hcInputStock;
                    bIsAdded = true;
                }
            }
            else
            {
                //add the missing dictionary entry
                List <HealthCareCost1Calculator> baseStats
                    = new List <HealthCareCost1Calculator>();
                KeyValuePair <int, List <HealthCareCost1Calculator> > newStat
                    = new KeyValuePair <int, List <HealthCareCost1Calculator> >(
                          filePosition, baseStats);
                baseStat.HealthCareCost1s.Add(newStat);
                bIsAdded = AddInputHCStocksToDictionary(baseStat,
                                                        filePosition, nodePosition, hcInputStock);
            }
            return(bIsAdded);
        }
        public static int GetNodePositionCount(this InputHCStock baseStat,
                                               int filePosition, HealthCareCost1Calculator hcInputStock)
        {
            int iNodeCount = 0;

            if (baseStat.HealthCareCost1s == null)
            {
                return(iNodeCount);
            }
            if (baseStat.HealthCareCost1s.ContainsKey(filePosition))
            {
                if (baseStat.HealthCareCost1s[filePosition] != null)
                {
                    iNodeCount = baseStat.HealthCareCost1s[filePosition].Count;
                }
            }
            return(iNodeCount);
        }
        public virtual void CopyTotalInputHCStockProperties(
            InputHCStock calculator)
        {
            this.TotalBasePrice           = calculator.TotalBasePrice;
            this.TotalBasePriceAdjustment = calculator.TotalBasePriceAdjustment;
            this.TotalAdjustedPrice       = calculator.TotalAdjustedPrice;
            this.TotalContractedPrice     = calculator.TotalContractedPrice;

            this.TotalListPrice               = calculator.TotalListPrice;
            this.TotalMarketPrice             = calculator.TotalMarketPrice;
            this.TotalProductionCostPrice     = calculator.TotalProductionCostPrice;
            this.TotalAnnualPremium1          = calculator.TotalAnnualPremium1;
            this.TotalAnnualPremium2          = calculator.TotalAnnualPremium2;
            this.TotalAssignedPremiumCost     = calculator.TotalAssignedPremiumCost;
            this.TotalAdditionalPrice1        = calculator.TotalAdditionalPrice1;
            this.TotalAdditionalAmount1       = calculator.TotalAdditionalAmount1;
            this.TotalAdditionalCost1         = calculator.TotalAdditionalCost1;
            this.TotalAdditionalPrice2        = calculator.TotalAdditionalPrice2;
            this.TotalAdditionalAmount2       = calculator.TotalAdditionalAmount2;
            this.TotalAdditionalCost2         = calculator.TotalAdditionalCost2;
            this.TotalHealthCareProviderCost  = calculator.TotalHealthCareProviderCost;
            this.TotalAdditionalCost          = calculator.TotalAdditionalCost;
            this.TotalKnowledgeTransferRating = calculator.TotalKnowledgeTransferRating;
            this.TotalConstrainedChoiceRating = calculator.TotalConstrainedChoiceRating;

            this.TotalCoPay1Amount            = calculator.TotalCoPay1Amount;
            this.TotalCoPay1Rate              = calculator.TotalCoPay1Rate;
            this.TotalCoPay2Amount            = calculator.TotalCoPay2Amount;
            this.TotalCoPay2Rate              = calculator.TotalCoPay2Rate;
            this.TotalIncentive1Amount        = calculator.TotalIncentive1Amount;
            this.TotalIncentive1Rate          = calculator.TotalIncentive1Rate;
            this.TotalIncentive2Amount        = calculator.TotalIncentive2Amount;
            this.TotalIncentive2Rate          = calculator.TotalIncentive2Rate;
            this.TotalInsuranceProviderCost   = calculator.TotalInsuranceProviderCost;
            this.TotalIncentivesCost          = calculator.TotalIncentivesCost;
            this.TotalReceiverCost            = calculator.TotalReceiverCost;
            this.TotalDiagnosisQualityRating  = calculator.TotalDiagnosisQualityRating;
            this.TotalTreatmentQualityRating  = calculator.TotalTreatmentQualityRating;
            this.TotalTreatmentBenefitRating  = calculator.TotalTreatmentBenefitRating;
            this.TotalTreatmentCostRating     = calculator.TotalTreatmentCostRating;
            this.TotalInsuranceCoverageRating = calculator.TotalInsuranceCoverageRating;
            this.TotalCostRating              = calculator.TotalCostRating;
        }
 //copy constructor
 public InputHCStock(InputHCStock calculator)
     : base(calculator)
 {
     CopyTotalInputHCStockProperties(calculator);
 }