Esempio n. 1
0
        /// <summary>
        /// 出院处理
        /// </summary>
        /// <param name="zyh"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static bool Cycl(string zyh, RelationalDatabase db)
        {
            InstanceOldHISDb();
            Judgeorder jd        = new Judgeorder(db);
            ReturnInfo ri        = new ReturnInfo();
            string     gflb      = "";
            string     ls_return = "";
            string     ssql      = "";
            bool       lb_ff     = false;
            DataTable  tb        = new DataTable();
            DataRow    dr        = tb.NewRow();

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

            try
            {
                gflb = jd.GetLb(zyh);

                if (gflb == "新医保")
                {
                    bool isOk = Ybcydj(zyh, db);
                    if (!isOk)
                    {
                        return(isOk);
                    }
                }
                zyh = Convert.ToInt64(zyh).ToString();
                //打开病人出院登记界面
                switch (gflb)
                {
                case "工会会员":    //这个返回值为空,应该是屏蔽了,不写了
                {
                    //lb_ff = true;
                    //Open(w_bq_yzgl_djcysj_bzxz);
                    break;
                }

                case "合作医疗":
                case "新农合(东西湖)":
                {
                    lb_ff = true;
                    //Open(w_bq_yzgl_djcysj_bzxz_hzyl);
                    tb = GetHzylDm();
                    break;
                }

                case "合约(部分病种结算)":
                {
                    lb_ff = true;
                    //Open(w_bq_yzgl_djcysj_bzxz2);
                    tb = GetHyDm();
                    break;
                }
                }

                if (gflb == "")
                {
                    ssql = "select gflb from zy_brjbxx where zyh = '" + zyh + "'";
                    gflb = Convertor.IsNull(InFomixDb.GetDataResult(ssql), "");
                }
                ssql = "select count(*) from nb_brxx where zyh = '" + zyh + "'";
                if (Convert.ToInt32(Convertor.IsNull(InFomixDb.GetDataResult(ssql), "0")) > 0)
                {
                    if (MessageBox.Show("该新农合病人是否为外伤患者?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                    {
                        ssql = "update zy_zybrxx set bz = '1' where zyh = '" + zyh + "'";
                        InFomixDb.DoCommand(ssql);
                    }
                }

                //ssql = "select count(*) from zy_dbzjs where gflb = '" + DAL.BaseDal.GetEncodingStringToInforMix(gflb) + "'";
                ssql = "select count(*) from zy_dbzjs where gflb = '" + gflb + "'";
                if (Convert.ToInt32(Convertor.IsNull(InFomixDb.GetDataResult(ssql), "0")) > 0)
                {
                    lb_ff = true;
                    //openwithparm(w_bq_yzgl_djcysj_jslx,is_gflb);
                    //ssql = "SELECT bzbm code,bzmc name FROM zy_dbzjs WHERE gflb = '" + DAL.BaseDal.GetEncodingStringToInforMix(gflb) + "'";
                    ssql = "SELECT bzbm code,bzmc name FROM zy_dbzjs WHERE gflb = '" + gflb + "'";
                    tb   = InFomixDb.GetDataTable(ssql);
                    //做转换
                    //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], ""));
                    //    }
                    //}
                }

                if (lb_ff)
                {
                    if (tb == null || tb.Rows.Count == 0)
                    {
                        throw new Exception("未找到需填写的的信息!");
                    }

                    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]["code"], "");
                        }
                    }
                    if (ls_return == "")
                    {
                        return(false);
                    }
                    else
                    {
                        ls_return = Convert.ToInt32(ls_return).ToString();
                        if (ls_return == "0")
                        {
                            if (MessageBox.Show("您所填写的是无优惠政策的病种,确定吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)
                            {
                                return(false);
                            }
                        }
                        //ssql = "UPDATE zy_zybrxx Set fybh = '" + DAL.BaseDal.GetEncodingStringToInforMix(ls_return) + "' Where zyh = '" + zyh + "'";
                        ssql = "UPDATE zy_zybrxx Set fybh = '" + ls_return + "' Where zyh = '" + zyh + "'";
                        InFomixDb.DoCommand(ssql);
                    }
                }
                //ls_return = ''
                //OpenWithParm(w_bq_yzgl_djcysj,GetParm)
                //ls_return = Message.StringParm
                //IF ls_return <> 'OK' THEN // ll_return = 1 OK
                //    RETURN -1
                //END IF

                //RETURN 1
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(true);
        }
Esempio n. 2
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);
            }
        }