示例#1
0
        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);
            }
        }