Example #1
0
        /// <summary>
        /// 获取老HIS的项目药品编码
        /// </summary>
        /// <param name="xmly"></param>
        /// <param name="hoitemid"></param>
        /// <returns></returns>
        public static string GetOldHISXmYpBM(string xmly, string hoitemid, out bool isKbxm, RelationalDatabase db)
        {
            string bm = "";

            isKbxm = false;

            if (xmly == "1")
            {
                bm = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.YP_YPCJD, hoitemid, db);
            }
            else
            {
                string    sql = "select * from JC_HOI_HDI where HOITEM_ID=" + hoitemid;
                DataTable tb  = db.GetDataTable(sql);

                if (tb.Rows[0]["tc_flag"].ToString() == "0")
                {
                    bm = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_HSITEM, tb.Rows[0]["hditem_id"].ToString(), db);
                }
                else
                {
                    bm     = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_TC_T, tb.Rows[0]["tcid"].ToString(), db);
                    isKbxm = true;
                }
            }

            return(bm);
        }
Example #2
0
        //Add BY Tany 2015-04-01
        /// <summary>
        /// 同步新系统的医生给老系统
        /// </summary>
        /// <param name="zyh"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static void SyncDoc(Guid inpatientId, RelationalDatabase db)
        {
            string    ssql = @"select inpatient_no,inpatient_id,zy_doc doc_id from zy_inpatient where inpatient_id='" + inpatientId + "'";
            DataTable tb   = db.GetDataTable(ssql);

            if (tb == null || tb.Rows.Count == 0)
            {
                throw new Exception("【同步老系统责任医生出错】在新系统中未找到该病人信息,请检查!");
            }
            string zyh  = Convert.ToInt64(tb.Rows[0]["inpatient_no"].ToString()).ToString();
            string zrys = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_EMPLOYEE_PROPERTY, tb.Rows[0]["doc_id"].ToString(), db);

            if (zrys == "")
            {
                throw new Exception("【同步老系统责任医生出错】未找到对应的责任医生,请检查!");
            }

            InstanceOldHISDb();
            ssql = "UPDATE ZY_ZYBRXX SET zrys='" + zrys + "' WHERE ZYH='" + zyh + "'";
            InFomixDb.DoCommand(ssql);
        }
Example #3
0
        /// <summary>
        /// 医保出院登记
        /// </summary>
        /// <param name="zyh"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        private static bool Ybcydj(string zyh, RelationalDatabase db)
        {
            InstanceOldHISDb();
            string    ls_zyjslb = "", ls_fyjsms = "", ls_tsbz = "";
            string    ls_return = "", ls_bzlx = "", ls_lxmc = "", ls_jzlb = "";
            decimal   ld_tczf1 = 0;//统筹支付一
            string    ssql     = "";
            DataTable tb       = new DataTable();
            DataTable patTb    = new DataTable();

            Ts_zygl_ybgl.FrmDataGridView frmDv = new Ts_zygl_ybgl.FrmDataGridView();

            try
            {
                ssql  = "select * from vi_zy_vinpatient_all where inpatient_no='" + zyh + "'";
                patTb = db.GetDataTable(ssql);
                if (patTb == null || patTb.Rows.Count == 0)
                {
                    throw new Exception("在新系统中未找到住院号【" + zyh + "】的病人信息!");
                }
                zyh  = Convert.ToInt64(zyh).ToString();
                ssql = "select ZYJSLB,FYJSMS,jzlb from yb_brxx where zyh = '" + zyh + "'";
                tb   = InFomixDb.GetDataTable(ssql);
                if (tb == null || tb.Rows.Count == 0)
                {
                    throw new Exception("未找到住院号【" + zyh + "】的yb_brxx信息!");
                }
                //ls_zyjslb = DAL.BaseDal.GetEncodingString(Convertor.IsNull(tb.Rows[0]["ZYJSLB"], ""));
                //ls_fyjsms = DAL.BaseDal.GetEncodingString(Convertor.IsNull(tb.Rows[0]["FYJSMS"], ""));
                //ls_jzlb = DAL.BaseDal.GetEncodingString(Convertor.IsNull(tb.Rows[0]["jzlb"], ""));
                ls_zyjslb = (Convertor.IsNull(tb.Rows[0]["ZYJSLB"], ""));
                ls_fyjsms = (Convertor.IsNull(tb.Rows[0]["FYJSMS"], ""));
                ls_jzlb   = (Convertor.IsNull(tb.Rows[0]["jzlb"], ""));

                if (ls_jzlb == "31" || ls_jzlb == "38")
                {
                    MessageBox.Show("该患者为工伤类别,请病区携住院志、病程记录、出院小结到医保办办理审核手续");
                }

                if (ls_zyjslb == "4" || ls_jzlb == "8D")//生育类及居保生育类弹出选择结算种类窗口
                {
                    //openwithparm(w_bq_yzgl_djcysj_ybzx,"xxlx=sylx;cslb=2;"+"ksdm="+is_DeptId+";");
                    //ls_return = message.stringparm;
                    ssql = "SELECT xxlx,lxbm,lxmc,cslb FROM yb_csxx WHERE xxlx = 'sylx' AND cslb = '2'";
                    tb   = InFomixDb.GetDataTable(ssql);
                    if (tb == null || tb.Rows.Count == 0)
                    {
                        throw new Exception("未找到yb_csxx表xxlx=sylx;cslb=2的信息!");
                    }
                    //做转换
                    //for (int r = 0; r < tb.Rows.Count; r++)
                    //{
                    //    for (int c = 0; c < tb.Columns.Count; c++)
                    //    {
                    //        tb.Rows[r][c] = DAL.BaseDal.GetEncodingString(Convertor.IsNull(tb.Rows[r][c], ""));
                    //    }
                    //}
                    frmDv = new Ts_zygl_ybgl.FrmDataGridView();
                    frmDv.dgv.DataSource  = tb;
                    frmDv.dgv.MultiSelect = false;
                    frmDv.ShowDialog();
                    if (frmDv.DialogResult == System.Windows.Forms.DialogResult.Yes)
                    {
                        if (frmDv.dgv.SelectedRows.Count == 0)
                        {
                            throw new Exception("未选择数据!");
                        }
                        else
                        {
                            ls_return = Convertor.IsNull(tb.Rows[frmDv.dgv.SelectedRows[0].Index]["lxbm"], "");
                        }
                    }
                    if (ls_return == "")
                    {
                        return(false);
                    }
                    else
                    {
                        //ssql = "update yb_brxx set sylb = '" + DAL.BaseDal.GetEncodingStringToInforMix(ls_return) + "' where zyh = '" + zyh + "'";
                        ssql = "update yb_brxx set sylb = '" + ls_return + "' where zyh = '" + zyh + "'";
                        InFomixDb.DoCommand(ssql);
                    }
                }

                if (ls_fyjsms == "4")//病种限额结算
                {
                    //openwithparm(w_bq_yzgl_djcysj_ybzx,"xxlx=bzlx;cslb=2;")
                    //ls_return = message.stringparm
                    ssql = "SELECT xxlx,lxbm,lxmc,cslb FROM yb_csxx WHERE xxlx = 'bzlx' AND cslb = '2'";
                    tb   = InFomixDb.GetDataTable(ssql);
                    if (tb == null || tb.Rows.Count == 0)
                    {
                        throw new Exception("未找到yb_csxx表xxlx=bzlx;cslb=2的信息!");
                    }
                    //做转换
                    //for (int r = 0; r < tb.Rows.Count; r++)
                    //{
                    //    for (int c = 0; c < tb.Columns.Count; c++)
                    //    {
                    //        tb.Rows[r][c] = DAL.BaseDal.GetEncodingString(Convertor.IsNull(tb.Rows[r][c], ""));
                    //    }
                    //}
                    frmDv = new Ts_zygl_ybgl.FrmDataGridView();
                    frmDv.dgv.DataSource  = tb;
                    frmDv.dgv.MultiSelect = false;
                    frmDv.ShowDialog();
                    if (frmDv.DialogResult == System.Windows.Forms.DialogResult.Yes)
                    {
                        if (frmDv.dgv.SelectedRows.Count == 0)
                        {
                            throw new Exception("未选择数据!");
                        }
                        else
                        {
                            ls_return = Convertor.IsNull(tb.Rows[frmDv.dgv.SelectedRows[0].Index]["lxbm"], "");
                        }
                    }
                    if (ls_return == "")
                    {
                        return(false);
                    }
                    else
                    {
                        //ssql = "update yb_brxx set jsbzlx = '" + DAL.BaseDal.GetEncodingStringToInforMix(ls_return) + "' where zyh = '" + zyh + "'";
                        ssql = "update yb_brxx set jsbzlx = '" + ls_return + "' where zyh = '" + zyh + "'";
                        InFomixDb.DoCommand(ssql);
                    }
                }

                ssql = "select bzlx from yb_brxx where zyh = '" + zyh + "'";
                //ls_bzlx = DAL.BaseDal.GetEncodingString(Convertor.IsNull(InFomixDb.GetDataResult(ssql), ""));
                ls_bzlx = (Convertor.IsNull(InFomixDb.GetDataResult(ssql), ""));
                //ssql = "select lxmc from yb_csxx where xxlx='bzlx' and lxbm='" + DAL.BaseDal.GetEncodingStringToInforMix(ls_bzlx) + "'";
                ssql    = "select lxmc from yb_csxx where xxlx='bzlx' and lxbm='" + ls_bzlx + "'";
                ls_lxmc = (Convertor.IsNull(InFomixDb.GetDataResult(ssql), ""));
                if (ls_lxmc != "")
                {
                    MessageBox.Show("医生已选择过病种:[ " + ls_lxmc + " ],请参照选择");
                }

                if (patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("心血管内科") >= 0)
                {
                    ssql     = "select jbyltczf from yb_zyjs where zyh='" + zyh + "'";
                    ld_tczf1 = Convert.ToDecimal(Convertor.IsNull(InFomixDb.GetDataResult(ssql), "0"));
                    if (ld_tczf1 < 5000)
                    {
                        MessageBox.Show("该病人统筹支付1在5000以内,只能选择3300多定额(心内)或多定额(介入)病种");
                    }
                    else
                    {
                        MessageBox.Show("该病人统筹支付1在5000以上:\r\n1)有糖尿病的选糖尿病专科定额\r\n2)无糖尿病选综合定额4400标准结算");
                    }
                }
                //openwithparm(w_bq_yzgl_djcysj_ybzx,"xxlx=bzlx;cslb=2;")
                //ls_return = message.stringparm
                ssql = "SELECT xxlx,lxbm,lxmc,cslb FROM yb_csxx WHERE xxlx = 'bzlx' AND cslb = '2'";
                tb   = InFomixDb.GetDataTable(ssql);
                if (tb == null || tb.Rows.Count == 0)
                {
                    throw new Exception("未找到yb_csxx表xxlx=bzlx;cslb=2的信息!");
                }
                //做转换
                //for (int r = 0; r < tb.Rows.Count; r++)
                //{
                //    for (int c = 0; c < tb.Columns.Count; c++)
                //    {
                //        tb.Rows[r][c] = DAL.BaseDal.GetEncodingString(Convertor.IsNull(tb.Rows[r][c], ""));
                //    }
                //}
                frmDv = new Ts_zygl_ybgl.FrmDataGridView();
                frmDv.dgv.DataSource  = tb;
                frmDv.dgv.MultiSelect = false;
                frmDv.ShowDialog();
                if (frmDv.DialogResult == System.Windows.Forms.DialogResult.Yes)
                {
                    if (frmDv.dgv.SelectedRows.Count == 0)
                    {
                        throw new Exception("未选择数据!");
                    }
                    else
                    {
                        ls_return = Convertor.IsNull(tb.Rows[frmDv.dgv.SelectedRows[0].Index]["lxbm"], "");
                    }
                }
                if (patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("肿瘤") < 0 && ls_return == "109")
                {
                    MessageBox.Show("非肿瘤科的病人不能选择肿瘤病种");
                    return(false);
                }
                if (patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("心血管内科") >= 0)
                {
                    //	select jbyltczf into :ld_tczf1 from yb_zyjs where zyh=:is_zyh using T_OLTP;
                    //	if isnull(ld_tczf1) then ld_tczf1 =0
                    if (ld_tczf1 < 5000)
                    {
                        if (ls_return != "104" && ls_return != "105")
                        {
                            MessageBox.Show("该病人统筹支付1在5000以内,只能选择3300多定额(心内)或多定额(介入)病种");
                            return(false);
                        }
                    }
                    else
                    {
                        if (ls_return != "104" && ls_return != "105" && ls_return != "101" && ls_return != "115")
                        {
                            MessageBox.Show("该病人统筹支付1在5000以上:\r\n1)有糖尿病的选糖尿病专科定额\r\n2)无糖尿病选综合定额4400标准结算");
                            return(false);
                        }
                    }
                }
                if (patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("心血管外科") >= 0 && ls_return != "106" && ls_return != "101")
                {
                    MessageBox.Show("心血管外科的病人只能选择多定额(心外)或多定额(综合)病种");
                    return(false);
                }
                if ((patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("心血管外科") < 0 && patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("心血管内科") < 0) && (ls_return == "106" || ls_return == "104" || ls_return == "105"))
                {
                    if ((patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("内分泌") >= 0 || patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("细胞治疗部") >= 0) && ls_return == "105")//内分泌可以选介入
                    {
                    }
                    else
                    {
                        if (patTb.Rows[0]["cur_dept_name"].ToString().IndexOf("重症医学科") >= 0 && ls_return == "106")//ICU可以选心外
                        {
                        }
                        else
                        {
                            MessageBox.Show("非心血管内科或心血管外科的病人不能选择多定额(心外)或多定额(心内)或多定额(介入)病种");
                            return(false);
                        }
                    }
                }
                ssql    = "select tsbz from rs_bm where bmh = '" + HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_DEPT_PROPERTY, patTb.Rows[0]["dept_id"].ToString(), db) + "'";
                ls_tsbz = Convertor.IsNull(InFomixDb.GetDataResult(ssql), "");
                if (ls_tsbz != "T" && ls_return == "115")
                {
                    MessageBox.Show("该科室不能选择糖尿病病种");
                    return(false);
                }

                if (ls_return == "")
                {
                    return(false);
                }
                else
                {
                    ssql = "update yb_brxx set bzlx = '" + ls_return + "' where zyh = '" + zyh + "'";
                    InFomixDb.DoCommand(ssql);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(true);
        }
Example #4
0
        /// <summary>
        /// 发药状态更新到老HIS 门诊状态
        /// </summary>
        /// <param name="dset"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static string SaveMzFyzt(DataSet dset, RelationalDatabase db)
        {
            try
            {
                DataTable tb      = dset.Tables[0];
                string    ssql    = "";
                DataRow   row     = tb.Rows[0];
                string    BIZID   = row["BIZID"].ToString();
                string    FY_DATE = Convert.ToDateTime(row["FY_DATE"]).ToString("yyyy-MM-dd HH:mm:ss");
                string    FY_USER = row["FY_USER"].ToString();
                string    PY_USER = row["PY_USER"].ToString();
                string    DH      = row["DH"].ToString();
                decimal   ZJE     = Convert.ToDecimal(row["zje"]);

                FY_USER = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_EMPLOYEE_PROPERTY, FY_USER, db);
                PY_USER = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_EMPLOYEE_PROPERTY, PY_USER, db);

                #region 老HIS事务处理
                System.Data.Odbc.OdbcConnection  connection = new System.Data.Odbc.OdbcConnection(DAL.BaseDal.oldhis_constr);
                System.Data.Odbc.OdbcTransaction tx         = null;
                System.Data.Odbc.OdbcCommand     cmd        = new System.Data.Odbc.OdbcCommand();
                try
                {
                    connection.Open();
                    cmd.Connection  = connection;
                    tx              = connection.BeginTransaction();
                    cmd.Transaction = tx;

                    if (ZJE >= 0)
                    {
                        cmd.CommandText = "update MZ_CFD_ZB set sffy='Y',fyy='" + FY_USER + "', fysj='" + FY_DATE + "',pzr='" + PY_USER + "' where dh='" + DH + "'";
                        cmd.ExecuteNonQuery();
                        cmd.CommandText = "update MZ_CFD_CB set sffy='Y',fyy='" + FY_USER + "'  where dh='" + DH + "'";
                        cmd.ExecuteNonQuery();
                    }
                    else
                    {
                        cmd.CommandText = "update MZ_CFD_ZB set sfty='Y',qrty='" + FY_USER + "',tyr='" + FY_USER + "', tyrq='" + FY_DATE + "'  where dh='" + DH + "'";
                        cmd.ExecuteNonQuery();
                        cmd.CommandText = "update MZ_CFD_CB set sfty='Y',qrty='" + FY_USER + "',tyr='" + FY_USER + "'  where dh='" + DH + "'";
                        cmd.ExecuteNonQuery();
                    }

                    tx.Commit();
                    cmd.Dispose();
                    connection.Close();
                }
                catch (Exception ex)
                {
                    //事务回滚
                    tx.Rollback();
                    cmd.Dispose();
                    connection.Close();
                    tx.Dispose();
                    throw new Exception(ex.Message);
                }

                #endregion

                #region 回填新HIS记录
                if (ZJE > 0)
                {
                    ssql = "update EVENTLOG set FINISH=1 ,FINISH_DATE='" + DateTime.Now.ToString() + "' where EVENT='MZFYZT' AND BIZID='" + BIZID + "'";
                }
                else
                {
                    ssql = "update EVENTLOG set FINISH=1 ,FINISH_DATE='" + DateTime.Now.ToString() + "' where EVENT='MZFYZTTY' AND BIZID='" + BIZID + "'";
                }
                db.DoCommand(ssql);

                #endregion

                System.String[] str = { "0", "保存成功" };
                return(HisFunctions.GetResponseString("SaveKcph", str));
            }
            catch (Exception err)
            {
                throw err;
            }
        }
Example #5
0
        /// <summary>
        /// 发药状态更新到老HIS  住院状态
        /// </summary>
        /// <param name="dset"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static string SaveFyzt(DataSet dset, RelationalDatabase db)
        {
            try
            {
                DataTable tb      = dset.Tables[0];
                string    ssql    = "";
                DataRow   row     = tb.Rows[0];
                string    BIZID   = row["BIZID"].ToString();
                string    FY_DATE = Convert.ToDateTime(row["FY_DATE"]).ToString("yyyy-MM-dd HH:mm:ss");
                string    FY_USER = row["FY_USER"].ToString();
                string    PY_USER = row["PY_USER"].ToString();
                string    ZYH     = row["ZYH"].ToString();
                string    YZXH    = row["YZXH"].ToString();
                string    YZZXH   = row["YZZXH"].ToString();
                decimal   num     = Convert.ToDecimal(row["NUM"].ToString());

                FY_USER = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_EMPLOYEE_PROPERTY, FY_USER, db);
                PY_USER = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_EMPLOYEE_PROPERTY, PY_USER, db);

                #region 老HIS事务处理
                System.Data.Odbc.OdbcConnection  connection = new System.Data.Odbc.OdbcConnection(DAL.BaseDal.oldhis_constr);
                System.Data.Odbc.OdbcTransaction tx         = null;
                System.Data.Odbc.OdbcCommand     cmd        = new System.Data.Odbc.OdbcCommand();
                try
                {
                    connection.Open();
                    cmd.Connection  = connection;
                    tx              = connection.BeginTransaction();
                    cmd.Transaction = tx;

                    if (num > 0)
                    {
                        cmd.CommandText = "update zy_yzlxd set zjfysj='" + FY_DATE + "' where zyh='" + ZYH + "' and xh=" + YZXH + " and zxh=" + YZZXH + "";
                        cmd.ExecuteNonQuery();
                        cmd.CommandText = "update zy_cqlsyzd set sffy='Y' where zyh='" + ZYH + "' and xh=" + YZXH + " and zxh=" + YZZXH + "";
                        cmd.ExecuteNonQuery();
                    }
                    else
                    {
                        cmd.CommandText = "update zy_yzlxd set sfty='Y' where zyh='" + ZYH + "' and xh=" + YZXH + " and zxh=" + YZZXH + "";
                        cmd.ExecuteNonQuery();
                        cmd.CommandText = "update zy_cqlsyzd set sfty='Y' where zyh='" + ZYH + "' and xh=" + YZXH + " and zxh=" + YZZXH + "";
                        cmd.ExecuteNonQuery();
                    }

                    tx.Commit();
                    cmd.Dispose();
                    connection.Close();
                }
                catch (Exception ex)
                {
                    //事务回滚
                    tx.Rollback();
                    cmd.Dispose();
                    connection.Close();
                    tx.Dispose();
                    throw new Exception(ex.Message);
                }

                #endregion

                #region 回填新HIS记录
                for (int nrow = 0; nrow <= tb.Rows.Count - 1; nrow++)
                {
                    ssql = "update EVENTLOG set FINISH=1 ,FINISH_DATE='" + DateTime.Now.ToString() + "' where EVENT='FYZT' AND BIZID='" + BIZID + "'";
                    db.DoCommand(ssql);
                }
                #endregion

                System.String[] str = { "0", "保存成功" };
                return(HisFunctions.GetResponseString("SaveKcph", str));
            }
            catch (Exception err)
            {
                throw err;
            }
        }
Example #6
0
        /// <summary>
        /// 同步批号
        /// </summary>
        /// <param name="dset"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static string SaveKcph(DataSet dset, RelationalDatabase db)
        {
            try
            {
                DataTable tb   = dset.Tables[0];
                string    ssql = "";

                List <System.String[]> listUpdate = new List <System.String[]>();
                List <System.String[]> listInsert = new List <System.String[]>();
                for (int nrow = 0; nrow <= tb.Rows.Count - 1; nrow++)
                {
                    #region 变量
                    DataRow       row        = tb.Rows[nrow];
                    ParameterEx[] parameters = new ParameterEx[13];
                    string        _sdeptid   = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_DEPT_PROPERTY, Convertor.IsNull(row["deptid"], ""), db);
                    if (_sdeptid == "")
                    {
                        throw new Exception("没有找到科室匹配信息");
                    }
                    parameters[0].Text     = "yfh";
                    parameters[0].DataType = System.Data.DbType.String;
                    parameters[0].Value    = _sdeptid;
                    string yppc = _sdeptid.ToString() + row["cjid"].ToString();
                    // yppm=left('0000000000',
                    string temp = "0000000000";
                    int    N    = yppc.Length;
                    if (N < 10)
                    {
                        yppc = temp.Substring(0, 10 - N) + yppc;
                    }
                    yppc = "10" + yppc;
                    parameters[1].Text     = "yppc";
                    parameters[1].DataType = System.Data.DbType.String;
                    parameters[1].Value    = yppc;
                    string cjid = row["cjid"].ToString();
                    parameters[2].Text      = "ypbm";
                    parameters[2].Value     = row["cjid"];
                    parameters[3].Text      = "ypmc";
                    parameters[3].DataType  = System.Data.DbType.String;
                    parameters[3].Value     = row["s_yppm"].ToString().Replace("'", "");
                    parameters[4].Text      = "czgg";
                    parameters[4].DataType  = System.Data.DbType.String;
                    parameters[4].Value     = row["s_ypgg"].ToString().Replace("'", "");
                    parameters[5].Text      = "dw";
                    parameters[5].DataType  = System.Data.DbType.String;
                    parameters[5].Value     = Convertor.IsNull(row["s_zxdw"], "");
                    parameters[6].Text      = "cjbm";
                    parameters[6].Value     = row["sccj"].ToString();
                    parameters[7].Text      = "grdj";
                    parameters[7].Value     = row["grdj"].ToString();
                    parameters[8].Text      = "pfj";
                    parameters[8].Value     = row["pfj"].ToString();
                    parameters[9].Text      = "lsj";
                    parameters[9].Value     = row["lsj"].ToString();
                    parameters[10].Text     = "ccrq";
                    parameters[10].DataType = System.Data.DbType.String;
                    parameters[10].Value    = Convert.ToDateTime(row["djsj"]).ToString("yyyy-MM-dd HH:mm:ss");
                    parameters[11].Text     = "sxrq";
                    parameters[11].DataType = System.Data.DbType.String;
                    parameters[11].Value    = Convert.ToDateTime(row["ypxq"]).ToString("yyyy-MM-dd HH:mm:ss");
                    parameters[12].Text     = "sl";
                    parameters[12].Value    = Convertor.IsNull(row["kcl"], "");

                    #endregion

                    #region 插入语句
                    ssql = "insert into yk_kcb(";
                    for (int i = 0; i <= parameters.Length - 1; i++)
                    {
                        ssql = ssql + parameters[i].Text + ",";
                    }
                    ssql = ssql.Substring(0, ssql.Length - 1) + ")";

                    ssql = ssql + "values(";
                    for (int i = 0; i <= parameters.Length - 1; i++)
                    {
                        if (parameters[i].DataType != null)
                        {
                            ssql = ssql + "'" + TrasenHIS.DAL.BaseDal.GetEncodingStringToInforMix(parameters[i].Value.ToString()) + "',";//TrasenHIS.DAL.BaseDal.GetEncodingStringToInforMix(parameters[i].Value.ToString())
                        }
                        else
                        {
                            ssql = ssql + parameters[i].Value + ",";
                        }
                    }
                    ssql = ssql.Substring(0, ssql.Length - 1) + ")";

                    //用于记录生成的SQL语句,医嘱主键,操作类型。。在一面的事务中一次性处理
                    System.String[] str_insert = { row["id"].ToString(), _sdeptid, yppc, cjid, ssql, "add" };
                    listInsert.Add(str_insert);
                    #endregion

                    #region 更新语句
                    ssql = "update yk_kcb set ";
                    for (int i = 0; i <= parameters.Length - 1; i++)
                    {
                        if (parameters[i].DataType != null)
                        {
                            ssql = ssql + " " + parameters[i].Text + "= '" + TrasenHIS.DAL.BaseDal.GetEncodingStringToInforMix(parameters[i].Value.ToString()) + "',";//TrasenHIS.DAL.BaseDal.GetEncodingStringToInforMix(parameters[i].Value.ToString())
                        }
                        else
                        {
                            ssql = ssql + " " + parameters[i].Text + "= " + parameters[i].Value + ",";
                        }
                    }
                    ssql = ssql.Substring(0, ssql.Length - 1) + "";
                    ssql = ssql + " where yfh='" + _sdeptid + "' and yppc='" + yppc + "' and ypbm=" + cjid + "";
                    //用于记录生成的SQL语句,医嘱主键,操作类型。。在一面的事务中一次性处理
                    System.String[] str_update = { row["id"].ToString(), _sdeptid, yppc, cjid, ssql, "update" };
                    listUpdate.Add(str_update);
                    #endregion
                }

                #region 老HIS事务处理
                System.Data.Odbc.OdbcConnection  connection = new System.Data.Odbc.OdbcConnection(DAL.BaseDal.oldhis_constr);
                System.Data.Odbc.OdbcTransaction tx         = null;
                System.Data.Odbc.OdbcCommand     cmd        = new System.Data.Odbc.OdbcCommand();
                try
                {
                    connection.Open();
                    cmd.Connection  = connection;
                    tx              = connection.BeginTransaction();
                    cmd.Transaction = tx;

                    for (int i = 0; i <= listInsert.Count - 1; i++)
                    {
                        //插入和更新老HIS
                        ssql            = "select * from yk_kcb where yfh='" + listInsert[i][1].ToString() + "' and yppc='" + listInsert[i][2].ToString() + "' and ypbm=" + listInsert[i][3].ToString() + "";
                        cmd.CommandText = ssql;
                        object o = cmd.ExecuteScalar();
                        if (o != null)
                        {
                            cmd.CommandText = listUpdate[i][4];
                        }
                        else
                        {
                            cmd.CommandText = listInsert[i][4];
                        }
                        cmd.ExecuteNonQuery();
                    }

                    tx.Commit();
                    cmd.Dispose();
                    connection.Close();
                }
                catch (Exception ex)
                {
                    //事务回滚
                    tx.Rollback();
                    cmd.Dispose();
                    connection.Close();
                    tx.Dispose();
                    throw new Exception(ex.Message);
                }

                #endregion

                #region 回填新HIS记录
                for (int nrow = 0; nrow <= tb.Rows.Count - 1; nrow++)
                {
                    ssql = "update EVENTLOG set FINISH=1 ,FINISH_DATE='" + DateTime.Now.ToString() + "' where EVENT='KCBH' AND BIZID='" + tb.Rows[nrow]["ID"].ToString() + "'";
                    db.DoCommand(ssql);
                }
                #endregion

                System.String[] str = { "0", "保存成功" };
                return(HisFunctions.GetResponseString("SaveKcph", str));
            }
            catch (Exception err)
            {
                throw err;
            }
        }
Example #7
0
        /// <summary>
        /// 检查并修正病人信息
        /// </summary>
        /// <param name="zyh"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static bool Check(string zyh, RelationalDatabase db)
        {
            //Modify By Tany 2015-01-30 如果连接不是正式库,则不验证
            string conn = db.ConnectionString;

            string[] s = conn.Split(';');
            if (s.Length > 0)
            {
                for (int i = 0; i < s.Length; i++)
                {
                    if (s[i].IndexOf("initial catalog=") >= 0)
                    {
                        if (s[i].Replace("initial catalog=", "").ToLower() != "trasen")
                        {
                            return(true);
                        }
                    }
                }
            }

            InstanceOldHISDb();

            string oldzyh = "";
            string sql    = "";

            try
            {
                if (zyh.Trim() == "")
                {
                    throw new Exception("住院号为空,请检查!");
                }
                oldzyh = Convert.ToInt64(zyh).ToString();
                sql    = "select * from vi_zy_vinpatient_all where flag<>10 and inpatient_no='" + zyh + "' and dept_id in (select deptid from vi_zy_newhishsz)";
                DataTable newPatTb = db.GetDataTable(sql);
                //上线新护士站的病人才进行验证
                if (newPatTb != null && newPatTb.Rows.Count > 0)
                {
                    sql = "select * from zy_zybrxx where zyh='" + oldzyh + "'";
                    DataTable oldPatTb = InFomixDb.GetDataTable(sql);
                    if (oldPatTb == null || oldPatTb.Rows.Count == 0)
                    {
                        throw new Exception("在老系统未找到住院号为【" + oldzyh + "】的病人!");
                    }
                    string oldKs = HisFunctions.ConvertOldhisidToNewHisid(HisFunctions.DataMapType.JC_DEPT_PROPERTY, oldPatTb.Rows[0]["ks"].ToString().Trim(), db);
                    if (oldKs == "")
                    {
                        throw new Exception("未找到该科室[" + oldPatTb.Rows[0]["ks"].ToString().Trim() + "]对应的科室信息!");
                    }
                    string oldCwh = oldPatTb.Rows[0]["cwh"].ToString().Trim();

                    bool isTs = false;
                    //如果老系统科室和新系统不一样,则调用新系统到老系统的转科事件
                    if (oldKs != newPatTb.Rows[0]["dept_id"].ToString())
                    {
                        isTs = true;
                        MessageBox.Show("该病人在新系统中的科室与老系统的科室不符,系统将尝试修复老系统数据!\r\n\r\n点击确定后将继续操作......", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        //不能调用转科WS,只能直接更新数据
                        string _ks = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.JC_DEPT_PROPERTY, newPatTb.Rows[0]["dept_id"].ToString(), db);;
                        sql = "SELECT BQ FROM zy_bqksdzb Where KS = '" + _ks + "'";
                        string _bq = Convertor.IsNull(InFomixDb.GetDataResult(sql), "");

                        System.Data.Odbc.OdbcConnection  connection = new System.Data.Odbc.OdbcConnection(DAL.BaseDal.oldhis_constr);
                        System.Data.Odbc.OdbcTransaction tx         = null;
                        System.Data.Odbc.OdbcCommand     cmd        = new System.Data.Odbc.OdbcCommand();
                        try
                        {
                            connection.Open();
                            cmd.Connection  = connection;
                            tx              = connection.BeginTransaction();
                            cmd.Transaction = tx;

                            //清空老床位信息
                            sql             = "UPDATE ZY_CWXX Set zyh = '',xm = '',APZ = '',ZT = '空闲' Where zyh = '" + oldzyh + "'";
                            cmd.CommandText = sql;
                            cmd.ExecuteNonQuery();

                            //更新病人信息
                            sql             = "UPDATE ZY_ZYBRXX SET CWH='',BQ='" + _bq + "',ks='" + _ks + "',bf='',sfapcw='N' WHERE ZYH='" + oldzyh + "'";
                            cmd.CommandText = sql;
                            cmd.ExecuteNonQuery();

                            tx.Commit();
                        }
                        catch (Exception err)
                        {
                            tx.Rollback();
                            throw err;
                        }
                        finally
                        {
                            cmd.Dispose();
                            connection.Close();
                        }
                    }
                    //这里需要在检查一下这个病人的床位号如果不为空的情况下,在老系统床位表上是不是有信息 Modify By Tany 2015-01-22
                    string cwZyh = "";
                    if (oldCwh != "")
                    {
                        sql   = "select zyh from zy_cwxx where ks='" + oldPatTb.Rows[0]["ks"].ToString() + "' and cwh='" + oldCwh + "'";
                        cwZyh = Convertor.IsNull(InFomixDb.GetDataResult(sql), "");
                    }
                    //如果老系统科室和新系统或者床位不一样,则调用新系统到老系统的转床事件
                    //if (oldKs != newPatTb.Rows[0]["dept_id"].ToString() || oldCwh != newPatTb.Rows[0]["bed_no"].ToString() || cwZyh != oldzyh)
                    //Modify By Tany 2015-05-05 修正这里的判断,因为新老系统床位名称可能不一致,判断床位的时候,需要通过对应关系去验证床号是否正确
                    string   mapCwh = HisFunctions.ConvertNewhisidToOldHisid(HisFunctions.DataMapType.ZY_BEDDICTION, newPatTb.Rows[0]["bed_id"].ToString(), db);
                    string[] ss     = mapCwh.Replace("||", "|").Split("|".ToCharArray());
                    if (ss.Length > 1)
                    {
                        mapCwh = ss[1];
                    }
                    if (oldKs != newPatTb.Rows[0]["dept_id"].ToString() || oldCwh != mapCwh || cwZyh != oldzyh)
                    {
                        if (!isTs)
                        {
                            isTs = true;
                            MessageBox.Show("该病人在新系统中的床位与老系统的床位不符,系统将尝试修复老系统数据!\r\n\r\n点击确定后将继续操作......", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        TrasenWS.TrasenWS ws     = new TrasenHIS.TrasenWS.TrasenWS();
                        string            strXML = "";
                        strXML = ws.GetXml("n2oZc.HIS", newPatTb.Rows[0]["inpatient_id"].ToString());
                        strXML = ws.ExeWebService("n2oZc.HIS", strXML);
                        DataSet dset = HisFunctions.ConvertXmlToDataSet(strXML);
                        if (dset.Tables["HEAD"].Rows.Count > 0)
                        {
                            if (dset.Tables["HEAD"].Rows[0]["ERRCODE"].ToString() == "-1")
                            {
                                throw new Exception("调用WS转床时出现错误:" + dset.Tables["HEAD"].Rows[0]["ERRTEXT"].ToString());
                            }
                        }
                    }
                    if (isTs)
                    {
                        MessageBox.Show("老系统数据修复完成,将继续完成您的操作!");
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show("检查新老系统病人状态时出错,您的操作将不能继续!\r\n\r\n" + ex.Message);
                return(false);
            }
        }