using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System;
using System.Data;
namespace BatchService.Framework.Utility
{
public class LISHelper
{
public enum SampleQueryActionType
{
SampleInfo,
ResultInfo,
ValidatedReulstInfo_TB_LABRESULT,
ValidatedReulstInfo_TB_LABRESULTXJ,
ValidatedResultInfo_TB_CURRENT_ITEM_RESULT,
ValidatedResultInfo_BACT,
SampleInfoAndResultInfo,
SampleFee,
///
/// 未发送给HIS的标本
///
UnSendSampleInfo,
///
/// 取消审核的标本
///
CanceledSampleInfo,
TB_INSTRUMENT_LIST,
}
public enum ItemQueryActionType
{
TB_ITEM_PROPERTY,
GetCalcuatedItemProperty,
}
public enum DicType
{
TB_INSTRUMENT_LIST,
TB_OPERATOR,
TB_CODE_INFO,
}
public enum UpdateActionType
{
Sending,
Sended,
SendError,
}
public static string EncryptString(string sourceText)
{
string is_out = "";
long il_x, il_y, il_len, il_bit;
il_len = sourceText.Length;
il_x = 0;
il_y = 0;
is_out = "";
for (var i = 0; i < il_len; i++)
{
il_bit = (int)((char)sourceText.Substring(i, 1)[0]);
il_y = ((il_bit * 13) % 256) + il_x;
is_out = is_out + (char)(il_y);
il_x = (il_bit * 13) / 256;
}
is_out = is_out + (char)(il_x);
sourceText = is_out;
il_len = sourceText.Length;
il_x = 0;
il_y = 0;
is_out = "";
for (var i = 0; i < il_len; i++)
{
il_bit = (int)((char)sourceText.Substring(i, 1)[0]);
il_y = (il_bit / 16) + 64;
is_out = is_out + (char)(il_y);
il_y = (il_bit % 16) + 64;
is_out = is_out + (char)(il_y);
}
if (is_out == "@@")
{
is_out = "";
}
return is_out;
}
public string GetAlarmTestItem(string lisconnString, string sampleDate, string instrument, string sampleno, string itemCode)
{
string sql = string.Format("SELECT a.* FROM TB_REPORTLIMIT a WHERE a.sample_date='{0}' and a.instrument='{1}' and a.sample_no='{2}' and a.item_code='{3}'",
sampleDate, instrument, sampleno, itemCode);
var ds = SqlHelper.ExecuteDataset(lisconnString, CommandType.Text, sql);
return JsonConvert.SerializeObject(ds.Tables[0], new DataTableConverter());
}
public string GetAlarmSamplesBySampleDate(string lisConnString, string sampleDate, string sendflag)
{
string sql = string.Format("SELECT a.*,b.FIRST_VALIDATE_DATE,b.PATIENT_TYPE,b.VALIDATE_DOCTOR,rtrim(c.code_info) as 'dept' FROM TB_REPORTLIMIT a " +
" left join tb_current_sample_info b on a.sample_date=b.sample_date and a.sample_no=b.sample_no and a.instrument=b.instrument " +
" left join tb_code_info c on b.department=c.code_name and code_kind='DP'" +
" WHERE a.sample_date>='{0}'", sampleDate);
if (sendflag == null)
{
sql += " and (a.sendflag is null or a.sendflag='9')";
}
else
{
sql += string.Format(" and a.sendflag = '{0}'", sendflag);
}
sql += " ORDER BY a.sample_date,a.instrument, a.sample_no,a.item_code";
var ds = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql);
return JsonConvert.SerializeObject(ds.Tables[0], new DataTableConverter());
}
public void UpdateAlarmSampleState(string lisConnString, string sampledate, string instrument, string sampleno, string sendflag)
{
string sql = string.Format("update TB_REPORTLIMIT set sendflag='{0}' where sample_date='{1}' and instrument='{2}' and sample_no='{3}'",
sendflag, sampledate, instrument, sampleno);
SqlHelper.ExecuteNonQuery(lisConnString, CommandType.Text, sql);
}
public string GetDicInfo(string lisConnString,
DicType dicType, JObject paraJson)
{
string sql = "";
switch (dicType)
{
case DicType.TB_OPERATOR:
sql = string.Format("SELECT OPERATOR_ID, OPERATE_NAME, VALIDATE_FLAG, PASSWORD, SHORTNAME, ROLE, " +
"DEPARTMENT, REFRESH_FLAG, LAST_MODIFIED, updatetime FROM dbo.TB_OPERATOR");
break;
case DicType.TB_INSTRUMENT_LIST:
if (paraJson.Count == 0)
{
sql = string.Format("SELECT * FROM dbo.TB_INSTRUMENT_LIST");
}
else
{
sql = string.Format("SELECT * FROM dbo.TB_INSTRUMENT_LIST where INSTRUMENT_CODE='{0}'",
paraJson["Instrument"].ToString());
}
break;
case DicType.TB_CODE_INFO:
sql = string.Format("SELECT * FROM TB_CODE_INFO where CODE_KIND='{0}' order by CODE_NAME", StringHelper.GetString(paraJson["CODE_KIND"]));
break;
}
var dt = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql).Tables[0];
if (dt.Rows.Count == 0)
{
return "";
}
return JsonConvert.SerializeObject(dt, new DataTableConverter());
}
///
/// 执行LIS标本相关查询
///
/// LIS连接字符串
/// JSON参数对象,Instrument,SampleDate,SampleNo
/// 返回JSON
public string ExecuteSampleQueryAction(string lisConnString,
SampleQueryActionType queryActionType,
string instrument = "",
string sampleDate = "",
string sampleNo = "",
int topNumber = 0)
{
string sql = "";
string temp = "";
switch (queryActionType)
{
case SampleQueryActionType.SampleInfo:
sql = string.Format("SELECT * FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_INSTRUMENT_LIST b ON a.INSTRUMENT=b.INSTRUMENT_CODE" +
" WHERE a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' AND a.SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo);
break;
case SampleQueryActionType.SampleInfoAndResultInfo:
sql = string.Format("SELECT * FROM TB_CURRENT_SAMPLE_INFO a INNER JOIN TB_CURRENT_ITEM_RESULT b " +
" ON a.SAMPLE_DATE=b.SAMPLE_DATE AND a.INSTRUMENT=b.INSTRUMENT AND a.SAMPLE_NO=b.SAMPLE_NO" +
" WHERE a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' AND a.SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo);
break;
case SampleQueryActionType.ResultInfo:
sql = string.Format("SELECT * FROM TB_CURRENT_ITEM_RESULT a " +
"WHERE a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' AND a.SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo);
break;
case SampleQueryActionType.ValidatedResultInfo_TB_CURRENT_ITEM_RESULT:
sql = string.Format("SELECT * FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_CURRENT_ITEM_RESULT b ON a.SAMPLE_DATE=b.SAMPLE_DATE " +
" INNER JOIN TB_ITEM_PROPERTY c ON b.INSTRUMENT=c.INSTRUMENT and b.ITEM_CODE=c.ITEM_CODE " +
" AND a.INSTRUMENT=b.INSTRUMENT AND a.SAMPLE_NO=b.SAMPLE_NO " +
" WHERE a.VALIDATE_FLAG='2' and a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' " +
" AND a.SAMPLE_NO='{2}' and c.print_type='1' order by c.REPORT_SEQ",
sampleDate, instrument, sampleNo);
break;
case SampleQueryActionType.ValidatedReulstInfo_TB_LABRESULT:
sql = string.Format("SELECT b.*,c.IS_COUNT,c.FORMULA FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_LABRESULT b ON a.SAMPLE_DATE=b.SAMPLE_DATE " +
" AND a.INSTRUMENT=b.INSTRUMENT AND a.SAMPLE_NO=b.SAMPLE_NO " +
" INNER JOIN TB_ITEM_PROPERTY c on b.instrument=c.INSTRUMENT and b.item_no=c.ITEM_CODE " +
" WHERE left(a.instrument,3)<>'@#@' and a.VALIDATE_FLAG='2' and a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' " +
" AND a.SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo);
break;
case SampleQueryActionType.ValidatedReulstInfo_TB_LABRESULTXJ:
sql = string.Format("SELECT b.* FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_LABRESULTXJ b ON a.SAMPLE_DATE=b.SAMPLE_DATE " +
" AND a.INSTRUMENT=b.INSTRUMENT AND a.SAMPLE_NO=b.SAMPLE_NO " +
" WHERE a.VALIDATE_FLAG='2' and a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' " +
" AND a.SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo);
break;
case SampleQueryActionType.SampleFee:
sql = string.Format("SELECT a.* FROM TB_CURRENT_SAMPLE_FEE a " +
" WHERE a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' AND a.SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo);
break;
case SampleQueryActionType.UnSendSampleInfo:
if (topNumber > 0)
{
temp = " top " + topNumber;
}
sql = string.Format("select * from (SELECT {0} a.*,b.INSTRUMENT_KIND,b.INSTRUMENT_NAME FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_INSTRUMENT_LIST b ON a.INSTRUMENT=b.INSTRUMENT_CODE" +
" WHERE 1=1 " +
" AND a.VALIDATE_FLAG='2' AND (a.SendFlag IS NULL OR a.SendFlag=0) and " +
" (a.BARCODE is not null and a.BARCODE<>'') and a.SAMPLE_DATE>=getdate()-30 order by a.sample_date desc,a.first_validate_date asc) aa " +
"union all " +
"select * from (SELECT {0} a.*,b.INSTRUMENT_KIND,b.INSTRUMENT_NAME FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_INSTRUMENT_LIST b ON a.INSTRUMENT=b.INSTRUMENT_CODE" +
" WHERE 1=1 " +
" AND a.VALIDATE_FLAG='2' AND a.SendFlag =99 and " +
" (a.BARCODE is not null and a.BARCODE<>'') and a.SAMPLE_DATE>=getdate()-30 order by a.sample_date desc,a.first_validate_date asc) bb " +
"union all " +
"select * from (SELECT top 1 a.*,b.INSTRUMENT_KIND,b.INSTRUMENT_NAME FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_INSTRUMENT_LIST b ON a.INSTRUMENT=b.INSTRUMENT_CODE" +
" WHERE 1=1 " +
" AND a.VALIDATE_FLAG='2' AND a.SendFlag<0 and " +
" (a.BARCODE is not null and a.BARCODE<>'') and a.SAMPLE_DATE>=getdate()-30 order by a.sample_date desc,a.sendtime asc) cc ",
temp,
sampleDate,
DateTime.Today.AddDays(-3));
break;
case SampleQueryActionType.CanceledSampleInfo:
if (topNumber > 0)
{
temp = " top " + topNumber;
}
sql = string.Format("SELECT {0} a.*,b.INSTRUMENT_KIND,b.INSTRUMENT_NAME FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_INSTRUMENT_LIST b ON a.INSTRUMENT=b.INSTRUMENT_CODE" +
" WHERE a.SAMPLE_DATE='{1}' " +
" AND a.VALIDATE_FLAG='1' AND (a.SendFlag =-2) and " +
" (a.ORDER_NO is not null and a.ORDER_NO<>'')",
temp,
sampleDate);
break;
case SampleQueryActionType.TB_INSTRUMENT_LIST:
sql = string.Format("SELECT * from TB_INSTRUMENT_LIST a" +
" WHERE a.INSTRUMENT_CODE='{0}'",
instrument);
break;
case SampleQueryActionType.ValidatedResultInfo_BACT:
sql = string.Format("SELECT c.TEST_METHOD as 'anti_testmethod', c.current_result as 'anti_result',c.addt_result as 'anti_addtresult', * FROM TB_CURRENT_SAMPLE_INFO a " +
" INNER JOIN TB_BIO_CURRENT_BACT_RESULT b ON a.SAMPLE_DATE=b.SAMPLE_DATE AND a.INSTRUMENT=b.INSTRUMENT AND a.SAMPLE_NO=b.SAMPLE_NO " +
" LEFT JOIN TB_BIO_CURRENT_ANTI_RESULT c ON b.SAMPLE_DATE=c.SAMPLE_DATE AND b.INSTRUMENT=c.INSTRUMENT AND b.SAMPLE_NO=c.SAMPLE_NO AND b.BACT_CODE=c.BACT_CODE" +
" LEFT JOIN TB_BIO_ANTIBIOTICS_ITEM d ON c.INSTRUMENT=d.INSTRUMENT AND c.ANTI_CODE=d.ANTI_CODE" +
" WHERE a.VALIDATE_FLAG='2' and a.SAMPLE_DATE='{0}' AND a.INSTRUMENT='{1}' " +
" AND a.SAMPLE_NO='{2}' order by a.sample_date, a.instrument,a.sample_no,d.report_seq",
sampleDate, instrument, sampleNo);
break;
}
var dt = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql).Tables[0];
if (dt.Rows.Count == 0)
{
return "";
}
return JsonConvert.SerializeObject(dt, new DataTableConverter());
}
public int UpdateSentFlag(string lisConnString,
UpdateActionType updateActionType,
string instrument = "",
string sampleDate = "",
string sampleNo = "",
string message = "")
{
string sql = "";
string temp = "";
message = message.Replace("'", "");
switch (updateActionType)
{
case UpdateActionType.Sending:
sql = string.Format("update TB_CURRENT_SAMPLE_INFO set sendflag=1,sendtime='{3}',sendMessage='{4}'" +
" WHERE SAMPLE_DATE='{0}' AND INSTRUMENT='{1}' AND SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), message);
break;
case UpdateActionType.Sended:
sql = string.Format("update TB_CURRENT_SAMPLE_INFO set sendflag=2,sendtime='{3}',sendMessage='{4}'" +
" WHERE SAMPLE_DATE='{0}' AND INSTRUMENT='{1}' AND SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), message);
break;
case UpdateActionType.SendError:
sql = string.Format("update TB_CURRENT_SAMPLE_INFO set sendflag=-1,sendtime='{3}',sendMessage='{4}'" +
" WHERE SAMPLE_DATE='{0}' AND INSTRUMENT='{1}' AND SAMPLE_NO='{2}'",
sampleDate, instrument, sampleNo, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), message);
break;
}
return SqlHelper.ExecuteNonQuery(lisConnString, CommandType.Text, sql);
}
public string ExecuteItemQueryAction(string lisConnString,
ItemQueryActionType itemActionType,
string instrument = "",
string itemCode = "",
string result = "",
string gender = "",
string age = "",
string sampletype = "",
string diagnose = "")
{
string json = "";
string sql = "";
switch (itemActionType)
{
case ItemQueryActionType.GetCalcuatedItemProperty:
JObject itemProperty = new JObject();
itemProperty.Add("ItemCode", "");
itemProperty.Add("ItemName", "");
itemProperty.Add("Ref", "");
itemProperty.Add("Unit", "");
itemProperty.Add("RefLowest", "");
itemProperty.Add("RefHighest", "");
itemProperty.Add("ResultFlag", "M");
sql = string.Format("SELECT * FROM TB_ITEM_PROPERTY a " +
" WHERE a.INSTRUMENT='{0}' AND a.ITEM_CODE='{1}'",
instrument, itemCode);
var dt = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql).Tables[0];
DataRow row = dt.Rows[0];
itemProperty["ItemCode"] = StringHelper.GetString(row["ITEM_CODE"]);
itemProperty["ItemName"] = StringHelper.GetString(row["ITEM_NAME"]);
itemProperty["Ref"] = StringHelper.GetString(row["REPORT_LIMIT"]);
itemProperty["Unit"] = StringHelper.GetString(row["UNIT"]);
itemProperty["RefLowest"] = StringHelper.GetString(row["NORMAL_LOW"], "0");
itemProperty["RefHighest"] = StringHelper.GetString(row["NORMAL_HIGH"], "0");
if (StringHelper.IsNumeric(result) && !string.IsNullOrEmpty(StringHelper.GetString(row["REPORT_LIMIT"])))
{
double db_result = 0;
double db_high = 0;
double db_low = 0;
double.TryParse(result, out db_result);
double.TryParse(StringHelper.GetString(itemProperty["RefLowest"]), out db_low);
double.TryParse(StringHelper.GetString(itemProperty["RefHighest"]), out db_high);
LogHelper.Debug(string.Format("ItemCode:{0},ItemName:{1},Result:{2},Ref:{3},Low:{4},High:{5}",
StringHelper.GetString(row["ITEM_CODE"]),
StringHelper.GetString(row["ITEM_NAME"]),
db_result,
StringHelper.GetString(row["REPORT_LIMIT"]),
db_low,
db_high));
if (db_high >= db_low)
{
if (db_result > db_high)
{
itemProperty["ResultFlag"] = "H";
}
else if (db_result < db_low)
{
itemProperty["ResultFlag"] = "L";
}
}
}
sql = "";
string sql_temp = string.Format("SELECT * FROM TB_ITEM_LIMITS where 1=1 " +
" and INSTRUMENT='{0}' and ITEM_CODE='{1}' ",
instrument, itemCode);
if (StringHelper.GetString(row["IS_GENDER"]) == "Y" && !string.IsNullOrEmpty(gender))
{
sql += string.Format(" and GENDER='{0}'", gender);
}
if (StringHelper.GetString(row["IS_AGE"]) == "Y" && !string.IsNullOrEmpty(age))
{
sql += string.Format(" and (AGE_LOW<={0} and AGE_HIGH>={0}) ", age);
}
if (StringHelper.GetString(row["IS_SAMPLETYPE"]) == "Y" && !string.IsNullOrEmpty(sampletype))
{
sql += string.Format(" and SAMPLE_TYPE='{0}'", sampletype);
}
if (StringHelper.GetString(row["IS_DISGNOSIS"]) == "Y" && !string.IsNullOrEmpty(diagnose))
{
sql += string.Format(" and DISGNOSIS='{0}'", diagnose);
}
if (!string.IsNullOrEmpty(sql))
{
sql = sql_temp + sql;
LogHelper.Debug("取参考值SQL:" + sql);
var dt_limit = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql).Tables[0];
if (dt_limit.Rows.Count > 0)
{
var row_limit = dt_limit.Rows[0];
itemProperty["Ref"] = StringHelper.GetString(row_limit["LIMIT_VALUE"]);
itemProperty["RefLowest"] = StringHelper.GetString(row_limit["LIMIT_LOW"], "0");
itemProperty["RefHighest"] = StringHelper.GetString(row_limit["LIMIT_HIGH"], "0");
double db_result = 0;
double db_limit_high = 0;
double db_limit_low = 0;
double.TryParse(result, out db_result);
double.TryParse(itemProperty["RefLowest"].ToString(), out db_limit_low);
double.TryParse(itemProperty["RefHighest"].ToString(), out db_limit_high);
itemProperty["ResultFlag"] = "M";
if (db_limit_high >= db_limit_low)
{
if (db_result > db_limit_high)
{
itemProperty["ResultFlag"] = "H";
}
else if (db_result < db_limit_low)
{
itemProperty["ResultFlag"] = "L";
}
}
LogHelper.Debug(string.Format("ItemCode:{0},ItemName:{1},Result:{2},Ref:{3},Low:{4},High:{5},flag:{6}",
row["ITEM_CODE"].ToString(),
row["ITEM_NAME"].ToString(),
db_result,
row["REPORT_LIMIT"].ToString(),
db_limit_low,
db_limit_high,
itemProperty["ResultFlag"].ToString()));
}
}
json = JsonConvert.SerializeObject(itemProperty);
break;
case ItemQueryActionType.TB_ITEM_PROPERTY:
sql = string.Format("SELECT * FROM TB_ITEM_PROPERTY a " +
" WHERE a.INSTRUMENT='{0}' AND a.ITEM_CODE='{1}'",
instrument, itemCode);
dt = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql).Tables[0];
json = JsonConvert.SerializeObject(dt, new DataTableConverter());
break;
}
return json;
}
public string GetTestItemesByFeeItemCode(string lisConnString,
string instrument = "",
string FeeItemCode = "")
{
var sql = string.Format("SELECT * FROM TB_FEEITEM_VS_REPORTITEM a " +
" WHERE a.INSTRUMENT='{0}' AND a.FEEITEM_NO='{1}'",
instrument, FeeItemCode);
var dt = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql).Tables[0];
if (dt.Rows.Count == 0)
{
return "";
}
return JsonConvert.SerializeObject(dt, new DataTableConverter());
}
public void TransferResultToLABRESULT(string lisConnString,
string instrument = "",
string sampleDate = "",
string sampleNo = "")
{
var jsonInstrumentInfo = ExecuteSampleQueryAction(lisConnString,
SampleQueryActionType.TB_INSTRUMENT_LIST, instrument);
var jsonInstrumentInfoObj = JsonConvert.DeserializeObject(jsonInstrumentInfo) as JArray;
if (StringHelper.GetString(jsonInstrumentInfoObj[0]["INSTRUMENT_KIND"]).ToUpper() == "XJ")
{
#region 细菌结果
string deleteSql = string.Format("delete FROM TB_LABRESULTXJ " +
" WHERE instrument='{0}' AND sample_no='{1}' AND sample_date='{2}'",
instrument,
sampleNo,
sampleDate);
SqlHelper.ExecuteNonQuery(lisConnString, CommandType.Text, deleteSql);
var jsonBactResults = ExecuteSampleQueryAction(lisConnString,
SampleQueryActionType.ValidatedResultInfo_BACT,
instrument, sampleDate, sampleNo);
var jsonBactResultsObj = JsonConvert.DeserializeObject(jsonBactResults) as JArray;
var index = 1;
foreach (var jsonBactResult in jsonBactResultsObj)
{
string sql = string.Format("SELECT COUNT(*) FROM TB_LABRESULTXJ a " +
" WHERE a.instrument='{0}' AND a.sample_no='{1}' AND a.sample_date='{2}' " +
" AND a.print_order='{3}'",
instrument,
sampleNo,
sampleDate,
index);
int rowCount = (int)SqlHelper.ExecuteScalar(lisConnString, CommandType.Text, sql);
if (rowCount > 0)
{
continue;
}
sql = string.Format("INSERT INTO TB_LABRESULTXJ " +
" (instrument, sample_no, sample_date, print_order, bact_code, bact_name, " +
" anti_code, anti_name, bact_result, resultkind, anti_Result, addt_result, " +
" test_method, result_date_time, feeitem_no, feeitem_name, order_no, reqno, " +
" bact_addtresult) " +
" VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', " +
" '{6}', '{7}', '{8}', '{9}', '{10}', '{11}'," +
" '{12}', '{13}', '{14}', '{15}', '{16}', '{17}'" +
" , '{18}')",
jsonBactResult["INSTRUMENT"].ToString(),
jsonBactResult["SAMPLE_NO"].ToString(),
jsonBactResult["SAMPLE_DATE"].ToString(),
index,
StringHelper.GetString(jsonBactResult["BACT_CODE"]),
StringHelper.GetString(jsonBactResult["BACT_NAME"]),
StringHelper.GetString(jsonBactResult["ANTI_CODE"]),
StringHelper.GetString(jsonBactResult["ANTI_NAME"]),
StringHelper.GetString(jsonBactResult["CURRENT_RESULT"]),
StringHelper.GetString(jsonBactResult["RESULT_KIND"]),
StringHelper.GetString(jsonBactResult["anti_result"]),
StringHelper.GetString(jsonBactResult["anti_addtresult"]),
StringHelper.GetString(jsonBactResult["anti_testmethod"]),
StringHelper.GetString(jsonBactResult["FIRST_VALIDATE_DATE"]),
"", "", "", "",
StringHelper.GetString(jsonBactResult["ADDT_RESULT"]));
SqlHelper.ExecuteNonQuery(lisConnString, CommandType.Text, sql);
index++;
}
#endregion
}
else
{
#region 普通标本结果
string deleteSql = string.Format("delete FROM TB_LABRESULT " +
" WHERE instrument='{0}' AND sample_no='{1}' AND sample_date='{2}'",
instrument,
sampleNo,
sampleDate);
SqlHelper.ExecuteNonQuery(lisConnString, CommandType.Text, deleteSql);
var json = ExecuteSampleQueryAction(lisConnString,
SampleQueryActionType.ValidatedResultInfo_TB_CURRENT_ITEM_RESULT,
instrument,
sampleDate,
sampleNo);
if (json.Length == 0) return;
var results = JsonConvert.DeserializeObject(json) as JArray;
foreach (JObject result in results)
{
string sql = string.Format("SELECT COUNT(*) FROM TB_LABRESULT a " +
" WHERE a.instrument='{0}' AND a.sample_no='{1}' AND a.sample_date='{2}' " +
" AND a.item_no='{3}'",
instrument,
sampleNo,
sampleDate,
result["ITEM_CODE"].ToString());
int rowCount = (int)SqlHelper.ExecuteScalar(lisConnString, CommandType.Text, sql);
if (rowCount > 0)
{
continue;
}
string jsonItemProperty = ExecuteItemQueryAction(lisConnString,
ItemQueryActionType.GetCalcuatedItemProperty,
instrument,
result["ITEM_CODE"].ToString(),
result["CURRENT_RESULT"].ToString(),
result["GENDER"].ToString(),
result["AGE"].ToString(),
result["SAMPLE_TYPE"].ToString(),
result["DIAGNOSE"].ToString());
var jsonObjItemProperty = JsonConvert.DeserializeObject(jsonItemProperty) as JObject;
sql = string.Format("INSERT INTO TB_LABRESULT " +
" (instrument, sample_no, sample_date, item_no, " +
" item_name, print_order, result_date_time, result, unit, resultflag, ref, " +
" feeitem_no, feeitem_name, order_no, reqno) " +
" VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', {5}, '{6}', '{7}', '{8}', '{9}'" +
" , '{10}', '{11}', '{12}', '{13}', '{14}')",
result["INSTRUMENT"].ToString(),
result["SAMPLE_NO"].ToString(),
result["SAMPLE_DATE"].ToString(),
StringHelper.GetString(result["ITEM_CODE"]),
StringHelper.GetString(result["ITEM_NAME"]),
StringHelper.GetString(result["REPORT_SEQ"]),
StringHelper.GetString(result["FIRST_VALIDATE_DATE"]),
StringHelper.GetString(result["CURRENT_RESULT"]),
StringHelper.GetString(jsonObjItemProperty["Unit"]),
StringHelper.GetString(jsonObjItemProperty["ResultFlag"]),
StringHelper.GetString(jsonObjItemProperty["Ref"]),
"", "", "", "");
SqlHelper.ExecuteNonQuery(lisConnString, CommandType.Text, sql);
}
#endregion
}
}
public string ExecuteQueySQL(string lisConnString, string sql)
{
var dt = SqlHelper.ExecuteDataset(lisConnString, CommandType.Text, sql).Tables[0];
if (dt.Rows.Count == 0)
{
return "";
}
return JsonConvert.SerializeObject(dt, new DataTableConverter());
}
public string getOperatorCodeByName(string lisConnString, string name)
{
var sql = string.Format("select a.operator_id from tb_operator a where a.OPERATE_NAME='{0}'", name);
return StringHelper.GetString(SqlHelper.ExecuteScalar(lisConnString, CommandType.Text, sql));
}
}
}