/// <summary> /// Used to update a checklist item /// </summary> /// <param name="cli"></param> /// <returns></returns> public CStatus UpdateChecklistItem(CChecklistItemDataItem cli) { //create a status object and check for valid dbconnection CStatus status = DBConnValid(); if (!status.Status) { return(status); } //load the paramaters list CParameterList pList = new CParameterList( SessionID, ClientIP, UserID); //add the rest of the parameters pList.AddInputParameter("pi_nChecklistID", cli.ChecklistID); pList.AddInputParameter("pi_nItemID", cli.ItemID); pList.AddInputParameter("pi_nTimePeriod", cli.CLITSTimePeriod); pList.AddInputParameter("pi_nTimeUnit", (long)cli.TimeUnitID); pList.AddInputParameter("pi_nSortOrder", cli.SortOrder); pList.AddInputParameter("pi_nIsActive", (long)cli.ActiveID); //execute the SP return(DBConn.ExecuteOracleSP("PCK_CHECKLIST_ITEM.UpdateChecklistItem", pList)); }
/// <summary> /// method /// US:902 /// returns the attribute specified by the specifier for the checklist item specified by the checklist id and item id /// </summary> /// <param name="lChecklistID"></param> /// <param name="lItemID"></param> /// <param name="strSpecifier"></param> /// <returns></returns> private CStringStatus ParseCLI(long lChecklistID, long lItemID, string strSpecifier) { CChecklistItemData ChecklistItem = new CChecklistItemData(BaseData); CChecklistItemDataItem di = null; CStatus status = ChecklistItem.GetCLItemDI(ChecklistID, lItemID, out di); if (!status.Status) { return(new CStringStatus(status, CExpression.NullTkn)); } string strValue = CExpression.NullTkn; switch (strSpecifier) { case "tstimeperiod": strValue = (di.CLITSTimePeriod < 1) ? CExpression.NullTkn : di.CLITSTimePeriod.ToString(); break; case "tstimeperioddate": return(CalcTSTimePeriodDate(di)); } return(new CStringStatus(status, strValue)); }
/// <summary> /// method /// US:902 /// returns the earilest date a patient item for this checklist item may have to still be considered complete /// </summary> /// <param name="di"></param> /// <returns></returns> private CStringStatus CalcTSTimePeriodDate(CChecklistItemDataItem di) { DateTime dtTSTimePeriodDate = DateTime.Now; switch (di.TimeUnitID) { case k_TIME_UNIT_ID.Day: dtTSTimePeriodDate -= TimeSpan.FromDays(di.CLITSTimePeriod); break; case k_TIME_UNIT_ID.Hour: dtTSTimePeriodDate -= TimeSpan.FromHours(di.CLITSTimePeriod); break; case k_TIME_UNIT_ID.Minute: dtTSTimePeriodDate -= TimeSpan.FromMinutes(di.CLITSTimePeriod); break; default: return(new CStringStatus( false, k_STATUS_CODE.Failed, LogicModuleMessages.ERROR_PARSE_TSTIMEPERIODDATE, CExpression.NullTkn)); } return(new CStringStatus( true, k_STATUS_CODE.Success, string.Empty, CExpression.DateTkn + dtTSTimePeriodDate.ToString() + CExpression.DateTkn)); }
/// <summary> /// method /// saves a checklist item to the database /// </summary> /// <param name="dr"></param> /// <returns></returns> protected CStatus SaveChecklistItem(DataRow dr) { CChecklistItemDataItem clidi = new CChecklistItemDataItem(); clidi.ChecklistID = Convert.ToInt64(dr["CHECKLIST_ID"]); clidi.ItemID = Convert.ToInt64(dr["ITEM_ID"]); clidi.CLITSTimePeriod = Convert.ToInt64(dr["CLI_TS_TIME_PERIOD"]); clidi.TimeUnitID = (k_TIME_UNIT_ID)Convert.ToInt64(dr["TIME_UNIT_ID"]); clidi.SortOrder = Convert.ToInt64(dr["SORT_ORDER"]); clidi.ActiveID = (k_ACTIVE_ID)Convert.ToInt64(dr["ACTIVE_ID"]); CChecklistItemData clid = new CChecklistItemData(BaseMstr.BaseData); if (clidi.ChecklistID < 1) { //get the item type id long lItemTypeID = -1; CItemDataItem idi = null; CItemData id = new CItemData(BaseMstr.BaseData); id.GetItemDI(clidi.ItemID, out idi); lItemTypeID = idi.ItemTypeID; clidi.ChecklistID = ChecklistID; //do not generate default logic for a collection item. //default logic for a collection is handled in a seperate call. if((k_ITEM_TYPE_ID)lItemTypeID == k_ITEM_TYPE_ID.Collection) { clidi.Logic = ""; } else { clidi.Logic = CExpression.DefaultTemporalLogic + " " + CExpression.DefaultOutcomeLogic + " " + CExpression.DefaultDecisionLogic; } CStatus status = clid.InsertChecklistItem(clidi); if (!status.Status) { return status; } dr["CHECKLIST_ID"] = ChecklistID; } else { CStatus status = clid.UpdateChecklistItem(clidi); if (!status.Status) { return status; } } return new CStatus(); }
/// <summary> /// method /// US:902 /// loads all the logic expressions for an item into the list /// </summary> /// <param name="lChecklistID"></param> /// <param name="lItemID"></param> /// <returns></returns> public CStatus Load() { string strItemLogic = string.Empty; CChecklistItemData dta = new CChecklistItemData(BaseData); CChecklistItemDataItem di = null; CStatus status = dta.GetCLItemDI(ChecklistID, ItemID, out di); if (!status.Status) { return(status); } SplitAddLogicExpressions(di.Logic); return(new CStatus()); }
/// <summary> /// method /// retrieves a single checklist item from the database /// </summary> /// <param name="lChecklistID"></param> /// <param name="lItemID"></param> /// <param name="di"></param> /// <returns></returns> public CStatus GetCLItemDI( long lChecklistID, long lItemID, out CChecklistItemDataItem di) { //initialize parameters di = null; //create a status object and check for valid dbconnection CStatus status = DBConnValid(); if (!status.Status) { return(status); } //load the paramaters list CParameterList pList = new CParameterList( SessionID, ClientIP, UserID); pList.AddInputParameter("pi_nChecklistID", lChecklistID); pList.AddInputParameter("pi_nItemID", lItemID); //get the dataset CDataSet cds = new CDataSet(); DataSet ds = null; status = cds.GetOracleDataSet( DBConn, "PCK_CHECKLIST_ITEM.GetCLItemDIRS", pList, out ds); if (status.Status) { di = new CChecklistItemDataItem(ds); } return(status); }
/// <summary> /// method /// saves a checklist item to the database /// </summary> /// <param name="dr"></param> /// <returns></returns> protected CStatus SaveChecklistItem(DataRow dr) { CChecklistItemDataItem clidi = new CChecklistItemDataItem(); clidi.ChecklistID = Convert.ToInt64(dr["CHECKLIST_ID"]); clidi.ItemID = Convert.ToInt64(dr["ITEM_ID"]); clidi.CLITSTimePeriod = Convert.ToInt64(dr["CLI_TS_TIME_PERIOD"]); clidi.TimeUnitID = (k_TIME_UNIT_ID)Convert.ToInt64(dr["TIME_UNIT_ID"]); clidi.SortOrder = Convert.ToInt64(dr["SORT_ORDER"]); clidi.ActiveID = (k_ACTIVE_ID)Convert.ToInt64(dr["ACTIVE_ID"]); CChecklistItemData clid = new CChecklistItemData(BaseMstr.BaseData); if (clidi.ChecklistID < 1) { clidi.ChecklistID = ChecklistID; clidi.Logic = CExpression.DefaultTemporalLogic + " " + CExpression.DefaultOutcomeLogic + " " + CExpression.DefaultDecisionLogic; CStatus status = clid.InsertChecklistItem(clidi); if (!status.Status) { return(status); } dr["CHECKLIST_ID"] = ChecklistID; } else { CStatus status = clid.UpdateChecklistItem(clidi); if (!status.Status) { return(status); } } return(new CStatus()); }
/// <summary> /// US:1384 /// override /// calls the grid view loads /// </summary> /// <param name="lEditMode"></param> /// <param name="lStatusCode"></param> /// <param name="strStatusComment"></param> /// <returns></returns> public override CStatus LoadControl(k_EDIT_MODE lEditMode) { Title = "State/Logic Editor"; btnucSave.Focus(); CItemData item = new CItemData(BaseMstr.BaseData); CItemDataItem di = null; CStatus status = item.GetItemDI(ChecklistItemID, out di); if (!status.Status) { return(status); } hItem.InnerText = di.ItemLabel; //load the gridviews with static data ucStateLogicSelector.ChecklistID = ChecklistID; ucStateLogicSelector.ChecklistItemID = ChecklistItemID; status = ucStateLogicSelector.LoadControl(lEditMode); if (!status.Status) { return(status); } CChecklistItemData dta = new CChecklistItemData(BaseMstr.BaseData); CChecklistItemDataItem diLogic = null; status = dta.GetCLItemDI(ChecklistID, ChecklistItemID, out diLogic); if (!status.Status) { return(status); } txtItemLogic.Text = diLogic.Logic; return(new CStatus()); }
/// <summary> /// gets the item state id /// </summary> /// <param name="lCollItemID"></param> /// <param name="patItemDI"></param> /// <returns></returns> protected k_STATE_ID GetItemStateID(long lCollectionItemID, long lItemID, DataSet dsPatItemComps, CPatientItemDataItem patItemDI) { k_STATE_ID kStateID = k_STATE_ID.Unknown; k_STATE_ID kOverallTSStateID = k_STATE_ID.NotSelected; k_STATE_ID kOverallOSStateID = k_STATE_ID.NotSelected; //get the entry date DateTime dtEntryDate = patItemDI.EntryDate; //get the checklist collection item di CChecklistItemDataItem cidDI = null; CChecklistItemData cid = new CChecklistItemData(BaseMstr.BaseData); cid.GetCLItemDI(ChecklistID, lCollectionItemID, out cidDI); //calculate how far the TS can go back long lTS = cidDI.CLITSTimePeriod; DateTime dtNow = DateTime.Now; DateTime dtTSCompare = dtNow.AddDays(-1 * lTS); //check the TS and set overall TS state k_COMPARE kTS = CDataUtils.CompareDates(dtEntryDate, dtTSCompare); if (kTS == k_COMPARE.GREATERTHAN || kTS == k_COMPARE.EQUALTO) { kOverallTSStateID = k_STATE_ID.Good; } else { //bad kOverallTSStateID = k_STATE_ID.Bad; } //list to hold the created component items CPatientItemCompList PatItemCompList = new CPatientItemCompList(); //build a pat item component list loaded with the most recent //values foreach (DataTable tableComp in dsPatItemComps.Tables) { foreach (DataRow drComp in tableComp.Rows) { //values to load the component item long lCompItemID = CDataUtils.GetDSLongValue(drComp, "ITEM_ID"); long lComponentID = CDataUtils.GetDSLongValue(drComp, "ITEM_COMPONENT_ID"); string strComponentValue = CDataUtils.GetDSStringValue(drComp, "COMPONENT_VALUE"); long lPatItemID = CDataUtils.GetDSLongValue(drComp, "PAT_ITEM_ID"); //only this item if (lCompItemID == lItemID) { CPatientItemComponentDataItem diComp = new CPatientItemComponentDataItem(); diComp.PatientID = PatientID; diComp.ItemID = lCompItemID; diComp.ComponentID = lComponentID; diComp.ComponentValue = strComponentValue; diComp.PatItemID = lPatItemID; PatItemCompList.Add(diComp); } } } //we now have a list of item components for this item //loop and get status for this item and update the overall status bool bHasSelectedValue = false; foreach (CPatientItemComponentDataItem diPatItemComp in PatItemCompList) { //get the state id for this component CICStateDataItem sdi = null; CItemComponentData icd = new CItemComponentData(BaseMstr.BaseData); icd.GetICStateDI(lItemID, diPatItemComp.ComponentID, out sdi); //switch on the type and get the value switch ((k_ITEM_TYPE_ID)patItemDI.ItemTypeID) { case k_ITEM_TYPE_ID.Laboratory: { bHasSelectedValue = true; //get the ranges CICRangeDataItem rdi = null; icd.GetICRangeDI(lItemID, diPatItemComp.ComponentID, out rdi); if (String.IsNullOrEmpty(diPatItemComp.ComponentValue)) { //does not have a value? kOverallOSStateID = k_STATE_ID.Unknown; } else { try { double dblValue = Convert.ToDouble(diPatItemComp.ComponentValue); //max/high check if (dblValue >= rdi.LegalMax) { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Unknown; } } else { if (dblValue >= rdi.High) { kOverallOSStateID = k_STATE_ID.Bad; } else { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Good; } } } //min/low check if (dblValue <= rdi.LegalMin) { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Unknown; } } else { if (dblValue <= rdi.Low) { kOverallOSStateID = k_STATE_ID.Bad; } else { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Good; } } } } catch (Exception e) { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Unknown; } } } break; } case k_ITEM_TYPE_ID.NoteTitle: { //note titles are excluded from quick entry //and do not affect default logic. must use custom logic //for note titles bHasSelectedValue = true; kOverallOSStateID = k_STATE_ID.Unknown; break; } case k_ITEM_TYPE_ID.QuestionFreeText: { bHasSelectedValue = true; if (diPatItemComp.ComponentValue.Length < 1) { //if they did not enter a value //then the overall state is bad! kOverallOSStateID = k_STATE_ID.Bad; } else { kOverallOSStateID = k_STATE_ID.Good; } break; } case k_ITEM_TYPE_ID.QuestionSelection: if (!String.IsNullOrEmpty(diPatItemComp.ComponentValue)) { //only interested in the one they selected if ((k_TRUE_FALSE_ID)Convert.ToInt64(diPatItemComp.ComponentValue) != k_TRUE_FALSE_ID.False) { bHasSelectedValue = true; if (kOverallOSStateID != k_STATE_ID.Bad) { if ((k_STATE_ID)sdi.StateID == k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Bad; } else { if ((k_STATE_ID)sdi.StateID == k_STATE_ID.Good) { if (kOverallOSStateID != k_STATE_ID.Unknown) { kOverallOSStateID = k_STATE_ID.Good; } } else { kOverallOSStateID = k_STATE_ID.Unknown; } } } } } break; } }//for each //if there is nothing selected then the overall os state is unk //and ts state is bad! if (!bHasSelectedValue) { kOverallOSStateID = k_STATE_ID.Unknown; kOverallTSStateID = k_STATE_ID.Bad; } if (kOverallTSStateID == k_STATE_ID.Bad || kOverallOSStateID == k_STATE_ID.Bad) { kStateID = k_STATE_ID.Bad; } else if (kOverallTSStateID == k_STATE_ID.Good && kOverallOSStateID == k_STATE_ID.Good) { kStateID = k_STATE_ID.Good; } else { kStateID = k_STATE_ID.Unknown; } return(kStateID); }
/// <summary> /// method to run logic over a colletion /// 1. all items in multi select must be have an option selected /// 2. all free text items must have data entered /// 3. labs and note titles are ignored /// 4. items that are not ACTIVE are ignored /// </summary> public CStatus RunCollectionLogic(string strPatientID, long lPatChecklistID, long lChecklistID, long lCollectionItemID) { //Get the patient checklist item data CPatChecklistItemData PatChecklistItem = new CPatChecklistItemData(this); CPatChecklistItemDataItem pdi = null; PatChecklistItem.GetPatCLItemDI(lPatChecklistID, lCollectionItemID, out pdi); //get all the items in the collection CItemCollectionData coll = new CItemCollectionData(this); DataSet dsColl = null; CStatus status = coll.GetItemCollectionDS(lCollectionItemID, out dsColl); //get all the patient item components in the collection DataSet dsPatItemComps = null; status = coll.GetItemColMostRecentPatICDS(lCollectionItemID, strPatientID, out dsPatItemComps); //if this collection item is overridden just return and don't update the state if (pdi.IsOverridden == k_TRUE_FALSE_ID.True) { bool bReturn = true; //check to see if there is a new result and override if there is... foreach (DataTable tableI in dsColl.Tables) { foreach (DataRow drI in tableI.Rows) { //get values from the the item in the collection (not the patient items, the collection items) long lItemID = CDataUtils.GetDSLongValue(drI, "ITEM_ID"); long lItemTypeID = CDataUtils.GetDSLongValue(drI, "ITEM_TYPE_ID"); long lActiveID = CDataUtils.GetDSLongValue(drI, "ACTIVE_ID"); //get the item so we can check entry date against TS etc... CPatientItemDataItem patItemDI = null; CPatientItemData patData = new CPatientItemData(this); patData.GetMostRecentPatientItemDI(strPatientID, lItemID, out patItemDI); DateTime dtEntryDate = patItemDI.EntryDate; if (dtEntryDate > pdi.OverrideDate) { pdi.OverrideDate = CDataUtils.GetNullDate(); pdi.IsOverridden = k_TRUE_FALSE_ID.False; PatChecklistItem.UpdatePatChecklistItem(pdi); bReturn = false; break; } } } if (bReturn) { //return if this item is overridden and there are no new results return(new CStatus()); } } //get the checklist item di CChecklistItemDataItem cidDI = null; CChecklistItemData cid = new CChecklistItemData(this); cid.GetCLItemDI(lChecklistID, lCollectionItemID, out cidDI); //calculate how far the TS can go back long lTS = cidDI.CLITSTimePeriod; DateTime dtNow = DateTime.Now; DateTime dtTSCompare = dtNow.AddDays(-1 * lTS); //keeps the overall OS state of the items k_STATE_ID kOverallOSStateID = k_STATE_ID.NotSelected; //keeps the overall TS state of the items k_STATE_ID kOverallTSStateID = k_STATE_ID.NotSelected; //loop over the collection items foreach (DataTable table in dsColl.Tables) { foreach (DataRow dr in table.Rows) { //get values from the the item in the collection (not the patient items, the collection items) long lItemID = CDataUtils.GetDSLongValue(dr, "ITEM_ID"); long lItemTypeID = CDataUtils.GetDSLongValue(dr, "ITEM_TYPE_ID"); long lActiveID = CDataUtils.GetDSLongValue(dr, "ACTIVE_ID"); //get the item so we can check entry date against TS etc... CPatientItemDataItem patItemDI = null; CPatientItemData patData = new CPatientItemData(this); patData.GetMostRecentPatientItemDI(strPatientID, lItemID, out patItemDI); DateTime dtEntryDate = patItemDI.EntryDate; //only interested in ACTIVE items if ((k_ACTIVE)lActiveID == k_ACTIVE.ACTIVE) { //check the TS and set overall TS state k_COMPARE kTS = CDataUtils.CompareDates(dtEntryDate, dtTSCompare); if (kTS == k_COMPARE.GREATERTHAN || kTS == k_COMPARE.EQUALTO) { //good if (kOverallTSStateID != k_STATE_ID.Bad) { kOverallTSStateID = k_STATE_ID.Good; } } else { //bad kOverallTSStateID = k_STATE_ID.Bad; } //list to hold the created component items CPatientItemCompList PatItemCompList = new CPatientItemCompList(); //build a pat item component list loaded with the most recent //values foreach (DataTable tableComp in dsPatItemComps.Tables) { foreach (DataRow drComp in tableComp.Rows) { //values to load the component item long lCompItemID = CDataUtils.GetDSLongValue(drComp, "ITEM_ID"); long lComponentID = CDataUtils.GetDSLongValue(drComp, "ITEM_COMPONENT_ID"); string strComponentValue = CDataUtils.GetDSStringValue(drComp, "COMPONENT_VALUE"); long lPatItemID = CDataUtils.GetDSLongValue(drComp, "PAT_ITEM_ID"); //only this item if (lCompItemID == lItemID) { CPatientItemComponentDataItem diComp = new CPatientItemComponentDataItem(); diComp.PatientID = strPatientID; diComp.ItemID = lCompItemID; diComp.ComponentID = lComponentID; diComp.ComponentValue = strComponentValue; diComp.PatItemID = lPatItemID; PatItemCompList.Add(diComp); } } //we now have a list of item components for this item //loop and get status for this item and update the overall status bool bHasSelectedValue = false; foreach (CPatientItemComponentDataItem diPatItemComp in PatItemCompList) { //get the state id for this component CICStateDataItem sdi = null; CItemComponentData icd = new CItemComponentData(this); icd.GetICStateDI(lItemID, diPatItemComp.ComponentID, out sdi); //switch on the type and get the value switch ((k_ITEM_TYPE_ID)lItemTypeID) { case k_ITEM_TYPE_ID.Laboratory: { bHasSelectedValue = true; //get the ranges CICRangeDataItem rdi = null; icd.GetICRangeDI(lItemID, diPatItemComp.ComponentID, out rdi); if (String.IsNullOrEmpty(diPatItemComp.ComponentValue)) { //does not have a value? kOverallOSStateID = k_STATE_ID.Unknown; } else { try { double dblValue = Convert.ToDouble(diPatItemComp.ComponentValue); //max/high check if (dblValue >= rdi.LegalMax) { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Unknown; } } else { if (dblValue >= rdi.High) { kOverallOSStateID = k_STATE_ID.Bad; } else { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Good; } } } //min/low check if (dblValue <= rdi.LegalMin) { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Unknown; } } else { if (dblValue <= rdi.Low) { kOverallOSStateID = k_STATE_ID.Bad; } else { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Good; } } } } catch (Exception e) { if (kOverallOSStateID != k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Unknown; } } } break; } case k_ITEM_TYPE_ID.NoteTitle: { //note titles are excluded from quick entry //so if we have one our os state is unknown bHasSelectedValue = true; kOverallOSStateID = k_STATE_ID.Unknown; break; } case k_ITEM_TYPE_ID.QuestionFreeText: { bHasSelectedValue = true; if (diPatItemComp.ComponentValue.Length < 1) { //if they did not enter a value //then the overall state is bad! kOverallOSStateID = k_STATE_ID.Bad; } break; } case k_ITEM_TYPE_ID.QuestionSelection: if (!String.IsNullOrEmpty(diPatItemComp.ComponentValue)) { //only interested in the one they selected if ((k_TRUE_FALSE_ID)Convert.ToInt64(diPatItemComp.ComponentValue) != k_TRUE_FALSE_ID.False) { bHasSelectedValue = true; if (kOverallOSStateID != k_STATE_ID.Bad) { if ((k_STATE_ID)sdi.StateID == k_STATE_ID.Bad) { kOverallOSStateID = k_STATE_ID.Bad; } else { if ((k_STATE_ID)sdi.StateID == k_STATE_ID.Good) { if (kOverallOSStateID != k_STATE_ID.Unknown) { kOverallOSStateID = k_STATE_ID.Good; } } else { kOverallOSStateID = k_STATE_ID.Unknown; } } } } } break; } }//for each //if there is nothing selected then the //overall TS state is bad and the OS state is unknown if (!bHasSelectedValue) { kOverallOSStateID = k_STATE_ID.Unknown; kOverallTSStateID = k_STATE_ID.Bad; } } } } } // //now update the collection item states. // //get the ts,os and ds possible values CChecklistItemData dCL = new CChecklistItemData(this); DataSet dsTS = null; dCL.GetTemporalStateDS(lChecklistID, lCollectionItemID, out dsTS); long lGoodTSID = dCL.GetTSDefaultStateID(dsTS, k_STATE_ID.Good); long lBadTSID = dCL.GetTSDefaultStateID(dsTS, k_STATE_ID.Bad); long lUnknownTSID = dCL.GetTSDefaultStateID(dsTS, k_STATE_ID.Unknown); DataSet dsOS = null; dCL.GetOutcomeStateDS(lChecklistID, lCollectionItemID, out dsOS); long lGoodOSID = dCL.GetOSDefaultStateID(dsOS, k_STATE_ID.Good); long lBadOSID = dCL.GetOSDefaultStateID(dsOS, k_STATE_ID.Bad); long lUnknownOSID = dCL.GetOSDefaultStateID(dsOS, k_STATE_ID.Unknown); DataSet dsDS = null; dCL.GetDecisionStateDS(lChecklistID, lCollectionItemID, out dsDS); long lGoodDSID = dCL.GetDSDefaultStateID(dsDS, k_STATE_ID.Good); long lBadDSID = dCL.GetDSDefaultStateID(dsDS, k_STATE_ID.Bad); long lUnknownDSID = dCL.GetDSDefaultStateID(dsDS, k_STATE_ID.Unknown); //update the TS state on the data item if (kOverallTSStateID == k_STATE_ID.Bad) { pdi.TSID = lBadTSID; } else if (kOverallTSStateID == k_STATE_ID.Good) { pdi.TSID = lGoodTSID; } else { pdi.TSID = lUnknownTSID; } //update the OS state on the data item if (kOverallOSStateID == k_STATE_ID.Bad) { pdi.OSID = lBadOSID; } else if (kOverallOSStateID == k_STATE_ID.Good) { pdi.OSID = lGoodOSID; } else { pdi.OSID = lUnknownOSID; } //update the ds state on the item data if (kOverallTSStateID == k_STATE_ID.Good && kOverallOSStateID == k_STATE_ID.Good) { pdi.DSID = lGoodDSID; } else { pdi.DSID = lBadDSID; } //update the checklist item state status = PatChecklistItem.UpdatePatChecklistItem(pdi); return(status); }