using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; using System.Configuration; using System.Windows.Forms; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Data; using System.Security.Cryptography; using System.Runtime.InteropServices.ComTypes; using System.Text.RegularExpressions; namespace FlyDockTool { public class deviceAnalysis { public EventHandler dataOutPutShow; public static deviceAnalysis Instance; //申明一个EcgDrawing对象,复制Null private static readonly object LockHelper = new object(); string tempData = string.Empty;//存储串口和TCP接收到的 累计数据 private System.Threading.Timer _tResult;//串口数据接收 声明一个计时器变量 private System.Threading.Timer _tcpResult;//tcp数据接收 声明一个计时器变量 private System.Threading.Timer _AccessResult;//定时读取Access数据库的数据 声明一个计时器变量 public static deviceAnalysis CreateInstance() { if (Instance == null) lock (LockHelper) { if (Instance == null) Instance = new deviceAnalysis(); } return Instance; } deviceAnalysis() { _tResult = new System.Threading.Timer(obj => TResultTick(), null, -1, 5000);//调用方法TResultTick 作为定时执行的方法 处于暂停状态 _tcpResult = new System.Threading.Timer(obj => tcpResultTick(), null, -1, 10);//调用方法TResultTick 作为定时执行的方法 处于暂停状态 _AccessResult = new System.Threading.Timer(obj => accessResultTick(), null, -1, 10000);//调用方法TResultTick 作为定时执行的方法 处于暂停状态 } //赖浩1 /// /// 查找某个字符小串在 字符大串中出现的位置数组 /// /// /// /// int[] strCount(string keyWords, string stringStr) { List posList = new List(); for (int i = 0; (i + keyWords.Length) < stringStr.Length; i++) { string val1 = stringStr.Substring(i, keyWords.Length); if (val1 == keyWords) posList.Add(i); } return posList.ToArray(); } /// /// 数据处理 /// /// /// public string deviceAnalysisOption(string deviceDataStr) { //MessageBox.Show(deviceDataStr); string rerultJson = string.Empty; if (apiOptions.CurrentDevice == "HSYH-II")//华晟源尿常规型号:H-II { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); for (int i = 0; i < resulteArray.Length; i += 16) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 16 > resulteArray.Length) break; string[] spArray = resulteArray[i + 1].Trim().Split(' '); string sampleNo1 = spArray[0].Trim().Replace("NO", "").TrimStart('0'); //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "LEU";//项目代号 erm.itemValue = resulteArray[i + 4].Replace("LEU", "").Replace("cells/uL", "").Trim().Split(' ')[0].Trim();//项目结果 erm.itemUnit = "cells/uL"; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "NIT";//项目代号 erm1.itemValue = resulteArray[i + 5].Replace("NIT", "").Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "URO";//项目代号 erm2.itemValue = resulteArray[i + 6].Replace("URO", "").Replace("umol/L", "").Trim().Split(' ')[0].Trim();//项目结果 erm2.itemUnit = "umol/L"; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "PRO";//项目代号 erm3.itemValue = resulteArray[i + 7].Replace("PRO", "").Replace("g/L", "").Trim().Split(' ')[0].Trim();//项目结果 erm3.itemUnit = "g/L"; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "PH";//项目代号 erm4.itemValue = resulteArray[i + 8].Replace("PH", "").Trim();//项目结果 erm4.itemUnit = ""; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "BLD";//项目代号 erm5.itemValue = resulteArray[i + 9].Replace("BLD", "").Replace("cells/uL", "").Trim().Split(' ')[0].Trim();//项目结果 erm5.itemUnit = "cells/uL"; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "SG";//项目代号 erm6.itemValue = resulteArray[i + 10].Replace("SG", "").Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "KET";//项目代号 erm7.itemValue = resulteArray[i + 11].Replace("KET", "").Replace("mmol/L", "").Trim().Split(' ')[0].Trim();//项目结果 erm7.itemUnit = "mmol/L"; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "BIL";//项目代号 erm8.itemValue = resulteArray[i + 12].Replace("BIL", "").Replace("umol/L", "").Trim().Split(' ')[0].Trim();//项目结果 erm8.itemUnit = "umol/L"; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "GLU";//项目代号 erm9.itemValue = resulteArray[i + 13].Replace("GLU", "").Replace("mmol/L", "").Trim().Split(' ')[0].Trim();//项目结果 erm9.itemUnit = "mmol/L"; ermList.Add(erm9); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "VC";//项目代号 erm10.itemValue = resulteArray[i + 14].Replace("VC", "").Replace("mmol/L", "").Trim().Split(' ')[0].Trim();//项目结果 erm10.itemUnit = "mmol/L"; ermList.Add(erm10); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "BT-200")//盛世东唐BT-200尿常规 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); // File.WriteAllText("BT-200.TXT", deviceDataStr); for (int i = 0; i < resulteArray.Length; i += 15) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 15 > resulteArray.Length) break; //string[] spArray = resulteArray[i + 1].Trim().Split(' '); string sampleNo1 = resulteArray[2].Trim().Replace("Seq:", "").TrimStart('0'); //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "LEU";//项目代号 erm.itemValue = resulteArray[i + 3].Replace("LEU", "").Replace("Neg", "").Trim().Split(' ')[0].Trim();//项目结果 erm.itemUnit = ""; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "NIT";//项目代号 erm1.itemValue = resulteArray[i + 4].Replace("NIT", "").Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "URO";//项目代号 erm2.itemValue = resulteArray[i + 5].Replace("URO", "").Replace("umol/L", "").Trim().Split(' ')[0].Trim();//项目结果 erm2.itemUnit = "umol/L"; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "PRO";//项目代号 erm3.itemValue = resulteArray[i + 6].Replace("PRO", "").Replace("Neg", "").Trim().Split(' ')[0].Trim();//项目结果 erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "PH";//项目代号 erm4.itemValue = resulteArray[i + 7].Replace("PH", "").Trim();//项目结果 erm4.itemUnit = ""; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "BLD";//项目代号 erm5.itemValue = resulteArray[i + 8].Replace("BLD", "").Replace("Neg", "").Trim().Split(' ')[0].Trim();//项目结果 erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "SG";//项目代号 erm6.itemValue = resulteArray[i + 9].Replace("SG", "").Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "VC";//项目代号 erm10.itemValue = resulteArray[i + 10].Replace("VC", "").Replace("Neg", "").Trim().Split(' ')[0].Trim();//项目结果 erm10.itemUnit = ""; ermList.Add(erm10); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "KET";//项目代号 erm7.itemValue = resulteArray[i + 11].Replace("KET", "").Replace("Neg", "").Trim().Split(' ')[0].Trim();//项目结果 erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "BIL";//项目代号 erm8.itemValue = resulteArray[i + 12].Replace("BIL", "").Replace("Neg", "").Trim().Split(' ')[0].Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "GLU";//项目代号 erm9.itemValue = resulteArray[i + 13].Replace("GLU", "").Replace("Neg", "").Trim().Split(' ')[0].Trim();//项目结果 erm9.itemUnit = "mmol/L"; ermList.Add(erm9); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "URIT-5181")//优利特血常规 5181 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[31] { "WBC", "LYM%", "MON%", "NEU%", "EOS%", "BASO%", "LYM#", "MON#", "NEU#", "EOS#", "BASO#", "ALY%", "ALY#", "LIC%", "LIC#", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW_CV", "RDW_SD", "PLT", "MPV", "PDW", "PCT", "P_LCR", "P_LCC", "NRBC%", "NRBC#" }; //string[] resulteArray = deviceDataStr.Split('\n'); deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = itemArray[i] + "||"; sampleNo1 = deviceDataStr.Substring(deviceDataStr.IndexOf("|URIT^URIT-5160|||") - 7, 7).TrimStart('0'); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiItemValue(itemStr, deviceDataStr);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } //把血常规的图也传上去 List eipmList = new List(); int[] array1 = strCount("^Base64^", deviceDataStr); int[] array2 = strCount("||||||F||||||", deviceDataStr); for (int i = 0; i < array2.Length; i++) { string base64Str = deviceDataStr.Substring(array1[i] + 8, array2[i] - array1[i] - 8); examImageParaModel EIPM1 = new examImageParaModel(); EIPM1.machineCode = MachineCode; EIPM1.machineID = MachineID; EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); EIPM1.sampleNo = sampleNo1; EIPM1.img = "data:image/jpeg;base64," + base64Str; eipmList.Add(EIPM1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (eipmList.Count > 0) { baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List //if (bmm2.code == 200) // dataOutPutShow("图像提交成功:" + jsonStr, null); //else // dataOutPutShow("图像提交失败:" + jsonStr, null); } if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "DF55")//帝迈血常规DF55 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[27] { "WBC", "NEU%", "LYM%", "MON%", "EOS%", "BAS%", "NEU#", "LYM#", "MON#", "EOS#", "BAS#", "*ALY%", "*LIC#", "*LIC%", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW-SD", "PLT", "MPV", "PDW", "PCT", "*ALY#", "RDW-CV" }; //string[] resulteArray = deviceDataStr.Split('\n'); deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; if (itemArray[i] == "*LIC#" || itemArray[i] == "*LIC%" || itemArray[i] == "PCT") itemStr = itemArray[i] + "^99MRC||"; else itemStr = itemArray[i] + "^LN||"; string val1 = jiexiVal(deviceDataStr.IndexOf("PID|"), "PID|", deviceDataStr).ToString(); sampleNo1 = val1; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i]; //项目代号 erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } string jsonStr12 = JsonConvert.SerializeObject(ermList); //把血常规的图也传上去 List eipmList = new List(); int[] array1 = strCount("^Base64^", deviceDataStr); string keyStr = "||||||F";//结束符 List imgBase64StrList = jiexiBase64(array1, keyStr, deviceDataStr);//解析出数据中的图片base64 //int[] array2 = strCount("||||||F||||||", deviceDataStr); for (int i = 0; i < imgBase64StrList.Count; i++) { string base64Str = imgBase64StrList[i]; examImageParaModel EIPM1 = new examImageParaModel(); EIPM1.machineCode = MachineCode; EIPM1.machineID = MachineID; EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); EIPM1.sampleNo = sampleNo1; EIPM1.img = "data:image/jpeg;base64," + base64Str; eipmList.Add(EIPM1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (eipmList.Count > 0) { baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List //if (bmm2.code == 200) // dataOutPutShow("图像提交成功:" + jsonStr, null); //else // dataOutPutShow("图像提交失败:" + jsonStr, null); } if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "TCPTEST")//tcp数据接收测试 数据不做任何处理 { } if (apiOptions.CurrentDevice == "CS-480")//迪瑞全自动生化分析仪 CS-480 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[10] { "ALT", "AST", "TBIL", "UREA", "CRE-E", "GLU", "TC", "TG", "HDL-C", "LDL-C" }; //deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string[] valArray = deviceDataStr.Split('\n'); string sampleNo1 = string.Empty;//样本号 for (int A = 0; A < valArray.Length; A++) { if (valArray[A].Contains("|480^480|")) { // int index3 = jiexisampleNo(valArray[A].IndexOf("|480^480|"), valArray[A]); sampleNo1 = jiexisampleNo(valArray[A].IndexOf("|480^480|"), valArray[A]).ToString(); // File.WriteAllText("test1.txt","哈哈哈 " + index3.ToString() + " " + valArray[A] + " 原样字符串:" + deviceDataStr); // MessageBox.Show("哈哈哈 "+index3.ToString()+" "+ valArray[A]+" 原样字符串:"+ deviceDataStr); } for (int i = 0; i < itemArray.Length; i++) { if (valArray[A].Contains(itemArray[i])) { string itemStr = itemArray[i] + "^1|"; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiItemValue(itemStr, valArray[A]);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } } } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "SL300C")//Senlo生化SL300C { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[20] { "ALT", "AST", "AST/ALT", "ALP", "GGT", "TBIL", "DBIL", "IBIL", "TP", "ALB", "GLB", "A/G", "Urea", "CREA", "UA", "GLU", "TCHO", "TG", "HDL-C", "LDL-C" }; //deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string[] valArray = deviceDataStr.Split('\n'); string sampleNo1 = string.Empty;//样本号 for (int A = 0; A < valArray.Length; A++) { if (valArray[A].Contains("OBR||")) { // int index3 = jiexisampleNo(valArray[A].IndexOf("|480^480|"), valArray[A]); sampleNo1 = jiexiVal(valArray[A].IndexOf("OBR||"), "OBR||", valArray[A]).ToString(); // File.WriteAllText("test1.txt","哈哈哈 " + index3.ToString() + " " + valArray[A] + " 原样字符串:" + deviceDataStr); // MessageBox.Show("哈哈哈 "+index3.ToString()+" "+ valArray[A]+" 原样字符串:"+ deviceDataStr); } for (int i = 0; i < itemArray.Length; i++) { if (valArray[A].Contains(itemArray[i])) { string itemStr = itemArray[i] + "^1|"; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiItemValue(itemStr, valArray[A]);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } } } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "BA600")//尿常规 GeniusBA600 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); // File.WriteAllText("BT-200.TXT", deviceDataStr); for (int i = 0; i < resulteArray.Length; i += 16) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 16 > resulteArray.Length) break; //string[] spArray = resulteArray[i + 1].Trim().Split(' '); string sampleNo1 = resulteArray[2].Trim().Replace("0", " ").Trim(); //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "VC";//项目代号 erm.itemValue = resulteArray[i + 4].Replace("VC", "").Trim().Split(' ')[0].Trim();//项目结果 erm.itemUnit = ""; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "URO";//项目代号 erm1.itemValue = resulteArray[i + 5].Replace("URO", "").Trim().Split(' ')[0].Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "BIL";//项目代号 erm2.itemValue = resulteArray[i + 6].Replace("BIL", "").Trim().Trim().Split(' ')[0].Trim();//项目结果 erm2.itemUnit = ""; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "KET";//项目代号 erm3.itemValue = resulteArray[i + 7].Replace("KET", "").Trim().Split(' ')[0].Trim();//项目结果 erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "BLD";//项目代号 erm4.itemValue = resulteArray[i + 8].Replace("BLD", "").Replace("Cell/uL", "").Trim();//项目结果 erm4.itemUnit = "Cell/uL"; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "PRO";//项目代号 erm5.itemValue = resulteArray[i + 9].Replace("PRO", "").Trim().Split(' ')[0].Trim();//项目结果 erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "NIT";//项目代号 erm6.itemValue = resulteArray[i + 10].Replace("NIT", "").Trim().Split(' ')[0].Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "LEU";//项目代号 erm10.itemValue = resulteArray[i + 11].Replace("LEU", "").Trim().Split(' ')[0].Trim();//项目结果 erm10.itemUnit = ""; ermList.Add(erm10); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "GLU";//项目代号 erm7.itemValue = resulteArray[i + 12].Replace("GLU", "").Trim().Split(' ')[0].Trim();//项目结果 erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "SG";//项目代号 erm8.itemValue = resulteArray[i + 13].Replace("SG", "").Trim().Split(' ')[0].Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "PH";//项目代号 erm9.itemValue = resulteArray[i + 14].Replace("PH", "").Trim().Split(' ')[0].Trim();//项目结果 erm9.itemUnit = ""; ermList.Add(erm9); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "BA600MY")//煤窑中心卫生院的尿常规 GeniusBA600 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); // File.WriteAllText("BT-200.TXT", deviceDataStr); for (int i = 0; i < resulteArray.Length; i += 16) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 16 > resulteArray.Length) break; //string[] spArray = resulteArray[i + 1].Trim().Split(' '); string sampleNo1 = resulteArray[2].TrimStart('0').Trim(); //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "VC";//项目代号 erm.itemValue = resulteArray[i + 4].Replace("VC", "").Trim().Split(' ')[0].Trim();//项目结果 erm.itemUnit = ""; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "URO";//项目代号 erm1.itemValue = resulteArray[i + 5].Replace("URO", "").Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "BIL";//项目代号 erm2.itemValue = resulteArray[i + 6].Replace("BIL", "").Trim().Trim();//项目结果 erm2.itemUnit = ""; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "KET";//项目代号 erm3.itemValue = resulteArray[i + 7].Replace("KET", "").Trim();//项目结果 erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "BLD";//项目代号 erm4.itemValue = resulteArray[i + 8].Replace("BLD", "").Replace("Cell/uL", "").Trim();//项目结果 erm4.itemUnit = "Cell/uL"; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "PRO";//项目代号 erm5.itemValue = resulteArray[i + 9].Replace("PRO", "").Trim();//项目结果 erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "NIT";//项目代号 erm6.itemValue = resulteArray[i + 10].Replace("NIT", "").Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "LEU";//项目代号 erm10.itemValue = resulteArray[i + 11].Replace("LEU", "").Trim();//项目结果 erm10.itemUnit = ""; ermList.Add(erm10); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "GLU";//项目代号 erm7.itemValue = resulteArray[i + 12].Replace("GLU", "").Trim();//项目结果 erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "SG";//项目代号 erm8.itemValue = resulteArray[i + 13].Replace("SG", "").Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "PH";//项目代号 erm9.itemValue = resulteArray[i + 14].Replace("PH", "").Trim();//项目结果 erm9.itemUnit = ""; ermList.Add(erm9); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "MC-600")//血常规MAC-600 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray1 = new string[20] { "WBC", "Lymph#", "Mid#", "Gran#", "Lymph%", "Mid%", "Gran%", "RBC", "HGB", "MCV", "MCH", "MCHC", "RDW-CV", "RDW-SD", "HCT", "PLT", "MPV", "PDW", "PCT", "P-LCR" }; string[] itemArray = new string[20] { "WBC", "LYMC", "MIDC", "GRNC", "LYMR", "MIDR", "GRNR", "RBC", "HGB", "MCV", "MCH", "MCHC", "RDW-CV", "RDW-SD", "HCT", "PLT", "MPV", "PDW", "PCT", "P-LCR" }; //string[] resulteArray = deviceDataStr.Split('\n'); // deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string[] valArray = deviceDataStr.Split('\n'); string sampleNo1 = string.Empty;//样本号 for (int A = 0; A < valArray.Length; A++) { if (valArray[A].Contains("

ID")) { sampleNo1 = jiexiVal(valArray[A].IndexOf("

ID"), "

ID", valArray[A]).ToString().TrimStart('0'); } for (int i = 0; i < itemArray.Length; i++) { string keyItem = "

" + itemArray[i]; if (valArray[A].Contains(keyItem)) { string itemStr = itemArray[i] + ""; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray1[i];//项目代号 这是屏幕上显示的代号 erm1.itemValue = valArray[A].Substring(valArray[A].IndexOf("") + 3, valArray[A].IndexOf("") - valArray[A].IndexOf("") - 3);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } } } string jsonStr12 = JsonConvert.SerializeObject(ermList); //把血常规的图也传上去 List eipmList = new List(); int[] array1 = strCount("^Base64^", deviceDataStr); string keyStr = "||||||F";//结束符 List imgBase64StrList = jiexiBase64(array1, keyStr, deviceDataStr);//解析出数据中的图片base64 //int[] array2 = strCount("||||||F||||||", deviceDataStr); for (int i = 0; i < imgBase64StrList.Count; i++) { string base64Str = imgBase64StrList[i]; examImageParaModel EIPM1 = new examImageParaModel(); EIPM1.machineCode = MachineCode; EIPM1.machineID = MachineID; EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); EIPM1.sampleNo = sampleNo1; EIPM1.img = "data:image/jpeg;base64," + base64Str; eipmList.Add(EIPM1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (eipmList.Count > 0) { baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List //if (bmm2.code == 200) // dataOutPutShow("图像提交成功:" + jsonStr, null); //else // dataOutPutShow("图像提交失败:" + jsonStr, null); } if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "CS-1300B")//迪瑞全自动生化分析仪 CS-1300B { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[16] { "ALT", "AST", "TBIL", "UREA", "CRE-E", "GLU", "TC", "TG", "HDL-C", "LDL-C", "TP", "ALB", "DBIL", "ALP", "GGT", "UA" }; //deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string[] valArray = deviceDataStr.Split('\n'); string sampleNo1 = string.Empty;//样本号 for (int A = 0; A < valArray.Length; A++) { if (valArray[A].Contains("|1200^1300B|")) { // int index3 = jiexisampleNo(valArray[A].IndexOf("|480^480|"), valArray[A]); sampleNo1 = jiexisampleNo(valArray[A].IndexOf("|1200^1300B|"), valArray[A]).ToString(); // File.WriteAllText("test1.txt","哈哈哈 " + index3.ToString() + " " + valArray[A] + " 原样字符串:" + deviceDataStr); // MessageBox.Show("哈哈哈 "+index3.ToString()+" "+ valArray[A]+" 原样字符串:"+ deviceDataStr); } for (int i = 0; i < itemArray.Length; i++) { if (valArray[A].Contains(itemArray[i])) { string itemStr = itemArray[i] + "^1|"; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiItemValue(itemStr, valArray[A]);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } } } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "URIT-1500")//优利特尿常规URIT-1500 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[11] { "VC", "WBC", "KET", "NIT", "URO", "BIL", "PRO", "GLU", "SG", "BLD", "pH" }; string[] resulteArray = deviceDataStr.Split('\n'); for (int i = 0; i < resulteArray.Length; i += 18) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 18 > resulteArray.Length) break; string[] spArray = resulteArray[i + 2].Trim().Split(' '); string sampleNo1 = spArray[0].Trim().Replace("NO.", "").TrimStart('0'); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "VC";//项目代号 erm.itemValue = resulteArray[i + 5].Substring(resulteArray[i + 5].IndexOf("VC") + 2, 6).Trim();//项目结果 erm.itemUnit = "mmol/L"; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "WBC";//项目代号 erm1.itemValue = resulteArray[i + 6].Substring(resulteArray[i + 6].IndexOf("WBC") + 3, 6).Trim();//项目结果 erm1.itemUnit = "CELL/uL"; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "KET";//项目代号 erm2.itemValue = resulteArray[i + 7].Substring(resulteArray[i + 7].IndexOf("KET") + 3, 6).Trim();//项目结果 erm2.itemUnit = "mmol/L"; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "NIT";//项目代号 erm3.itemValue = resulteArray[i + 8].Substring(resulteArray[i + 8].IndexOf("NIT") + 3, 6).Trim();//项目结果 erm3.itemUnit = "Neg"; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "URO";//项目代号 string[] sss = resulteArray[i + 9].Split(' '); erm4.itemValue = resulteArray[i + 9].Substring(resulteArray[i + 9].IndexOf("URO") + 3, 6).Trim();//项目结果 erm4.itemUnit = "Normal"; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "BIL";//项目代号 erm5.itemValue = resulteArray[i + 10].Substring(resulteArray[i + 10].IndexOf("BIL") + 3, 6).Trim();//项目结果 erm5.itemUnit = "umol/L"; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "PRO";//项目代号 erm6.itemValue = resulteArray[i + 11].Substring(resulteArray[i + 11].IndexOf("PRO") + 3, 6).Trim();//项目结果 erm6.itemUnit = "g/L"; ermList.Add(erm6); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "GLU";//项目代号 erm7.itemValue = resulteArray[i + 12].Substring(resulteArray[i + 12].IndexOf("GLU") + 3, 6).Trim();//项目结果 erm7.itemUnit = "mmol/L"; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "SG";//项目代号 erm8.itemValue = resulteArray[i + 13].Replace("SG", "").Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "BLD";//项目代号 erm9.itemValue = resulteArray[i + 14].Substring(resulteArray[i + 14].IndexOf("BLD") + 3, 6).Trim();//项目结果 erm9.itemUnit = "CELL/uL"; ermList.Add(erm9); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "pH";//项目代号 erm10.itemValue = resulteArray[i + 15].Replace("pH", "").Trim();//项目结果 erm10.itemUnit = ""; ermList.Add(erm10); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "URIT-5180")//优利特血常规 5180 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[31] { "WBC", "LYM%", "MON%", "NEU%", "EOS%", "BASO%", "LYM#", "MON#", "NEU#", "EOS#", "BASO#", "ALY%", "ALY#", "LIC%", "LIC#", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW_CV", "RDW_SD", "PLT", "MPV", "PDW", "PCT", "P_LCR", "P_LCC", "NRBC%", "NRBC#" }; //string[] resulteArray = deviceDataStr.Split('\n'); deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = itemArray[i] + "||"; sampleNo1 = deviceDataStr.Substring(deviceDataStr.IndexOf("|URIT^URIT-5160|||") - 7, 7).TrimStart('0'); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiItemValue(itemStr, deviceDataStr);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } ////把血常规的图也传上去 //List eipmList = new List(); //int[] array1 = strCount("^Base64^", deviceDataStr); //int[] array2 = strCount("||||||F||||||", deviceDataStr); //for (int i = 0; i < array2.Length; i++) //{ // string base64Str = deviceDataStr.Substring(array1[i] + 8, array2[i] - array1[i] - 8); // examImageParaModel EIPM1 = new examImageParaModel(); // EIPM1.machineCode = MachineCode; // EIPM1.machineID = MachineID; // EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // EIPM1.sampleNo = sampleNo1; // EIPM1.img = "data:image/jpeg;base64," + base64Str; // eipmList.Add(EIPM1); //} //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); //if (eipmList.Count > 0) //{ // baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List // //if (bmm2.code == 200) // // dataOutPutShow("图像提交成功:" + jsonStr, null); // //else // // dataOutPutShow("图像提交失败:" + jsonStr, null); //} if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "BS-430")//生化BS-430 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[10] { "Glu-G", "TG", "TC", "LDL-C", "HDL-C", "T-Bil-V", "ALT", "AST", "CREA-S", "UREA" }; string[] itemArrayC = new string[10] { "葡萄糖(葡萄糖氧化酶法)", "甘油三酯", "总胆固醇", "低密度脂蛋白胆固醇", "高密度脂蛋白胆固醇", "总胆红素(钒酸盐氧化法)", "丙氨酸氨基转移酶", "天门冬氨酸氨基转移酶", "肌酐(肌氨酸氧化酶法)", "尿素" }; deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); //string[] valArray = deviceDataStr.Split(','); string[] valArray = deviceDataStr.Split('|'); string sampleNo1 = valArray[54];//样本号 for (int i = 0; i < itemArrayC.Length; i++) { string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 // MessageBox.Show(deviceDataStr+"\r\n\r\n :"+ggg[5]); string itemStr = itemArrayC[i] + "|"; int index1 = deviceDataStr.IndexOf(itemStr); string valueS = jiexiVal(index1, itemStr, deviceDataStr); double roundedValue = Math.Round(double.Parse(valueS), 2); erm1.itemValue = roundedValue.ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "DF55-1")//帝迈血常规DF55-1 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[27] { "WBC", "NEU%", "LYM%", "MON%", "EOS%", "BAS%", "NEU#", "LYM#", "MON#", "EOS#", "BAS#", "*ALY%", "*LIC#", "*LIC%", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW-SD", "PLT", "MPV", "PDW", "PCT", "*ALY#", "RDW-CV" }; deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; if (itemArray[i] == "*LIC#" || itemArray[i] == "*LIC%" || itemArray[i] == "PCT") itemStr = itemArray[i] + "^99MRC||"; else itemStr = itemArray[i] + "^LN||"; string val1 = jiexiVal(deviceDataStr.IndexOf("OBR|1||"), "OBR|1||", deviceDataStr).ToString(); sampleNo1 = val1; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i]; //项目代号 erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } string jsonStr12 = JsonConvert.SerializeObject(ermList); //把血常规的图也传上去 List eipmList = new List(); int[] array1 = strCount("^Base64^", deviceDataStr); string keyStr = "||||||F";//结束符 List imgBase64StrList = jiexiBase64(array1, keyStr, deviceDataStr);//解析出数据中的图片base64 //int[] array2 = strCount("||||||F||||||", deviceDataStr); for (int i = 0; i < imgBase64StrList.Count; i++) { string base64Str = imgBase64StrList[i]; examImageParaModel EIPM1 = new examImageParaModel(); EIPM1.machineCode = MachineCode; EIPM1.machineID = MachineID; EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); EIPM1.sampleNo = sampleNo1; EIPM1.img = "data:image/jpeg;base64," + base64Str; eipmList.Add(EIPM1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (eipmList.Count > 0) { baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List //if (bmm2.code == 200) // dataOutPutShow("图像提交成功:" + jsonStr, null); //else // dataOutPutShow("图像提交失败:" + jsonStr, null); } if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "URIT-1600")//优利特URIT-1600 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[12] { "Vc", "WBC", "KET", "NIT", "URO", "BIL", "PRO", "GLU", "SG", "BLD", "pH", "Color" }; // deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); //string[] valArray = deviceDataStr.Split(','); string[] valArray = deviceDataStr.Split('\r'); string sampleNo1 = string.Empty; for (int A = 0; A < valArray.Length; A++) { if (valArray[A].Contains("OBR")) { string[] valStrArray = valArray[A].Split('|'); sampleNo1 = valStrArray[3].TrimStart('0'); } for (int i = 0; i < itemArray.Length; i++) { if (valArray[A].Contains(itemArray[i])) { string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 string[] reArray = valArray[A].Replace("||", "|").Split('|'); erm1.itemValue = reArray[4].Split('^')[0];//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } } } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "DH56")//帝迈血常规DH56 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[29] { "WBC", "NEU%", "LYM%", "MON%", "EOS%", "BAS%", "NEU#", "LYM#", "MON#", "EOS#", "BAS#", "*ALY#", "*ALY%", "*LIC#", "*LIC%", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW-CV", "RDW-SD", "PLT", "MPV", "PDW", "PCT", "P-LCR", "P-LCC" }; deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; if (itemArray[i] == "*LIC#" || itemArray[i] == "*LIC%" || itemArray[i] == "PCT") itemStr = itemArray[i] + "^99MRC||"; else itemStr = itemArray[i] + "^LN||"; string val1 = jiexiVal(deviceDataStr.IndexOf("OBR|1||"), "OBR|1||", deviceDataStr).ToString(); sampleNo1 = val1; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i]; //项目代号 erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } // string jsonStr12 = JsonConvert.SerializeObject(ermList); ////把血常规的图也传上去 //List eipmList = new List(); //int[] array1 = strCount("^Base64^", deviceDataStr); //string keyStr = "||||||F";//结束符 //List imgBase64StrList = jiexiBase64(array1, keyStr, deviceDataStr);//解析出数据中的图片base64 ////int[] array2 = strCount("||||||F||||||", deviceDataStr); //for (int i = 0; i < imgBase64StrList.Count; i++) //{ // string base64Str = imgBase64StrList[i]; // examImageParaModel EIPM1 = new examImageParaModel(); // EIPM1.machineCode = MachineCode; // EIPM1.machineID = MachineID; // EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // EIPM1.sampleNo = sampleNo1; // EIPM1.img = "data:image/jpeg;base64," + base64Str; // eipmList.Add(EIPM1); //} //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); //if (eipmList.Count > 0) //{ // baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List // //if (bmm2.code == 200) // // dataOutPutShow("图像提交成功:" + jsonStr, null); // //else // // dataOutPutShow("图像提交失败:" + jsonStr, null); //} if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "URIT-5380")//优利特血常规URIT-5380 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[25] { "WBC", "LYM%", "MON%", "NEU%", "EOS%", "BASO%", "LYM#", "MON#", "NEU#", "EOS#", "BASO#", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW_SD", "RDW_CV", "PLT", "MPV", "PDW", "PCT", "P_LCR", "P_LCC" }; //string[] resulteArray = deviceDataStr.Split('\n'); deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = itemArray[i] + "||"; //sampleNo1 = deviceDataStr.Substring(deviceDataStr.IndexOf("||Urit^UT5380||||") - 7, 7).TrimStart('0'); sampleNo1 = jiexisampleNo(deviceDataStr.IndexOf("||Urit^UT5380||||"), deviceDataStr).ToString(); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiItemValue(itemStr, deviceDataStr);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } //把血常规的图也传上去 List eipmList = new List(); int[] array1 = strCount("^Base64^", deviceDataStr); int[] array2 = strCount("||||||F||||||", deviceDataStr); for (int i = 0; i < array2.Length; i++) { string base64Str = deviceDataStr.Substring(array1[i] + 8, array2[i] - array1[i] - 8); examImageParaModel EIPM1 = new examImageParaModel(); EIPM1.machineCode = MachineCode; EIPM1.machineID = MachineID; EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); EIPM1.sampleNo = sampleNo1; EIPM1.img = "data:image/jpeg;base64," + base64Str; eipmList.Add(EIPM1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (eipmList.Count > 0) { baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List //if (bmm2.code == 200) // dataOutPutShow("图像提交成功:" + jsonStr, null); //else // dataOutPutShow("图像提交失败:" + jsonStr, null); } if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "U500")//尿常规U500 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); // File.WriteAllText("BT-200.TXT", deviceDataStr); for (int i = 0; i < resulteArray.Length; i += 20) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 20 > resulteArray.Length) break; string[] spArray = resulteArray[3].Trim().Split(' '); string sampleNo1 = resulteArray[3].Trim().Split(' ')[2].Replace("-", "0").TrimStart('0'); //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "LEU";//项目代号 erm.itemValue = resulteArray[i + 4].Substring(4, 15).Trim();//项目结果//项目结果 erm.itemUnit = ""; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "URO";//项目代号 erm1.itemValue = resulteArray[i + 5].Substring(4, 11).Trim();//项目结果 erm1.itemUnit = "mg/dL"; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "ALB";//项目代号 erm2.itemValue = resulteArray[i + 6].Substring(4, 13).Trim();//项目结果 erm2.itemUnit = "mg/L"; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "PRO";//项目代号 erm3.itemValue = resulteArray[i + 7].Substring(4, 15).Trim();//项目结果 erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "BIL";//项目代号 erm4.itemValue = resulteArray[i + 8].Substring(5, 13).Trim();//项目结果 erm4.itemUnit = ""; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "GLU";//项目代号 erm5.itemValue = resulteArray[i + 9].Substring(4, 15).Trim();//项目结果 erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "ASC";//项目代号 erm6.itemValue = resulteArray[i + 10].Substring(5, 13).Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "SG";//项目代号 erm10.itemValue = resulteArray[i + 11].Replace("SG", "").Trim();//项目结果 erm10.itemUnit = ""; ermList.Add(erm10); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "KET";//项目代号 erm7.itemValue = resulteArray[i + 12].Substring(4, 13).Trim();//项目结果 erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "NIT";//项目代号 erm8.itemValue = resulteArray[i + 13].Substring(4, 14).Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "CRE";//项目代号 erm9.itemValue = resulteArray[i + 14].Substring(4, 12).Trim();//项目结果 erm9.itemUnit = "mmol/L"; ermList.Add(erm9); examResultMode erm11 = new examResultMode(); erm11.machineCode = MachineCode; erm11.machineID = MachineID; erm11.sampleNo = sampleNo1; erm11.testDate = testDate1; erm11.chanelNo = "PH";//项目代号 erm11.itemValue = resulteArray[i + 15].Replace("PH", "").Trim();//项目结果 erm11.itemUnit = "mmol/L"; ermList.Add(erm11); examResultMode erm12 = new examResultMode(); erm12.machineCode = MachineCode; erm12.machineID = MachineID; erm12.sampleNo = sampleNo1; erm12.testDate = testDate1; erm12.chanelNo = "BLO";//项目代号 erm12.itemValue = resulteArray[i + 16].Substring(4, 15).Trim();//项目结果 erm12.itemUnit = "mmol/L"; ermList.Add(erm12); examResultMode erm13 = new examResultMode(); erm13.machineCode = MachineCode; erm13.machineID = MachineID; erm13.sampleNo = sampleNo1; erm13.testDate = testDate1; erm13.chanelNo = "CA";//项目代号 erm13.itemValue = resulteArray[i + 17].Substring(4, 12).Trim();//项目结果 erm13.itemUnit = "mmol/L"; ermList.Add(erm13); examResultMode erm14 = new examResultMode(); erm14.machineCode = MachineCode; erm14.machineID = MachineID; erm14.sampleNo = sampleNo1; erm14.testDate = testDate1; erm14.chanelNo = "P:C";//项目代号 erm14.itemValue = resulteArray[i + 18].Substring(4, 8).Trim();//项目结果 erm14.itemUnit = "mmol/L"; ermList.Add(erm14); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "BC-5130")//BC-5130 { try { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[26] { "WBC", "NEU%", "LYM%", "MON%", "EOS%", "BAS%", "NEU#", "LYM#", "MON#", "EOS#", "BAS#", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW-SD", "PLT", "MPV", "PDW", "PCT", "RDW-CV", "PLCC", "PLCR", "Lymphocytosis" }; //string[] resulteArray = deviceDataStr.Split('\n'); deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; if (itemArray[i] == "*LIC#" || itemArray[i] == "*LIC%" || itemArray[i] == "PCT" || itemArray[i] == "PLCC" || itemArray[i] == "PLCR" || itemArray[i] == "Lymphocytosis") itemStr = itemArray[i] + "^99MRC||"; else itemStr = itemArray[i] + "^LN||"; string val1 = deviceDataStr.Substring(deviceDataStr.IndexOf("OBR"), 30); sampleNo1 = val1.Split('|')[3]; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i]; //项目代号 if (itemArray[i] != "Lymphocytosis") erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString();//项目结果 else erm1.itemValue = jiexiItemValue11(itemStr, deviceDataStr); erm1.itemUnit = ""; ermList.Add(erm1); } string jsonStr12 = JsonConvert.SerializeObject(ermList); //把血常规的图也传上去 List eipmList = new List(); int[] array1 = strCount("^Base64^", deviceDataStr); string keyStr = "||||||F";//结束符 List imgBase64StrList = jiexiBase64(array1, keyStr, deviceDataStr);//解析出数据中的图片base64 //int[] array2 = strCount("||||||F||||||", deviceDataStr); for (int i = 0; i < imgBase64StrList.Count; i++) { string base64Str = imgBase64StrList[i]; examImageParaModel EIPM1 = new examImageParaModel(); EIPM1.machineCode = MachineCode; EIPM1.machineID = MachineID; EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); EIPM1.sampleNo = sampleNo1; EIPM1.img = "data:image/jpeg;base64," + base64Str; eipmList.Add(EIPM1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (eipmList.Count > 0) { baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List //if (bmm2.code == 200) // dataOutPutShow("图像提交成功:" + jsonStr, null); //else // dataOutPutShow("图像提交失败:" + jsonStr, null); } if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } catch (Exception ex) { /*MessageBox.Show(ex.ToString()); */} } if (apiOptions.CurrentDevice == "SD1")//斯玛特SD1 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[22] { "ALT", "AST", "ALP", "GGT", "IBIL", "TP", "ALB", "Crea", "UA", "GLU", "TG", "HDL", "LDL", "TB|TB", "TC", "DB", "CHE", "BUN|BUN", "TBA", "A/G", "BUN/CREA", "GLOB" }; deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); deviceDataStr = deviceDataStr.Replace("OBX", "。"); string[] valArray = deviceDataStr.Split('。'); string sampleNo1 = string.Empty;//样本号 for (int A = 0; A < valArray.Length; A++) { if (valArray[A].Contains("OBR|")) { int index1 = valArray[A].Substring(valArray[A].IndexOf("OBR|"), 20).IndexOf("||") + 2; sampleNo1 = jiexisampleNo8(index1, valArray[A].Substring(valArray[A].IndexOf("OBR|"), 18)).ToString(); } for (int i = 0; i < itemArray.Length; i++) { if (valArray[A].Contains(itemArray[i])) { string itemStr = itemArray[i]; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiItemValueLast(itemStr, valArray[A]);//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } } } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "DF55-2")//帝迈血常规DF55-2 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[27] { "WBC", "NEU%", "LYM%", "MON%", "EOS%", "BAS%", "NEU#", "LYM#", "MON#", "EOS#", "BAS#", "*ALY%", "*LIC#", "*LIC%", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW-SD", "PLT", "MPV", "PDW", "PCT", "*ALY#", "RDW-CV" }; //string[] resulteArray = deviceDataStr.Split('\n'); deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; if (itemArray[i] == "*LIC#" || itemArray[i] == "*LIC%" || itemArray[i] == "PCT") itemStr = itemArray[i] + "^99MRC||"; else itemStr = itemArray[i] + "^LN||"; int index1 = deviceDataStr.Substring(deviceDataStr.IndexOf("OBR|"), 20).IndexOf("||") + 2; sampleNo1 = jiexisampleNo8(index1, deviceDataStr.Substring(deviceDataStr.IndexOf("OBR|"), 18)).ToString(); //string val1 = jiexiVal(deviceDataStr.IndexOf("PID|"), "PID|", deviceDataStr).ToString(); //sampleNo1 = val1; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i]; //项目代号 erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } string jsonStr12 = JsonConvert.SerializeObject(ermList); //把血常规的图也传上去 List eipmList = new List(); int[] array1 = strCount("^Base64^", deviceDataStr); string keyStr = "||||||F";//结束符 List imgBase64StrList = jiexiBase64(array1, keyStr, deviceDataStr);//解析出数据中的图片base64 //int[] array2 = strCount("||||||F||||||", deviceDataStr); for (int i = 0; i < imgBase64StrList.Count; i++) { string base64Str = imgBase64StrList[i]; examImageParaModel EIPM1 = new examImageParaModel(); EIPM1.machineCode = MachineCode; EIPM1.machineID = MachineID; EIPM1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); EIPM1.sampleNo = sampleNo1; EIPM1.img = "data:image/jpeg;base64," + base64Str; eipmList.Add(EIPM1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (eipmList.Count > 0) { baseMsgModel bmm2 = apiOptions.CreateInstance().uploadExamImage(eipmList);//传图像List //if (bmm2.code == 200) // dataOutPutShow("图像提交成功:" + jsonStr, null); //else // dataOutPutShow("图像提交失败:" + jsonStr, null); } if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "MA-4210")//华晟源尿常规型号:H-II { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); for (int i = 0; i < resulteArray.Length; i += 17) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 17 > resulteArray.Length) break; string[] spArray = resulteArray[i + 1].Trim().Split(' '); string sampleNo1 = spArray[0].Replace("No.", "").TrimStart('0'); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "GLU";//项目代号 erm.itemValue = resulteArray[i + 4].Substring(4, 6).Trim();//项目结果 erm.itemUnit = "cells/uL"; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "URO";//项目代号 erm1.itemValue = resulteArray[i + 5].Substring(4, 6).Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "BIL";//项目代号 erm2.itemValue = resulteArray[i + 6].Substring(4, 6).Trim();//项目结果 erm2.itemUnit = ""; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "KET";//项目代号 erm3.itemValue = resulteArray[i + 7].Substring(4, 6).Trim();//项目结果 erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "SG";//项目代号 erm4.itemValue = resulteArray[i + 8].Substring(3, 16).Trim();//项目结果 erm4.itemUnit = ""; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "BLD";//项目代号 erm5.itemValue = resulteArray[i + 9].Substring(4, 6).Trim();//项目结果 erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "PH";//项目代号 erm6.itemValue = resulteArray[i + 10].Substring(3, 16).Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "PRO";//项目代号 erm7.itemValue = resulteArray[i + 11].Substring(4, 6).Trim();//项目结果 erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "NIT";//项目代号 erm8.itemValue = resulteArray[i + 12].Substring(4, 6).Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "LEU";//项目代号 erm9.itemValue = resulteArray[i + 13].Substring(4, 6).Trim();//项目结果 erm9.itemUnit = "mmol/L"; ermList.Add(erm9); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "VC";//项目代号 erm10.itemValue = resulteArray[i + 14].Substring(3, 6).Trim();//项目结果 erm10.itemUnit = "mmol/L"; ermList.Add(erm10); examResultMode erm11 = new examResultMode(); erm11.machineCode = MachineCode; erm11.machineID = MachineID; erm11.sampleNo = sampleNo1; erm11.testDate = testDate1; erm11.chanelNo = "Color";//项目代号 erm11.itemValue = resulteArray[i + 15].Replace("Color:", "").Trim();//项目结果 erm11.itemUnit = "mmol/L"; ermList.Add(erm11); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "U120")//尿常规U120 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); // File.WriteAllText("BT-200.TXT", deviceDataStr); for (int i = 0; i < resulteArray.Length; i += 15) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 15 > resulteArray.Length) break; string[] spArray = resulteArray[2].Trim().Split(' '); string sampleNo1 = spArray[2].Substring(0, 1).TrimStart('0'); // string sampleNo1 = resulteArray[2].Trim().Split(' ')[1]; .Replace("-", "0").TrimStart('0') //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "LEU";//项目代号 erm.itemValue = resulteArray[i + 3].Substring(4, 15).Trim();//项目结果//项目结果 erm.itemUnit = ""; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "NIT";//项目代号 erm1.itemValue = resulteArray[i + 4].Substring(4, 11).Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "URO";//项目代号 erm2.itemValue = resulteArray[i + 5].Substring(4, 13).Trim();//项目结果 erm2.itemUnit = ""; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "PRO";//项目代号 erm3.itemValue = resulteArray[i + 6].Substring(5, 15).Trim();//项目结果 erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "pH";//项目代号 erm4.itemValue = resulteArray[i + 7].Substring(4, 12).Trim();//项目结果 erm4.itemUnit = ""; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "BLO";//项目代号 erm5.itemValue = resulteArray[i + 8].Substring(4, 15).Trim();//项目结果 erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "SG";//项目代号 erm6.itemValue = resulteArray[i + 9].Substring(4, 13).Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "KET";//项目代号 erm10.itemValue = resulteArray[i + 10].Substring(4, 15).Trim();//项目结果 erm10.itemUnit = ""; ermList.Add(erm10); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "BIL";//项目代号 erm7.itemValue = resulteArray[i + 11].Substring(4, 13).Trim();//项目结果 erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "GLU";//项目代号 erm8.itemValue = resulteArray[i + 12].Substring(4, 14).Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "ASC";//项目代号 erm9.itemValue = resulteArray[i + 13].Substring(4, 12).Trim();//项目结果 erm9.itemUnit = ""; ermList.Add(erm9); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "BS-330E")//BS-330E 他是一次性发一条样本 但一个样本号有多个项目 挨个发其中的项目 生化 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[10] { "ALT", "AST", "T-Bil", "UA", "UREA", "CREA-S", "TC", "TG", "HDL-C", "LDL-C" }; //string[] resulteArray = deviceDataStr.Split('\n'); //deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string[] valArray = deviceDataStr.Split(''); string sampleNo1 = string.Empty;//样本号 string itemStr = string.Empty; string itemValue = string.Empty; for (int i = 0; i < itemArray.Length; i++) { for (int j = 0; j < valArray.Length-1; j++) { if (itemArray[i] == valArray[j].Substring(valArray[j].IndexOf("OBX|1|NM|")).Split('|')[4]) { sampleNo1 = valArray[j].Substring(valArray[j].IndexOf("OBR|1||") + "OBR|1||".Length, valArray[j].IndexOf("|Mindray^BS-330E|") - valArray[j].IndexOf("OBR|1||") - "OBR|1||".Length).Trim(); itemStr = valArray[j].Substring(valArray[j].IndexOf("OBX|1|NM|")).Split('|')[4]; itemValue = valArray[j].Substring(valArray[j].IndexOf("OBX|1|NM|")).Split('|')[5]; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemStr;//项目代号 erm1.itemValue = itemValue; erm1.itemUnit = ""; ermList.Add(erm1); break; } } } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据和图像提交成功:" + jsonStr, null); else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "BC-5120")//BC-5120 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); //string[] resulteArray = deviceDataStr.Split('\n'); string sampleNo1 = string.Empty;//样本号 List ermList = new List(); string[] itemArray = new string[] { "WBC", "BAS#", "BAS%", "NEU#", "NEU%", "EOS#", "EOS%", "LYM#", "LYM%", "MON#", "MON%", "RBC", "HGB", "MCV", "MCH", "MCHC", "RDW-CV", "RDW-SD", "HCT", "PLT", "MPV", "PDW", "PCT", "PLCC", "PLCR" }; string[] itemArray_2 = new string[] { "PCT", "PLCC", "PLCR" }; for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; if (itemArray_2.Contains(itemArray[i])) itemStr = itemArray[i] + "^99MRC||"; else itemStr = itemArray[i] + "^LN||"; string val1 = deviceDataStr.Substring(deviceDataStr.IndexOf("OBR"), 30); sampleNo1 = val1.Split('|')[3]; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 //项目结果 erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString(); erm1.itemUnit = ""; ermList.Add(erm1); } string jsonStr = JsonConvert.SerializeObject(ermList); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); //string[] resulteArray = deviceDataStr.Split('\n'); string sampleNo1 = string.Empty;//样本号 List ermList = new List(); string[] itemArray = new string[] { "A/G", "ALT/AST", "GLB", "ALT", "AST", "TP", "ALB", "TB", "UREA", "Cr", "UA", "TG", "CHOL", "HDL_C", "LDL_C" }; for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; itemStr = @"|" + itemArray[i] + @"|"; string val1 = deviceDataStr.Substring(deviceDataStr.IndexOf("OBR"), 30); sampleNo1 = val1.Split('|')[3]; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } string jsonStr = JsonConvert.SerializeObject(ermList); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "BS-460")//生化BS-460 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[18] { "Glu-G", "T-Bil-V", "D-Bil-V", "ALT", "AST", "ALP", "γ-GT", "TG", "LDL-C", "HDL-C", "TC", "CREA-S", "UREA", "ALB_II", "TP_II", "AST/ALT", "IBIL-V", "UA" };// string[] itemArrayC = new string[18] { "葡萄糖", "总胆红素", "直接胆红素", "丙氨酸氨基转移酶", "天门冬氨酸氨基转移酶", "碱性磷酸酶", "γ-谷氨酰转移酶", "甘油三酯", "低密度脂蛋白胆固醇", "高密度脂蛋白胆固醇", "总胆固醇", "肌酐(肌氨酸氧化酶法)", "尿素", "白蛋白", "总蛋白(双缩脲法)", "AST/ALT", "IBIL-V", "尿酸" };// deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); //string[] valArray = deviceDataStr.Split(','); string[] valArray = deviceDataStr.Split('|'); string sampleNo1 = valArray[54];//样本号 for (int i = 0; i < itemArrayC.Length; i++) { string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 // MessageBox.Show(deviceDataStr+"\r\n\r\n :"+ggg[5]); string itemStr = itemArrayC[i] + "|"; int index1 = deviceDataStr.IndexOf(itemStr); string valueS = jiexiVal(index1, itemStr, deviceDataStr); double roundedValue = Math.Round(double.Parse(valueS), 2); erm1.itemValue = roundedValue.ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "BS-460-1")//生化BS-460 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[14] { "Glu-G", "T-Bil-V", "D-Bil-V", "ALT", "AST", "TG", "LDL-C", "HDL-C", "TC", "CREA-S", "UREA", "ALB_II", "AST/ALT", "IBIL-V" };// string[] itemArrayC = new string[14] { "葡萄糖(葡萄糖氧化酶法)", "总胆红素(钒酸盐氧化法)", "直接胆红素(钒酸盐氧化法)", "丙氨酸氨基转移酶", "天门冬氨酸氨基转移酶", "甘油三酯", "低密度脂蛋白胆固醇", "高密度脂蛋白胆固醇", "总胆固醇", "肌酐(肌氨酸氧化酶法)", "尿素", "白蛋白", "AST/ALT", "IBIL-V" };// deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); //string[] valArray = deviceDataStr.Split(','); string[] valArray = deviceDataStr.Split('|'); string sampleNo1 = valArray[54];//样本号 for (int i = 0; i < itemArrayC.Length; i++) { string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 // MessageBox.Show(deviceDataStr+"\r\n\r\n :"+ggg[5]); string itemStr = itemArrayC[i] + "|"; int index1 = deviceDataStr.IndexOf(itemStr); string valueS = jiexiVal(index1, itemStr, deviceDataStr); double roundedValue = Math.Round(double.Parse(valueS), 2); erm1.itemValue = roundedValue.ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "BS-460-2")//生化BS-460 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[16] { "Glu-G", "T-Bil-V", "D-Bil-V", "ALT", "AST", "ALP", "γ-GT", "TG", "LDL-C", "HDL-C", "TC", "CREA-S", "UREA", "AST/ALT", "IBIL-V", "UA" };// string[] itemArrayC = new string[16] { "葡萄糖", "总胆红素", "直接胆红素", "丙氨酸氨基转移酶", "天门冬氨酸氨基转移酶", "碱性磷酸酶", "γ-谷氨酰转移酶", "甘油三酯", "低密度脂蛋白胆固醇", "高密度脂蛋白胆固醇", "总胆固醇", "肌酐", "尿素", "AST/ALT", "IBIL-V", "尿酸" };// deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); //string[] valArray = deviceDataStr.Split(','); string[] valArray = deviceDataStr.Split('|'); string sampleNo1 = valArray[54];//样本号 for (int i = 0; i < itemArrayC.Length; i++) { string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i];//项目代号 // MessageBox.Show(deviceDataStr+"\r\n\r\n :"+ggg[5]); string itemStr = itemArrayC[i] + "|"; int index1 = deviceDataStr.IndexOf(itemStr); string valueS = jiexiVal(index1, itemStr, deviceDataStr); double roundedValue = Math.Round(double.Parse(valueS), 2); erm1.itemValue = roundedValue.ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "BA600-1")//尿常规 GeniusBA600 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); // File.WriteAllText("BT-200.TXT", deviceDataStr); for (int i = 0; i < resulteArray.Length; i += 16) { //这里需要判断一下数据是否超过了 当前数据的长度 ermList.Clear(); if (i + 16 > resulteArray.Length) break; //string[] spArray = resulteArray[i + 1].Trim().Split(' '); string sampleNo1 = resulteArray[2].Trim().Replace("0", " ").Trim(); //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "VC";//项目代号 erm.itemValue = resulteArray[i + 4].Replace("VC", "").Trim().Split(' ')[0].Trim();//项目结果 erm.itemUnit = ""; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "URO";//项目代号 erm1.itemValue = resulteArray[i + 5].Replace("URO", "").Trim().Split(' ')[0].Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "BIL";//项目代号 erm2.itemValue = resulteArray[i + 6].Replace("BIL", "").Trim().Trim().Split(' ')[0].Trim();//项目结果 erm2.itemUnit = ""; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "KET";//项目代号 erm3.itemValue = resulteArray[i + 7].Replace("KET", "").Trim().Split(' ')[0].Trim();//项目结果 erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "BLD";//项目代号 erm4.itemValue = resulteArray[i + 8].Replace("BLD", "").Trim().Split(' ')[0].Trim();//项目结果 erm4.itemUnit = "Cell/uL"; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "PRO";//项目代号 erm5.itemValue = resulteArray[i + 9].Replace("PRO", "").Trim().Split(' ')[0].Trim();//项目结果 erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "NIT";//项目代号 erm6.itemValue = resulteArray[i + 10].Replace("NIT", "").Trim().Split(' ')[0].Trim();//项目结果 erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "LEU";//项目代号 erm10.itemValue = resulteArray[i + 11].Replace("LEU", "").Trim().Split(' ')[0].Trim();//项目结果 erm10.itemUnit = ""; ermList.Add(erm10); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "GLU";//项目代号 erm7.itemValue = resulteArray[i + 12].Replace("GLU", "").Trim().Split(' ')[0].Trim();//项目结果 erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "SG";//项目代号 erm8.itemValue = resulteArray[i + 13].Replace("SG", "").Trim().Split(' ')[0].Trim();//项目结果 erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "PH";//项目代号 erm9.itemValue = resulteArray[i + 14].Replace("PH", "").Trim().Split(' ')[0].Trim();//项目结果 erm9.itemUnit = ""; ermList.Add(erm9); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } if (apiOptions.CurrentDevice == "Z3 CRP")//Z3 血常规 { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] itemArray = new string[21] { "WBC", "LYM#", "MID#", "GRAN#", "LYM%", "MID%", "GRAN%", "RBC", "HGB", "HCT", "MCV", "MCH", "MCHC", "RDW-CV", "RDW-SD", "PLT", "MPV", "PDW", "PCT", "P-LCC", "P-LCR" }; //string[] resulteArray = deviceDataStr.Split('\n'); deviceDataStr = deviceDataStr.Replace("\r", "").Replace("\n", ""); string sampleNo1 = string.Empty;//样本号 for (int i = 0; i < itemArray.Length; i++) { string itemStr = string.Empty; if (itemArray[i] == "*LIC#" || itemArray[i] == "*LIC%" || itemArray[i] == "PCT") itemStr = itemArray[i] + "^99MRC||"; else itemStr = itemArray[i] + "^LN||"; string val1 = jiexiVal(deviceDataStr.IndexOf("OBR|1||"), "OBR|1||", deviceDataStr).ToString(); sampleNo1 = val1; string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = itemArray[i]; //项目代号 erm1.itemValue = jiexiVal(deviceDataStr.IndexOf(itemStr), itemStr, deviceDataStr).ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); } //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } if (apiOptions.CurrentDevice == "URIT-500B")//URIT-500B { string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; List ermList = new List(); string[] resulteArray = deviceDataStr.Split('\n'); // File.WriteAllText("BT-200.TXT", deviceDataStr); for (int i = 0; i < resulteArray.Length; i += 15) { //这里需要判断一下数据是否超过了当前数据的长度 ermList.Clear(); if (i + 15 > resulteArray.Length) break; string[] spArray = resulteArray[1].Trim().Split(' '); string sampleNo1 = spArray[0].Replace("NO.","").Replace("0", " ").Trim(); // string sampleNo1 = spArray.Length > 2 ? spArray[2].Substring(0, 1).TrimStart('0') : "0"; // string sampleNo1 = resulteArray[2].Trim().Split(' ')[1]; .Replace("-", "0").TrimStart('0') //string testDate1 = jiexiDate(resulteArray[i + 1], resulteArray[i + 2]); string testDate1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); examResultMode erm = new examResultMode(); erm.machineCode = MachineCode; erm.machineID = MachineID; erm.sampleNo = sampleNo1; erm.testDate = testDate1; erm.chanelNo = "WBC";//项目代号 erm.itemValue = resulteArray[i + 4].Replace("WBC", "").Replace("CELL/uL", "").Trim().Split(' ')[0].Trim(); //项目结果 erm.itemUnit = ""; ermList.Add(erm); examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = sampleNo1; erm1.testDate = testDate1; erm1.chanelNo = "KET";//项目代号 erm1.itemValue = resulteArray[i + 5].Replace("KET", "").Replace("mmol/L", "").Trim().Split(' ')[0].Trim(); erm1.itemUnit = ""; ermList.Add(erm1); examResultMode erm2 = new examResultMode(); erm2.machineCode = MachineCode; erm2.machineID = MachineID; erm2.sampleNo = sampleNo1; erm2.testDate = testDate1; erm2.chanelNo = "NIT";//项目代号 erm2.itemValue = resulteArray[i + 6].Replace("NIT", "").Replace("Neg", "").Trim().Split(' ')[0].Trim(); erm2.itemUnit = ""; ermList.Add(erm2); examResultMode erm3 = new examResultMode(); erm3.machineCode = MachineCode; erm3.machineID = MachineID; erm3.sampleNo = sampleNo1; erm3.testDate = testDate1; erm3.chanelNo = "URO";//项目代号 erm3.itemValue = resulteArray[i + 7].Replace("*URO", "").Replace("umol/L", "").Trim().Split(' ')[0].Trim(); erm3.itemUnit = ""; ermList.Add(erm3); examResultMode erm4 = new examResultMode(); erm4.machineCode = MachineCode; erm4.machineID = MachineID; erm4.sampleNo = sampleNo1; erm4.testDate = testDate1; erm4.chanelNo = "BIL";//项目代号 erm4.itemValue = resulteArray[i + 8].Replace("BIL", "").Replace("umol/L", "").Trim().Split(' ')[0].Trim(); erm4.itemUnit = ""; ermList.Add(erm4); examResultMode erm5 = new examResultMode(); erm5.machineCode = MachineCode; erm5.machineID = MachineID; erm5.sampleNo = sampleNo1; erm5.testDate = testDate1; erm5.chanelNo = "PRO";//项目代号 erm5.itemValue = resulteArray[i + 9].Replace("PRO", "").Replace("g/L", "").Trim().Split(' ')[0].Trim(); erm5.itemUnit = ""; ermList.Add(erm5); examResultMode erm6 = new examResultMode(); erm6.machineCode = MachineCode; erm6.machineID = MachineID; erm6.sampleNo = sampleNo1; erm6.testDate = testDate1; erm6.chanelNo = "GLU";//项目代号 erm6.itemValue = resulteArray[i + 10].Replace("GLU", "").Replace("mmol/L", "").Trim().Split(' ')[0].Trim(); erm6.itemUnit = ""; ermList.Add(erm6); examResultMode erm10 = new examResultMode(); erm10.machineCode = MachineCode; erm10.machineID = MachineID; erm10.sampleNo = sampleNo1; erm10.testDate = testDate1; erm10.chanelNo = "SG";//项目代号 erm10.itemValue = resulteArray[i + 11].Replace("SG", "").Trim().Split(' ')[0].Trim(); erm10.itemUnit = ""; ermList.Add(erm10); examResultMode erm7 = new examResultMode(); erm7.machineCode = MachineCode; erm7.machineID = MachineID; erm7.sampleNo = sampleNo1; erm7.testDate = testDate1; erm7.chanelNo = "BLD";//项目代号 erm7.itemValue = resulteArray[i + 12].Replace("BLD", "").Replace("CELL/uL", "").Trim().Split(' ')[0].Trim(); erm7.itemUnit = ""; ermList.Add(erm7); examResultMode erm8 = new examResultMode(); erm8.machineCode = MachineCode; erm8.machineID = MachineID; erm8.sampleNo = sampleNo1; erm8.testDate = testDate1; erm8.chanelNo = "pH";//项目代号 erm8.itemValue = resulteArray[i + 13].Replace("pH", "").Trim().Split(' ')[0].Trim(); erm8.itemUnit = ""; ermList.Add(erm8); examResultMode erm9 = new examResultMode(); erm9.machineCode = MachineCode; erm9.machineID = MachineID; erm9.sampleNo = sampleNo1; erm9.testDate = testDate1; erm9.chanelNo = "Vc";//项目代号 erm9.itemValue = resulteArray[i + 14].Replace("Vc", "").Replace("mmol/L", "").Trim().Split(' ')[0].Trim(); erm9.itemUnit = ""; ermList.Add(erm9); //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) dataOutPutShow("数据提交成功:" + jsonStr, null); else dataOutPutShow("数据提交失败:" + jsonStr, null); } } return rerultJson; } ///

/// 从结果字符串中截取 结果 /// /// /// /// string jiexiItemValue(string itemStr, string deviceDataStr) { string ItemValueStr = ""; try { string Str1 = deviceDataStr.Substring(deviceDataStr.IndexOf(itemStr) + itemStr.Length, 30); int firstIndex = Str1.IndexOf('|'); ItemValueStr = Str1.Substring(0, firstIndex); } catch (Exception ex) { MessageBox.Show(itemStr + "," + deviceDataStr); } return ItemValueStr; } /// /// 从结果字符串中截取 结果 /// /// /// /// string jiexiItemValue11(string itemStr, string deviceDataStr) { string ItemValueStr = ""; try { string Str1 = deviceDataStr.Substring(deviceDataStr.IndexOf(itemStr) + itemStr.Length, 6); int firstIndex = Str1.IndexOf('|'); ItemValueStr = Str1.Substring(0, firstIndex); } catch (Exception ex) { /*MessageBox.Show(itemStr + "," + deviceDataStr);*/ } return ItemValueStr; } /// /// 从结果字符串中截取 结果 /// /// /// /// string jiexiItemValueLast(string itemStr, string deviceDataStr) { string ItemValueStr = ""; string Str1 = deviceDataStr.Substring(deviceDataStr.LastIndexOf(itemStr) + itemStr.Length + 1, 10); int firstIndex = Str1.IndexOf('|'); ItemValueStr = Str1.Substring(0, firstIndex); return ItemValueStr; } /// /// 从字符串中找到 样本编号 /// /// /// /// int jiexisampleNo(int index1, string dataStr) { int val1 = -1; for (int i = 1; i < 100; i++) { try { string str1 = dataStr.Substring(index1 - i, i); val1 = int.Parse(str1); } catch { break; } } return val1; } /// /// 从字符串中找到 样本编号 /// /// /// /// int jiexisampleNo8(int index1, string dataStr) { int val1 = -1; for (int i = 1; i < 100; i++) { try { string str1 = dataStr.Substring(index1, i); val1 = int.Parse(str1); } catch { break; } } return val1; } /// /// 从字符串中 解析出数字 /// /// /// /// string jiexiVal(int index1, string keyStr, string dataStr) { string val1 = ""; for (int i = 1; i < 100; i++) { try { string str1 = dataStr.Substring(index1 + keyStr.Length, i); double valx = double.Parse(str1); val1 = str1; } catch { break; } } return val1; } /// /// 从字符串中 解析出 jiexiBase64 图像 /// /// /// /// List jiexiBase64(int[] array1, string keyStr, string dataStr) { List imageBase64List = new List(); for (int i = 0; i < array1.Length; i++) { for (int b = array1[i]; b < dataStr.Length; b++) { string str1 = dataStr.Substring(b, keyStr.Length); if (str1 == keyStr) { string ImgBase64Str = dataStr.Substring(array1[i] + 8, b - array1[i] - 8); imageBase64List.Add(ImgBase64Str); break; } } } return imageBase64List; } static string jiexiDate(string dateStr, string TimeStr) { string[] spArray = dateStr.Trim().Split(' '); string[] varArray = spArray[2].Trim().Trim('\r').Split('-'); return varArray[2] + "-" + varArray[0] + "-" + varArray[1] + " " + TimeStr.Trim().Trim('\r'); } Socket listener; //TcpListener listener = null; /// /// 开启数据接收 /// public void startDataReceive() { if (apiOptions.CurrentDevice == "HSYH-II")//华晟源尿常规型号:H-II { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BT-200")//盛世东唐BT-200尿常规 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "URIT-5181")//优利特血常规5181 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "URIT-1500")//优利特尿常规URIT-1500 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "DF55")//帝迈血常规DF55 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "TCPTEST")//TCP接收测试数据 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "CS-480")//迪瑞全自动生化分析仪 CS-480 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "SL300C")//Senlo生化SL300C { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "BK600")//Senlo生化SL300C { _AccessResult.Change(10000, 10000);//开始循环从access数据库中读取数据,10秒频率 } if (apiOptions.CurrentDevice == "BA600")//尿常规 GeniusBA600 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BA600-1")//尿常规 GeniusBA600 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BA600MY")//煤窑中心卫生院的尿常规 GeniusBA600 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "MC-600")//血常规MAC-600 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "CS-1300B")//迪瑞全自动生化分析仪 CS-1300B { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "URIT-5180")//优利特血常规5180 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "BS-430")//生化BS-430 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; // IPAddress ipAddress = IPAddress.Parse(tcp_ip); IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { //listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(IPAddress.Any, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "DF55-1")//帝迈血常规DF55 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "URIT-1600")//优利特1600 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "HTSH-4000")//HTSH-4000 全自动生化分析仪 { _AccessResult.Change(10000, 10000);//开始循环从access数据库中读取数据,10秒频率 } if (apiOptions.CurrentDevice == "DH56")//帝迈血常规DH56 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "URIT-5380")//优利特血常规URIT-5380 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "U500")//尿常规U500 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BC-5130")//BC-5130 这个设备是需要主动TCP连接 血常规仪器 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; //// 创建一个监听Socket //if (listener == null) //{ // listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); // listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); // listener.Listen(10000); //} clientSocket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); clientSocket.Connect(ipAddress, int.Parse(tcp_port)); _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "SD1")//斯玛特SD1 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "DF55-2")//帝迈血常规DF55 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "U120")//尿常规U120 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BS-330E")//BS-330E 生化 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "BC-5120")//BC-5120 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; //// 创建一个监听Socket clientSocket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); clientSocket.Connect(ipAddress, int.Parse(tcp_port)); _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; //// 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "hhh5")//BC-5130 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "MA-4210")//MA-4210 { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BS-460")//迈瑞生化BS-430 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; // IPAddress ipAddress = IPAddress.Parse(tcp_ip); IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { //listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(IPAddress.Any, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "BS-460-1")//迈瑞生化BS-460 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; // IPAddress ipAddress = IPAddress.Parse(tcp_ip); IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { //listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(IPAddress.Any, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "BS-460-2")//迈瑞生化BS-460 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; // IPAddress ipAddress = IPAddress.Parse(tcp_ip); IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { //listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(IPAddress.Any, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "Z3 CRP")//血常规 Z3 { // 设置IP地址和端口号 string tcp_ip = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; string tcp_port = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]; IPAddress ipAddress = IPAddress.Parse(tcp_ip); // IPAddress ipAddress = IPAddress.Any; // 创建一个监听Socket if (listener == null) { listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(ipAddress, int.Parse(tcp_port))); listener.Listen(10000); } _tcpResult.Change(0, 10);//开始tcp数据接收,10毫秒频率 } if (apiOptions.CurrentDevice == "URIT-500B")//URIT-500B { SerialPortOption.CreateInstance().IniserialPortOption();//初始化串口 SerialPortOption.CreateInstance().dataOutPutShow += new EventHandler(onReData); SerialPortOption.CreateInstance().StartDataReadThread();//开启数据接收 } } /// /// 将接收到的数据进行处理并显示在软件界面上 /// /// /// void onReData(object o, EventArgs e) { if (o.ToString().Length > 2) { tempData += o.ToString();//把串口数据积累起来 //MessageBox.Show(o.ToString().Length.ToString()); dataOutPutShow(o, null);//把数据显示到屏幕上 } if (apiOptions.CurrentDevice == "HSYH-II")//华晟源尿常规型号:H-II _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "BT-200")//盛世东唐BT-200尿常规 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "URIT-5181")//优利特血常规5181 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "DF55")//帝迈血常规DF55 { _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "TCPTEST")//tcp数据接收测试 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "CS-480") _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "SL300C")//Senlo生化SL300C _tResult.Change(10000, 10000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "BA600")//尿常规 GeniusBA600 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "BA600-1")//尿常规 GeniusBA600 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "MC-600")//血常规MAC-600 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "CS-1300B")//迪瑞全自动生化分析仪 CS-1300B _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "BA600MY")//煤窑中心卫生院的尿常规 GeniusBA600 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "URIT-1500")//优利特尿常规URIT-1500 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "URIT-5180")//优利特血常规5180 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "BS-430")//生化BS-430 { //File.WriteAllText("deviceDataLog.txt", deviceDataStr, Encoding.GetEncoding("GB18030")); deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 // _tResult.Change(10000, 10000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "DF55-1")//帝迈血常规DF55 { deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 //_tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "URIT-1600")//优利特1600 { if (tempData.Contains("OBX|12|ST|"))//OBX|12|ST| 为结束符 说明字符串完整了 { deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } //_tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "DH56")//帝迈血常规DH56 { _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "URIT-5380")//优利特血常规URIT-5380 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "U500")//尿常规U500 { _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "BC-5130")//BC-5130 { // _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (tempData.Contains("OBX|30|") || tempData.Contains("OBX|29|"))//OBX|12|ST| 为结束符 说明字符串完整了 { // MessageBox.Show(tempData); deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } } if (apiOptions.CurrentDevice == "SD1")//斯玛特SD1 { if (tempData.Contains("OBX|22|"))//OBX|22| 为结束符 说明字符串完整了 { deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } //_tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "DF55-2")//帝迈血常规DF55 { _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "hhh5")//BC-5130 { _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "MA-4210")//MA-4210 _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 if (apiOptions.CurrentDevice == "U120")//尿常规U120 { _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "BS-330E")//BS-330E { if (tempData.Split('').Length>=12&& (tempData.Contains("LDL-C")&& Regex.Matches(tempData, "LDL-C").Count>1)) { deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } } if (apiOptions.CurrentDevice == "BC-5120")//BC-5120 { if (tempData.Contains(@"OBR|1||Background|")) { tempData = string.Empty; } else { string tempData_temp = tempData; tempData = string.Empty; deviceAnalysisOption(tempData_temp); } } if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { string tempData_temp = tempData; tempData = string.Empty; if (!string.IsNullOrWhiteSpace(tempData_temp)) deviceAnalysisOption(tempData_temp); } if (apiOptions.CurrentDevice == "BS-460")//生化BS-460 { //File.WriteAllText("deviceDataLog.txt", deviceDataStr, Encoding.GetEncoding("GB18030")); if (tempData.Contains("OBX|17|"))//OBX|22| 为结束符 说明字符串完整了 OBX|17| { deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } // _tResult.Change(10000, 10000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "BS-460-1")//生化BS-460 { //File.WriteAllText("deviceDataLog.txt", deviceDataStr, Encoding.GetEncoding("GB18030")); //if (tempData.Contains("OBX|14|"))//OBX|22| 为结束符 说明字符串完整了 //{ deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 // } // _tResult.Change(10000, 10000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "BS-460-2")//生化BS-460 { deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } if (apiOptions.CurrentDevice == "Z3 CRP")//血常规Z3 { if (tempData.Contains("OBX|26|"))//OBX|25| 为结束符 说明字符串完整了 { deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } //_tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } if (apiOptions.CurrentDevice == "URIT-500B")//优利特尿常规URIT-500B _tResult.Change(5000, 5000);// 数据处理:延迟5秒开始 5秒计时 } /// /// 定时器 定时来处理接收到的累计临时数据 /// void TResultTick() { _tResult.Change(-1, 5000);//暂停计时 deviceAnalysisOption(tempData); tempData = string.Empty;//执行完以后 将临时积累数据清空 以便接收下一个样本数据 } Socket clientSocket; int msgindex = 1; /// /// 定时器 定时来处理TCP接收到的累计临时数据 /// void tcpResultTick() { byte[] data = new byte[40048]; //如果设备是BC-5130这类的,则表示这个设备在启动时就已经主动连上了。BC-5130设备,这里就无需初始化连接直接跳过 List ConnectDevices = new List(new string[] { "BC-5130", "BC-5120" }); if (!ConnectDevices.Contains(apiOptions.CurrentDevice)) { if (clientSocket == null) clientSocket = listener.Accept(); //一旦接受连接,创建一个客户端 } int recv = clientSocket.Receive(data); if (recv > 0) { byte[] data1 = new byte[recv]; for (int i = 0; i < recv; i++) data1[i] = data[i]; string encodingStr = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[5]; string stringData = Encoding.GetEncoding(encodingStr).GetString(data1); if (apiOptions.CurrentDevice == "SL300C")//Senlo生化SL300C 接收一条数据就需要应答一次 { string[] msgArray = stringData.Split('\n'); for (int i = 0; i < msgArray.Length; i++) { if (msgArray[i].Contains("MSH|") && msgArray[i].Contains("||UNICODE||")) { string msgId = msgArray[i].Substring(msgArray[i].IndexOf("R01|") + 4, msgArray[i].IndexOf("|P|") - msgArray[i].IndexOf("R01|") - 4); string dateTimeNowStr = DateTime.Now.ToString("yyyyMMddHHmmss"); string responseMsg = "MSH|^~\\&|1|1|11|1|" + dateTimeNowStr + "||ACK^R01|" + msgId + "|P|2.3.1||||0||UNICODE|||MSA|AA|" + msgId + "||||0|"; byte[] sendBytes = Encoding.Unicode.GetBytes(responseMsg); clientSocket.Send(sendBytes); onReData("应答消息:" + responseMsg, null);//数据处理 并将数据显示在软件界面上 } } } onReData(stringData, null);//数据处理 并将数据显示在软件界面上 } } void accessResultTick() { if (apiOptions.CurrentDevice == "BK600") { _AccessResult.Change(-1, 10000);//开始循环从access数据库中读取数据,10秒频率 if (!File.Exists("uploadedRecord.txt")) File.Create("uploadedRecord.txt"); string accessDbPath = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; if (!accessDbPath.Contains(".mdb")) accessDbPath = DateTime.Now.ToString("yyyy-MM-dd") + ".mdb"; //string sql = "select a.sampleProgramID,b.SampleNo,a.ResultValue as ItemValue,a.EName as ItemCode from sampleProgram a inner join sampleInfo b on a.SampleInfoID=b.SampleInfoID where a.stateS is NULL "; string sql = "select a.sampleProgramID,b.SampleNo,a.ResultValue as ItemValue,a.EName as ItemCode from sampleProgram a inner join sampleInfo b on a.SampleInfoID=b.SampleInfoID"; DataTable dt_2 = new DataTable(); try { dt_2 = accessOptions.CreateInstance(accessDbPath).ExcuteSql(sql); } catch { dt_2 = null; } if (dt_2 == null) return; List ermList = new List(); string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; string uploadedRecordStr = File.ReadAllText("uploadedRecord.txt"); for (int i = 0; i < dt_2.Rows.Count; i++) { if (!uploadedRecordStr.Contains(dt_2.Rows[i]["sampleProgramID"].ToString())) { examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = dt_2.Rows[i]["SampleNo"].ToString(); erm1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); erm1.chanelNo = dt_2.Rows[i]["ItemCode"].ToString();//项目代号 erm1.itemValue = dt_2.Rows[i]["ItemValue"].ToString();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); uploadedRecordStr += (dt_2.Rows[i]["sampleProgramID"].ToString() + ","); } } if (ermList.Count > 0) { //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) { //for (int i = 0; i < dt_2.Rows.Count; i++) //{ // string sql1 = "update sampleProgram set stateS=1 where sampleProgramID='" + dt_2.Rows[i]["sampleProgramID"].ToString() + "'"; // bool flag1 = accessOptions.CreateInstance(accessDbPath).SqlUpdate(sql1); //} File.WriteAllText("uploadedRecord.txt", uploadedRecordStr);//记录写入本地 dataOutPutShow("数据和图像提交成功:" + jsonStr, null); } else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } _AccessResult.Change(10000, 10000);//开始循环从access数据库中读取数据,10秒频率 } if (apiOptions.CurrentDevice == "HTSH-4000") { _AccessResult.Change(-1, 10000);//开始循环从access数据库中读取数据,10秒频率 if (!File.Exists("uploadedRecord.txt")) File.Create("uploadedRecord.txt"); string accessDbPath = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3]; if (!accessDbPath.ToLower().Contains(".mdb")) accessDbPath = DateTime.Now.ToString("yyyy-MM-dd") + ".mdb"; string CHECKDATE = DateTime.Now.ToString("yyyy-MM-dd"); // string CHECKDATE = DateTime.Now.ToString("2024-04-01"); //string sql = "SELECT ITEM as ItemCode,cint(Right(str(id), 3)) as SampleNO, `RESULT` as ItemValue FROM `CHECK_RESULT202404` where mid(id,1,4) +'-' + mid(id,5,2) + '-' + mid(id,7,2)='"+ CHECKDATE + "'"; string tableName = "CHECK_RESULT" + DateTime.Now.ToString("yyyyMM"); //string sql = "SELECT ITEM as ItemCode,id,cint(Right(str(id), 3)) as SampleNO, `RESULT` as ItemValue FROM "+ tableName + " where mid(id,1,4) +'-' + mid(id,5,2) + '-' + mid(id,7,2)='"+ CHECKDATE + "'"; string sql = "SELECT ITEM as ItemCode,id,cint(Right(str(id), 3)) as SampleNO, `RESULT` as ItemValue FROM " + tableName + ""; DataTable dt_2 = accessOptions.CreateInstance(accessDbPath).ExcuteSql(sql); List ermList = new List(); string MachineCode = apiOptions.MachineCode; string MachineID = apiOptions.MachineID; string uploadedRecordStr = File.ReadAllText("uploadedRecord.txt"); for (int i = 0; i < dt_2.Rows.Count; i++) { string uploadedRecordId = dt_2.Rows[i]["id"].ToString().Trim() + dt_2.Rows[i]["ItemCode"].ToString().Trim(); if (!uploadedRecordStr.Contains(uploadedRecordId)) { examResultMode erm1 = new examResultMode(); erm1.machineCode = MachineCode; erm1.machineID = MachineID; erm1.sampleNo = dt_2.Rows[i]["SampleNo"].ToString().Trim(); erm1.testDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); erm1.chanelNo = dt_2.Rows[i]["ItemCode"].ToString().Trim();//项目代号 erm1.itemValue = dt_2.Rows[i]["ItemValue"].ToString().Trim();//项目结果 erm1.itemUnit = ""; ermList.Add(erm1); uploadedRecordStr += (uploadedRecordId + ","); } } if (ermList.Count > 0) { //将结果提交到LIS系统 baseMsgModel bmm1 = apiOptions.CreateInstance().upLoadExamResult(ermList); string jsonStr = JsonConvert.SerializeObject(ermList); if (bmm1.code == 200) { //for (int i = 0; i < dt_2.Rows.Count; i++) //{ // string sql1 = "update sampleProgram set stateS=1 where sampleProgramID='" + dt_2.Rows[i]["sampleProgramID"].ToString() + "'"; // bool flag1 = accessOptions.CreateInstance(accessDbPath).SqlUpdate(sql1); //} File.WriteAllText("uploadedRecord.txt", uploadedRecordStr);//记录写入本地 dataOutPutShow("数据和图像提交成功:" + jsonStr, null); } else dataOutPutShow("数据和图像提交失败:" + jsonStr, null); } _AccessResult.Change(10000, 10000);//开始循环从access数据库中读取数据,10秒频率 } } /// /// 停止数据接收 /// public void stopDataReceive() { if (apiOptions.CurrentDevice == "HSYH-II")//华晟源尿常规型号:H-II { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BT-200")//盛世东唐BT-200尿常规 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "URIT-5181")//优利特血常规 5181 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "URIT-1500")//优利特尿常规URIT-1500 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "DF55")//帝迈血常规DF55 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "TCPTEST")//tcp数据接收测试 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "CS-480") { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "SL300C")//Senlo生化SL300C { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "BA600")//尿常规 GeniusBA600 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BA600-1")//尿常规 GeniusBA600 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BA600MY")//煤窑中心卫生院的尿常规 GeniusBA600 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "MC-600")//血常规MAC-600 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "CS-1300B")//迪瑞全自动生化分析仪 CS-1300B { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "URIT-5180")//优利特血常规5180 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "BS-430")//生化BS-430 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "DF55-1")//帝迈血常规DF55 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "URIT-1600")//优利特1600 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BK600")// { _AccessResult.Change(-1, 10000);//停止从access数据库中读取数据,10秒频率 } if (apiOptions.CurrentDevice == "HTSH-4000")//HTSH-4000 全自动生化分析仪 { _AccessResult.Change(-1, 10000);//停止从access数据库中读取数据,10秒频率 } if (apiOptions.CurrentDevice == "DH56")//帝迈血常规DH56 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "URIT-5380")//优利特血常规 URIT-5380 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "U500")//尿常规U500 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "BC-5130")//BC-5130 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "SD1")//斯玛特 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "DF55-2")//帝迈血常规DF55 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "hhh5")//BC-5130 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "MA-4210")//MA-4210 { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } if (apiOptions.CurrentDevice == "U120")//尿常规U120 { SerialPortOption.CreateInstance().StopDataReadThread();//停止数据接收 } if (apiOptions.CurrentDevice == "BS-330E")//BS-330E { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "BC-5120")//BC-5120 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "URIT-8460")//URIT-8460 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "BS-460")//生化BS-460 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "BS-460-1")//生化BS-460 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "BS-460-2")//生化BS-460 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "Z3 CRP")//帝迈血常规DH56 { _tcpResult.Change(-1, 10);//停止tcp数据接收 clientSocket.Close(); } if (apiOptions.CurrentDevice == "URIT-500B")//优利特血常规 URIT-500B { SerialPortOption.CreateInstance().StopDataReadThread();//开启数据接收 } } ///// ///// 开启tcp数据接收 ///// //public void tcpDataReceive() //{ // while (true) // { // byte[] data = new byte[1024];//对data清零 // Socket clientSocket = listener.Accept(); //一旦接受连接,创建一个客户端 // int recv = clientSocket.Receive(data); // if (recv == 0) //如果收到的数据长度小于0,则退出 // continue; // string stringData = Encoding.Unicode.GetString(data); // onReData(stringData, null);//将数据显示在软件界面上 // } //} } }