protected void LogPrintJob(object sender, ImageClickEventArgs e) { if (!bool.Parse(_isSurvey)) { URLHolder.Value = URLHolder.Value + "&isSurvey=false"; } else { URLHolder.Value = URLHolder.Value + "&isSurvey=true"; } DateTime processDate; if (!String.IsNullOrEmpty(_processDate)) { processDate = DateTime.Parse(_processDate); } else { processDate = DateTime.Now; } // need to parse query string and log actions ("PrintForms.aspx?batchPrint=true&8113=EVUQOLPostEarlyTx&7523=EVUQOLPostEarlyTx") string printFrameUrl = URLHolder.Value; int index; if (printFrameUrl.Contains("&isSurvey=false")) { _isSurvey = "false"; index = printFrameUrl.IndexOf("&isSurvey=false"); printFrameUrl = printFrameUrl.Remove(index); } else if (printFrameUrl.Contains("&isSurvey=true")) { _isSurvey = "true"; index = printFrameUrl.IndexOf("&isSurvey=true"); printFrameUrl = printFrameUrl.Remove(index); } if (printFrameUrl.Contains("&processDate=")) { index = printFrameUrl.IndexOf("&processDate="); printFrameUrl = printFrameUrl.Remove(index); } printFrameUrl = printFrameUrl.Remove(0, 1);//remove the first & string[] surveyArray = printFrameUrl.Split('&'); foreach (string s in surveyArray) { // parse p to get patient id and survey name string[] patientArray = s.Split('='); string patientId = patientArray[0]; string[] surveyNameAndMonth = patientArray[1].Split('_'); //split the month and survey name string surveyName = surveyNameAndMonth[1]; string month = surveyNameAndMonth[0]; // Save Action Item Caisis.BOL.Action a = new Caisis.BOL.Action(); a[Caisis.BOL.Action.ActionDate] = processDate; a[Caisis.BOL.Action.ActionDateText] = processDate.ToShortDateString(); a[Caisis.BOL.Action.ActionItem] = FollowUpUtil.GetActionItemToLog(int.Parse(patientId), month, surveyName, bool.Parse(_isSurvey)); a[Caisis.BOL.Action.PatientId] = patientId; if (!string.IsNullOrEmpty(a[Caisis.BOL.Action.ActionItem].ToString())) { a.Save(); } } }
private DataTable SetFollowUpLetterList() { // need to validate string is actual date DateTime processDate = Convert.ToDateTime(ProcessDate.Text); // procedure can be entered from UI too string procedureType = ProcedureType.Text; _redirectPath += "&proc=" + procedureType + "&processDate=" + processDate.ToShortDateString(); FollowUpDA da = new FollowUpDA(); DataTable lastSurveyPatientsDt = new DataTable(); lastSurveyPatientsDt = da.GetPatientsLastSurveySentList(procedureType, FollowUpUtil.GetSurveyShortName(ddlSurveyType.SelectedValue)); DataTable fuLetterPatientsDt = new DataTable(); DataColumn dc0 = new DataColumn("PatientId"); DataColumn dc1 = new DataColumn("PtName"); DataColumn dc2 = new DataColumn("PtMRN"); DataColumn dc3 = new DataColumn("Surgeon"); DataColumn dc4 = new DataColumn("FUMonth"); DataColumn dc5 = new DataColumn("SurveyName"); DataColumn dc6 = new DataColumn("SentDate"); DataColumn dc7 = new DataColumn("Address1"); DataColumn dc8 = new DataColumn("Address2"); DataColumn dc9 = new DataColumn("City"); DataColumn dc10 = new DataColumn("State"); DataColumn dc11 = new DataColumn("Zip"); DataColumn dc12 = new DataColumn("LastName"); DataColumn dc13 = new DataColumn("FirstName"); fuLetterPatientsDt.Columns.Add(dc12); fuLetterPatientsDt.Columns.Add(dc13); fuLetterPatientsDt.Columns.Add(dc0); fuLetterPatientsDt.Columns.Add(dc1); fuLetterPatientsDt.Columns.Add(dc2); fuLetterPatientsDt.Columns.Add(dc3); fuLetterPatientsDt.Columns.Add(dc4); fuLetterPatientsDt.Columns.Add(dc5); fuLetterPatientsDt.Columns.Add(dc6); fuLetterPatientsDt.Columns.Add(dc7); fuLetterPatientsDt.Columns.Add(dc8); fuLetterPatientsDt.Columns.Add(dc9); fuLetterPatientsDt.Columns.Add(dc10); fuLetterPatientsDt.Columns.Add(dc11); // HERE: remove patients who have completed the survey within 20 days after it was sent to them foreach (DataRow dr in lastSurveyPatientsDt.Rows) { int pId = Int32.Parse(dr[Patient.PatientId].ToString()); DateTime surveySentDate = Convert.ToDateTime(dr[Caisis.BOL.Action.ActionDate].ToString()); // we have the surveySent actionItem is "NAME x Month Sent" string surveySentActionItem = dr[Caisis.BOL.Action.ActionItem].ToString(); string surveyType = FollowUpUtil.GetSurveyNameFromActionItem(surveySentActionItem); string month = FollowUpUtil.GetSurveyMonthNoFromActionItem(surveySentActionItem); // and want to get the equivalent letterSent ActionItem: for now it is "NAME x Month Letter Sent" string letterSentActionItem = FollowUpUtil.GetActionItemToLog(pId, month, surveyType, false); if (processDate > surveySentDate.AddDays(20)) //expected to receive survey within 20 days of processdate { // if expected survey was not received, send letter to patient only if not already sent before if (da.GetSurveyByActionItem(pId, surveySentActionItem).Rows.Count == 0 && da.LetterAlreadySent(pId, letterSentActionItem) == false) { // get the (full) survey name to display in the list of results string selectedSurvey = ddlSurveyType.SelectedValue; string surveyFullName = FollowUpUtil.GetSurveyFullName(int.Parse(month), selectedSurvey); // patient is due for a follow up letter DataRow fuRow = fuLetterPatientsDt.NewRow(); fuRow["PatientId"] = pId.ToString(); fuRow["LastName"] = dr[Patient.PtLastName].ToString(); fuRow["FirstName"] = dr[Patient.PtFirstName].ToString(); fuRow["PtName"] = dr[Patient.PtLastName].ToString() + ", " + dr[Patient.PtFirstName].ToString(); fuRow["PtMRN"] = dr[Patient.PtMRN].ToString(); fuRow["Surgeon"] = da.GetMostRecentTreatingPhysician(pId); fuRow["FUMonth"] = month.ToString(); fuRow["SurveyName"] = surveyFullName; DateTime dt; dt = Convert.ToDateTime(dr[Caisis.BOL.Action.ActionDate].ToString()); fuRow["SentDate"] = dt.ToShortDateString(); //last survey sent date //fuRow["SentDate"] = dr[Caisis.BOL.Action.ActionDate].ToString(); //last survey sent date if (string.IsNullOrEmpty(letterSentActionItem)) { fuRow["SurveyName"] = fuRow["SurveyName"].ToString() + "<BR>Invalid Action Name"; } // retrieve additional patient data if (!String.IsNullOrEmpty(dr[Patient.PtMRN].ToString())) { PatientDa ptDa = new PatientDa(); DataTable ptInfoDt = ptDa.GetPatientByMRN(dr[Patient.PtMRN].ToString()); if (ptInfoDt.Rows.Count > 0) { fuRow["Address1"] = ptInfoDt.Rows[0][Patient.PtAddress1].ToString(); fuRow["Address2"] = ptInfoDt.Rows[0][Patient.PtAddress2].ToString(); fuRow["City"] = ptInfoDt.Rows[0][Patient.PtCity].ToString(); fuRow["State"] = ptInfoDt.Rows[0][Patient.PtState].ToString(); fuRow["Zip"] = ptInfoDt.Rows[0][Patient.PtPostalCode].ToString(); } } fuLetterPatientsDt.Rows.Add(fuRow); // NOTE: all patients get the same follow up letter, but this could change? _redirectPath += "&" + dr[Patient.PatientId].ToString() + "=" + month + "_Follow Up Letter"; } } CreateBatchButton.Attributes.Add("onclick", "window.location.href='" + _redirectPath + "'"); } return(fuLetterPatientsDt); }