コード例 #1
0
ファイル: MllpPacket.cs プロジェクト: andychops/Libraries
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="mllp"></param>
 public MllpPacket(byte[] mllp)
 {
     if (mllp != null && IsValidMllpPacket(mllp.ToList()))
         hl7 = new HL7Message(ParseMllpPacket(mllp.ToList()).ToArray());
     else
         throw new ArgumentException("Invalid MLLP packet");
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: andychops/Libraries
 static HL7Message mllpReceiver_HL7MessageReceived(HL7Message hl7)
 {
     Console.WriteLine(hl7 + "\n\n");
     //            return new HL7Message(
     //@"MSH|^~\&|BROKER.RECEIVER.FLOW||ADT|767543|20090824222730||ACK|XX3657|P|2.5
     //MSA|AA|ZZ9380||1");
     return null;
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: andychops/Libraries
 static void mllpSend_ErrorHandler(Exception ex, HL7Message hl7)
 {
     Console.WriteLine(ex.Message + "\n\n");
 }
コード例 #4
0
ファイル: Program.cs プロジェクト: andychops/Libraries
 static void mllpSend_AckNackReceived(HL7Message origHl7, HL7Message ackNack)
 {
     // if (++count % 100 == 0)
         Console.WriteLine("ACK Received: " + count + "\n");
 }
コード例 #5
0
ファイル: MllpSend.cs プロジェクト: andychops/Libraries
        /// <summary>
        /// Send: sends an HL7 message to a host and returns the ACK/NACK response (if required).
        /// </summary>
        /// <param name="data"></param>
        /// <returns>byte[]</returns>
        public HL7Message Send(HL7Message hl7)
        {
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                s.Connect(ep);

                if (s.Connected)
                {
                    MllpPacket mllp = new MllpPacket(hl7);
                    int count = s.Send((byte[])mllp);

                    if (count > 0 && ackNackRequired)
                    {
                        SocketState state = new SocketState();
                        s.Receive(state.Buffer, 0, SocketState.BufferSize, SocketFlags.None);

                        if (MllpPacket.IsValidMllpPacket(state.Buffer.ToList()))
                            return new MllpPacket(state.Buffer).HL7Message;
                    }
                }
            }
            finally
            {
                s.Close();
            }
            return null;
        }
コード例 #6
0
ファイル: MllpSend.cs プロジェクト: andychops/Libraries
 /// <summary>
 /// RaiseErrorEvent
 /// </summary>
 /// <param name="error"></param>
 private void RaiseErrorEvent(Exception ex, HL7Message hl7)
 {
     try
     {
         if (ErrorHandler != null)
             ErrorHandler(ex, hl7);
     }
     catch { }
 }
コード例 #7
0
ファイル: MllpSend.cs プロジェクト: andychops/Libraries
 /// <summary>
 /// RaiseAckNackReceived
 /// </summary>
 /// <param name="ackNack"></param>
 private void RaiseAckNackReceived(HL7Message origHl7, HL7Message ackNack)
 {
     try
     {
         if (AckNackReceived != null)
             AckNackReceived(origHl7, ackNack);
     }
     catch { }
 }
コード例 #8
0
ファイル: MllpSend.cs プロジェクト: andychops/Libraries
        /// <summary>
        /// SendAsync: sends an HL7 message to a host and returns the ACK/NACK response (if required).
        /// </summary>
        /// <param name="data"></param>
        /// <returns>bool</returns>
        public void SendAsync(HL7Message hl7)
        {
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                s.BeginConnect(ep, SocketConnect, new SocketState() { Socket = s, HL7Message = hl7 });
            }
            catch (Exception ex)
            {
                RaiseErrorEvent(ex, hl7);
                s.Close();
            }
        }
コード例 #9
0
ファイル: MllpPacket.cs プロジェクト: andychops/Libraries
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="hl7"></param>
 public MllpPacket(HL7Message hl7)
 {
     this.hl7 = hl7;
 }