Esempio n. 1
0
        /// <summary>
        /// Deletes the current PatientItem and PatientDeviation record
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void DeleteClick(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(PatientItemId.Value) && !string.IsNullOrEmpty(PatientDeviationId.Value))
            {
                // cleanup patient item
                int patientItemId = int.Parse(base.DecrypyValue(PatientItemId.Value));
                // if item is not tied to existing records, cleanup
                IEnumerable <PatientItemField> fields = BusinessObject.GetByFields <PatientItemField>(new Dictionary <string, object> {
                    { PatientItemField.PatientItemId, patientItemId }
                });
                bool fieldsHaveRecord = fields.Any(f => !f.IsNull(PatientItemField.DestTablePrimKey));
                //if (!fieldsHaveRecord)
                //{
                //    ProtocolMgmtDa.DeletePatientItem(patientItemId);
                //    PatientItemId.Value = string.Empty;
                //}

                // delete deviation
                int patientDeviationId     = int.Parse(PatientDeviationId.Value);
                PatientDeviation deviation = new PatientDeviation();
                deviation.Delete(patientDeviationId);
                PatientDeviationId.Value = string.Empty;

                // register update script
                RegisterUpdateScript(true);
            }
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void UpdateStatusClick(object sender, EventArgs e)
        {
            foreach (int dirtyRow in dirtyVisits)
            {
                GridViewRow   row               = PatientVisitsGrid.Rows[dirtyRow];
                CaisisHidden  pItemStatus       = row.FindControl(PatientItem.Status) as CaisisHidden;
                CaisisTextBox pItemSDate        = row.FindControl(PatientItem.ScheduledDate) as CaisisTextBox;
                CaisisHidden  deviationId       = row.FindControl(PatientDeviation.PatientDeviationId) as CaisisHidden;
                int           patientItemId     = int.Parse(PatientVisitsGrid.DataKeys[dirtyRow][PatientItem.PatientItemId].ToString());
                string        patientItemStatus = pItemStatus.Value;
                string        scheduledDate     = pItemSDate.Value;

                PatientItem biz = new PatientItem();
                biz.Get(patientItemId);
                biz[PatientItem.Status]        = patientItemStatus;
                biz[PatientItem.ScheduledDate] = scheduledDate;
                // needs deviation ???


                if (patientItemStatus == "Missed")
                {
                    // do not create deviation

                    /*
                     * PatientDeviation deviation = new PatientDeviation();
                     * if (!string.IsNullOrEmpty(deviationId.Value))
                     * {
                     *  deviation.Get(int.Parse(deviationId.Value));
                     * }
                     * // otherwise set required foreign key
                     * else
                     * {
                     *  deviation[PatientDeviation.PatientItemId] = patientItemId.ToString();
                     * }
                     * deviation[PatientDeviation.DeviationType] = "Missed Visit";
                     * deviation.Save();
                     *
                     * // update hidden deviation field
                     * deviationId.Value = deviation[PatientDeviation.PatientDeviationId].ToString();
                     */
                }
                // if status isn't missed, remove deviation if exists
                else if (!string.IsNullOrEmpty(deviationId.Value))
                {
                    PatientDeviation deviation = new PatientDeviation();
                    deviation.Delete(int.Parse(deviationId.Value));
                    deviationId.Value = string.Empty;
                }
                biz.Save();

                // trigger scheduling for dependent items
                PatientProtocolController.ScheduleDependentItemsByItemStatus(patientItemId, patientItemStatus);
            }
            dirtyVisits.Clear();

            SetVisit(sender, e);

            RegisterReloadPatientLists();
        }
Esempio n. 3
0
        /// <summary>
        /// Saves/Updates the current PatientDeviation record
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SaveClick(object sender, EventArgs e)
        {
            // Update/Insert PatientItem
            PatientItem patientItem = new PatientItem();

            // update
            if (!string.IsNullOrEmpty(PatientItemId.Value))
            {
                patientItem.Get(int.Parse(base.DecrypyValue(PatientItemId.Value)));
            }
            // inserting
            else
            {
                patientItem[PatientItem.PatientSchemaId] = PatientSchemaId;
            }
            patientItem[PatientItem.ScheduledDate] = ScheduledDate.Value;
            patientItem[PatientItem.Status]        = "Unplanned";
            patientItem.Save();
            int patientItemId = (int)patientItem[PatientItem.PatientItemId];

            PatientItemId.Value = base.EncryptValue(patientItemId.ToString());

            // Update/insert deviation
            PatientDeviation deviation = new PatientDeviation();

            // update
            if (!string.IsNullOrEmpty(PatientDeviationId.Value))
            {
                deviation.Get(int.Parse(PatientDeviationId.Value));
            }
            // insert
            else
            {
                deviation[PatientDeviation.PatientItemId] = patientItemId;
            }
            // set biz object values, update and reload form
            CICHelper.SetBOValues(this.Controls, deviation, patientItemId);
            deviation[PatientDeviation.PatientItemId] = patientItemId;
            deviation.Save();
            PatientDeviationId.Value = deviation[PatientDeviation.PatientDeviationId].ToString();

            // update fields
            PopulateForm();

            // notify client scripts
            RegisterUpdateScript(false);
        }
Esempio n. 4
0
        /// <summary>
        /// Populates the fiels on this form with a PatientDevaition record
        /// </summary>
        private void PopulateForm()
        {
            if (!string.IsNullOrEmpty(PatientItemId.Value))
            {
                // Populate patient item scheduled field
                int         patientItemId = int.Parse(base.DecrypyValue(PatientItemId.Value));
                PatientItem item          = new PatientItem();
                item.Get(patientItemId);
                if (item[PatientItem.ScheduledDate] != null && item[PatientItem.ScheduledDate].ToString() != "")
                {
                    string sDate = ((DateTime)item[PatientItem.ScheduledDate]).ToShortDateString();
                    ScheduledDate.Value     = sDate;
                    ScheduledDateText.Value = sDate;
                }

                // populate deviation
                if (!string.IsNullOrEmpty(PatientDeviationId.Value))
                {
                    int pdi = int.Parse(PatientDeviationId.Value);
                    PatientDeviation deviation = new PatientDeviation();
                    deviation.Get(pdi);
                    base.PopulateForm(deviation);
                    // cleanup date field display
                    var inputs = PageUtil.GetCaisisInputControlsInContainer(this);
                    foreach (var input in inputs)
                    {
                        if (input.Table == "ProtocolMgr_PatientDeviations" && input.Field.Contains("DeviationDate"))
                        {
                            if (!deviation.IsNull(input.Field))
                            {
                                input.Value = string.Format("{0:d}", deviation[input.Field]);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// During initalization, set control values and attach change handler to updates schedule date and status on change
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void WireUpdateEvent(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Locate controls needed to be updates
                CaisisHidden  deviationId = e.Row.FindControl(PatientDeviation.PatientDeviationId) as CaisisHidden;
                CaisisHidden  pItemStatus = e.Row.FindControl(PatientItem.Status) as CaisisHidden;
                CaisisTextBox pItemSDate  = e.Row.FindControl(PatientItem.ScheduledDate) as CaisisTextBox;
                Image         dataEntered = e.Row.FindControl("DataEntered") as Image;
                Label         dataEntry   = e.Row.FindControl("DataEntry") as Label;

                // during data-binding, set values and UI elements (images, etc...) and realted deviation
                e.Row.DataBinding += new EventHandler(delegate(object o, EventArgs eArg)
                {
                    int patientItemId    = int.Parse(PatientVisitsGrid.DataKeys[e.Row.RowIndex][PatientItem.PatientItemId].ToString());
                    string status        = DataBinder.Eval(e.Row.DataItem, PatientItem.Status).ToString();
                    string scheduledDate = DataBinder.Eval(e.Row.DataItem, PatientItem.ScheduledDate, "{0:d}").ToString();

                    // set ICaisisInputControls Values
                    pItemStatus.Value = status;
                    pItemSDate.Value  = scheduledDate;

                    // determine if checkbox marks are visible

                    string dataEntryCount = DataBinder.Eval(e.Row.DataItem, "DataEntryCount").ToString();
                    int EntryCount;
                    if (Int32.TryParse(dataEntryCount, out EntryCount) &&
                        EntryCount > 0)
                    {
                        dataEntry.Text      = "Entered";
                        dataEntry.CssClass  = "DataEntered";
                        dataEntered.Visible = true;
                    }
                    else
                    {
                        dataEntry.Text      = "Not Done";
                        dataEntry.CssClass  = "DataNotDone";
                        dataEntered.Visible = false;
                    }
                    // for current patient item, find related deviation record
                    var foundDeviations = PatientDeviation.GetByFields <PatientDeviation>(new Dictionary <string, object> {
                        { PatientDeviation.PatientItemId, patientItemId },
                        { PatientDeviation.DeviationType, "Missed Visit" }
                    });
                    if (foundDeviations.Count() > 0)
                    {
                        deviationId.Value = foundDeviations.First()[PatientDeviation.PatientDeviationId].ToString();
                    }
                    // add date range validation
                    string clientDateFormatString = "new Date('{0}')";
                    object firstDate = DataBinder.Eval(e.Row.DataItem, PatientItem.FirstAnticipatedDate);
                    object lastDate  = DataBinder.Eval(e.Row.DataItem, PatientItem.LastAnticipatedDate);

                    string clientFirstDate = "null";
                    string clientLastDate  = "null";
                    if (firstDate != null && !string.IsNullOrEmpty(firstDate.ToString()))
                    {
                        DateTime date   = (DateTime)firstDate;
                        clientFirstDate = string.Format(clientDateFormatString, date);
                    }
                    if (lastDate != null && !string.IsNullOrEmpty(lastDate.ToString()))
                    {
                        DateTime date  = (DateTime)lastDate;
                        clientLastDate = string.Format(clientDateFormatString, date);
                    }
                    // add client script to validate date range
                    pItemSDate.Attributes["onfocus"] = string.Format("validateScheduledDate(this, {0}, {1}, true, event);", clientFirstDate, clientLastDate);
                });

                e.Row.PreRender += new EventHandler(delegate(object a, EventArgs b)
                {
                    ReadOnlyDates.Add(pItemSDate.ClientID);
                });
            }
        }