/// <summary> /// method /// US:902 /// executes the actions in the expression passed in /// </summary> /// <param name="strExp"></param> /// <returns></returns> public CStatus Execute(string strExp) { CParseExpression ParseExp = new CParseExpression(BaseData, PatientID, PatCLID, ChecklistID, ItemID); CStringStatus ss = ParseExp.ParseAction(strExp); if (!ss.Status) { return(ss); } switch (ss.Value) { case "checklist.cancel()": return(CancelChecklist(PatCLID)); case "item.disable()": return(DisableChecklistItem(PatCLID, ItemID)); default: return(ParseSpecifiedAction(ss.Value)); } }
/// <summary> /// method /// US:902 /// evaluates all the expressions in the list /// </summary> /// <returns></returns> public CStatus Evaluate() { CParseExpression ParseExp = new CParseExpression(BaseData, PatientID, PatCLID, ChecklistID, ItemID); CStatus status = new CStatus(); foreach (CExpression exp in this) { CStringStatus ss = ParseExp.Parse(exp.GetIf()); if (!ss.Status) { status = ss; break; } if (ss.Value.IndexOf(CExpression.NullTkn) >= 0) { CPatChecklistItemData PatChecklistItem = new CPatChecklistItemData(BaseData); CPatChecklistItemDataItem di = null; status = PatChecklistItem.GetPatCLItemDI(PatCLID, ItemID, out di); if (!status.Status) { return(status); } di.TSID = Convert.ToInt64(k_DEFAULT_STATE_ID.Bad); di.OSID = Convert.ToInt64(k_DEFAULT_STATE_ID.Unknown); di.IsOverridden = k_TRUE_FALSE_ID.False; di.OverrideDate = CDataUtils.GetNullDate(); di.DSID = Convert.ToInt64(k_DEFAULT_STATE_ID.Bad); status = PatChecklistItem.UpdatePatChecklistItem(di); if (!status.Status) { return(status); } continue; } int nResult = CLogic.Evaluate(ss.Value); CExecuteExpression ExecuteExp = new CExecuteExpression( BaseData, PatientID, PatCLID, ChecklistID, ItemID); switch (nResult) { // false case 0: string strElse = exp.GetElse(); if (!string.IsNullOrEmpty(strElse)) { status = ExecuteExp.Execute(strElse); } break; // true case 1: status = ExecuteExp.Execute(exp.GetThen()); break; // error case 2: status.Status = false; status.StatusCode = k_STATUS_CODE.Failed; status.StatusComment = LogicModuleMessages.ERROR_LOGIC + exp.Expression; break; } if (!status.Status) { break; } } return(status); }