private void butOK_Click(object sender, System.EventArgs e) { RepeatCharge[] chargeList = RepeatCharges.Refresh(0); int countAdded = 0; DateTime possibleDate; Procedure proc; for (int i = 0; i < chargeList.Length; i++) { if (chargeList[i].DateStart > DateTime.Today) //not started yet { continue; } //if(chargeList[i].DateStop.Year>1880//not blank // && chargeList[i].DateStop<DateTime.Today)//but already ended //{ // continue; //} //get a list dates of all completed procedures with this Code and patNum ArrayList ALdates = RepeatCharges.GetDates(ProcedureCodes.GetCodeNum(chargeList[i].ProcCode), chargeList[i].PatNum); possibleDate = chargeList[i].DateStart; //start looping through possible dates, beginning with the start date of the repeating charge while (possibleDate <= DateTime.Today) { if (possibleDate < DateTime.Today.AddMonths(-3)) { possibleDate = possibleDate.AddMonths(1); continue; //don't go back more than three months } //check to see if the possible date is present in the list if (ALdates.Contains(possibleDate)) { possibleDate = possibleDate.AddMonths(1); continue; } if (chargeList[i].DateStop.Year > 1880 && //not blank chargeList[i].DateStop < possibleDate) //but already ended { break; } //otherwise, insert a procedure to db proc = new Procedure(); proc.CodeNum = ProcedureCodes.GetCodeNum(chargeList[i].ProcCode); proc.DateEntryC = DateTime.Today; proc.PatNum = chargeList[i].PatNum; proc.ProcDate = possibleDate; proc.DateTP = possibleDate; proc.ProcFee = chargeList[i].ChargeAmt; proc.ProcStatus = ProcStat.C; proc.ProvNum = PrefC.GetLong(PrefName.PracticeDefaultProv); proc.MedicalCode = ProcedureCodes.GetProcCode(proc.CodeNum).MedicalCode; proc.BaseUnits = ProcedureCodes.GetProcCode(proc.CodeNum).BaseUnits; Procedures.Insert(proc); //no recall synch needed because dental offices don't use this feature countAdded++; possibleDate = possibleDate.AddMonths(1); } } MessageBox.Show(countAdded.ToString() + " " + Lan.g(this, "procedures added.")); DialogResult = DialogResult.OK; }
private void FormPrepaymentTool_Load(object sender, EventArgs e) { _listRcForPat = RepeatCharges.Refresh(_patCur.PatNum).ToList(); _listProcedureCharge = new List <ProcedureCharge>(); _listCompletedProcs = new List <Procedure>(); _listPreviouslyCompProcedureCharges = new List <ProcedureCharge>(); _prevPaymentRowCount = 0; _listPrepaymentCodes = new List <ProcedureCode>(); //Load procedurecode list. HQ internal codes. _listPrePaySupportCodes = AvaTax.ListPrePayProcCodes; DatePrepaidThrough = DateTime.MinValue; FillGridCodes(); FillGridPrepayment(); }
private int GetChargeDayOfMonth(long patNum) { //Match the day of the month for the NewCrop repeating charge to their existing monthly support charge (even if the monthly support is disabled). int day = 15; //Day 15 will be used if they do not have any existing repeating charges. RepeatCharge[] chargesForPat = RepeatCharges.Refresh(patNum); bool hasMaintCharge = false; for (int j = 0; j < chargesForPat.Length; j++) { if (chargesForPat[j].ProcCode == "001") //Monthly maintenance repeating charge { hasMaintCharge = true; day = chargesForPat[j].DateStart.Day; break; } } //The customer is not on monthly support, so use any other existing repeating charge day (example EHR Monthly and Mobile). if (!hasMaintCharge && chargesForPat.Length > 0) { day = chargesForPat[0].DateStart.Day; } return(day); }
private void butOK_Click(object sender, System.EventArgs e) { RepeatCharge[] chargeList = RepeatCharges.Refresh(0); //Gets all repeating charges for all patients, they may be disabled int countAdded = 0; int claimsAdded = 0; DateTime startDate; Procedure proc; for (int i = 0; i < chargeList.Length; i++) { if (!chargeList[i].IsEnabled) //first make sure it is not disabled { continue; } if (chargeList[i].DateStart > DateTime.Today) //not started yet { continue; } //if(chargeList[i].DateStop.Year>1880//not blank // && chargeList[i].DateStop<DateTime.Today)//but already ended //{ // continue; //} //get a list dates of all completed procedures with this Code and patNum ArrayList ALdates = RepeatCharges.GetDates(ProcedureCodes.GetCodeNum(chargeList[i].ProcCode), chargeList[i].PatNum); startDate = chargeList[i].DateStart; //This is the repeating date using the old methodology. It is necessary for checking if the repeating procedure was already added using the old methodology. DateTime possibleDateOld = startDate; //This is a more accurate repeating date which will allow procedures to be added on the 28th and later. DateTime possibleDateNew = startDate; int countMonths = 0; //start looping through possible dates, beginning with the start date of the repeating charge while (possibleDateNew <= DateTime.Today) { //Only allow back dating up to one month and 20 days. if (possibleDateNew < DateTime.Today.AddDays(-50)) { possibleDateOld = possibleDateOld.AddMonths(1); countMonths++; possibleDateNew = startDate.AddMonths(countMonths); continue; //don't go back more than one month and 20 days } //check to see if the possible date is present in the list if (ALdates.Contains(possibleDateNew) || ALdates.Contains(possibleDateOld)) { possibleDateOld = possibleDateOld.AddMonths(1); countMonths++; possibleDateNew = startDate.AddMonths(countMonths); continue; } if (chargeList[i].DateStop.Year > 1880 && //not blank chargeList[i].DateStop < possibleDateNew) //but already ended { break; } //otherwise, insert a procedure to db proc = new Procedure(); proc.CodeNum = ProcedureCodes.GetCodeNum(chargeList[i].ProcCode); proc.DateEntryC = DateTimeOD.Today; proc.PatNum = chargeList[i].PatNum; proc.ProcDate = possibleDateNew; proc.DateTP = possibleDateNew; proc.ProcFee = chargeList[i].ChargeAmt; proc.ProcStatus = ProcStat.C; proc.ProvNum = PrefC.GetLong(PrefName.PracticeDefaultProv); proc.MedicalCode = ProcedureCodes.GetProcCode(proc.CodeNum).MedicalCode; proc.BaseUnits = ProcedureCodes.GetProcCode(proc.CodeNum).BaseUnits; proc.DiagnosticCode = PrefC.GetString(PrefName.ICD9DefaultForNewProcs); //Check if the repeating charge has been flagged to copy it's note into the billing note of the procedure. if (chargeList[i].CopyNoteToProc) { proc.BillingNote = chargeList[i].Note; } Procedures.Insert(proc); //no recall synch needed because dental offices don't use this feature countAdded++; possibleDateOld = possibleDateOld.AddMonths(1); countMonths++; possibleDateNew = startDate.AddMonths(countMonths); if (chargeList[i].CreatesClaim && !ProcedureCodes.GetProcCode(chargeList[i].ProcCode).NoBillIns) { List <PatPlan> patPlanList = PatPlans.Refresh(chargeList[i].PatNum); List <InsSub> subList = InsSubs.RefreshForFam(Patients.GetFamily(chargeList[i].PatNum)); List <InsPlan> insPlanList = InsPlans.RefreshForSubList(subList);; List <Benefit> benefitList = Benefits.Refresh(patPlanList, subList); Claim claimCur; List <Procedure> procCurList = new List <Procedure>(); procCurList.Add(proc); if (patPlanList.Count == 0) //no current insurance, do not create a claim { continue; } //create the claimprocs Procedures.ComputeEstimates(proc, proc.PatNum, new List <ClaimProc>(), true, insPlanList, patPlanList, benefitList, Patients.GetPat(proc.PatNum).Age, subList); //get claimprocs for this proc, may be more than one List <ClaimProc> claimProcList = ClaimProcs.GetForProc(ClaimProcs.Refresh(proc.PatNum), proc.ProcNum); string claimType = "P"; if (patPlanList.Count == 1 && PatPlans.GetOrdinal(PriSecMed.Medical, patPlanList, insPlanList, subList) > 0) //if there's exactly one medical plan { claimType = "Med"; } claimCur = CreateClaim(claimType, patPlanList, insPlanList, claimProcList, proc, subList); claimProcList = ClaimProcs.Refresh(proc.PatNum); if (claimCur.ClaimNum == 0) { continue; } claimsAdded++; ClaimL.CalculateAndUpdate(procCurList, insPlanList, claimCur, patPlanList, benefitList, Patients.GetPat(proc.PatNum).Age, subList); if (PatPlans.GetOrdinal(PriSecMed.Secondary, patPlanList, insPlanList, subList) > 0 && //if there exists a secondary plan !CultureInfo.CurrentCulture.Name.EndsWith("CA")) //and not canada (don't create secondary claim for canada) { claimCur = CreateClaim("S", patPlanList, insPlanList, claimProcList, proc, subList); if (claimCur.ClaimNum == 0) { continue; } claimsAdded++; claimProcList = ClaimProcs.Refresh(proc.PatNum); claimCur.ClaimStatus = "H"; ClaimL.CalculateAndUpdate(procCurList, insPlanList, claimCur, patPlanList, benefitList, Patients.GetPat(proc.PatNum).Age, subList); } } } } //MessageBox.Show(countAdded.ToString()+" "+Lan.g(this,"procedures added.")); MessageBox.Show(countAdded.ToString() + " " + Lan.g(this, "procedures added.") + "\r\n" + claimsAdded.ToString() + " " + Lan.g(this, "claims added.")); DialogResult = DialogResult.OK; }