public void writebg(string F_bgnr, string F_blh, string F_dz, string F_ctmc) { string pcname = System.Environment.MachineName; string czy = f.ReadString("yh", "yhmc", "").Replace("/0", ""); string czrq = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); string BLH = F_blh; string dz = F_dz; string nr = F_bgnr; //string exemc = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; string exemc = "pathnetfswjz"; string ctmc = F_ctmc; string[] values = new string[8] { BLH, czrq, czy, pcname, dz, nr, exemc, ctmc }; string[] fields = new string[8] { "F_blh", "F_rq", "F_czy", "F_wz", "F_dz", "F_nr", "F_exemc", "F_ctmc" }; if (aa.insertsql("T_bghj", ref fields, ref values)) { } else { } }
public static void messagemain(string msg, string hl7server, string hl7port, ref byte[] ack) { HL7.readhl7 adtread = new HL7.readhl7(); string[] aaa = adtread.Adt01(msg); // netStream = client.GetStream(); string hfdm = ""; hfdm = "ORR^O02"; //回复消息 byte[] by2 = System.Text.Encoding.UTF8.GetBytes(adtread.MSH[0].ToString() + "|" + adtread.MSH[1].ToString() + "|BL||EMR||" + adtread.MSH[6].ToString() + "||" + hfdm + "|ACK" + adtread.MSH[9].ToString() + "|" + adtread.MSH[10].ToString() + "|" + adtread.MSH[11].ToString() + "||||||utf-8\r" + "MSA|AA|" + adtread.MSH[9].ToString() + "|0|||\r"); byte[] by3 = new byte[by2.Length + 3]; by3[0] = 11; Array.Copy(by2, 0, by3, 1, by2.Length); by3[by3.Length - 2] = 28; by3[by3.Length - 1] = 13; ack = by3; try { //删除申请单 if (adtread.MSH[8] == "ORM^O01" && adtread.ORC[1] == "CA") { //aa.ExecuteSQL("delete from T_HL7_SQD where F_sqxh='" + adtread.ORC[4].ToString().Trim() + "'"); aa.ExecuteSQL("delete from T_HL7_SQD where F_yzid='" + adtread.OBR[45].Replace(@"\r", "").Split('^')[3] + "'"); aa.ExecuteSQL("delete from T_hl7_bblb where F_yzid='" + adtread.OBR[45].Replace(@"\r", "").Split('^')[3] + "'"); return; } //存档1 ORM^O01 if (adtread.MSH[8] == "ORM^O01" && adtread.ORC[1] == "NW") { string[] fields = new string[42]; fields[0] = "F_brid"; fields[1] = "F_brxm"; fields[2] = "F_brsr"; fields[3] = "F_brxb"; fields[4] = "F_brdz"; fields[5] = "F_brdh"; fields[6] = "F_brly"; fields[7] = "F_bqxx"; fields[8] = "F_ksxx"; fields[9] = "F_zzys"; fields[10] = "F_zyh"; fields[11] = "F_jzsj"; fields[12] = "F_brlb"; fields[13] = "F_xm"; fields[14] = "F_xb"; fields[15] = "F_nl"; fields[16] = "F_bq"; fields[17] = "F_ch"; fields[18] = "F_messageid"; fields[19] = "F_mzh"; fields[20] = "F_sqxh"; fields[21] = "F_yzid"; fields[22] = "F_sqsj"; fields[23] = "F_sjys"; fields[24] = "F_sjks"; fields[25] = "F_zxks"; fields[26] = "F_yzxm"; fields[27] = "F_sldw"; fields[28] = "F_je"; fields[29] = "F_fph"; fields[30] = "F_hjsf"; fields[31] = "F_PID"; fields[32] = "F_PV1"; fields[33] = "F_ORC"; fields[34] = "F_OBR"; fields[35] = "F_barcode"; fields[36] = "F_bbmc"; fields[37] = "F_lczd"; fields[38] = "F_MzhOrZyh"; fields[39] = "F_FB"; fields[40] = "F_rysj"; fields[41] = "F_lczl"; string[] values = new string[42]; ////PID values[0] = adtread.PID[3].Split('^')[0]; values[1] = adtread.PID[5]; values[2] = adtread.PID[7]; values[3] = adtread.PID[8]; values[4] = adtread.PID[11]; values[5] = adtread.PID[13]; //PV1 values[6] = adtread.PV1[2]; values[7] = adtread.PV1[3]; // values[38] = adtread.PV1[19]; values[39] = adtread.PV1[20]; values[40] = adtread.PV1[44]; //OBR values[8] = adtread.OBR[18] + "|" + adtread.OBR[19]; string bbmc = adtread.OBR[39]; int start = bbmc.IndexOf("送检标本#"); if (bbmc.IndexOf("送检标本#") > 0) { bbmc = bbmc.Substring(start + 5); if (bbmc.IndexOf("$$") > 0) { bbmc = bbmc.Substring(0, bbmc.IndexOf("$$")); } else { bbmc = ""; } } else { bbmc = ""; } string[] bblb = bbmc.Split(';'); bbmc = bblb[0]; //bbmc = adtread.OBR[27].Substring(adtread.OBR[27].IndexOf("送检标本#") + 5, adtread.OBR[27].IndexOf("送检标本#").ToString().Length - adtread.OBR[27].IndexOf("送检标本#").ToString().Length); string barcode = ""; if (bbmc.Split('/').Length >= 3) { barcode = bbmc.Split('/')[2]; bbmc = bbmc.Split('/')[0] + "/" + bbmc.Split('/')[1]; values[35] = barcode; values[36] = bbmc; } else { values[35] = ""; values[36] = bbmc; } //MessageBox.Show("1"); /////zgq---bbmc-lczd-lczl //string NTE = adtread.NTE[3]; //MessageBox.Show(NTE); //string [] nte_1 = NTE.Replace("$$", "$").Split('$'); //MessageBox.Show(nte_1[0]); //string lczd_1 = nte_1[0].Split('#')[1].ToString(); //MessageBox.Show("7"); //string bbmc_1 = nte_1[1].Split('#')[1].ToString() + ";" + nte_1[0].Split('#')[2].ToString() + ";" + nte_1[0].Split('#')[3].ToString(); ////string cqbw_1 = nte_1[1].Split('#')[1].ToString() + ";" + nte_1[0].Split('#')[2].ToString() + ";" + nte_1[0].Split('#')[3].ToString(); //string lczl_1 = nte_1[1].Split('#')[4].ToString(); //MessageBox.Show("9"); //bbmc_1 = bbmc_1.Replace(";;", ";"); //values[36] = bbmc_1; //values[37] = lczd_1; //values[41] = lczl_1; values[41] = ""; values[9] = ""; //住院号 if (adtread.PV1[2].Trim() == "I") { values[38] = adtread.PV1[19]; } else { values[10] = ""; } //门诊号 if (adtread.PV1[2].Trim() == "O" || adtread.PV1[2].Trim() == "P") { values[19] = adtread.PV1[19]; } else { values[19] = ""; } values[11] = ""; if (adtread.PV1[2].Trim() == "I") { values[12] = "住院"; } if (adtread.PV1[2].Trim() == "O") { values[12] = "门诊"; } if (adtread.PV1[2].Trim() == "P") { values[12] = "体检"; } if (adtread.PV1[2].Trim() == "E") { values[12] = "急诊"; } //values[15] = "住院"; values[13] = adtread.PID[5]; if (adtread.PID[5].IndexOf('^') > -1) { values[13] = adtread.PID[5].Substring(0, adtread.PID[5].IndexOf('^')); } values[14] = "其他"; if (adtread.PID[8].Trim() == "M") { values[14] = "男"; } if (adtread.PID[8].Trim() == "F") { values[14] = "女"; } try { DateTime tm1 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")); DateTime tm2 = Convert.ToDateTime(adtread.PID[7].Substring(0, 4) + "-" + adtread.PID[7].Substring(4, 2) + "-" + adtread.PID[7].Substring(6, 2)); values[15] = datediff(tm1, tm2); } catch { values[15] = "0岁"; } values[16] = ""; values[17] = ""; if (adtread.PV1[3].IndexOf('^') > -1) { try { values[16] = adtread.PV1[3].Split('^')[0]; values[17] = adtread.PV1[3].Split('^')[2]; } catch { } } values[18] = adtread.MSH[9]; //ORC values[20] = adtread.ORC[2]; values[21] = adtread.ORC[4];//收费小序号 // values[21] = adtread.OBR[45].Replace(@"\r", "").Split('^')[3]; values[22] = adtread.OBR[6]; values[23] = adtread.ORC[12]; values[24] = adtread.OBR[18] + "|" + adtread.OBR[19]; values[25] = adtread.OBR[20] + "|" + adtread.OBR[21]; values[26] = adtread.OBR[4]; values[27] = adtread.OBR[9]; values[28] = adtread.OBR[23]; values[29] = adtread.OBR[46].Replace(@"\r", ""); values[30] = adtread.OBR[45].Replace(@"\r", ""); try { //NTE string nte = adtread.OBR[3]; values[37] = nte.Split('$')[0].Split('#')[1].ToString(); } catch { values[37] = ""; } string pid = ""; for (int i = 0; i < adtread.PID.Length; i++) { pid = pid + adtread.PID[i].ToString() + "|"; } pid = pid.Replace(@"\r", ""); string pv1 = ""; for (int j = 0; j < adtread.PV1.Length; j++) { pv1 = pv1 + adtread.PV1[j].ToString() + "|"; } string orc = ""; for (int ii = 0; ii < adtread.ORC.Length; ii++) { orc = orc + adtread.ORC[ii].ToString() + "|"; } orc = orc.Replace(@"\r", ""); string obr = ""; // LGZGQClass.log.WriteMyLog(adtread.OBR.Length.ToString()); for (int jj = 0; jj < adtread.OBR.Length; jj++) { // LGZGQClass.log.WriteMyLog(jj.ToString()+" "+adtread.OBR[jj].ToString()); obr = obr + adtread.OBR[jj].ToString() + "|"; } pv1 = pv1.Replace(@"\r", ""); values[31] = pid; values[32] = pv1; values[33] = orc; values[34] = obr; DataTable hl7check = aa.GetDataTable("select * from T_HL7_SQD where F_messageid='" + adtread.MSH[9] + "'", "checkhl7"); if (hl7check.Rows.Count > 0) { log.WriteMyLog("重发消息" + adtread.MSH[9] + ",不处理!"); //MessageBox.Show("重发消息"); } else { aa.insertsql("T_HL7_SQD", ref fields, ref values); string[] bbfds = new string[6]; string[] bbvas = new string[6]; bbfds[0] = "F_tmh"; bbfds[1] = "F_bbmc"; bbfds[2] = "F_bbbw"; bbfds[3] = "F_sl"; bbfds[4] = "F_sqdh"; bbfds[5] = "F_yzid"; bbvas[4] = values[20]; bbvas[5] = values[21]; for (int i = 0; i < bblb.Length; i++) { bbvas[0] = bblb[i].Split('/')[2]; bbvas[1] = bblb[i].Split('/')[1]; bbvas[2] = bblb[i].Split('/')[0]; bbvas[3] = bblb[i].Split('/')[3]; aa.insertsql("T_hl7_bblb", ref bbfds, ref bbvas); } } //hl7sub.sendack(ref by3, hl7server,hl7port); //netStream.Write(by3, 0, by3.Length); //netStream.Flush(); // LGZGQClass.log.WriteMyLog("send to server " + f.ReadString("HL7", "Server", "") + ":" + f.ReadInteger("HL7", "Port", 8000).ToString() + " message:" + System.Text.Encoding.Default.GetString(by3, 0, by3.Length)); } } catch (Exception ex) { hfdm = "ORR^O02"; //回复消息 by2 = System.Text.Encoding.UTF8.GetBytes(adtread.MSH[0].ToString() + "|" + adtread.MSH[1].ToString() + "|BL||EMR||" + adtread.MSH[6].ToString() + "||" + hfdm + "|ACK" + adtread.MSH[9].ToString() + "|" + adtread.MSH[10].ToString() + "|" + adtread.MSH[11].ToString() + "||||||utf-8\r" + "MSA|AE|ACK2" + adtread.MSH[9].ToString() + "|" + ex.Message.ToString() + "||\r"); by3 = new byte[by2.Length + 3]; by3[0] = 11; Array.Copy(by2, 0, by3, 1, by2.Length); by3[by3.Length - 2] = 28; by3[by3.Length - 1] = 13; ack = by3; } //if (adtread.MSH[8] == "ACK") //{ // string[] fields = new string[3]; // fields[0] = "F_messageid"; // fields[1] = "F_zt"; // fields[2] = "F_bz"; // string[] values = new string[3]; // string messagetype = adtread.MSA[2]; // values[0] = ""; // if (messagetype.IndexOf("IP") > 0) // { // values[0] = messagetype.Substring(0, messagetype.IndexOf("IP")); // } // if (messagetype.IndexOf("BG") > 0) // { // values[0] = messagetype.Substring(0, messagetype.IndexOf("BG")); // } // if (messagetype.IndexOf("AA") > 0) // { // values[0] = messagetype.Substring(0, messagetype.IndexOf("AA")); // LGZGQClass.log.WriteMyLog(messagetype+"检查完成ACK消息,不处理!"); // return; // } // if (messagetype.IndexOf("CM") > 0) // { // values[0] = messagetype.Substring(0, messagetype.IndexOf("CM")); // LGZGQClass.log.WriteMyLog(messagetype + "报告审核ACK消息,不处理!"); // return; // } // if (messagetype.IndexOf("OC") > 0) // { // values[0] = messagetype.Substring(0, messagetype.IndexOf("OC")); // LGZGQClass.log.WriteMyLog(messagetype + "取消检查ACK消息,不处理!"); // return; // } // if (adtread.MSA[1] == "AA") // { // values[1] = "发送完成"; // values[2] = ""; // } // else // { // values[1] = "发送失败"; // values[2] = "HIS错误"; // } // dbbase.sqldb aa = new sqldb(System.Windows.Forms.Application.StartupPath, "sqlserver2"); // if (values[0] == "") // { // LGZGQClass.log.WriteMyLog(adtread.MSA[2] + " HIS错误消息,不处理!"); // } // else // { // if (aa.updatesql("T_jcxx2", ref fields, ref values, "F_messageid='" + values[0] + "'")) // { } // else // { // LGZGQClass.log.WriteMyLog(adtread.MSA[2] + "更新失败!"); // } // } //} }