Exemplo n.º 1
0
        ///<summary>This returns the number of plans affected.</summary>
        public static void UpdatePlan(TrojanObject troj, long planNum, bool updateBenefits)
        {
            if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
            {
                Meth.GetVoid(MethodBase.GetCurrentMethod(), troj, planNum, updateBenefits);
                return;
            }
            long   employerNum = Employers.GetEmployerNum(troj.ENAME);
            string command;

            //for(int i=0;i<planNums.Count;i++) {
            command = "UPDATE insplan SET "
                      + "EmployerNum=" + POut.Long(employerNum) + ", "
                      + "GroupName='" + POut.String(troj.PLANDESC) + "', "
                      + "GroupNum='" + POut.String(troj.POLICYNO) + "', "
                      + "CarrierNum= " + POut.Long(troj.CarrierNum) + " "
                      + "WHERE PlanNum=" + POut.Long(planNum);
            Db.NonQ(command);
            command = "UPDATE inssub SET "
                      + "BenefitNotes='" + POut.String(troj.BenefitNotes) + "' "
                      + "WHERE PlanNum=" + POut.Long(planNum);
            Db.NonQ(command);
            if (updateBenefits)
            {
                //clear benefits
                command = "DELETE FROM benefit WHERE PlanNum=" + POut.Long(planNum);
                Db.NonQ(command);
                //benefitList
                for (int j = 0; j < troj.BenefitList.Count; j++)
                {
                    troj.BenefitList[j].PlanNum = planNum;
                    Benefits.Insert(troj.BenefitList[j]);
                }
                InsPlans.ComputeEstimatesForTrojanPlan(planNum);
            }
        }
Exemplo n.º 2
0
		///<summary>This returns the number of plans affected.</summary>
		public static void UpdatePlan(TrojanObject troj,long planNum,bool updateBenefits) {
			if(RemotingClient.RemotingRole==RemotingRole.ClientWeb) {
				Meth.GetVoid(MethodBase.GetCurrentMethod(),troj,planNum,updateBenefits);
				return;
			}
			long employerNum=Employers.GetEmployerNum(troj.ENAME);
			string command;
			//for(int i=0;i<planNums.Count;i++) {
			command="UPDATE insplan SET "
				+"EmployerNum="  +POut.Long  (employerNum)+", "
				+"GroupName='"   +POut.String(troj.PLANDESC)+"', "
				+"GroupNum='"    +POut.String(troj.POLICYNO)+"', "
				+"CarrierNum= "  +POut.Long  (troj.CarrierNum)+" "
				+"WHERE PlanNum="+POut.Long  (planNum);
			Db.NonQ(command);
			command="UPDATE inssub SET "
				+"BenefitNotes='"+POut.String(troj.BenefitNotes)+"' "
				+"WHERE PlanNum="+POut.Long(planNum);
			Db.NonQ(command);
			if(updateBenefits) {
				//clear benefits
				command="DELETE FROM benefit WHERE PlanNum="+POut.Long(planNum);
				Db.NonQ(command);
				//benefitList
				for(int j=0;j<troj.BenefitList.Count;j++) {
					troj.BenefitList[j].PlanNum=planNum;
					Benefits.Insert(troj.BenefitList[j]);
				}
				InsPlans.ComputeEstimatesForTrojanPlan(planNum);
			}
		}
Exemplo n.º 3
0
		///<summary>Converts the text for one plan into an object which will then be processed as needed.</summary>
		public static TrojanObject ProcessTextToObject(string text){
			string[] lines=text.Split(new string[] { "\r\n" },StringSplitOptions.RemoveEmptyEntries);
			string line;
			string[] fields;
			int percent;
			double amt;
			string rowVal;
			TrojanObject troj=new TrojanObject();
			troj.BenefitList=new List<Benefit>();
			troj.BenefitNotes="";
			bool usesAnnivers=false;
			Benefit ben;
			Benefit benCrownMajor=null;
			Benefit benCrownOnly=null;
      for(int i=0;i<lines.Length;i++){
				line=lines[i];
				fields=line.Split(new char[] {'\t'});
				if(fields.Length!=3){
					continue;
				}
				//remove any trailing or leading spaces:
				fields[0]=fields[0].Trim();
				fields[1]=fields[1].Trim();
				fields[2]=fields[2].Trim();
				rowVal=fields[2].Trim();
				if(fields[2]==""){
					continue;
				}
				else{//as long as there is data, add it to the notes
					if(troj.BenefitNotes!="") {
						troj.BenefitNotes+="\r\n";
					}
					troj.BenefitNotes+=fields[1]+": "+fields[2];
					if(fields.Length==4) {
						troj.BenefitNotes+=" "+fields[3];
					}
				}
				switch(fields[0]){
					//default://for all rows that are not handled below
					case "TROJANID":
						troj.TROJANID=fields[2];
						break;
					case "ENAME":
						troj.ENAME=fields[2];
						break;
					case "PLANDESC":
						troj.PLANDESC=fields[2];
						break;
					case "ELIGPHONE":
						troj.ELIGPHONE=fields[2];
						break;
					case "POLICYNO":
						troj.POLICYNO=fields[2];
						break;
					case "ECLAIMS":
						if(fields[2]=="YES") {//accepts eclaims
							troj.ECLAIMS=true;
						}
						else {
							troj.ECLAIMS=false;
						}
						break;
					case "PAYERID":
						troj.PAYERID=fields[2];
						break;
					case "MAILTO":
						troj.MAILTO=fields[2];
						break;
					case "MAILTOST":
						troj.MAILTOST=fields[2];
						break;
					case "MAILCITYONLY":
						troj.MAILCITYONLY=fields[2];
						break;
					case "MAILSTATEONLY":
						troj.MAILSTATEONLY=fields[2];
						break;
					case "MAILZIPONLY":
						troj.MAILZIPONLY=fields[2];
						break;
					case "PLANMAX"://eg $3000 per person per year
						if(!fields[2].StartsWith("$"))
							break;
						fields[2]=fields[2].Remove(0,1);
						fields[2]=fields[2].Split(new char[] { ' ' })[0];
						if(CovCatC.ListShort.Count>0) {
							ben=new Benefit();
							ben.BenefitType=InsBenefitType.Limitations;
							ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.General).CovCatNum;
							ben.MonetaryAmt=PIn.Double(fields[2]);
							ben.TimePeriod=BenefitTimePeriod.CalendarYear;
							ben.CoverageLevel=BenefitCoverageLevel.Individual;
							troj.BenefitList.Add(ben.Copy());
						}
						break;
					case "PLANYR"://eg Calendar year or Anniversary year
						if(fields[2]!="Calendar year") {
							usesAnnivers=true;
							//MessageBox.Show("Warning.  Plan uses Anniversary year rather than Calendar year.  Please verify the Plan Start Date.");
						}
						break;
					case "DEDUCT"://eg There is no deductible
						if(!fields[2].StartsWith("$")) {
							amt=0;
						}
						else {
							fields[2]=fields[2].Remove(0,1);
							fields[2]=fields[2].Split(new char[] { ' ' })[0];
							amt=PIn.Double(fields[2]);
						}
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.Deductible;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.General).CovCatNum;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						ben.MonetaryAmt=amt;
						ben.CoverageLevel=BenefitCoverageLevel.Individual;
						troj.BenefitList.Add(ben.Copy());
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.Deductible;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Diagnostic).CovCatNum;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						ben.MonetaryAmt=0;//amt;
						ben.CoverageLevel=BenefitCoverageLevel.Individual;
						troj.BenefitList.Add(ben.Copy());
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.Deductible;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.RoutinePreventive).CovCatNum;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						ben.MonetaryAmt=0;//amt;
						ben.CoverageLevel=BenefitCoverageLevel.Individual;
						troj.BenefitList.Add(ben.Copy());
						break;
					case "PREV"://eg 100% or 'Incentive begins at 70%' or '80% Endo Major see notes'
						if(rowVal.ToLower()=="not covered") {
							percent=0;
						}
						else {
							percent=ConvertPercentToInt(rowVal);//remove %
						}
						if(percent<0 || percent>100) {
							break;
						}
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Diagnostic).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.RoutinePreventive).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						break;
					case "BASIC":
						if(rowVal.ToLower()=="not covered") {
							percent=0;
						}
						else {
							percent=ConvertPercentToInt(rowVal);//remove %
						}
						if(percent<0 || percent>100) {
							break;
						}
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Restorative).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Endodontics).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Periodontics).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.OralSurgery).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						break;
					case "MAJOR":
						if(rowVal.ToLower()=="not covered") {
							percent=0;
						}
						else {
							percent=ConvertPercentToInt(rowVal);//remove %
						}
						if(percent<0 || percent>100) {
							break;
						}
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Prosthodontics).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						benCrownMajor=new Benefit();
						benCrownMajor.BenefitType=InsBenefitType.CoInsurance;
						benCrownMajor.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Crowns).CovCatNum;
						benCrownMajor.Percent=percent;
						benCrownMajor.TimePeriod=BenefitTimePeriod.CalendarYear;
						//troj.BenefitList.Add(ben.Copy());//later
						break;
					case "CROWNS"://Examples: Paid Major, or 80%.  We will only process percentages.
						if(rowVal.ToLower()=="not covered") {
							percent=0;
						}
						else {
							percent=ConvertPercentToInt(rowVal);//remove %
						}
						if(percent<0 || percent>100) {
							break;
						}
						benCrownOnly=new Benefit();
						benCrownOnly.BenefitType=InsBenefitType.CoInsurance;
						benCrownOnly.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Crowns).CovCatNum;
						benCrownOnly.Percent=percent;
						benCrownOnly.TimePeriod=BenefitTimePeriod.CalendarYear;
						//troj.BenefitList.Add(ben.Copy());
						break;
					case "ORMAX"://eg $3500 lifetime
						if(!fields[2].StartsWith("$")) {
							break;
						}
						fields[2]=fields[2].Remove(0,1);
						fields[2]=fields[2].Split(new char[] { ' ' })[0];
						if(CovCatC.ListShort.Count>0) {
							ben=new Benefit();
							ben.BenefitType=InsBenefitType.Limitations;
							ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Orthodontics).CovCatNum;
							ben.MonetaryAmt=PIn.Double(fields[2]);
							ben.TimePeriod=BenefitTimePeriod.CalendarYear;
							troj.BenefitList.Add(ben.Copy());
						}
						break;
					case "ORPCT":
						if(rowVal.ToLower()=="not covered") {
							percent=0;
						}
						else {
							percent=ConvertPercentToInt(rowVal);//remove %
						}
						if(percent<0 || percent>100) {
							break;
						}
						ben=new Benefit();
						ben.BenefitType=InsBenefitType.CoInsurance;
						ben.CovCatNum=CovCats.GetForEbenCat(EbenefitCategory.Orthodontics).CovCatNum;
						ben.Percent=percent;
						ben.TimePeriod=BenefitTimePeriod.CalendarYear;
						troj.BenefitList.Add(ben.Copy());
						break;
					/*case "FEE":
						if(!ProcedureCodes.IsValidCode(fields[1])) {
							break;//skip
						}
						if(textTrojanID.Text==""){
							break;
						}
						feeSchedNum=Fees.ImportTrojan(fields[1],PIn.PDouble(fields[3]),textTrojanID.Text);
						//the step above probably created a new feeschedule, requiring a reset of the three listboxes.
						resetFeeSched=true;
						break;*/
					case "NOTES"://typically multiple instances
						if(troj.PlanNote!=null && troj.PlanNote!="") {
							troj.PlanNote+="\r\n";
						}
						troj.PlanNote+=fields[2];
						break;
				}//switch
			}//for
			//Set crowns
			if(benCrownOnly!=null){
				troj.BenefitList.Add(benCrownOnly.Copy());
			}
			else if(benCrownMajor!=null){
				troj.BenefitList.Add(benCrownMajor.Copy());
			}
			//set calendar vs serviceyear
			if(usesAnnivers) {
				for(int i=0;i<troj.BenefitList.Count;i++) {
					troj.BenefitList[i].TimePeriod=BenefitTimePeriod.ServiceYear;
				}
			}
			return troj;
		}