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