/// <summary>
        /// Launches the inpatient grouper processing.
        /// </summary>
        private void LaunchInpatientGrouperProcessing()
        {
            try
            {
                if (DatasetItem.DRGMDCMappingStatus != DrgMdcMappingStatusEnum.Intializing)
                {
                    DatasetItem.DRGMDCMappingStatus = DrgMdcMappingStatusEnum.Intializing;
                }

                SaveImportEntry(DatasetItem);

                DatasetSysTrayProcessor.ProcessDataset(DatasetItem);

                ServiceLocator.Current.GetInstance <IEventAggregator>()
                .GetEvent <UpdateDrgMdsStatusEvent>()
                .Publish(DatasetItem.Id.ToString());
            }
            catch (Exception e)
            {
                Logger.Write(e, "Failed to launch grouper application.");
                throw;
            }
        }
        /// <summary>
        /// Called when [process dataset DRG record].
        /// </summary>
        /// <param name="item">The item.</param>
        private void OnProcessDatasetDRGRecord(Dataset item)
        {
            if (!item.ContentType.Name.EqualsIgnoreCase("Inpatient Discharge"))
            {
                return;
            }
            if (!item.DRGMDCMappingStatus.In(new [] { DrgMdcMappingStatusEnum.Error, DrgMdcMappingStatusEnum.Pending }))
            {
                return;
            }

            item.DRGMDCMappingStatus = DrgMdcMappingStatusEnum.Intializing;
            Service.Save(item, (dataset, exception) =>
            {
                if (exception == null)
                {
                    item = (Dataset)dataset;
                }
            });

            DatasetSysTrayProcessor.ProcessDataset(item);

            UpdateDrgMdsStatus(item.Id.ToString());
        }