private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                var selectedGroups = listGroups.Items.Cast <ListViewItem>()
                                     .Select(x => x.Tag)
                                     .OfType <int>()
                                     .ToList();

                var formAddGroup = new FormAddGroup(_views, selectedGroups);
                if (formAddGroup.ShowDialog() == DialogResult.OK)
                {
                    foreach (var groupID in formAddGroup.SelectedGroups)
                    {
                        var hasDuplicates = _views.MainForm.datasetBilling.RegexpToGroups.Any(x => !x.IsIDNull() && x.ID == _regExpID && !x.IsGroupIDNull() && x.GroupID == groupID);
                        if (!hasDuplicates)
                        {
                            _views.MainForm.datasetBilling.RegexpToGroups.AddRegexpToGroupsRow(_regExpID, groupID);
                        }
                    }

                    ///////////////////////////////////////////////////////////////////////////////

                    _views.MainForm.adapterRegexpToGroupsBilling.Update(_views.MainForm.datasetBilling.RegexpToGroups);
                    _views.MainForm.adapterRegexpToGroupsBilling.Fill(_views.MainForm.datasetBilling.RegexpToGroups);

                    ///////////////////////////////////////////////////////////////////////////////

                    FillGroups();
                }
            }
            catch (Exception ex)
            {
                MainForm.ShowExceptionMessage(ex);
            }
        }
        private void btnGroupAdd_Click(object sender, EventArgs e)
        {
            try
            {
                if (listFilters.SelectedItems.Count > 0)
                {
                    var selectedGroups = listGroups.Items.Cast <ListViewItem>()
                                         .Select(x => x.Tag)
                                         .OfType <int>()
                                         .ToList();

                    var formAddGroup = new FormAddGroup(_views, selectedGroups);
                    if (formAddGroup.ShowDialog() == DialogResult.OK)
                    {
                        var selectedFilterID = (int)listFilters.SelectedItems[0].Tag;

                        ///////////////////////////////////////////////////////////////////////////////

                        var filterRow = _views.MainForm.datasetBilling.ICDFilters.FirstOrDefault(x => x.FilterID == selectedFilterID);
                        if (filterRow == null)
                        {
                            filterRow = _views.MainForm.datasetBilling.ICDFilters.NewICDFiltersRow();
                        }

                        ///////////////////////////////////////////////////////////////////////////////

                        List <int> groupIDs;

                        if (!filterRow.IsGroupIDsNull())
                        {
                            groupIDs = filterRow.GroupIDs.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
                                       .Select(x => Convert.ToInt32(x))
                                       .ToList();
                        }
                        else
                        {
                            groupIDs = new List <int>();
                        }

                        ///////////////////////////////////////////////////////////////////////////////

                        foreach (var groupID in formAddGroup.SelectedGroups)
                        {
                            if (groupIDs.Contains(groupID))
                            {
                                continue;
                            }

                            groupIDs.Add(groupID);

                            ///////////////////////////////////////////////////////////////////////////////

                            var listItem = new ListViewItem
                            {
                                Text = _views.MainForm.datasetBilling.ICD9Groups.Single(x => x.GroupID == groupID)
                                       .Name,
                                Tag = groupID
                            };

                            listGroups.Items.Add(listItem);
                        }

                        ///////////////////////////////////////////////////////////////////////////////

                        filterRow.GroupIDs = String.Join(",", groupIDs);

                        if (filterRow.RowState == DataRowState.Detached)
                        {
                            _views.MainForm.datasetBilling.ICDFilters.AddICDFiltersRow(filterRow);
                        }

                        ///////////////////////////////////////////////////////////////////////////////

                        _views.MainForm.adapterRegexpToGroupsBilling.Update(_views.MainForm.datasetBilling.RegexpToGroups);
                        _views.MainForm.adapterRegexpToGroupsBilling.Fill(_views.MainForm.datasetBilling.RegexpToGroups);

                        _views.MainForm.adapterICDFiltersBilling.Update(_views.MainForm.datasetBilling.ICDFilters);
                        _views.MainForm.adapterICDFiltersBilling.Fill(_views.MainForm.datasetBilling.ICDFilters);

                        FillGroupsList();
                    }
                }
            }
            catch (Exception ex)
            {
                MainForm.ShowExceptionMessage(ex);
            }
        }