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