///<summary>Gets a list of unfinalized insurance payments.</summary> public static List <UnfinalizedInsPay> GetUnfinalizedInsPay(string carrierName) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetObject <List <UnfinalizedInsPay> >(MethodBase.GetCurrentMethod(), carrierName)); } string command = @" SELECT partialpay.PayType,partialpay.PatNum,partialpay.ClaimPaymentNum,partialpay.ClinicNum,partialpay.CarrierName,partialpay.Date, partialpay.DOS,partialpay.Amount,partialpay.ClaimNum,partialpay.CountPats FROM ( SELECT 'PartialPayment' PayType,COALESCE(MAX(claimproc.PatNum),0) PatNum,MAX(claimpayment.ClaimPaymentNum) ClaimPaymentNum, COUNT(DISTINCT claimproc.PatNum) CountPats,MAX(claimpayment.ClinicNum) ClinicNum,MAX(claimpayment.CarrierName) CarrierName, MAX(claimpayment.CheckDate) Date,COALESCE(MAX(claimproc.ProcDate),'0001-01-01') DOS,MAX(claimpayment.CheckAmt) Amount,0 ClaimNum FROM claimpayment LEFT JOIN claimproc ON claimproc.ClaimPaymentNum=claimpayment.ClaimPaymentNum WHERE claimpayment.IsPartial = 1 AND claimpayment.CarrierName LIKE '%" + POut.String(carrierName.Trim()) + "%' " + @" GROUP BY claimpayment.ClaimPaymentNum UNION ALL SELECT 'UnfinalizedPayment' PayType,MAX(claimproc.PatNum) PatNum,0 ClaimPaymentNum,1 CountPats,MAX(claimproc.ClinicNum) ClinicNum, MAX(carrier.CarrierName) CarrierName,MAX(claimproc.DateCP) Date,MAX(claimproc.ProcDate) DOS,SUM(claimproc.InsPayAmt) Amount, claimproc.ClaimNum FROM claimproc INNER JOIN insplan ON insplan.PlanNum=claimproc.PlanNum INNER JOIN carrier ON carrier.CarrierNum=insplan.CarrierNum AND carrier.CarrierName LIKE '%" + POut.String(carrierName.Trim()) + "%' " //Filter logic here mimics batch payments in ClaimProcs.AttachAllOutstandingToPayment(). + @"WHERE claimproc.ClaimPaymentNum = 0 AND claimproc.InsPayAmt != 0 AND claimproc.Status IN(" + POut.Int((int)ClaimProcStatus.Received) + "," + POut.Int((int)ClaimProcStatus.Supplemental) + "," + POut.Int((int)ClaimProcStatus.CapClaim) + @") AND claimproc.IsTransfer=0 GROUP BY claimproc.ClaimNum ) partialpay" ; DataTable table = ReportsComplex.RunFuncOnReportServer(() => Db.GetTable(command)); List <Patient> listPats = Patients.GetMultPats(table.Select().Select(x => PIn.Long(x["PatNum"].ToString())).ToList()).ToList(); List <Claim> listClaims = Claims.GetClaimsFromClaimNums(table.Select().Select(x => PIn.Long(x["ClaimNum"].ToString())).ToList()); List <ClaimPayment> listPayments = ClaimPayments.GetByClaimPaymentNums(table.Select().Select(x => PIn.Long(x["ClaimPaymentNum"].ToString())) .ToList()); List <UnfinalizedInsPay> listUnfinalizedInsPay = new List <UnfinalizedInsPay>(); for (int i = 0; i < table.Rows.Count; i++) { listUnfinalizedInsPay.Add(new UnfinalizedInsPay(table.Rows[i]["PayType"].ToString(), listPats.FirstOrDefault(x => x.PatNum == PIn.Long(table.Rows[i]["PatNum"].ToString())), PIn.Long(table.Rows[i]["ClinicNum"].ToString()), table.Rows[i]["CarrierName"].ToString(), PIn.Date(table.Rows[i]["Date"].ToString()), PIn.Date(table.Rows[i]["DOS"].ToString()), PIn.Double(table.Rows[i]["Amount"].ToString()), listPayments.FirstOrDefault(x => x.ClaimPaymentNum == PIn.Long(table.Rows[i]["ClaimPaymentNum"].ToString())), listClaims.FirstOrDefault(x => x.ClaimNum == PIn.Long(table.Rows[i]["ClaimNum"].ToString())), PIn.Int(table.Rows[i]["CountPats"].ToString()) )); } return(listUnfinalizedInsPay); }
public static LoadData GetLoadData(Patient pat, Family fam, Claim claim) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetObject <LoadData>(MethodBase.GetCurrentMethod(), pat, fam, claim)); } LoadData data = new LoadData(); data.ListPatPlans = PatPlans.Refresh(pat.PatNum); data.ListInsSubs = InsSubs.RefreshForFam(fam); data.ListInsPlans = InsPlans.RefreshForSubList(data.ListInsSubs); data.ListClaimProcs = ClaimProcs.Refresh(pat.PatNum); data.ListProcs = Procedures.Refresh(pat.PatNum); data.ListClaimValCodes = ClaimValCodeLogs.GetForClaim(claim.ClaimNum); data.ClaimCondCodeLogCur = ClaimCondCodeLogs.GetByClaimNum(claim.ClaimNum); data.TablePayments = ClaimPayments.GetForClaim(claim.ClaimNum); data.TablePayments.TableName = "ClaimPayments"; data.ListToothInitials = ToothInitials.Refresh(pat.PatNum); data.ListCustomStatusEntries = ClaimTrackings.RefreshForClaim(ClaimTrackingType.StatusHistory, claim.ClaimNum); return(data); }