Example #1
0
 public void PatientInforTest()
 {
     try
     {
         var newHeader = new CobasE411PatientInformationRecord(@"P|1|||||||M||||||35^Y");
         var tempP     = new CobasE411PatientInformationRecord(@"P|1|||||||M||||||35^Y||||||||||||||||||||");
         Debug.WriteLine(tempP.Create());
         Debug.WriteLine(newHeader.Create());
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.ToString());
     }
 }
 public Cobase411TcpIpManager()
 {
     try
     {
         //if (DateTime.Now > new DateTime(2013, 06, 06)) throw new Exception("XXX");
         _clsHRecord = new CobasE411HeaderRecord();
         _clsPRecord = new CobasE411PatientInformationRecord();
         _clsORecord = new CobasE411TestOrderRecord();
         _clsQRecord = new CobasE411RequestInformationRecord();
         _clsRRecord = new CobasE411ResultRecord();
         _clsTRecord = new CobasE411TerminationRecord();
     }
     catch (Exception ex)
     {
         Log.Error("Fatal Error: {0}", ex);
     }
 }
Example #3
0
        public Cobase411_Bi()
        {
            try
            {
                _clsHRecord = new CobasE411HeaderRecord();
                _clsPRecord = new CobasE411PatientInformationRecord();
                _clsORecord = new CobasE411TestOrderRecord();
                _clsQRecord = new CobasE411RequestInformationRecord();
                _clsRRecord = new CobasE411ResultRecord();
                _clsTRecord = new CobasE411TerminationRecord();

                _prvRequestArray = new Queue <List <string> >();
                _objService      = new ExternalDataExchangeService();

                _instanceId = Guid.NewGuid();
                _objWorkFlowRuntime.AddService(_objService);
                _objAstm = new ClsAstm();
                _objService.AddService(_objAstm);
                _objAstm.SendACKEvent += objASTM_SendACKEvent;
                _objAstm.SendNAKEvent += objASTM_SendNAKEvent;
                _objAstm.SendENQEvent += objASTM_SendENQEvent;
                _objAstm.SendEOTEvent += objASTM_SendEOTEvent;
                _objWorkFlowInstance   = _objWorkFlowRuntime.CreateWorkflow(typeof(ASTMWorkflow), null, _instanceId);
                _objWorkFlowInstance.Start();
                Console.WriteLine(@"Work flow started");

                _objDataEventArgs = new ExternalDataEventArgs(_instanceId)
                {
                    WaitForIdle = true
                };
                DumpStateMachine(_objWorkFlowRuntime, _instanceId);
            }
            catch (Exception ex)
            {
                Log.Error("Fatal Error: {0}", ex);
            }
        }
        public override bool ProcessData(string inputBuffer, ref List <string> orderList)
        {
            try
            {
                var arrRecords = new string[] {};

                if (inputBuffer != string.Empty)
                {
                    arrRecords = inputBuffer.Split(new[] { _clsRRecord.Rules.EndOfRecordCharacter },
                                                   StringSplitOptions.RemoveEmptyEntries);
                }
                int  i          = 0;
                bool _newResult = false;
                while (i < arrRecords.Length)
                {
                    string[] arrFields = arrRecords[i].Split(_clsPRecord.Rules.FieldDelimiter);

                    if (arrFields[0].Equals(_clsRRecord.RecordType.Data))
                    {
                        _clsRRecord = new CobasE411ResultRecord(arrRecords[i]);
                        AddResult(_clsRRecord.GetResult());
                        _newResult = true;
                    }
                    if (arrFields[0].StartsWith(_clsPRecord.RecordType.Data))
                    {
                        _clsPRecord = new CobasE411PatientInformationRecord(arrRecords[i]);
                    }
                    else if (arrFields[0].StartsWith(_clsORecord.RecordType.Data))
                    {
                        _clsORecord        = new CobasE411TestOrderRecord(arrRecords[i]);
                        TestResult.Barcode = _clsORecord.SpecimenId.Data.Trim();
                        string tempDate = _clsORecord.DateTimeResultReportedOrLastModified.Data;
                        //TestResult.TestDate = string.Format("{0}/{1}/{2}", tempDate.Substring(6, 2),
                        //    tempDate.Substring(4, 2), tempDate.Substring(0, 4));
                    }
                    else if (arrFields[0].Equals(_clsQRecord.RecordType.Data))
                    {
                        _clsQRecord = new CobasE411RequestInformationRecord(arrRecords[i]);
                        _sQBarcode  = _clsQRecord.GetOrderBarcode();

                        List <string> regList = GetRegList(_sQBarcode);
                        if (regList != null)
                        {
                            if (regList.Count > 0)
                            {
                                Log.Debug(string.Format("So order: {0}", regList.Count));
                                foreach (string s in regList)
                                {
                                    Log.Debug(string.Format("{0}\r\n", s));
                                }
                            }
                            else
                            {
                                Log.Debug("No order!");
                            }
                        }
                        else
                        {
                            Log.Debug("No order!");
                        }
                        orderList = CreateOrderFrame(regList);
                        return(true);
                    }
                    else if (arrFields[0].Equals(_clsHRecord.RecordType.Data))
                    {
                        _clsHRecord = new CobasE411HeaderRecord(arrRecords[i]);
                    }

                    i++;
                }


                if (_newResult)
                {
                    Log.Debug("Begin Import Result");
                    Log.Debug(ImportResults() ? "Import Result Success" : "Error While Import Result");
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Log.Error("Fatal Error:{0}", ex.ToString());
            }
            return(false);
        }
Example #5
0
        private List <string> CreateOrderFrame(List <string> orderList)
        {
            var retList = new List <string>();

            //Tạo Header mới
            var newHeaderRecord = (CobasE411HeaderRecord)_clsHRecord.Clone();

            newHeaderRecord.CommentOrSpecialInstructions.Data = "TSDWN^REPLY";
            newHeaderRecord.SenderNameOrId = _clsHRecord.ReveiverId;
            newHeaderRecord.ReveiverId     = _clsHRecord.SenderNameOrId;

            string sTemp = string.Format("{0}{1}{2}{3}", DeviceHelper.STX, "1", newHeaderRecord.Create(),
                                         DeviceHelper.ETB);
            string checksum = DeviceHelper.GetCheckSumValue(sTemp);

            retList.Add(string.Format("{0}{1}{2}", sTemp, checksum, DeviceHelper.CRLF));

            //Tạo P mới
            var newPatientRecord = new CobasE411PatientInformationRecord();

            newPatientRecord.SequenceNumber.Data = "1";
            sTemp    = string.Format("{0}{1}{2}{3}", DeviceHelper.STX, "2", newPatientRecord.Create(), DeviceHelper.ETB);
            checksum = DeviceHelper.GetCheckSumValue(sTemp);
            retList.Add(string.Format("{0}{1}{2}", sTemp, checksum, DeviceHelper.CRLF));

            //Xử lý kết quả
            if ((orderList != null) && (orderList.Count != 0))
            {
                //Add OrderRecord
                _clsORecord = new CobasE411TestOrderRecord();
                _clsORecord.SequenceNumber.Data = "1";
                _clsORecord.SpecimenId.Data     = _sQBarcode;
                string[] tempIsId = _clsQRecord.StartingRangeIdNumber.Data.Split(_clsQRecord.Rules.ComponentDelimiter);
                _clsORecord.InstrumentSpecimenId.Data = string.Join(_clsORecord.Rules.ComponentDelimiter.ToString(),
                                                                    new[]
                {
                    tempIsId[3], tempIsId[4], tempIsId[5],
                    tempIsId[6], tempIsId[7], tempIsId[8]
                });
                _clsORecord.UniversalTestId.Data = _clsORecord.CreateUniversalTestid(orderList);
                _clsORecord.Priority.Data        = "R";
                _clsORecord.SpecimenCollectionDateAndTime.Data        = DateTime.Now.ToString("yyyyMMddHHmmss");
                _clsORecord.DateTimeResultReportedOrLastModified.Data = DateTime.Now.ToString("yyyyMMddHHmmss");
                _clsORecord.ActionCode.Data         = "A";
                _clsORecord.SpecimenDescriptor.Data = "1";
                _clsORecord.ReportTypes.Data        = "O";
                sTemp    = string.Format("{0}{1}{2}{3}", DeviceHelper.STX, "3", _clsORecord.Create(), DeviceHelper.ETB);
                checksum = DeviceHelper.GetCheckSumValue(sTemp);
                retList.Add(string.Format("{0}{1}{2}", sTemp, checksum, DeviceHelper.CRLF));

                _clsTRecord = new CobasE411TerminationRecord();
                sTemp       = String.Concat(DeviceHelper.STX, "4", _clsTRecord.Create(), DeviceHelper.ETX);
                checksum    = DeviceHelper.GetCheckSumValue(sTemp);
                retList.Add(string.Format("{0}{1}{2}", sTemp, checksum, DeviceHelper.CRLF));
            }
            else
            {
                //Add OrderRecord
                _clsORecord = new CobasE411TestOrderRecord();
                _clsORecord.SequenceNumber.Data = "1";
                _clsORecord.SpecimenId.Data     = _sQBarcode;
                _clsORecord.Priority.Data       = "R";
                //_clsORecord.SpecimenCollectionDateAndTime.Data = DateTime.Now.ToString("yyyyMMddHHmmss");
                //_clsORecord.DateTimeResultReportedOrLastModified.Data = DateTime.Now.ToString("yyyyMMddHHmmss");
                _clsORecord.ActionCode.Data         = "A";
                _clsORecord.SpecimenDescriptor.Data = "1";
                _clsORecord.ReportTypes.Data        = "O";
                sTemp    = string.Format("{0}{1}{2}{3}", DeviceHelper.STX, "3", _clsORecord.Create(), DeviceHelper.ETB);
                checksum = DeviceHelper.GetCheckSumValue(sTemp);
                retList.Add(string.Format("{0}{1}{2}", sTemp, checksum, DeviceHelper.CRLF));

                _clsTRecord = new CobasE411TerminationRecord {
                    TerminationCode = { Data = "I" }
                };
                sTemp    = String.Concat(DeviceHelper.STX, "4", _clsTRecord.Create(), DeviceHelper.ETX);
                checksum = DeviceHelper.GetCheckSumValue(sTemp);
                retList.Add(string.Format("{0}{1}{2}", sTemp, checksum, DeviceHelper.CRLF));
            }

            return(retList);
        }
Example #6
0
        private void ProcessData()
        {
            try
            {
                var arrRecords = new string[] {};

                if (_bufferData != string.Empty)
                {
                    arrRecords = _bufferData.Split(new[] { _clsRRecord.Rules.EndOfRecordCharacter },
                                                   StringSplitOptions.RemoveEmptyEntries);
                }
                int i = 0;
                while (i < arrRecords.Length)
                {
                    string[] arrFields = arrRecords[i].Split(_clsPRecord.Rules.FieldDelimiter);

                    if (arrFields[0].Equals(_clsRRecord.RecordType.Data))
                    {
                        _clsRRecord = new CobasE411ResultRecord(arrRecords[i]);
                        AddResult(_clsRRecord.GetResult());
                        _newResult = true;
                    }
                    else if (arrFields[0].StartsWith(_clsPRecord.RecordType.Data))
                    {
                        _clsPRecord = new CobasE411PatientInformationRecord(arrRecords[i]);
                    }
                    else if (arrFields[0].StartsWith(_clsORecord.RecordType.Data))
                    {
                        _clsORecord        = new CobasE411TestOrderRecord(arrRecords[i]);
                        TestResult.Barcode = _clsORecord.SpecimenId.Data.Trim();
                        string tempDate = _clsORecord.SpecimenCollectionDateAndTime.Data;
                        TestResult.TestDate = string.Format("{0}/{1}/{2}", tempDate.Substring(6, 2),
                                                            tempDate.Substring(4, 2), tempDate.Substring(0, 4));
                    }
                    else if (arrFields[0].Equals(_clsQRecord.RecordType.Data))
                    {
                        _clsQRecord = new CobasE411RequestInformationRecord(arrRecords[i]);
                        _sQBarcode  = _clsQRecord.GetOrderBarcode();
                        _newQuery   = true;
                        List <string> regList = GetRegList(_sQBarcode);
                        _prvRequestArray.Enqueue(CreateOrderFrame(regList));
                    }
                    else if (arrFields[0].Equals(_clsHRecord.RecordType.Data))
                    {
                        _clsHRecord = new CobasE411HeaderRecord(arrRecords[i]);
                    }

                    i++;
                }

                if (_newQuery)
                {
                    //Send((int)EventID.OpenNewOutputSession, _sQBarcode);
                    _objAstm.CallGetQuery(_objDataEventArgs);
                    if ((_prvRequestArray != null) && (_prvRequestArray.Count != 0))
                    {
                        _currentOrder.Clear();
                        _currentOrder    = _prvRequestArray.Dequeue();
                        _currentOrderIdx = 0;
                    }
                    //SendByte((byte)DeviceHelper.ENQ);
                    _newQuery = false;
                }

                if (_newResult)
                {
                    Log.Debug("Begin Import Result");
                    Log.Debug(ImportResults() ? "Import Result Success" : "Error While Import Result");
                    _newResult = false;
                }
            }
            catch (Exception ex)
            {
                Log.Error("Fatal Error:{0}", ex.ToString());
            }
        }