Example #1
0
        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();
                }
            }
        }
Example #2
0
        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);
        }