public ImmuliteXpiManager()
 {
     try
     {
         _clsHRecord = new ImmuliteXpiHeaderRecord();
         _clsPRecord = new ImmuliteXpiPatientInformationRecord();
         _clsORecord = new ImmuliteXpiTestOrderRecord();
         _clsQRecord = new ImmuliteXpiRequestInformationRecord();
         _clsRRecord = new ImmuliteXpiResultRecord();
         _clsTRecord = new ImmuliteXpiTerminationRecord();
     }
     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].StartsWith(_clsPRecord.RecordType.Data))
                    {
                        _clsPRecord = new ImmuliteXpiPatientInformationRecord(arrRecords[i]);
                        if (newResult)
                        {
                            Log.Debug("Begin Import {0} Result", TestResult.Items.Count);
                            Log.Debug(ImportResults() ? "Import Result Success" : "Error While Import Result");
                            newResult = false;
                        }
                    }
                    else if (arrFields[0].StartsWith(_clsORecord.RecordType.Data))
                    {
                        _clsORecord = new ImmuliteXpiTestOrderRecord(arrRecords[i]);
                        string barcode = _clsORecord.SpecimenId.Data.Trim();
                        while (barcode.IndexOf(".") >= 0)
                        {
                            barcode = barcode.Replace(".", "");
                        }
                        TestResult.Barcode = barcode;
                    }
                    else if (arrFields[0].Equals(_clsRRecord.RecordType.Data))
                    {
                        _clsRRecord = new ImmuliteXpiResultRecord(arrRecords[i]);

                        if (string.IsNullOrEmpty(TestResult.TestDate))
                        {
                            string tempDate = _clsRRecord.DateTimeTestCompleted.Data.Trim();
                            TestResult.TestDate = string.IsNullOrEmpty(tempDate)
                                ? DateTime.Now.ToString("dd/MM/yyyy")
                                : string.Format("{0}/{1}/{2}", tempDate.Substring(6, 2),
                                                tempDate.Substring(4, 2), tempDate.Substring(0, 4));
                        }


                        AddResult(_clsRRecord.GetResult());
                        newResult = true;
                    }
                    else if (arrFields[0].Equals(_clsQRecord.RecordType.Data))
                    {
                        string patientName = "";
                        _clsQRecord = new ImmuliteXpiRequestInformationRecord(arrRecords[i]);
                        _sQBarcode  = _clsQRecord.GetOrderBarcode();
                        Log.Debug("Barcode is:{0}", _sQBarcode);

                        List <string> regList;

                        string barcodeToQuery = _sQBarcode;
                        if (_sQBarcode.Length <= 4)
                        {
                            barcodeToQuery = string.Format("{0}{1}", DateTime.Now.ToString("yyMMdd"),
                                                           _sQBarcode.PadLeft(4, '0'));
                        }
                        regList = GetRegList(barcodeToQuery, ref patientName);

                        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, patientName);
                        return(true);
                    }
                    else if (arrFields[0].Equals(_clsHRecord.RecordType.Data))
                    {
                        _clsHRecord = new ImmuliteXpiHeaderRecord(arrRecords[i]);
                    }

                    i++;
                }

                if (newResult)
                {
                    Log.Debug("Begin Import {0} Result", TestResult.Items.Count);
                    Log.Debug(ImportResults() ? "Import Result Success" : "Error While Import Result");
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Log.Error("Fatal Error:{0}", ex.ToString());
            }
            return(false);
        }