Exemple #1
0
        public ScreeningFinal(ProcessingModeEnum processingMode)
        {
            this.m_ProcessingMode = processingMode;
            this.m_Rule           = new YellowstonePathology.Business.Rules.Rule();

            this.m_Rule.ActionList.Add(IsUserPathologistOrCytotech);
            this.m_Rule.ActionList.Add(DoesPriorUnacceptedScreeningExist);
            this.m_Rule.ActionList.Add(ArePanelResultsAlreadyAccepted);
            this.m_Rule.ActionList.Add(DoesTheResultCodeHaveAnyNines);
            this.m_Rule.ActionList.Add(HandleHistorectomyWarning);
            this.m_Rule.ActionList.Add(AreThePanelOrderResultsSet);
            this.m_Rule.ActionList.Add(SetScreenedByUserData);
            this.m_Rule.ActionList.Add(SetScreeningError);
            this.m_Rule.ActionList.Add(AddNoChargePeerReviewForEndoGreaterThan40Comment);
            this.m_Rule.ActionList.Add(AddPathologistReviewIfDiagnosisIsTwoOrBetter);
            this.m_Rule.ActionList.Add(HandleUnsatPrimaryScreeningResult);
            this.m_Rule.ActionList.Add(HandleUnsatPathologistReviewScreeningConfirmedResult);
            this.m_Rule.ActionList.Add(HandleNoChargePathologistReview);
            this.m_Rule.ActionList.Add(HandleNoChargePathologistReviewEndometrialCells);
            this.m_Rule.ActionList.Add(AcceptPanelOrder);
            this.m_Rule.ActionList.Add(DoesDotReviewExist);
            this.m_Rule.ActionList.Add(AddQCReviewIfNecessary);
            this.m_Rule.ActionList.Add(HandleImagerError);
            this.m_Rule.ActionList.Add(IsOkToFinalPanelSetOrderResult);
            this.m_Rule.ActionList.Add(IsQCScreenerSameAsInitialScreener);
            this.m_Rule.ActionList.Add(FinalPanelSetOrder);
            this.m_Rule.ActionList.Add(HandleScreeningError);
        }
Exemple #2
0
        public ScreeningFinal(ProcessingModeEnum processingMode)
        {
            this.m_ProcessingMode = processingMode;
            this.m_Rule = new YellowstonePathology.Business.Rules.Rule();

            this.m_Rule.ActionList.Add(IsUserPathologistOrCytotech);
            this.m_Rule.ActionList.Add(DoesPriorUnacceptedScreeningExist);
            this.m_Rule.ActionList.Add(ArePanelResultsAlreadyAccepted);
            this.m_Rule.ActionList.Add(DoesTheResultCodeHaveAnyNines);
            this.m_Rule.ActionList.Add(HandleHistorectomyWarning);
            this.m_Rule.ActionList.Add(AreThePanelOrderResultsSet);
            this.m_Rule.ActionList.Add(SetScreenedByUserData);
            this.m_Rule.ActionList.Add(SetScreeningError);
            this.m_Rule.ActionList.Add(AddNoChargePeerReviewForEndoGreaterThan40Comment);
            this.m_Rule.ActionList.Add(AddPathologistReviewIfDiagnosisIsTwoOrBetter);
            this.m_Rule.ActionList.Add(HandleUnsatPrimaryScreeningResult);
            this.m_Rule.ActionList.Add(HandleUnsatPathologistReviewScreeningConfirmedResult);
            this.m_Rule.ActionList.Add(HandleNoChargePathologistReview);
            this.m_Rule.ActionList.Add(HandleNoChargePathologistReviewEndometrialCells);
            this.m_Rule.ActionList.Add(AcceptPanelOrder);
            this.m_Rule.ActionList.Add(DoesDotReviewExist);
            this.m_Rule.ActionList.Add(AddQCReviewIfNecessary);
            this.m_Rule.ActionList.Add(HandleImagerError);
            this.m_Rule.ActionList.Add(IsOkToFinalPanelSetOrderResult);
            this.m_Rule.ActionList.Add(IsQCScreenerSameAsInitialScreener);
            this.m_Rule.ActionList.Add(FinalPanelSetOrder);
            this.m_Rule.ActionList.Add(HandleScreeningError);
        }
        public void Execute(string screeningType, YellowstonePathology.Business.Test.AccessionOrder cytologyAccessionOrder,
                            YellowstonePathology.Business.Test.ThinPrepPap.PanelOrderCytology initiatingPanelOrder, ProcessingModeEnum processingMode,
                            YellowstonePathology.Business.Rules.ExecutionStatus executionStatus)
        {
            this.m_ScreeningType          = screeningType;
            this.m_CytologyAccessionOrder = cytologyAccessionOrder;
            this.m_InitiatingPanelOrder   = initiatingPanelOrder;
            this.m_PanelSetOrderCytology  = (YellowstonePathology.Business.Test.ThinPrepPap.PanelSetOrderCytology)cytologyAccessionOrder.PanelSetOrderCollection.GetPanelSetOrder(initiatingPanelOrder.ReportNo);
            this.m_ProcessingMode         = processingMode;

            this.m_ExecutionStatus = executionStatus;
            this.m_Rule.Execute(this.m_ExecutionStatus);
        }
        public void Execute(string screeningType, YellowstonePathology.Business.Test.AccessionOrder cytologyAccessionOrder,
            YellowstonePathology.Business.Test.ThinPrepPap.PanelOrderCytology initiatingPanelOrder, ProcessingModeEnum processingMode,
            YellowstonePathology.Business.Rules.ExecutionStatus executionStatus)
        {
            this.m_ScreeningType = screeningType;
            this.m_CytologyAccessionOrder = cytologyAccessionOrder;
            this.m_InitiatingPanelOrder = initiatingPanelOrder;
            this.m_PanelSetOrderCytology = (YellowstonePathology.Business.Test.ThinPrepPap.PanelSetOrderCytology)cytologyAccessionOrder.PanelSetOrderCollection.GetPanelSetOrder(initiatingPanelOrder.ReportNo);
            this.m_ProcessingMode = processingMode;

            this.m_ExecutionStatus = executionStatus;
            this.m_Rule.Execute(this.m_ExecutionStatus);
        }
Exemple #5
0
        /// <summary>
        /// Process directory or file with given path
        /// </summary>
        /// <param name="sourcePath">File or directory to be processed</param>
        /// <param name="outputPath">Path to directory to store results
        /// Will be created if it doesn't exist
        /// </param>
        /// <param name="processAsDocument">If true, all images are processed as a single document</param>
        public void ProcessPath(string sourcePath, string outputPath,
                                IProcessingSettings settings,
                                ProcessingModeEnum processingMode)
        {
            List <string> sourceFiles = new List <string>();

            if (Directory.Exists(sourcePath))
            {
                sourceFiles.AddRange(Directory.GetFiles(sourcePath));
                sourceFiles.Sort();
            }
            else if (File.Exists(sourcePath))
            {
                sourceFiles.Add(sourcePath);
            }
            else
            {
                Console.WriteLine("Invalid source path");
                return;
            }

            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }

            if (processingMode == ProcessingModeEnum.SinglePage ||
                (processingMode == ProcessingModeEnum.MultiPage && sourceFiles.Count == 1))
            {
                ProcessingSettings fullTextSettings = settings as ProcessingSettings;
                foreach (string filePath in sourceFiles)
                {
                    string outputFileName = Path.GetFileNameWithoutExtension(filePath);
                    string outputFilePath = Path.Combine(outputPath, outputFileName);

                    Console.WriteLine("Processing " + Path.GetFileName(filePath));

                    ProcessFile(filePath, outputFilePath, fullTextSettings);
                }
            }
            else if (processingMode == ProcessingModeEnum.MultiPage)
            {
                ProcessingSettings fullTextSettings = settings as ProcessingSettings;
                string             outputFileName   = "document";
                string             outputFilePath   = Path.Combine(outputPath, outputFileName);

                ProcessDocument(sourceFiles, outputFilePath, fullTextSettings);
            }
            else if (processingMode == ProcessingModeEnum.ProcessTextField)
            {
                TextFieldProcessingSettings fieldSettings = settings as TextFieldProcessingSettings;
                foreach (string filePath in sourceFiles)
                {
                    string outputFileName = Path.GetFileNameWithoutExtension(filePath);
                    string ext            = ".xml";
                    string outputFilePath = Path.Combine(outputPath, outputFileName + ext);

                    Console.WriteLine("Processing " + Path.GetFileName(filePath));

                    ProcessTextField(filePath, outputFilePath, fieldSettings);
                }
            }
            else if (processingMode == ProcessingModeEnum.ProcessMrz)
            {
                foreach (string filePath in sourceFiles)
                {
                    string outputFileName = Path.GetFileNameWithoutExtension(filePath);
                    string ext            = ".xml";
                    string outputFilePath = Path.Combine(outputPath, outputFileName + ext);

                    Console.WriteLine("Processing " + Path.GetFileName(filePath));

                    ProcessMrz(filePath, outputFilePath);
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// Process directory or file with given path
        /// </summary>
        /// <param name="sourcePath">File or directory to be processed</param>
        /// <param name="outputPath">Path to directory to store results
        /// Will be created if it doesn't exist
        /// </param>
        /// <param name="processAsDocument">If true, all images are processed as a single document</param>
        public void ProcessPath(string sourcePath, string outputPath, 
            IProcessingSettings settings,
            ProcessingModeEnum processingMode)
        {
            List<string> sourceFiles = new List<string>();
            if (Directory.Exists(sourcePath))
            {
                sourceFiles.AddRange(Directory.GetFiles(sourcePath));
                sourceFiles.Sort();
            }
            else if (File.Exists(sourcePath))
            {
                sourceFiles.Add(sourcePath);
            }
            else
            {
                Console.WriteLine("Invalid source path");
                return;
            }

            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }

            if (processingMode == ProcessingModeEnum.SinglePage || 
                (processingMode == ProcessingModeEnum.MultiPage && sourceFiles.Count == 1) )
            {
                ProcessingSettings fullTextSettings = settings as ProcessingSettings;
                foreach (string filePath in sourceFiles)
                {
                    string outputFileName = Path.GetFileNameWithoutExtension(filePath);
                    string outputFilePath = Path.Combine(outputPath, outputFileName);

                    Console.WriteLine("Processing " + Path.GetFileName(filePath));

                    ProcessFile(filePath, outputFilePath, fullTextSettings);
                }
            }
            else if(processingMode == ProcessingModeEnum.MultiPage)
            {
                ProcessingSettings fullTextSettings = settings as ProcessingSettings;
                string outputFileName = "document";
                string outputFilePath = Path.Combine(outputPath, outputFileName);

                ProcessDocument(sourceFiles, outputFilePath, fullTextSettings);
            }
            else if (processingMode == ProcessingModeEnum.ProcessTextField)
            {
                TextFieldProcessingSettings fieldSettings = settings as TextFieldProcessingSettings;
                foreach (string filePath in sourceFiles)
                {
                    string outputFileName = Path.GetFileNameWithoutExtension(filePath);
                    string ext = ".xml";
                    string outputFilePath = Path.Combine(outputPath, outputFileName + ext);

                    Console.WriteLine("Processing " + Path.GetFileName(filePath));

                    ProcessTextField(filePath, outputFilePath, fieldSettings);
                }
            }
            else if (processingMode == ProcessingModeEnum.ProcessMrz)
            {
                foreach (string filePath in sourceFiles)
                {
                    string outputFileName = Path.GetFileNameWithoutExtension(filePath);
                    string ext = ".xml";
                    string outputFilePath = Path.Combine(outputPath, outputFileName + ext);

                    Console.WriteLine("Processing " + Path.GetFileName(filePath));

                    ProcessMrz(filePath, outputFilePath);
                }
            }
        }
Exemple #7
0
        static void Main(string[] args)
        {
            try
            {
                Test tester = new Test();

                ProcessingModeEnum processingMode = ProcessingModeEnum.SinglePage;

                string outFormat     = null;
                string profile       = null;
                string language      = "english";
                string customOptions = "";

                var p = new OptionSet()
                {
                    { "asDocument", v => processingMode = ProcessingModeEnum.MultiPage },
                    { "asTextField", v => processingMode = ProcessingModeEnum.ProcessTextField },
                    { "asFields", v => processingMode = ProcessingModeEnum.ProcessFields },
                    { "asMRZ", var => processingMode = ProcessingModeEnum.ProcessMrz },
                    { "captureData", v => processingMode = ProcessingModeEnum.CaptureData },
                    { "out=", (string v) => outFormat = v },
                    { "profile=", (string v) => profile = v },
                    { "lang=", (string v) => language = v },
                    { "options=", (string v) => customOptions = v }
                };

                List <string> additionalArgs = null;
                try
                {
                    additionalArgs = p.Parse(args);
                }
                catch (OptionException)
                {
                    Console.WriteLine("Invalid arguments.");
                    displayHelp();
                    return;
                }

                string sourcePath   = null;
                string xmlPath      = null;
                string targetPath   = Directory.GetCurrentDirectory();
                string templateName = null;

                switch (processingMode)
                {
                case ProcessingModeEnum.SinglePage:
                case ProcessingModeEnum.MultiPage:
                case ProcessingModeEnum.ProcessTextField:
                case ProcessingModeEnum.ProcessMrz:
                    if (additionalArgs.Count != 2)
                    {
                        displayHelp();
                        return;
                    }

                    sourcePath = additionalArgs[0];
                    targetPath = additionalArgs[1];
                    break;

                case ProcessingModeEnum.ProcessFields:
                    if (additionalArgs.Count != 3)
                    {
                        displayHelp();
                        return;
                    }

                    sourcePath = additionalArgs[0];
                    xmlPath    = additionalArgs[1];
                    targetPath = additionalArgs[2];
                    break;

                case ProcessingModeEnum.CaptureData:
                    if (additionalArgs.Count != 3)
                    {
                        displayHelp();
                        return;
                    }

                    sourcePath   = additionalArgs[0];
                    templateName = additionalArgs[1];
                    targetPath   = additionalArgs[2];
                    break;
                }

                if (!Directory.Exists(targetPath))
                {
                    Directory.CreateDirectory(targetPath);
                }

                if (String.IsNullOrEmpty(outFormat))
                {
                    if (processingMode == ProcessingModeEnum.ProcessFields ||
                        processingMode == ProcessingModeEnum.ProcessTextField ||
                        processingMode == ProcessingModeEnum.ProcessMrz ||
                        processingMode == ProcessingModeEnum.CaptureData)
                    {
                        outFormat = "xml";
                    }
                    else
                    {
                        outFormat = "txt";
                    }
                }

                if (outFormat != "xml" &&
                    (processingMode == ProcessingModeEnum.ProcessFields ||
                     processingMode == ProcessingModeEnum.ProcessTextField) ||
                    processingMode == ProcessingModeEnum.CaptureData)
                {
                    Console.WriteLine("Only xml is supported as output format for field-level recognition.");
                    outFormat = "xml";
                }

                if (processingMode == ProcessingModeEnum.SinglePage || processingMode == ProcessingModeEnum.MultiPage)
                {
                    ProcessingSettings settings = buildSettings(language, outFormat, profile);
                    settings.CustomOptions = customOptions;
                    tester.ProcessPath(sourcePath, targetPath, settings, processingMode);
                }
                else if (processingMode == ProcessingModeEnum.ProcessTextField)
                {
                    TextFieldProcessingSettings settings = buildTextFieldSettings(language, customOptions);
                    tester.ProcessPath(sourcePath, targetPath, settings, processingMode);
                }
                else if (processingMode == ProcessingModeEnum.ProcessFields)
                {
                    string outputFilePath = Path.Combine(targetPath, Path.GetFileName(sourcePath) + ".xml");
                    tester.ProcessFields(sourcePath, xmlPath, outputFilePath);
                }
                else if (processingMode == ProcessingModeEnum.ProcessMrz)
                {
                    tester.ProcessPath(sourcePath, targetPath, null, processingMode);
                }
                else if (processingMode == ProcessingModeEnum.CaptureData)
                {
                    string outputFilePath = Path.Combine(targetPath, Path.GetFileName(sourcePath) + ".xml");
                    tester.CaptureData(sourcePath, templateName, outputFilePath);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: ");
                Console.WriteLine(e.Message);
            }
        }