2024-12-12 14:03:53 +08:00
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 ;
2024-12-20 14:29:34 +08:00
using System.Text.RegularExpressions ;
2024-12-12 14:03:53 +08:00
namespace FlyDockTool
{
2024-12-16 10:00:55 +08:00
public class deviceAnalysis
2024-12-12 14:03:53 +08:00
{
2024-12-16 10:00:55 +08:00
public EventHandler dataOutPutShow ;
2024-12-12 14:03:53 +08:00
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 ;
}
2024-12-16 10:00:55 +08:00
deviceAnalysis ( )
2024-12-12 14:03:53 +08:00
{
_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 作为定时执行的方法 处于暂停状态
}
2024-12-12 16:17:46 +08:00
//赖浩1
2024-12-12 14:03:53 +08:00
/// <summary>
/// 查找某个字符小串在 字符大串中出现的位置数组
/// </summary>
/// <param name="keyWords"></param>
/// <param name="stringStr"></param>
/// <returns></returns>
2024-12-16 10:00:55 +08:00
int [ ] strCount ( string keyWords , string stringStr )
2024-12-12 14:03:53 +08:00
{
List < int > posList = new List < int > ( ) ;
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 ( ) ;
}
/// <summary>
/// 数据处理
/// </summary>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examImageParaModel > eipmList = new List < examImageParaModel > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examImageParaModel > eipmList = new List < examImageParaModel > ( ) ;
int [ ] array1 = strCount ( "^Base64^" , deviceDataStr ) ;
string keyStr = "||||||F" ; //结束符
List < string > 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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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(' ');
2024-12-19 14:49:02 +08:00
string sampleNo1 = resulteArray [ 2 ] . Trim ( ) . Replace ( "0" , " " ) . Trim ( ) ;
2024-12-12 14:03:53 +08:00
//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" ; //项目代号
2024-12-19 14:49:02 +08:00
erm1 . itemValue = resulteArray [ i + 5 ] . Replace ( "URO" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
erm1 . itemUnit = "" ;
ermList . Add ( erm1 ) ;
examResultMode erm2 = new examResultMode ( ) ;
erm2 . machineCode = MachineCode ;
erm2 . machineID = MachineID ;
erm2 . sampleNo = sampleNo1 ;
erm2 . testDate = testDate1 ;
erm2 . chanelNo = "BIL" ; //项目代号
2024-12-19 14:49:02 +08:00
erm2 . itemValue = resulteArray [ i + 6 ] . Replace ( "BIL" , "" ) . Trim ( ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
erm2 . itemUnit = "" ;
ermList . Add ( erm2 ) ;
examResultMode erm3 = new examResultMode ( ) ;
erm3 . machineCode = MachineCode ;
erm3 . machineID = MachineID ;
erm3 . sampleNo = sampleNo1 ;
erm3 . testDate = testDate1 ;
erm3 . chanelNo = "KET" ; //项目代号
2024-12-19 14:49:02 +08:00
erm3 . itemValue = resulteArray [ i + 7 ] . Replace ( "KET" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
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" ; //项目代号
2024-12-19 14:49:02 +08:00
erm5 . itemValue = resulteArray [ i + 9 ] . Replace ( "PRO" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
erm5 . itemUnit = "" ;
ermList . Add ( erm5 ) ;
examResultMode erm6 = new examResultMode ( ) ;
erm6 . machineCode = MachineCode ;
erm6 . machineID = MachineID ;
erm6 . sampleNo = sampleNo1 ;
erm6 . testDate = testDate1 ;
erm6 . chanelNo = "NIT" ; //项目代号
2024-12-19 14:49:02 +08:00
erm6 . itemValue = resulteArray [ i + 10 ] . Replace ( "NIT" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
erm6 . itemUnit = "" ;
ermList . Add ( erm6 ) ;
examResultMode erm10 = new examResultMode ( ) ;
erm10 . machineCode = MachineCode ;
erm10 . machineID = MachineID ;
erm10 . sampleNo = sampleNo1 ;
erm10 . testDate = testDate1 ;
erm10 . chanelNo = "LEU" ; //项目代号
2024-12-19 14:49:02 +08:00
erm10 . itemValue = resulteArray [ i + 11 ] . Replace ( "LEU" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
erm10 . itemUnit = "" ;
ermList . Add ( erm10 ) ;
examResultMode erm7 = new examResultMode ( ) ;
erm7 . machineCode = MachineCode ;
erm7 . machineID = MachineID ;
erm7 . sampleNo = sampleNo1 ;
erm7 . testDate = testDate1 ;
erm7 . chanelNo = "GLU" ; //项目代号
2024-12-19 14:49:02 +08:00
erm7 . itemValue = resulteArray [ i + 12 ] . Replace ( "GLU" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
erm7 . itemUnit = "" ;
ermList . Add ( erm7 ) ;
examResultMode erm8 = new examResultMode ( ) ;
erm8 . machineCode = MachineCode ;
erm8 . machineID = MachineID ;
erm8 . sampleNo = sampleNo1 ;
erm8 . testDate = testDate1 ;
erm8 . chanelNo = "SG" ; //项目代号
2024-12-19 14:49:02 +08:00
erm8 . itemValue = resulteArray [ i + 13 ] . Replace ( "SG" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
erm8 . itemUnit = "" ;
ermList . Add ( erm8 ) ;
examResultMode erm9 = new examResultMode ( ) ;
erm9 . machineCode = MachineCode ;
erm9 . machineID = MachineID ;
erm9 . sampleNo = sampleNo1 ;
erm9 . testDate = testDate1 ;
erm9 . chanelNo = "PH" ; //项目代号
2024-12-19 14:49:02 +08:00
erm9 . itemValue = resulteArray [ i + 14 ] . Replace ( "PH" , "" ) . Trim ( ) . Split ( ' ' ) [ 0 ] . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 ( "<p><n>ID</n><v>" ) )
{
sampleNo1 = jiexiVal ( valArray [ A ] . IndexOf ( "<p><n>ID</n><v>" ) , "<p><n>ID</n><v>" , valArray [ A ] ) . ToString ( ) . TrimStart ( '0' ) ;
}
for ( int i = 0 ; i < itemArray . Length ; i + + )
{
string keyItem = "<p><n>" + itemArray [ i ] ;
if ( valArray [ A ] . Contains ( keyItem ) )
{
string itemStr = itemArray [ i ] + "</n><v>" ;
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 ( "<v>" ) + 3 , valArray [ A ] . IndexOf ( "</v>" ) - valArray [ A ] . IndexOf ( "<v>" ) - 3 ) ; //项目结果
erm1 . itemUnit = "" ;
ermList . Add ( erm1 ) ;
}
}
}
string jsonStr12 = JsonConvert . SerializeObject ( ermList ) ;
//把血常规的图也传上去
List < examImageParaModel > eipmList = new List < examImageParaModel > ( ) ;
int [ ] array1 = strCount ( "^Base64^" , deviceDataStr ) ;
string keyStr = "||||||F" ; //结束符
List < string > 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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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<examImageParaModel> eipmList = new List<examImageParaModel>();
//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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examImageParaModel > eipmList = new List < examImageParaModel > ( ) ;
int [ ] array1 = strCount ( "^Base64^" , deviceDataStr ) ;
string keyStr = "||||||F" ; //结束符
List < string > 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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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<examImageParaModel> eipmList = new List<examImageParaModel>();
//int[] array1 = strCount("^Base64^", deviceDataStr);
//string keyStr = "||||||F";//结束符
//List<string> 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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examImageParaModel > eipmList = new List < examImageParaModel > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 ;
2024-12-16 10:00:55 +08:00
string [ ] spArray = resulteArray [ 3 ] . Trim ( ) . Split ( ' ' ) ;
2024-12-12 14:03:53 +08:00
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" ; //项目代号
2024-12-16 10:00:55 +08:00
erm1 . itemValue = resulteArray [ i + 5 ] . Substring ( 4 , 11 ) . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
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" ; //项目代号
2024-12-16 10:00:55 +08:00
erm4 . itemValue = resulteArray [ i + 8 ] . Substring ( 5 , 13 ) . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
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
{
2024-12-13 09:47:28 +08:00
try
2024-12-12 14:03:53 +08:00
{
2024-12-13 09:47:28 +08:00
string MachineCode = apiOptions . MachineCode ;
string MachineID = apiOptions . MachineID ;
List < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examImageParaModel > eipmList = new List < examImageParaModel > ( ) ;
int [ ] array1 = strCount ( "^Base64^" , deviceDataStr ) ;
string keyStr = "||||||F" ; //结束符
List < string > 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 ) ;
}
2024-12-13 09:33:58 +08:00
2024-12-12 14:03:53 +08:00
2024-12-13 09:47:28 +08:00
//将结果提交到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);
}
2024-12-12 14:03:53 +08:00
2024-12-13 09:47:28 +08:00
if ( bmm1 . code = = 200 )
dataOutPutShow ( "数据和图像提交成功:" + jsonStr , null ) ;
else
dataOutPutShow ( "数据和图像提交失败:" + jsonStr , null ) ;
2024-12-12 14:03:53 +08:00
}
2024-12-17 15:44:54 +08:00
catch ( Exception ex ) { /*MessageBox.Show(ex.ToString()); */ }
2024-12-12 14:03:53 +08:00
}
if ( apiOptions . CurrentDevice = = "SD1" ) //斯玛特SD1
{
string MachineCode = apiOptions . MachineCode ;
string MachineID = apiOptions . MachineID ;
List < examResultMode > ermList = new List < examResultMode > ( ) ;
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" , "。" ) ;
2024-12-16 10:00:55 +08:00
2024-12-12 14:03:53 +08:00
string [ ] valArray = deviceDataStr . Split ( '。' ) ;
string sampleNo1 = string . Empty ; //样本号
for ( int A = 0 ; A < valArray . Length ; A + + )
{
if ( valArray [ A ] . Contains ( "OBR|" ) )
{
2024-12-16 10:00:55 +08:00
int index1 = valArray [ A ] . Substring ( valArray [ A ] . IndexOf ( "OBR|" ) , 20 ) . IndexOf ( "||" ) + 2 ;
sampleNo1 = jiexisampleNo8 ( index1 , valArray [ A ] . Substring ( valArray [ A ] . IndexOf ( "OBR|" ) , 18 ) ) . ToString ( ) ;
2024-12-12 14:03:53 +08:00
}
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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||" ;
2024-12-16 10:00:55 +08:00
int index1 = deviceDataStr . Substring ( deviceDataStr . IndexOf ( "OBR|" ) , 20 ) . IndexOf ( "||" ) + 2 ;
sampleNo1 = jiexisampleNo8 ( index1 , deviceDataStr . Substring ( deviceDataStr . IndexOf ( "OBR|" ) , 18 ) ) . ToString ( ) ;
2024-12-12 14:03:53 +08:00
//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 < examImageParaModel > eipmList = new List < examImageParaModel > ( ) ;
int [ ] array1 = strCount ( "^Base64^" , deviceDataStr ) ;
string keyStr = "||||||F" ; //结束符
List < string > 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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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" ; //项目代号
2024-12-16 10:00:55 +08:00
erm . itemValue = resulteArray [ i + 4 ] . Substring ( 4 , 6 ) . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
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" ; //项目代号
2024-12-16 10:00:55 +08:00
erm11 . itemValue = resulteArray [ i + 15 ] . Replace ( "Color:" , "" ) . Trim ( ) ; //项目结果
2024-12-12 14:03:53 +08:00
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 ) ;
}
2024-12-17 15:44:54 +08:00
}
if ( apiOptions . CurrentDevice = = "U120" ) //尿常规U120
{
string MachineCode = apiOptions . MachineCode ;
string MachineID = apiOptions . MachineID ;
List < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 + + )
{
2024-12-20 14:29:34 +08:00
for ( int j = 0 ; j < valArray . Length - 1 ; j + + )
2024-12-17 15:44:54 +08:00
{
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 ) ;
2024-12-12 14:03:53 +08:00
}
2024-12-13 09:47:28 +08:00
if ( apiOptions . CurrentDevice = = "BS-460" ) //生化BS-460
{
string MachineCode = apiOptions . MachineCode ;
string MachineID = apiOptions . MachineID ;
List < examResultMode > ermList = new List < examResultMode > ( ) ;
2024-12-17 15:44:54 +08:00
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" , "尿酸" } ; //
2024-12-13 09:47:28 +08:00
deviceDataStr = deviceDataStr . Replace ( "\r" , "" ) . Replace ( "\n" , "" ) ;
//string[] valArray = deviceDataStr.Split(',');
string [ ] valArray = deviceDataStr . Split ( '|' ) ;
string sampleNo1 = valArray [ 54 ] ; //样本号
2024-12-12 14:03:53 +08:00
2024-12-13 09:47:28 +08:00
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 ) ;
}
2024-12-17 15:44:54 +08:00
//将结果提交到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
2024-12-16 11:06:38 +08:00
{
string MachineCode = apiOptions . MachineCode ;
string MachineID = apiOptions . MachineID ;
2024-12-17 15:44:54 +08:00
List < examResultMode > ermList = new List < examResultMode > ( ) ;
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" } ; //
2024-12-16 11:06:38 +08:00
deviceDataStr = deviceDataStr . Replace ( "\r" , "" ) . Replace ( "\n" , "" ) ;
2024-12-17 15:44:54 +08:00
//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 ) ;
2024-12-13 09:47:28 +08:00
2024-12-17 15:44:54 +08:00
}
2024-12-13 09:47:28 +08:00
//将结果提交到LIS系统
baseMsgModel bmm1 = apiOptions . CreateInstance ( ) . upLoadExamResult ( ermList ) ;
string jsonStr = JsonConvert . SerializeObject ( ermList ) ;
if ( bmm1 . code = = 200 )
2024-12-17 15:44:54 +08:00
dataOutPutShow ( "数据提交成功:" + jsonStr , null ) ;
2024-12-13 09:47:28 +08:00
else
2024-12-17 15:44:54 +08:00
dataOutPutShow ( "数据提交失败:" + jsonStr , null ) ;
2024-12-12 14:03:53 +08:00
2024-12-13 09:47:28 +08:00
}
2024-12-19 14:49:02 +08:00
if ( apiOptions . CurrentDevice = = "BS-460-2" ) //生化BS-460
{
string MachineCode = apiOptions . MachineCode ;
string MachineID = apiOptions . MachineID ;
List < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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 ) ;
2024-12-17 15:44:54 +08:00
2024-12-19 14:49:02 +08:00
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 ) ;
}
2025-01-08 17:49:35 +08:00
}
if ( apiOptions . CurrentDevice = = "Z3 CRP" ) //Z3 血常规
{
string MachineCode = apiOptions . MachineCode ;
string MachineID = apiOptions . MachineID ;
List < examResultMode > ermList = new List < examResultMode > ( ) ;
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 ) ;
2024-12-19 14:49:02 +08:00
}
2024-12-12 14:03:53 +08:00
return rerultJson ;
}
2024-12-16 10:00:55 +08:00
2024-12-12 14:03:53 +08:00
/// <summary>
/// 从结果字符串中截取 结果
/// </summary>
/// <param name="itemStr"></param>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
string jiexiItemValue ( string itemStr , string deviceDataStr )
{
string ItemValueStr = "" ;
2024-12-13 09:47:28 +08:00
try
{
2024-12-17 15:44:54 +08:00
2024-12-13 09:47:28 +08:00
string Str1 = deviceDataStr . Substring ( deviceDataStr . IndexOf ( itemStr ) + itemStr . Length , 30 ) ;
int firstIndex = Str1 . IndexOf ( '|' ) ;
ItemValueStr = Str1 . Substring ( 0 , firstIndex ) ;
2024-12-17 15:44:54 +08:00
}
catch ( Exception ex ) { MessageBox . Show ( itemStr + "," + deviceDataStr ) ; }
2024-12-12 14:03:53 +08:00
return ItemValueStr ;
}
2024-12-13 09:47:28 +08:00
/// <summary>
/// 从结果字符串中截取 结果
/// </summary>
/// <param name="itemStr"></param>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
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 ) ;
2024-12-12 14:03:53 +08:00
2024-12-13 09:47:28 +08:00
}
catch ( Exception ex ) { /*MessageBox.Show(itemStr + "," + deviceDataStr);*/ }
return ItemValueStr ;
}
2024-12-12 14:03:53 +08:00
/// <summary>
/// 从结果字符串中截取 结果
/// </summary>
/// <param name="itemStr"></param>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
string jiexiItemValueLast ( string itemStr , string deviceDataStr )
{
string ItemValueStr = "" ;
2024-12-16 10:00:55 +08:00
string Str1 = deviceDataStr . Substring ( deviceDataStr . LastIndexOf ( itemStr ) + itemStr . Length + 1 , 10 ) ;
2024-12-12 14:03:53 +08:00
int firstIndex = Str1 . IndexOf ( '|' ) ;
ItemValueStr = Str1 . Substring ( 0 , firstIndex ) ;
return ItemValueStr ;
}
/// <summary>
/// 从字符串中找到 样本编号
/// </summary>
/// <param name="itemStr"></param>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 从字符串中找到 样本编号
/// </summary>
/// <param name="itemStr"></param>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 从字符串中 解析出数字
/// </summary>
/// <param name="itemStr"></param>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
2024-12-16 10:00:55 +08:00
string jiexiVal ( int index1 , string keyStr , string dataStr )
2024-12-12 14:03:53 +08:00
{
2024-12-16 10:00:55 +08:00
string val1 = "" ;
2024-12-12 14:03:53 +08:00
for ( int i = 1 ; i < 100 ; i + + )
{
try
{
2024-12-16 10:00:55 +08:00
string str1 = dataStr . Substring ( index1 + keyStr . Length , i ) ;
2024-12-12 14:03:53 +08:00
double valx = double . Parse ( str1 ) ;
val1 = str1 ;
}
catch { break ; }
}
return val1 ;
}
2024-12-16 10:00:55 +08:00
2024-12-12 14:03:53 +08:00
/// <summary>
/// 从字符串中 解析出 jiexiBase64 图像
/// </summary>
/// <param name="itemStr"></param>
/// <param name="deviceDataStr"></param>
/// <returns></returns>
List < string > jiexiBase64 ( int [ ] array1 , string keyStr , string dataStr )
{
2024-12-16 10:00:55 +08:00
List < string > imageBase64List = new List < string > ( ) ;
2024-12-12 14:03:53 +08:00
for ( int i = 0 ; i < array1 . Length ; i + + )
{
2024-12-16 10:00:55 +08:00
for ( int b = array1 [ i ] ; b < dataStr . Length ; b + + )
2024-12-12 14:03:53 +08:00
{
string str1 = dataStr . Substring ( b , keyStr . Length ) ;
2024-12-16 10:00:55 +08:00
if ( str1 = = keyStr )
{
string ImgBase64Str = dataStr . Substring ( array1 [ i ] + 8 , b - array1 [ i ] - 8 ) ;
2024-12-12 14:03:53 +08:00
imageBase64List . Add ( ImgBase64Str ) ;
2024-12-16 10:00:55 +08:00
break ;
2024-12-12 14:03:53 +08:00
}
}
}
return imageBase64List ;
}
2024-12-16 10:00:55 +08:00
static string jiexiDate ( string dateStr , string TimeStr )
2024-12-12 14:03:53 +08:00
{
string [ ] spArray = dateStr . Trim ( ) . Split ( ' ' ) ;
2024-12-16 10:00:55 +08:00
string [ ] varArray = spArray [ 2 ] . Trim ( ) . Trim ( '\r' ) . Split ( '-' ) ;
return varArray [ 2 ] + "-" + varArray [ 0 ] + "-" + varArray [ 1 ] + " " + TimeStr . Trim ( ) . Trim ( '\r' ) ;
2024-12-12 14:03:53 +08:00
}
Socket listener ;
//TcpListener listener = null;
/// <summary>
/// 开启数据接收
/// </summary>
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 ( ) ; //开启数据接收
}
2024-12-19 14:49:02 +08:00
if ( apiOptions . CurrentDevice = = "BA600-1" ) //尿常规 GeniusBA600
{
SerialPortOption . CreateInstance ( ) . IniserialPortOption ( ) ; //初始化串口
SerialPortOption . CreateInstance ( ) . dataOutPutShow + = new EventHandler ( onReData ) ;
SerialPortOption . CreateInstance ( ) . StartDataReadThread ( ) ; //开启数据接收
}
2024-12-12 14:03:53 +08:00
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 ] ;
2024-12-17 15:44:54 +08:00
// IPAddress ipAddress = IPAddress.Parse(tcp_ip);
IPAddress ipAddress = IPAddress . Any ;
2024-12-12 14:03:53 +08:00
// 创建一个监听Socket
if ( listener = = null )
{
2024-12-13 09:47:28 +08:00
//listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
2024-12-17 15:44:54 +08:00
listener = new Socket ( AddressFamily . InterNetwork , SocketType . Stream , ProtocolType . Tcp ) ;
2024-12-13 09:47:28 +08:00
listener . Bind ( new IPEndPoint ( IPAddress . Any , int . Parse ( tcp_port ) ) ) ;
2024-12-12 14:03:53 +08:00
listener . Listen ( 10000 ) ;
}
_tcpResult . Change ( 0 , 10 ) ; //开始tcp数据接收, 10毫秒频率
}
2024-12-13 09:47:28 +08:00
if ( apiOptions . CurrentDevice = = "DF55-1" ) //帝迈血常规DF55
2024-12-12 14:03:53 +08:00
{
// 设置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毫秒频率
}
2024-12-17 15:44:54 +08:00
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
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毫秒频率
}
2024-12-12 14:03:53 +08:00
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 ( ) ; //开启数据接收
}
2024-12-13 09:47:28 +08:00
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毫秒频率
}
2024-12-19 14:49:02 +08:00
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
2024-12-17 15:44:54 +08:00
{
// 设置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毫秒频率
}
2025-01-08 17:49:35 +08:00
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毫秒频率
}
2024-12-12 14:03:53 +08:00
}
/// <summary>
/// 将接收到的数据进行处理并显示在软件界面上
/// </summary>
/// <param name="o"></param>
/// <param name="e"></param>
void onReData ( object o , EventArgs e )
{
2024-12-13 09:33:58 +08:00
if ( o . ToString ( ) . Length > 2 )
{
tempData + = o . ToString ( ) ; //把串口数据积累起来
//MessageBox.Show(o.ToString().Length.ToString());
dataOutPutShow ( o , null ) ; //把数据显示到屏幕上
}
2024-12-16 10:00:55 +08:00
2024-12-12 14:03:53 +08:00
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秒计时
2024-12-19 14:49:02 +08:00
if ( apiOptions . CurrentDevice = = "BA600-1" ) //尿常规 GeniusBA600
_tResult . Change ( 5000 , 5000 ) ; // 数据处理: 延迟5秒开始 5秒计时
2024-12-12 14:03:53 +08:00
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
{
2024-12-13 09:33:58 +08:00
//File.WriteAllText("deviceDataLog.txt", deviceDataStr, Encoding.GetEncoding("GB18030"));
2024-12-16 10:00:55 +08:00
2024-12-12 14:03:53 +08:00
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
{
2024-12-13 09:33:58 +08:00
// _tResult.Change(5000, 5000);// 数据处理: 延迟5秒开始 5秒计时
2024-12-16 10:00:55 +08:00
if ( tempData . Contains ( "OBX|30|" ) | | tempData . Contains ( "OBX|29|" ) ) //OBX|12|ST| 为结束符 说明字符串完整了
2024-12-13 09:33:58 +08:00
{
2024-12-16 10:00:55 +08:00
// MessageBox.Show(tempData);
2024-12-13 09:33:58 +08:00
deviceAnalysisOption ( tempData ) ;
tempData = string . Empty ; //执行完以后 将临时积累数据清空 以便接收下一个样本数据
}
2024-12-12 14:03:53 +08:00
}
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秒计时
2024-12-13 09:47:28 +08:00
2024-12-17 15:44:54 +08:00
if ( apiOptions . CurrentDevice = = "U120" ) //尿常规U120
{
_tResult . Change ( 5000 , 5000 ) ; // 数据处理: 延迟5秒开始 5秒计时
}
if ( apiOptions . CurrentDevice = = "BS-330E" ) //BS-330E
{
2024-12-20 14:29:34 +08:00
if ( tempData . Split ( ' ' ) . Length > = 12 & & ( tempData . Contains ( "LDL-C" ) & & Regex . Matches ( tempData , "LDL-C" ) . Count > 1 ) )
2024-12-17 15:44:54 +08:00
{
deviceAnalysisOption ( tempData ) ;
tempData = string . Empty ; //执行完以后 将临时积累数据清空 以便接收下一个样本数据
}
}
if ( apiOptions . CurrentDevice = = "BC-5120" ) //BC-5120
{
_tResult . Change ( 5000 , 5000 ) ; // 数据处理: 延迟5秒开始 5秒计时
}
2024-12-13 09:47:28 +08:00
if ( apiOptions . CurrentDevice = = "BS-460" ) //生化BS-460
{
//File.WriteAllText("deviceDataLog.txt", deviceDataStr, Encoding.GetEncoding("GB18030"));
2024-12-19 14:49:02 +08:00
if ( tempData . Contains ( "OBX|17|" ) ) //OBX|22| 为结束符 说明字符串完整了 OBX|17|
2024-12-13 09:47:28 +08:00
{
deviceAnalysisOption ( tempData ) ;
tempData = string . Empty ; //执行完以后 将临时积累数据清空 以便接收下一个样本数据
}
2024-12-17 15:44:54 +08:00
// _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 ; //执行完以后 将临时积累数据清空 以便接收下一个样本数据
// }
2024-12-13 09:47:28 +08:00
// _tResult.Change(10000, 10000);// 数据处理: 延迟5秒开始 5秒计时
}
2024-12-19 14:49:02 +08:00
if ( apiOptions . CurrentDevice = = "BS-460-2" ) //生化BS-460
{
deviceAnalysisOption ( tempData ) ;
tempData = string . Empty ; //执行完以后 将临时积累数据清空 以便接收下一个样本数据
}
2025-01-08 17:49:35 +08:00
if ( apiOptions . CurrentDevice = = "Z3 CRP" ) //血常规Z3
{
if ( tempData . Contains ( "OBX|26|" ) ) //OBX|25| 为结束符 说明字符串完整了
{
deviceAnalysisOption ( tempData ) ;
tempData = string . Empty ; //执行完以后 将临时积累数据清空 以便接收下一个样本数据
}
//_tResult.Change(5000, 5000);// 数据处理: 延迟5秒开始 5秒计时
}
2024-12-12 14:03:53 +08:00
}
/// <summary>
/// 定时器 定时来处理接收到的累计临时数据
/// </summary>
void TResultTick ( )
{
_tResult . Change ( - 1 , 5000 ) ; //暂停计时
deviceAnalysisOption ( tempData ) ;
tempData = string . Empty ; //执行完以后 将临时积累数据清空 以便接收下一个样本数据
}
Socket clientSocket ;
int msgindex = 1 ;
/// <summary>
/// 定时器 定时来处理TCP接收到的累计临时数据
/// </summary>
void tcpResultTick ( )
{
byte [ ] data = new byte [ 40048 ] ;
if ( apiOptions . CurrentDevice ! = "BC-5130" ) //如果设备是 apiOptions.CurrentDevice=== "BC-5130" 这个设备在 启动时就已经主动连上了 "BC-5130" 设备,这里就无需初始化连接 直接跳过
{
if ( clientSocket = = null )
clientSocket = listener . Accept ( ) ; //一旦接受连接,创建一个客户端
}
2024-12-16 10:00:55 +08:00
2024-12-12 14:03:53 +08:00
int recv = clientSocket . Receive ( data ) ;
if ( recv > 0 )
{
2024-12-16 10:00:55 +08:00
byte [ ] data1 = new byte [ recv ] ;
for ( int i = 0 ; i < recv ; i + + )
2024-12-13 09:33:58 +08:00
data1 [ i ] = data [ i ] ;
2024-12-12 14:03:53 +08:00
string encodingStr = ConfigurationManager . AppSettings [ apiOptions . CurrentDevice ] . Split ( ',' ) [ 5 ] ;
2024-12-13 09:33:58 +08:00
string stringData = Encoding . GetEncoding ( encodingStr ) . GetString ( data1 ) ;
2024-12-12 14:03:53 +08:00
if ( apiOptions . CurrentDevice = = "SL300C" ) //Senlo生化SL300C 接收一条数据就需要应答一次
{
string [ ] msgArray = stringData . Split ( '\n' ) ;
for ( int i = 0 ; i < msgArray . Length ; i + + )
{
2024-12-16 10:00:55 +08:00
if ( msgArray [ i ] . Contains ( "MSH|" ) & & msgArray [ i ] . Contains ( "||UNICODE||" ) )
2024-12-12 14:03:53 +08:00
{
2024-12-16 10:00:55 +08:00
string msgId = msgArray [ i ] . Substring ( msgArray [ i ] . IndexOf ( "R01|" ) + 4 , msgArray [ i ] . IndexOf ( "|P|" ) - msgArray [ i ] . IndexOf ( "R01|" ) - 4 ) ;
2024-12-12 14:03:53 +08:00
string dateTimeNowStr = DateTime . Now . ToString ( "yyyyMMddHHmmss" ) ;
2024-12-16 10:00:55 +08:00
string responseMsg = "<SB>MSH|^~\\&|1|1|11|1|" + dateTimeNowStr + "||ACK^R01|" + msgId + "|P|2.3.1||||0||UNICODE|||<CR>MSA|AA|" + msgId + "||||0|<CR><EB><CR>" ;
2024-12-12 14:03:53 +08:00
byte [ ] sendBytes = Encoding . Unicode . GetBytes ( responseMsg ) ;
clientSocket . Send ( sendBytes ) ;
2024-12-16 10:00:55 +08:00
onReData ( "应答消息:" + responseMsg , null ) ; //数据处理 并将数据显示在软件界面上
2024-12-12 14:03:53 +08:00
}
}
2024-12-16 10:00:55 +08:00
2024-12-12 14:03:53 +08:00
}
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" ;
2024-12-16 10:00:55 +08:00
DataTable dt_2 = new DataTable ( ) ;
2024-12-12 14:03:53 +08:00
try
{
dt_2 = accessOptions . CreateInstance ( accessDbPath ) . ExcuteSql ( sql ) ;
}
catch { dt_2 = null ; }
2024-12-16 10:00:55 +08:00
if ( dt_2 = = null )
2024-12-12 14:03:53 +08:00
return ;
List < examResultMode > ermList = new List < examResultMode > ( ) ;
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 < examResultMode > ermList = new List < examResultMode > ( ) ;
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秒频率
}
}
/// <summary>
/// 停止数据接收
/// </summary>
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 ( ) ; //开启数据接收
}
2024-12-19 14:49:02 +08:00
if ( apiOptions . CurrentDevice = = "BA600-1" ) //尿常规 GeniusBA600
{
SerialPortOption . CreateInstance ( ) . StopDataReadThread ( ) ; //开启数据接收
}
2024-12-12 14:03:53 +08:00
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 ( ) ; //开启数据接收
}
2024-12-17 15:44:54 +08:00
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 ( ) ;
}
2024-12-13 09:47:28 +08:00
if ( apiOptions . CurrentDevice = = "BS-460" ) //生化BS-460
{
_tcpResult . Change ( - 1 , 10 ) ; //停止tcp数据接收
clientSocket . Close ( ) ;
}
2024-12-17 15:44:54 +08:00
if ( apiOptions . CurrentDevice = = "BS-460-1" ) //生化BS-460
{
_tcpResult . Change ( - 1 , 10 ) ; //停止tcp数据接收
clientSocket . Close ( ) ;
}
2024-12-19 14:49:02 +08:00
if ( apiOptions . CurrentDevice = = "BS-460-2" ) //生化BS-460
{
_tcpResult . Change ( - 1 , 10 ) ; //停止tcp数据接收
clientSocket . Close ( ) ;
}
2025-01-08 17:49:35 +08:00
if ( apiOptions . CurrentDevice = = "Z3 CRP" ) //帝迈血常规DH56
{
_tcpResult . Change ( - 1 , 10 ) ; //停止tcp数据接收
clientSocket . Close ( ) ;
}
2024-12-12 14:03:53 +08:00
}
///// <summary>
///// 开启tcp数据接收
///// </summary>
//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);//将数据显示在软件界面上
// }
//}
}
}