private void ProcessMessage(string fullPath) { string msgtext = ""; int i = 0; while (i < 5) { try { msgtext = File.ReadAllText(fullPath); break; } catch { } Thread.Sleep(200); i++; if (i == 5) { EventLog.WriteEntry("Could not read text from file due to file locking issues.", EventLogEntryType.Error); return; } } try { MessageHL7 msg = new MessageHL7(msgtext); //this creates an entire heirarchy of objects. if (msg.MsgType == MessageType.ADT) { if (IsVerboseLogging) { EventLog.WriteEntry("OpenDentHL7", "Processed ADT message", EventLogEntryType.Information); } ADT.ProcessMessage(msg, IsStandalone, IsVerboseLogging); } else if (msg.MsgType == MessageType.SIU && !IsStandalone) //appointments don't get imported if standalone mode. { if (IsVerboseLogging) { EventLog.WriteEntry("OpenDentHL7", "Processed SUI message", EventLogEntryType.Information); } SIU.ProcessMessage(msg, IsStandalone, IsVerboseLogging); } } catch (Exception ex) { EventLog.WriteEntry(ex.Message + "\r\n" + ex.StackTrace, EventLogEntryType.Error); return; } //we won't be processing DFT messages. //else if(msg.MsgType==MessageType.DFT) { //ADT.ProcessMessage(msg); //} try { File.Delete(fullPath); } catch (Exception ex) { EventLog.WriteEntry("Delete failed for " + fullPath + "\r\n" + ex.Message, EventLogEntryType.Error); } }