/// <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); } }
/// <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(); }
/// <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); }
/// <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]); } } } } } }
/// <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); }); } }