public override void ProcessMessage() { string jiuzhenkLx = InObject.JIUZHENKLX; //就诊卡类型 string jiuzhenKh = InObject.JIUZHENKH; //就诊卡号 string bingrenLb = InObject.BINGRENLB; //病人类别 string bingrenXz = InObject.BINGRENXZ; //病人性质 string yibaokLx = InObject.YIBAOKLX; //医保卡类型 string yibaokMm = InObject.YIBAOKMM; //医保卡密码 string yibaokXx = InObject.YIBAOKXX; //医保卡信息 string yibaobrXx = InObject.YIBAOBRXX; //医保病人信息 string yiliaoLb = InObject.YILIAOLB; //医疗类别 string jiesuanLb = InObject.JIESUANLB; //结算类别 string jiesuanId = InObject.JIESUANID; //结算ID string hisbrXx = InObject.HISBRXX; //his病人信息 //string zhifuLx = BaseCommon.GetNoteValue(tradeMsg, tradeType, "ZHIFULX"); string zhifuJe = InObject.ZONGJE; //总金额 //string yinhangkXx = BaseCommon.GetNoteValue(tradeMsg, tradeType, "YINHANGKXX"); string caozuoyDm = InObject.BASEINFO.CAOZUOYDM; string caozuoyXm = InObject.BASEINFO.CAOZUOYXM; string caozuoRq = InObject.BASEINFO.CAOZUORQ; string jiaoyiLsh = InObject.BASEINFO.ZHONGDUANLSH;//终端流水号即交易流水号?? #region 基础入参判断 //就诊卡号 if (string.IsNullOrEmpty(jiuzhenKh)) { throw new Exception("就诊卡号获取失败"); } //就诊卡类型 if (string.IsNullOrEmpty(jiuzhenkLx)) { throw new Exception("就诊卡类型获取失败"); } //病人类别 if (string.IsNullOrEmpty(bingrenLb)) { throw new Exception("病人类别获取失败"); } //病人性质 if (string.IsNullOrEmpty(bingrenXz)) { throw new Exception("病人性质获取失败"); } #endregion string bingrenId = DBVisitor.ExecuteScalar(string.Format("select bingrenid from gy_bingrenxx where jiuzhenkh='{0}'", jiuzhenKh)).ToString(); string fapiaoId = string.Empty; string zhifuLx = string.Empty; string zhifuFs = "1"; //支付方式? string jiesuanIds = jiesuanId; //结算单字符串? string yhjiaoyiLsh = string.Empty; string yibaojsId = string.Empty; string yinhangkXx = string.Empty; string jiaoyiMsg = bingrenId + "|" + caozuoyDm + "|" + zhifuFs + "|" + jiesuanIds + "|" + zhifuJe + "|" + jiaoyiLsh + "|" + fapiaoId + "|" + caozuoRq + "|" + jiuzhenKh + "|" + zhifuLx + "|" + yinhangkXx + "|" + yibaojsId + "|"; //门诊收费------------------------------------------------------------------------------------------- OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_MSG", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiMsg; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_OUTBUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; log.InfoFormat("{0}", "执行存储过程:PKG_GY_YINYIJK.PRC_SHOUFEIJS \r\nPRM_MSG:" + jiaoyiMsg + "\r\n"); DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_GY_YINYIJK.PRC_SHOUFEIJS", paramJiaoYi, transaction); } catch (Exception ex) { if (transaction != null) { transaction.Rollback();//回滚 conn.Close(); } throw new Exception(ex.Message); } //-------------------------------------------------------------------------------------- string returnValue = paramJiaoYi[1].Value.ToString(); string returnMsg = paramJiaoYi[2].Value.ToString(); //LogHelper.WriteLog(typeof(GG_JiaoYiBLL), "门诊收费存储过程返回值:" + returnValue + "|" + returnMsg); if (returnValue == "1") //交易成功 { transaction.Commit(); //提交 conn.Close(); string[] list = returnMsg.Split('|'); DataTable dtTarget = new DataTable(); dtTarget.Columns.Add("SHIFUJE", Type.GetType("System.String")); dtTarget.Columns.Add("TIAOXINGM", Type.GetType("System.String")); dtTarget.Columns.Add("QUYAOCK", Type.GetType("System.String")); dtTarget.Columns.Add("BINGRENID", Type.GetType("System.String")); DataRow nRow = dtTarget.NewRow(); nRow["SHIFUJE"] = list[0];; nRow["TIAOXINGM"] = list[1]; nRow["QUYAOCK"] = list[2]; nRow["BINGRENID"] = bingrenId; dtTarget.Rows.Add(nRow); } else { transaction.Rollback();//回滚 conn.Close(); throw new Exception(returnMsg); } }
public override void ProcessMessage() { OutObject = new GUAHAOYY_OUT(); string yuyueLx = InObject.YUYUELX; string jiuzhenkLx = InObject.JIUZHENKLX; //就诊卡类型 string jiuzhenKh = InObject.JIUZHENKH; //就诊卡号 string zhengjianLx = InObject.ZHENGJIANLX; //证件类型 string zhengjianHm = InObject.ZHENGJIANHM; //证件号码 string xingMing = InObject.XINGMING; //姓名 string yizhoupbId = InObject.YIZHOUPBID; //一周排班id; string dangtianpbId = InObject.DANGTIANPBID; //当天排班id string riQi = InObject.RIQI; //日期 string guahaoBc = InObject.GUAHAOBC; //挂号班次 string guahaoLb = InObject.GUAHAOLB; //挂号类别 string keshiDm = InObject.KESHIDM; //科室代码 string yishengDm = InObject.YISHENGDM; //医生代码 string guahaoXh = InObject.GUAHAOXH; //挂号序号 string yuyueLy = InObject.YUYUELY; //预约来源 string lianxiDh = InObject.LIANXIDH; //手机号码 string bingrenId = InObject.BINGRENID; //病人ID string xingBie = InObject.XINGBIE; //性别 string FenYuanDM = InObject.BASEINFO.FENYUANDM; //分院代码 string beiZhu = InObject.BEIZHU; //备注 string czygh = ConfigurationManager.AppSettings["JRCaoZuoYGH"]; //接入操作员工号 string yuYueCZFS = ConfigurationManager.AppSettings["GUAHAOYYCZFS"]; //挂号预约处理方式 if (!string.IsNullOrEmpty(yuYueCZFS) && yuYueCZFS == "1") { #region 兴悦城业务处理 #region 基本入参判断 //if (string.IsNullOrEmpty(zhengjianHm)) { // throw new Exception("证件号码不能为空!"); //} if (string.IsNullOrEmpty(beiZhu)) { beiZhu = string.Empty; } if (string.IsNullOrEmpty(xingMing)) { throw new Exception("姓名不能为空!"); } if (string.IsNullOrEmpty(xingBie)) { throw new Exception("性别不能为空!"); } if (string.IsNullOrEmpty(lianxiDh)) { throw new Exception("联系电话不能为空!"); } if (string.IsNullOrEmpty(guahaoBc)) { throw new Exception("挂号班次不能为空!请传入1 上午,2 下午!"); } else if (guahaoBc != "1" && guahaoBc != "2") { throw new Exception("挂号班次不能为空!请传入1 上午,2 下午!"); } if (string.IsNullOrEmpty(xingBie)) { xingBie = "0"; } if (string.IsNullOrEmpty(yuyueLx)) { yuyueLx = ConfigurationManager.AppSettings["GuaHaoYYLX"];//预约类型 } #endregion string sXingBie = string.Empty; switch (xingBie) { case "0": sXingBie = "未知"; break; case "1": sXingBie = "男"; break; case "2": sXingBie = "女"; break; default: sXingBie = "其它"; break; } string chuShenRQ = "null"; if (!string.IsNullOrEmpty(zhengjianHm)) { chuShenRQ = string.Format("to_date('{0}','yyyy-mm-dd')", zhengjianHm.Substring(6, 8).Insert(4, "-").Insert(7, "-")); } string houzhensj = "select kaishisj,jieshusj from v_mz_houzhensj where paibanid = '{0}' and (shangxiawbz = '{1}') and (qishighxh>= '{2}' and jieshughxh <= '{2}')"; DataTable dtHouZhensj = DBVisitor.ExecuteTable(string.Format(houzhensj, dangtianpbId, guahaoBc == "1" ? "0" : "1", guahaoXh)); string kaishisj = string.Empty; string jieshusj = string.Empty; if (dtHouZhensj != null && dtHouZhensj.Rows.Count > 0) { kaishisj = dtHouZhensj.Rows[0]["kaishisj"].ToString(); jieshusj = dtHouZhensj.Rows[0]["jieshusj"].ToString(); } string PaiBanHYXX = @"select * from v_mz_guahaoyyxh_qbhy where paibanid = '{0}' and guahaoyyxh = '{1}' and shangxiawbz = '{2}'and yuanquid = '{3}' "; DataTable dtPBHYXX = DBVisitor.ExecuteTable(string.Format(PaiBanHYXX, dangtianpbId, guahaoXh, guahaoBc == "1" ? "0" : "1", FenYuanDM)); if (dtPBHYXX == null || dtPBHYXX.Rows.Count <= 0) { throw new Exception("未找到有效的号源信息!"); } //号源占用判断 DataTable dtYYYXX = DBVisitor.ExecuteTable(string.Format("select * from v_mz_guahaoyyxh_yshyh where paibanid = '{0}' and guahaoyyxh = '{1}' and shangxiawbz = '{2}' and yuanquid = '{3}' ", dangtianpbId, guahaoXh, ((guahaoBc == "1") ? 0 : 1), FenYuanDM)); if (dtYYYXX.Rows.Count > 0) { throw new Exception("该时间段已被预约,请选择其它时间段!"); } string quHaoMM = DBVisitor.ExecuteScalar("select LPAD(seq_gy_jiuzhenyy.nextval,10,'0') from dual").ToString(); string bingrenid = DBVisitor.ExecuteScalar(string.Format("select nvl(bingrenid,'') from gy_bingrenxx where xingming = '{0}' and xingbie = '{1}' and jiatingdh = '{2}' ", xingMing, sXingBie, lianxiDh)).ToString(); string insertYYXX = @"insert into gy_jiuzhenyy (jiuzhenyyid,yuyuesj,yisehngid,keshiid,xingming, shuruma1,shuruma2,shuruma3,xingbie,chushengrq,dianhua, yuyuerq,jiuzhenbz,jiluren,jieshusj,zuofeibz,yuyuely,beizhu,bingrenid,chuzhenbz ) values( '{0}','{1}','{2}','{3}','{4}', fun_gy_getshuruma1('{4}',50),fun_gy_getshuruma2('{4}',50),fun_gy_getshuruma3('{4}',50),'{5}',{6},'{7}', to_date('{8}','yyyy-mm-dd'),'0','{9}','{10}','0','{11}','{12}','{13}',{14} )"; DBVisitor.ExecuteNonQuery(string.Format(insertYYXX, quHaoMM, kaishisj, yishengDm, keshiDm, xingMing, sXingBie, chuShenRQ, lianxiDh, riQi, InObject.BASEINFO.CAOZUOYDM, jieshusj, yuyueLx, beiZhu, bingrenid, string.IsNullOrEmpty(bingrenid)?1:0)); OutObject.GUAHAOXH = guahaoXh; OutObject.JIUZHENSJ = Unity.getJiuZhenSJD(yishengDm, keshiDm.ToString(), guahaoXh, yuyueLx, ((guahaoBc == "1") ? 0 : 1), guahaoLb, riQi); OutObject.QUHAOMM = quHaoMM; #endregion } else { #region 标准his4业务处理 #region 基本入参判断 if (string.IsNullOrEmpty(InObject.BASEINFO.CAOZUOYDM)) { throw new Exception("非法操作员,无法进行预约操作!"); } if (!string.IsNullOrEmpty(czygh) && !czygh.Contains("^" + InObject.BASEINFO.CAOZUOYDM + "^")) { throw new Exception("非法操作员,无法进行预约操作!"); } //预约类型 if (string.IsNullOrEmpty(yuyueLx)) { yuyueLx = ConfigurationManager.AppSettings["GuaHaoYYLX"];//预约类型 } //性别 if (string.IsNullOrEmpty(xingBie)) { xingBie = "未知"; } else if (xingBie == "1") { xingBie = "男"; } else if (xingBie == "2") { xingBie = "女"; } else if (xingBie == "9") { xingBie = "其他"; } else { xingBie = ""; } if (!string.IsNullOrEmpty(zhengjianHm)) { zhengjianHm = zhengjianHm.ToUpper(); } //姓名 if (string.IsNullOrEmpty(xingMing)) { throw new Exception("姓名不能为空!"); } //就诊卡号 if (string.IsNullOrEmpty(jiuzhenKh) && string.IsNullOrEmpty(zhengjianHm) && string.IsNullOrEmpty(bingrenId)) { throw new Exception("就诊卡号和证件号码不能同时为空!"); } //排班id if (string.IsNullOrEmpty(dangtianpbId)) { throw new Exception("排班信息获取失败,请重新尝试挂号!"); } //预约日期 if (string.IsNullOrEmpty(riQi)) { throw new Exception("预约日期获取失败,请重新尝试挂号!"); } //挂号班次 if (string.IsNullOrEmpty(guahaoBc)) { throw new Exception("挂号班次获取失败,请重新尝试挂号!"); } //挂号类别 if (string.IsNullOrEmpty(guahaoLb)) { throw new Exception("挂号类别获取失败,请重新尝试挂号!"); } //科室代码 if (string.IsNullOrEmpty(keshiDm)) { throw new Exception("科室信息获取失败,请重新尝试挂号!"); } //挂号序号 if (string.IsNullOrEmpty(guahaoXh)) { throw new Exception("预约挂号序号获取失败,请重新尝试挂号!"); } //联系电话 if (string.IsNullOrEmpty(lianxiDh)) { throw new Exception("联系电话获取失败,请重新尝试挂号!"); } if (string.IsNullOrEmpty(yishengDm)) { yishengDm = "*"; } if (string.IsNullOrEmpty(yuyueLy)) { yuyueLy = ConfigurationManager.AppSettings["GuaHaoYYLY"]; if (string.IsNullOrEmpty(yuyueLy)) { yuyueLy = "7"; } } #endregion string chushengrq = ""; string xuexing = ""; string hunyin = ""; string zhiye = ""; string guoji = ""; string minzu = ""; string jiwangshi = ""; string guominshi = ""; string jiatingdz = ""; string lianxirdh = ""; string lianxiren = ""; string dianhua = ""; string houzhenkssj = ""; string houzhenjssj = ""; if (!string.IsNullOrEmpty(jiuzhenKh) || !string.IsNullOrEmpty(zhengjianHm) || !string.IsNullOrEmpty(bingrenId)) { //获取病人个人信息 StringBuilder sbSql = new StringBuilder("select a.jiuzhenkh,a.shenfenzh,xingbie, to_char(a.chushengrq,'yyyy-mm-dd') chushengrq,a.bingrenid, a.xuexing,a.hunyin,"); sbSql.Append(" a.zhiye,a.guoji,a.minzu,a.jiwangshi,a.guominshi,a.jiatingdz,a.lianxirdh,a.lianxiren,a.dianhua,a.lianxidh "); sbSql.Append("from gy_v_bingrenxx a where ((a.jiuzhenkh is not null and a.jiuzhenkh = '" + jiuzhenKh + "') or (a.yibaokh is not null and a.yibaokh = '" + jiuzhenKh + "') or (a.bingrenid is not null and a.bingrenid ='" + bingrenId + "') or (a.shenfenzh is not null and a.shenfenzh = '" + zhengjianHm + "')) order by a.yibaokh asc, a.xiugaisj desc "); DataTable dt = DBVisitor.ExecuteTable(sbSql.ToString()); if (dt.Rows.Count > 0) { jiuzhenKh = dt.Rows[0]["jiuzhenkh"].ToString(); bingrenId = dt.Rows[0]["bingrenid"].ToString(); zhengjianHm = dt.Rows[0]["shenfenzh"].ToString(); chushengrq = dt.Rows[0]["chushengrq"].ToString(); xuexing = dt.Rows[0]["xuexing"].ToString(); hunyin = dt.Rows[0]["hunyin"].ToString(); zhiye = dt.Rows[0]["zhiye"].ToString(); guoji = dt.Rows[0]["guoji"].ToString(); minzu = dt.Rows[0]["minzu"].ToString(); jiwangshi = dt.Rows[0]["jiwangshi"].ToString(); guominshi = dt.Rows[0]["guominshi"].ToString(); jiatingdz = dt.Rows[0]["jiatingdz"].ToString(); lianxirdh = dt.Rows[0]["lianxirdh"].ToString(); lianxiren = dt.Rows[0]["lianxiren"].ToString(); dianhua = dt.Rows[0]["dianhua"].ToString(); xingBie = dt.Rows[0]["xingbie"].ToString(); if (string.IsNullOrEmpty(lianxiDh)) { lianxiDh = string.IsNullOrEmpty(dianhua) ? dt.Rows[0]["lianxidh"].ToString() : dianhua; } } else { if (string.IsNullOrEmpty(zhengjianHm)) { throw new Exception("证件号码不能为空!"); } } } if (bingrenId == "null" || bingrenId == "Null" || bingrenId == "NULL") { bingrenId = string.Empty; } #region 科室可预约年龄判断 if (!Unity.shiFouKeGHNianLin(keshiDm, zhengjianHm)) { throw new Exception("年龄条件不符合,不能在本科室挂号/预约!"); } #endregion #region 科室可预约性别判断 if (!Unity.shiFouKeGHXingBie(keshiDm, zhengjianHm)) { throw new Exception("性别条件不符合,不能在本科室挂号/预约!"); } #endregion #region 获取候诊时间 string guaHaoHYMS = ConfigurationManager.AppSettings["GuaHaoYMS"];//挂号号源模式 if (!string.IsNullOrEmpty(guaHaoHYMS) && guaHaoHYMS == "1") { } else { OutObject.JIUZHENSJ = Unity.getJiuZhenSJD(yishengDm, keshiDm.ToString(), guahaoXh, yuyueLx, ((guahaoBc == "1") ? 0 : 1), guahaoLb, riQi); } if (OutObject.JIUZHENSJ.Contains("-")) { houzhenkssj = OutObject.JIUZHENSJ.Split('-')[0]; houzhenjssj = OutObject.JIUZHENSJ.Split('-')[1]; } #endregion //拼装交易字符串(2014-07-08,参考来源:his4.GHPKG.P_GH_BOOK) string jiaoyiZfc = bingrenId; //外部病人ID为空 jiaoyiZfc += "|" + jiuzhenKh; //就诊卡号 jiaoyiZfc += "|"; //医保卡号 jiaoyiZfc += "|" + xingMing; //姓名 jiaoyiZfc += "|" + xingBie; //性别 jiaoyiZfc += "|" + zhengjianHm; //证件号码 jiaoyiZfc += "|" + chushengrq; //出身日期 jiaoyiZfc += "|" + xuexing; //血型 jiaoyiZfc += "|" + hunyin.Replace('|', '-'); //婚姻状况 jiaoyiZfc += "|" + zhiye; //职业 jiaoyiZfc += "|" + guoji; //国籍 jiaoyiZfc += "|" + minzu; //民族 jiaoyiZfc += "|" + jiwangshi; //既往史 jiaoyiZfc += "|" + guominshi; //过敏史 jiaoyiZfc += "|" + jiatingdz; //家庭地址为空 jiaoyiZfc += "|" + lianxiDh; //联系电话 jiaoyiZfc += "|" + lianxiren; //联系人 jiaoyiZfc += "|" + lianxiDh; //联系电话 jiaoyiZfc += "|" + (guahaoBc == "1" ? "S" : "X") + dangtianpbId; //排版ID jiaoyiZfc += "|2"; //排班模式 jiaoyiZfc += "|" + riQi; //就诊日期 jiaoyiZfc += "|" + yuyueLx; //预约类型 jiaoyiZfc += "|" + yuyueLy; //记录来源 jiaoyiZfc += "|" + guahaoXh; //预约挂号就诊序号 jiaoyiZfc += "|"; jiaoyiZfc += "|"; jiaoyiZfc += "|" + InObject.BASEINFO.CAOZUOYDM; jiaoyiZfc += "|" + String.Empty; //yuyuehao 取号密码字段 jiaoyiZfc += "|" + lianxiDh; //家庭电话 jiaoyiZfc += "|"; //单位电话 jiaoyiZfc += "|" + houzhenkssj; //候诊开始时间 jiaoyiZfc += "|" + houzhenjssj; //候诊结束时间 //提交预约号------------------------------------------------------------------------------------------- OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_JIAOYIZFC", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiZfc; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_DATABUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; log.InfoFormat("{0}", "执行存储过程:PKG_MZ_YUYUE.PRC_GY_TIJIAOYUYUEXX \r\nPRM_JIAOYIZFC:" + jiaoyiZfc + "\r\n"); string returnValue = string.Empty; DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_MZ_YUYUE.PRC_GY_TIJIAOYUYUEXX", paramJiaoYi, transaction); } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); conn.Close(); } throw new Exception(ex.Message); } //-------------------------------------------------------------------------------------------------- //String filePath = System.Environment.CurrentDirectory; //取当前系统路径 string errMsg = string.Empty; returnValue = paramJiaoYi[2].Value.ToString(); if (!returnValue.Contains("|")) { transaction.Rollback(); conn.Close(); throw new Exception(returnValue); } if (returnValue.Length > 3 && returnValue.Substring(0, 3).ToUpper() == "ERR")//获取信息错误 { errMsg = returnValue.Substring(returnValue.IndexOf('|') + 1); transaction.Rollback(); conn.Close(); throw new Exception(errMsg); } else { string yuYueHao = string.Empty; if (returnValue.Contains("|")) { yuYueHao = returnValue.Split('|')[1]; //此处需要处理返回成功的xml OutObject.QUHAOMM = yuYueHao; OutObject.GUAHAOXH = guahaoXh; transaction.Commit(); conn.Close(); } else { transaction.Rollback(); conn.Close(); throw new Exception("存储过程返回值格式有误!"); } } #endregion } }
public override void ProcessMessage() { if (InObject.YUYUERQ == null) { throw new Exception(string.Format("预约日期不能为空!")); } if (InObject.YUYUESJ == null) { throw new Exception(string.Format("预约时间不能为空!")); } //if (InObject.JIANCHAXMDM == null || InObject.JIANCHAXMDM == "") //{ // throw new Exception(string.Format("检查项目不能为空!")); //} if (InObject.BINGRENLX == null || InObject.BINGRENLX < 1 || InObject.BINGRENLX > 3) { throw new Exception(string.Format("病人类型代码不对!")); } if (InObject.YEWULY == null) { InObject.YEWULY = InObject.BINGRENLX.ToString(); } var jcsbdm = InObject.JIANCHASBDM.ToString(); var yyrq = InObject.YUYUERQ.ToString(); var yysj = InObject.YUYUESJ.ToString(); var yyh = ""; //不能预约以前的日期 if (string.Compare(yyrq, DateTime.Now.ToString("yyyy-MM-dd")) < 0) { throw new Exception(string.Format("预约日期必须大于等于今天!")); } if (System.Configuration.ConfigurationManager.AppSettings["JianChaJKMS"] == "1") { HISYY_Submit resource = new HISYY_Submit(); var yysqdbh = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00018)).Items["YYSQDBH"].ToString(); //检查 if (InObject.YEWULY == "1") { #region 调用包,判断入参是否正确 var jyjcdxx = ""; var jyjcmx = ""; var zdmx = ""; var jcxmdm = ""; int i = 0; if (InObject.JIANCHALB.Count < 1) { throw new Exception(string.Format("检查项目不能为空!")); } #region 检查单信息 jyjcdxx += InObject.JIUZHENKLX + "|"; // 就诊卡类型 jyjcdxx += InObject.JIUZHENKH + "|"; // 就诊卡号 jyjcdxx += InObject.SHENQINGYSGH + "|"; // 送检医生 jyjcdxx += InObject.SHENQINGYYDM + "|"; // 送检科室 jyjcdxx += InObject.YUYUESF + "|"; // 收费识别 jyjcdxx += InObject.BINGQINGMS + "|"; // 病情描述 jyjcdxx += InObject.ZHENDUAN + "|"; // 诊断 jyjcdxx += InObject.BINGRENTZ + "|"; // 病人体征 jyjcdxx += InObject.QITAJC + "|"; // 其它检查 jyjcdxx += InObject.BINGRENZS + "|"; // 病人主诉 jyjcdxx += InObject.YEWULY + "|"; // 检查来源 jyjcdxx += InObject.BINGRENXM + "|"; // 病人姓名 jyjcdxx += InObject.SHENFENZH + "|"; // 病人身份证号 jyjcdxx += "0" + "|"; // 接收方式 jyjcdxx += "|"; // 检查申请单号 jyjcdxx += InObject.YUYUERQ + " " + InObject.YUYUESJ + "|"; // 检查日期 jyjcdxx += InObject.BINGRENXB + "|"; // 病人性别 jyjcdxx += InObject.BINGRENNL; // 病人年龄 #endregion #region 检验检查明细 foreach (var item in InObject.JIANCHALB) { if (i == 0) { jcxmdm = item.JIANCHAXMBH; } else { jcxmdm += "," + item.JIANCHAXMBH; } ++i; jyjcmx += item.JIANCHAXMBH + "|"; // 检查项目编号 jyjcmx += item.JIANCHAXMMC + "|"; // 检查项目名称 jyjcmx += item.JIANCHAFLBM + "|"; // 检查分类编码 jyjcmx += item.JIANCHASTBW + "|"; // 检查身体部位 jyjcmx += item.JIANCHAFXDM + "|"; // 检查方向代码 jyjcmx += item.JIANCHAZYDM + "|"; // 检查肢位代码 jyjcmx += item.JIANCHATS + "^"; // 检查提示 } #endregion #region 疾病明细 foreach (var item in InObject.ZHENDUANLB) { zdmx += item.ICD10 + "|"; // ICD10 zdmx += item.ZHENDUANMC + "^"; // 诊断名称 } #endregion #region 调用包 var jianchakd = SqlLoad.GetProcedure(SQ.P_FSD00030); jianchakd["ywlx"] = 1; jianchakd["jyjcdxx"] = jyjcdxx; jianchakd["jyjcmx"] = jyjcmx; jianchakd["zdmx"] = zdmx; jianchakd["jylx"] = 1; jianchakd["errno"] = -1; jianchakd["errmsg"] = string.Empty.PadRight(1024); jianchakd["outdata"] = string.Empty.PadRight(1024); DBVisitor.ExecuteProcedure(jianchakd); if (jianchakd["errno"].ToString() != "0") { throw new Exception("更新库存失败:" + jianchakd["errmsg"]); } #endregion #endregion if (InObject.YEWULX == "2") { resource.AdmissionSource = "10"; } else { resource.AdmissionSource = "50"; } resource.HospitalCode = InObject.BASEINFO.JIGOUDM; resource.HospitalName = "余杭三院"; resource.PatientName = InObject.BINGRENXM; resource.IdNumber = InObject.SHENFENZH; resource.RequestNo = yysqdbh; if (InObject.YEWULY == "2") { resource.AdmissionID = InObject.BINGRENZYH; } else { resource.AdmissionID = InObject.BINGRENMZH; } resource.ExaminePartTime = InObject.XIANGMUHS; resource.PatientSex = InObject.BINGRENXB.ToString(); resource.PatientBorn = InObject.BINGRENCSRQ; resource.PatientAge = InObject.BINGRENNL; resource.PatientTel = InObject.BINGRENLXDH; resource.PatientAddress = InObject.BINGRENLXDZ; resource.PatientCard = InObject.BINGRENKH; resource.InPatientAreaName = InObject.BINGRENBQMC; resource.InPatientAreaCode = InObject.BINGRENBQDM; resource.BedNum = InObject.BINGRENCWH; resource.DeviceCode = InObject.JIANCHASBDM.ToString(); resource.DeviceName = InObject.JIANCHASBMC; var codes = DBVisitor.ExecuteModels(SqlLoad.GetFormat(SQ.FSD00027, jcxmdm)); foreach (var code in codes) { resource.StudiesExamine.Add(new StudiesExamine() { ExamineCode = code["LBXH"].ToString(), ExamineName = Unity.encodeString(code["LBMC"].ToString()), Numbers = "1", ExaminePrice = DBVisitor.ExecuteScalar(SqlLoad.GetFormat(SQ.FSD00029, code["LBXH"].ToString())).ToString() }); } resource.ExamineFY = resource.StudiesExamine.Sum <StudiesExamine>(group => { return(Convert.ToDecimal(group.ExaminePrice)); }).ToString(); resource.ReceiptNum = InObject.BINGRENFPH; codes = DBVisitor.ExecuteModels(SqlLoad.GetFormat(SQ.FSD00027, jcxmdm)); resource.ZxDepartmentId = codes[0]["JCKS"].ToString(); resource.ZxDepartmentName = codes[0]["KSMC"].ToString(); resource.Sqrq = InObject.BASEINFO.CAOZUORQ; resource.BespeakDateTime = InObject.YUYUERQ + " " + InObject.YUYUESJ; resource.JZ = "0"; // InObject.JIZHEN; resource.ZQ = "0"; //InObject.ZENGQIANG; resource.LS = "0"; //InObject.LINSHI; resource.PF = "1"; ///调用WEBSERVICE string url = System.Configuration.ConfigurationManager.AppSettings["LAIDAURL"]; string xml = XMLHandle.EntitytoXML <HISYY_Submit>(resource); HISYY_Submit_Result result = XMLHandle.XMLtoEntity <HISYY_Submit_Result>(WSServer.Call <HISYY_Submit>(url, xml).ToString()); if (result.Success == "False") { throw new Exception("预约失败,错误原因:" + result.Message); } var tran = DBVisitor.Connection.BeginTransaction(); try { #region 先插入到临时表 var ID = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00024, " seq_sxzz_jianchad.nextval ")); var xh = ""; var JCSQDH = result.JCH; int k = 0; if (ID == null) { throw new Exception(string.Format("检查单序列获取失败!")); } else { xh = ID.Items["MAXID"].ToString(); } //var SQDH = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00023, " SEQ_GY_YXSQD_SQDH.NEXTVAL ")); //if (SQDH == null) //{ // throw new Exception(string.Format("申请单号获取失败!")); //} //else //{ // JCSQDH = SQDH.Items["MAXID"].ToString(); //} //插入检查单信息 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00022, xh, "", InObject.BINGRENMZH, InObject.BINGRENXM, InObject.SHENFENZH, InObject.SHENQINGYSGH, InObject.JIANCHAKSDM, 0, InObject.BINGQINGMS, InObject.ZHENDUAN, InObject.BINGRENTZ, InObject.QITAJC, InObject.BINGRENZS, InObject.YEWULX, 0, JCSQDH, InObject.YUYUERQ, InObject.BINGRENXB, InObject.BINGRENNL), tran); //插入检查明细 foreach (var item in InObject.JIANCHALB) { ++k; DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00023, xh, k, item.JIANCHAXMBH, item.JIANCHAXMMC, item.JIANCHAFLBM, item.JIANCHASTBW, item.JIANCHAFXDM, item.JIANCHAZYDM, item.JIANCHATS), tran); } k = 0; //插入诊断明细 foreach (var item in InObject.ZHENDUANLB) { ++k; DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00025, xh, k, item.ICD10, item.ZHENDUANMC), tran); } #endregion var listyylsh = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00017)); var yysqlsh = listyylsh.Items["YYSQLSH"].ToString(); //插入预约申请信息fdsyy_sq DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00011, "申请单", //预约申请单名称 InObject.YUYUEZT, //预约申请单状态(0未确认,1已确认,9作废) InObject.JIANCHAKSDM, //检查科室代码 InObject.JIANCHAKSMC, //检查科室名称 InObject.BINGRENFPH, //病人发票号 InObject.BINGRENLX, //病人类型 InObject.BINGRENLXMC, //病人类型名称 InObject.BINGRENKH, //病人卡号 InObject.BINGRENMZH, //病人门诊号 InObject.BINGRENZYH, //病人住院号 InObject.BINGRENBQDM, //病人病区代码 InObject.BINGRENBQMC, //病人病区名称 InObject.BINGRENCWH, //病人床位号 InObject.BINGRENXM, //病人姓名 InObject.BINGRENXB, //病人性别 InObject.BINGRENNL, //病人年龄 InObject.BINGRENCSRQ, //病人出生日期 InObject.BINGRENLXDZ, //病人联系地址 InObject.BINGRENLXDH, //病人联系电话 InObject.SHENQINGYSGH, //申请医生工号 InObject.SHENQINGYSMC, //申请医生姓名 "", //申请科室代码 "", //申请科室名称 InObject.SHENQINGYYDM, //申请医院代码 InObject.SHENQINGYYMC, //申请医院名称 result.JCH, //检查号 InObject.YUYUERQ, //检查日期 InObject.YUYUESJ, //检查时间 jcxmdm, //InObject.JIANCHAXMDM,//检查项目代码 InObject.JIANCHAXMMC, //检查项目名称 InObject.JIANCHAXMLX, //检查项目类型 InObject.JIANCHABWDM, //检查部位代码 InObject.JIANCHABWMC, //检查部位名称 InObject.JIANCHASBDM, //检查设备代码 InObject.JIANCHASBMC, //检查设备名称 InObject.JIANCHASBDD, //检查设备地点 result.YYH, //预约号 InObject.SHENFENZH, //身份证号 InObject.YUYUESF, //预约收费(0未收费,1已收费) InObject.JIANCHASQDBH, //检查申请单编号 InObject.YINGXIANGFX, "", //影像方向 yysqlsh, //预约申请流水号 yysqdbh, //预约申请单编号 InObject.XIANGMUHS, //详细安排时间 InObject.YEWULY, InObject.YEWULX, InObject.ZENGQIANG, InObject.JIZHEN, InObject.LINSHI ), tran);//业务来源 tran.Commit(); OutObject = new SHEBEIYY_OUT(); OutObject.YUYUERQ = InObject.YUYUERQ; OutObject.YUYUESJ = InObject.YUYUESJ; OutObject.YUYUEH = result.YYH; OutObject.JIANCHAH = result.JCH; OutObject.YUYUESQDBH = yysqdbh; } catch (Exception ex) { tran.Rollback(); throw ex; } } //检验 else { } } else { #region 市二 if (InObject.JIANCHAXMDM == null || InObject.JIANCHAXMDM == "") { throw new Exception(string.Format("检查项目不能为空!")); } var listjcsb = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00007, jcsbdm)); if (listjcsb == null) { throw new Exception(string.Format("未找到预约设备:设备编号[{0}]", jcsbdm)); } if (listjcsb.Items.Count == 0)//判断有无该设备 { throw new Exception(string.Format("未找到预约设备:设备编号[{0}]", jcsbdm)); } else { if (listjcsb.Items["JCSBZT"].ToString() != "0")//设备是否可用 { throw new Exception(string.Format("预约设备故障或者已停用:设备编号[{0}]", jcsbdm)); } else { if (listjcsb.Items["SBYYBZ"].ToString() != "0")//设备是否可预约 { throw new Exception(string.Format("预约设备为不可预约状态:设备编号[{0}]", jcsbdm)); } else { //获取设备某天预约排班信息 var listsbyyxx = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00002, jcsbdm, yyrq, yysj, 0)); if (listsbyyxx == null) { throw new Exception(string.Format("未找到预约号信息!")); } //取得预约类型,再去取预约号及状态 var jcyylx = int.Parse(listsbyyxx.Items["JCYYLX"].ToString()); var yyhxx = int.Parse(listsbyyxx.Items["YYHXX"].ToString()); var yyzs = int.Parse(listsbyyxx.Items["YYZS"].ToString()); var kyys = int.Parse(listsbyyxx.Items["KYYS"].ToString()); var xcyls = int.Parse(listsbyyxx.Items["XCYLS"].ToString()); var yyys = int.Parse(listsbyyxx.Items["YYYS"].ToString()); int xcyy = 0;//现场预约值为2,则检索所有数据 var zykyys = int.Parse(listsbyyxx.Items["ZYKYYS"].ToString()); var zyyyys = int.Parse(listsbyyxx.Items["ZYYYYS"].ToString()); var mzkyys = int.Parse(listsbyyxx.Items["MZKYYS"].ToString()); var mzyyys = int.Parse(listsbyyxx.Items["MZYYYS"].ToString()); var sqkyys = int.Parse(listsbyyxx.Items["SQKYYS"].ToString()); var sqyyys = int.Parse(listsbyyxx.Items["SQYYYS"].ToString()); var tran = DBVisitor.Connection.BeginTransaction(); var yysjd = listsbyyxx.Items["KSSJ"].ToString() + "-" + listsbyyxx.Items["JSSJ"].ToString(); if (string.Compare(listsbyyxx.Items["PBRQ"].ToString(), DateTime.Now.ToString("yyyy-MM-dd")) == 0) { xcyy = 2; } if (xcyy == 0)//非现场预约,则判断门诊住院预约的比例值 { if (InObject.BINGRENLX == 2) { if (InObject.YEWULY == "3") { if (sqkyys <= sqyyys) { throw new Exception(string.Format("当前社区可预约数已预约完,不能再预约!")); } ++sqyyys; } else { if (zykyys <= zyyyys) { throw new Exception(string.Format("当前住院可预约数已预约完,不能再预约!")); } ++zyyyys; } } else { if (InObject.YEWULY == "3") { if (sqkyys <= sqyyys) { throw new Exception(string.Format("当前社区可预约数已预约完,不能再预约!")); } ++sqyyys; } else { if (mzkyys <= mzyyys) { throw new Exception(string.Format("当前门诊可预约数已预约完,不能再预约!")); } ++mzyyys; } } } if (jcyylx == 1)//有预约号模式 { if (InObject.YUYUEH == null || InObject.YUYUEH == "") { throw new Exception(string.Format("预约号不能为空!")); } yyh = InObject.YUYUEH.ToString(); var listsbyyhxx = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00010, yyhxx, yyh)); if (listsbyyhxx == null) { throw new Exception(string.Format("未找到预约号:预约号:[{0}]!", yyh)); } if (listsbyyhxx.Items["YYZT"].ToString() == "1") { throw new Exception(string.Format("该预约号已被预约:预约号:[{0}]!", yyh)); } else { try { if (InObject.YEWULY == "3") { //更新预约排班表 社区 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00021, yyhxx, yyys + 1, sqyyys), tran); } else if (InObject.BINGRENLX == 2) { //更新预约排班表 住院 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00008, yyhxx, yyys + 1, zyyyys), tran); } else { //更新预约排班表 门诊 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00020, yyhxx, yyys + 1, mzyyys), tran); } //更新预约排班表 //DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00008, yyhxx, yyys + 1, zyyyys), tran); //更新预约号状态 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00009, yyhxx, yyh, 1), tran); //tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } } } else//无预约号模式 { try { //取得当前预约信息未预约的最小号码 var listsbyyhxx = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00013, yyhxx, xcyy)); if (listsbyyhxx == null) { throw new Exception(string.Format("预约已满!")); } yyh = listsbyyhxx.Items["YYH"].ToString(); if (InObject.YEWULY == "3") { //更新预约排班表 社区 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00021, yyhxx, yyys + 1, sqyyys), tran); } else if (InObject.BINGRENLX == 2) { //更新预约排班表 住院 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00008, yyhxx, yyys + 1, zyyyys), tran); } else { //更新预约排班表 门诊 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00020, yyhxx, yyys + 1, mzyyys), tran); } //更新预约排班表 //DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00008, yyhxx, yyys + 1, zyyyys), tran); //更新预约号状态 DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00009, yyhxx, yyh, 1), tran); //tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } } try { var listyylsh = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00017)); var yysqlsh = listyylsh.Items["YYSQLSH"].ToString(); var listyysqdbh = DBVisitor.ExecuteModel(SqlLoad.GetFormat(SQ.FSD00018)); var yysqdbh = listyysqdbh.Items["YYSQDBH"].ToString(); //插入预约申请信息fdsyy_sq DBVisitor.ExecuteNonQuery(SqlLoad.GetFormat(SQ.FSD00011, "申请单", //预约申请单名称 InObject.YUYUEZT, //预约申请单状态(0未确认,1已确认,9作废) InObject.JIANCHAKSDM, //检查科室代码 InObject.JIANCHAKSMC, //检查科室名称 InObject.BINGRENFPH, //病人发票号 InObject.BINGRENLX, //病人类型 InObject.BINGRENLXMC, //病人类型名称 InObject.BINGRENKH, //病人卡号 InObject.BINGRENMZH, //病人门诊号 InObject.BINGRENZYH, //病人住院号 InObject.BINGRENBQDM, //病人病区代码 InObject.BINGRENBQMC, //病人病区名称 InObject.BINGRENCWH, //病人床位号 InObject.BINGRENXM, //病人姓名 InObject.BINGRENXB, //病人性别 InObject.BINGRENNL, //病人年龄 InObject.BINGRENCSRQ, //病人出生日期 InObject.BINGRENLXDZ, //病人联系地址 InObject.BINGRENLXDH, //病人联系电话 InObject.SHENQINGYSGH, //申请医生工号 InObject.SHENQINGYSMC, //申请医生姓名 "", //申请科室代码 "", //申请科室名称 InObject.SHENQINGYYDM, //申请医院代码 InObject.SHENQINGYYMC, //申请医院名称 "", //检查号 InObject.YUYUERQ, //检查日期 InObject.YUYUESJ, //检查时间 InObject.JIANCHAXMDM, //检查项目代码 InObject.JIANCHAXMMC, //检查项目名称 InObject.JIANCHAXMLX, //检查项目类型 InObject.JIANCHABWDM, //检查部位代码 InObject.JIANCHABWMC, //检查部位名称 InObject.JIANCHASBDM, //检查设备代码 InObject.JIANCHASBMC, //检查设备名称 InObject.JIANCHASBDD, //检查设备地点 yyh, //预约号 InObject.SHENFENZH, //身份证号 InObject.YUYUESF, //预约收费(0未收费,1已收费) InObject.JIANCHASQDBH, //检查申请单编号 InObject.YINGXIANGFX, yysjd, //影像方向 yysqlsh, //预约申请流水号 yysqdbh, //预约申请单编号 InObject.XIANGXIAPSJ, //详细安排时间 InObject.YEWULY, 1, 0, 0, 0), tran);//业务来源 tran.Commit(); OutObject = new SHEBEIYY_OUT(); OutObject.YUYUERQ = yyrq; OutObject.YUYUESJ = yysj; OutObject.YUYUEH = yyh; OutObject.YUYUESQDBH = yysqdbh; } catch (Exception ex) { tran.Rollback(); throw ex; } } } } #endregion } }
public override void ProcessMessage() { this.OutObject = new GUAHAOCL_OUT(); string jiuzhenkLx = InObject.JIUZHENKLX; //就诊卡类型 string jiuzhenKh = InObject.JIUZHENKH; //就诊卡号 string bingrenLb = InObject.BINGRENLB; //病人类别 "BINGRENLB"); string bingrenXz = InObject.BINGRENXZ; // "BINGRENXZ"); string yibaokLx = InObject.YIBAOKLX; // "YIBAOKLX"); string yibaokMm = InObject.YIBAOKMM; // "YIBAOKMM"); string yibaoXx = InObject.YIBAOKXX; // "YIBAOKXX"); string yibaobrXx = InObject.YIBAOBRXX; // "YIBAOBRXX"); string yiliaoLb = InObject.YILIAOLB; // "YILIAOLB"); string jiesuanLb = InObject.JIESUANLB; // "JIESUANLB"); string yizhoupbId = InObject.YIZHOUPBID; // "YIZHOUPBID"); string dangtianpbId = InObject.DANGTIANPBID; // "DANGTIANPBID"); string riQi = InObject.RIQI; // "RIQI"); string guahaoBc = InObject.GUAHAOBC; // "GUAHAOBC"); string guahaoLb = InObject.GUAHAOLB; // "GUAHAOLB"); string keshiDm = InObject.KESHIDM; // "KESHIDM"); string yishengDm = InObject.YISHENGDM; // "YISHENGDM"); string guahaoXh = InObject.GUAHAOXH; // "GUAHAOXH"); string guahaoId = InObject.GUAHAOID; // "GUAHAOID"); string daishouFy = InObject.DAISHOUFY; // "DAISHOUFY"); string yuyueLy = InObject.YUYUELY; // "YUYUELY"); string binglibH = InObject.BINGLIBH; // "BINGLIBH"); string hisbrXx = InObject.HISBRXX; // "HISBRXX"); string jiesuanId = InObject.JIESUANID; // "JIESUANID"); string caozuoyDm = InObject.BASEINFO.CAOZUOYDM; // "CAOZUOYDM"); string caozuoyXm = InObject.BASEINFO.CAOZUOYXM; // "CAOZUOYXM"); string caozuoRq = InObject.BASEINFO.CAOZUORQ; // "CAOZUORQ"); string fenyuanDm = InObject.BASEINFO.FENYUANDM; // "FENYUANDM"); string jiaoyiLsh = InObject.BASEINFO.ZHONGDUANLSH; // "ZHONGDUANLSH");//终端流水号即交易流水号?? #region 基本入参判断 if (string.IsNullOrEmpty(caozuoRq)) { caozuoRq = DateTime.Now.ToString("yyyy-MM-dd"); } if (string.IsNullOrEmpty(jiuzhenKh)) { throw new Exception("就诊卡号获取失败!"); } if (string.IsNullOrEmpty(dangtianpbId)) { throw new Exception("挂号排班编号获取失败!"); } if (string.IsNullOrEmpty(guahaoBc)) { throw new Exception("挂号班次获取失败!"); } if (string.IsNullOrEmpty(daishouFy)) { daishouFy = "0"; } #endregion if (daishouFy == "0") { if (InObject.ZHIFUMX.Count <= 0) { throw new Exception("支付明细不能为空!"); } if (string.IsNullOrEmpty(InObject.ZHIFUMX[0].ZHIFULX)) { throw new Exception("支付类型不能为空!"); } if (string.IsNullOrEmpty(InObject.ZHIFUMX[0].ZHIFUJE)) { throw new Exception("支付金额不能为空!"); } if (string.IsNullOrEmpty(InObject.ZHIFUMX[0].YINHANGKH)) { throw new Exception("支付帐号不能为空!"); } if (InObject.ZHIFUMX[0].ZHIFULX != "7") { throw new Exception("暂时不支持该支付类型!"); } string ZHIFFS = "1"; switch (InObject.ZHIFUMX[0].ZHIFULX) { case "7": ZHIFFS = "19"; break; default: ZHIFFS = "1"; break; } string brxxSql = "select bingrenid from gy_bingrenxx where jiuzhenkh='" + jiuzhenKh + "'"; string bingrenId = DBVisitor.ExecuteScalar(brxxSql).ToString(); string jiaoyiMsg = bingrenId + "|" + dangtianpbId + "|" + caozuoyDm + "|" + caozuoyXm + "|" + (guahaoBc == "1" ? "0" : "1") + "|" + caozuoRq + "|" + jiaoyiLsh + "|" + jiuzhenKh + "|" + "1" + "|" + string.Empty + "|" + string.Empty + "|" + ZHIFFS + "|"; //挂号支付------------------------------------------------------------------------------------------- OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_MSG", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiMsg; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = 0; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_OUTBUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; log.InfoFormat("{0}", "执行存储过程:PKG_GY_YINYIJK.PRC_GUAHAOZF \r\nPRM_MSG:" + jiaoyiMsg + "\r\n"); string returnValue = string.Empty; DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_GY_YINYIJK.PRC_GUAHAOZF", paramJiaoYi, transaction); } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); conn.Close(); } throw new Exception(ex.Message); } returnValue = paramJiaoYi[1].Value.ToString(); string returnMsg = paramJiaoYi[2].Value.ToString(); // LogHelper.WriteLog(typeof(GG_JiaoYiBLL), "挂号支付存储过程返回值:" + returnValue + "|" + returnMsg); if (returnValue == "1")//交易成功 { try { #region 诊疗费用信息 string ZhenLiaoXMSql = "select * from gy_shoufeixm where shoufeixmid in " + "( select zhenliaofxm from mz_v_guahaopb_ex_zzj where paibanid = '{0}' )"; DataTable dtZhenLiaoMX = DBVisitor.ExecuteTable(string.Format(ZhenLiaoXMSql, dangtianpbId)); for (int i = 0; i < dtZhenLiaoMX.Rows.Count; i++) { FEIYONGXX fyxx = new FEIYONGXX(); fyxx.XIANGMUXH = dtZhenLiaoMX.Rows[i]["shoufeixmid"].ToString();//收费项目ID fyxx.XIANGMUMC = dtZhenLiaoMX.Rows[i]["shoufeixmmc"].ToString(); fyxx.XIANGMUGL = dtZhenLiaoMX.Rows[i]["xiangmulx"].ToString(); fyxx.DANJIA = dtZhenLiaoMX.Rows[i]["danjia1"].ToString();// fyxx.SHULIANG = "1"; fyxx.JINE = dtZhenLiaoMX.Rows[i]["danjia1"].ToString(); OutObject.FEIYONGMX.Add(fyxx); OutObject.ZHENLIAOFEI = fyxx.DANJIA; } #endregion #region 挂号费用信息 string GuaHaoXMSql = "select * from gy_shoufeixm where shoufeixmid in " + "( select guahaofxm from mz_v_guahaopb_ex_zzj where paibanid = '{0}' )"; DataTable dtGuaHaoMX = DBVisitor.ExecuteTable(string.Format(GuaHaoXMSql, dangtianpbId)); for (int i = 0; i < dtGuaHaoMX.Rows.Count; i++) { FEIYONGXX fyxx = new FEIYONGXX(); fyxx.XIANGMUXH = dtGuaHaoMX.Rows[i]["shoufeixmid"].ToString();//收费项目ID fyxx.XIANGMUMC = dtGuaHaoMX.Rows[i]["shoufeixmmc"].ToString(); fyxx.XIANGMUGL = dtGuaHaoMX.Rows[i]["xiangmulx"].ToString(); fyxx.DANJIA = dtGuaHaoMX.Rows[i]["danjia1"].ToString();// fyxx.SHULIANG = "1"; fyxx.JINE = dtGuaHaoMX.Rows[i]["danjia1"].ToString(); OutObject.FEIYONGMX.Add(fyxx); OutObject.GUAHAOFEI = fyxx.DANJIA; } #endregion double fyze = 0.0; for (int i = 0; i < OutObject.FEIYONGMX.Count; i++) { fyze += Convert.ToDouble(OutObject.FEIYONGMX[i].JINE); } if (fyze != double.Parse(InObject.ZHIFUMX[0].ZHIFUJE)) { throw new Exception("支付金额:" + InObject.ZHIFUMX[0].ZHIFUJE + "与实际金额:" + fyze + "不符!"); } string[] list = returnMsg.Split('|'); OutObject.GUAHAOID = list[8];//挂号ID OutObject.GUAHAOXH = list[0]; OutObject.JIUZHENSJ = list[2]; OutObject.JIUZHENDD = list[1]; OutObject.YIJIID = list[5]; OutObject.JIESUANJG.FEIYONGZE = (Convert.ToDouble(list[6]) + Convert.ToDouble(list[7])).ToString(); // string[] yiJiSpl = list[5].ToString().Split('^'); if (ConfigurationManager.AppSettings["XianShiHZSJ"] == "1") //显示候诊时间 { OutObject.HOUZHENSJ = getJiuZhenSJD(yishengDm, keshiDm, list[0], "", Convert.ToInt32((guahaoBc == "1" ? "0" : "1")), guahaoLb, DateTime.Now.ToString()); //候诊时间 } OutObject.JIESUANJG.FEIYONGZE = fyze.ToString(); transaction.Commit();//提交 conn.Close(); } catch (Exception er) { transaction.Rollback();//回滚 conn.Close(); throw new Exception(er.Message.ToString()); } } else { transaction.Rollback();//回滚 conn.Close(); throw new Exception(returnMsg); } } //代收模式 else { string brxxSql = "select bingrenid from gy_bingrenxx where jiuzhenkh='" + jiuzhenKh + "'"; string bingrenId = DBVisitor.ExecuteScalar(brxxSql).ToString(); string jiaoyiMsg = bingrenId + "|" + dangtianpbId + "|" + caozuoyDm + "|" + caozuoyXm + "|" + (guahaoBc == "1" ? "0" : "1") + "|" + caozuoRq + "|" + jiaoyiLsh + "|" + jiuzhenKh + "|" + "1" + "|" + string.Empty + "|" + string.Empty + "|";//交易类型默认为1 //挂号支付------------------------------------------------------------------------------------------- OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_MSG", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiMsg; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = 0; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_OUTBUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; string returnValue = string.Empty; DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_GY_YINYIJK.PRC_GUAHAOZFDS", paramJiaoYi, transaction); } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); conn.Close(); } throw new Exception(ex.Message); } //-------------------------------------------------------------------------------------------------- returnValue = paramJiaoYi[1].Value.ToString(); string returnMsg = paramJiaoYi[2].Value.ToString(); //LogHelper.WriteLog(typeof(GG_JiaoYiBLL), "挂号支付存储过程返回值:" + returnValue + "|" + returnMsg); if (returnValue == "1") //交易成功 { transaction.Commit(); //提交 conn.Close(); string[] list = returnMsg.Split('|'); OutObject.GUAHAOID = list[8];//挂号ID OutObject.GUAHAOXH = list[0]; OutObject.JIUZHENSJ = list[2]; OutObject.JIUZHENDD = list[1]; OutObject.YIJIID = list[5]; OutObject.JIESUANJG.FEIYONGZE = (Convert.ToDouble(list[6]) + Convert.ToDouble(list[7])).ToString(); string[] yiJiSpl = list[5].ToString().Split('^'); #region 诊疗费用信息 string ZhenLiaoXMSql = "select * from gy_shoufeixm where shoufeixmid in " + "( select zhenliaofxm from mz_v_guahaopb_ex_zzj where paibanid = '{0}' )"; DataTable dtZhenLiaoMX = DBVisitor.ExecuteTable(string.Format(ZhenLiaoXMSql, dangtianpbId)); for (int i = 0; i < dtZhenLiaoMX.Rows.Count; i++) { FEIYONGXX fyxx = new FEIYONGXX(); fyxx.XIANGMUXH = dtZhenLiaoMX.Rows[i]["shoufeixmid"].ToString();//收费项目ID fyxx.XIANGMUMC = dtZhenLiaoMX.Rows[i]["shoufeixmmc"].ToString(); fyxx.XIANGMUGL = dtZhenLiaoMX.Rows[i]["xiangmulx"].ToString(); fyxx.DANJIA = dtZhenLiaoMX.Rows[i]["danjia1"].ToString();// fyxx.SHULIANG = "1"; fyxx.JINE = dtZhenLiaoMX.Rows[i]["danjia1"].ToString(); OutObject.FEIYONGMX.Add(fyxx); OutObject.ZHENLIAOFEI = fyxx.DANJIA; } #endregion #region 挂号费用信息 string GuaHaoXMSql = "select * from gy_shoufeixm where shoufeixmid in " + "( select guahaofxm from mz_v_guahaopb_ex_zzj where paibanid = '{0}' )"; DataTable dtGuaHaoMX = DBVisitor.ExecuteTable(string.Format(GuaHaoXMSql, dangtianpbId)); for (int i = 0; i < dtGuaHaoMX.Rows.Count; i++) { FEIYONGXX fyxx = new FEIYONGXX(); fyxx.XIANGMUXH = dtGuaHaoMX.Rows[i]["shoufeixmid"].ToString();//收费项目ID fyxx.XIANGMUMC = dtGuaHaoMX.Rows[i]["shoufeixmmc"].ToString(); fyxx.XIANGMUGL = dtGuaHaoMX.Rows[i]["xiangmulx"].ToString(); fyxx.DANJIA = dtGuaHaoMX.Rows[i]["danjia1"].ToString();// fyxx.SHULIANG = "1"; fyxx.JINE = dtGuaHaoMX.Rows[i]["danjia1"].ToString(); OutObject.FEIYONGMX.Add(fyxx); OutObject.GUAHAOFEI = fyxx.DANJIA; } #endregion double fyze = 0.0; for (int i = 0; i < OutObject.FEIYONGMX.Count; i++) { fyze += Convert.ToDouble(OutObject.FEIYONGMX[i].JINE); } OutObject.JIESUANJG.FEIYONGZE = fyze.ToString(); } else { transaction.Rollback();//回滚 conn.Close(); throw new Exception(returnMsg); } } }
public override void ProcessMessage() { string jiuzhenkLx = InObject.JIUZHENKLX; //就诊卡类型 string jiuzhenKh = InObject.JIUZHENKH; //就诊卡号 string bingrenLb = InObject.BINGRENLB; //病人类别 string yibaokLx = InObject.YIBAOKLX; //医保卡类型 string yibaokXx = InObject.YIBAOKXX; //医保卡信息 string yibaokh = InObject.YIBAOKH; //医保卡号 string gerenBh = InObject.GERENBH; //个人编号 string bingliBh = InObject.BINGLIBH; //病历本号 string xingMing = InObject.XINGMING; //姓名 string xingBie = InObject.XINGBIE; //性别 string minZu = InObject.MINZU; //民族 string chushengRq = InObject.CHUSHENGRQ; //出生日期 YYYT-MM-DD string zhengjianLx = InObject.ZHENGJIANLX; //证件类型 string zhengjianHm = InObject.ZHENGJIANHM; //证件号码 string danweiLx = InObject.DANWEILX; //单位类型 string danweiBh = InObject.DANWEIBH; //单位编号 string danweiMc = InObject.DANWEIMC; //单位名称 string jiatingZz = InObject.JIATINGZZ; //家庭住址 string renyuanLb = InObject.RENYUANLB; //人员类别 string lianxiDh = InObject.LIANXIDH; //联系电话 string yinhangKh = InObject.YINHANGKH; //银行卡号 string qianyueBz = InObject.QIANYUEBZ; //签约标识 string yiliaoLb = InObject.YILIAOLB; //医疗类别 string jiesuanLb = InObject.JIESUANLB; //结算类别 string yibaokMm = InObject.YIBAOKMM; //医保卡密码 string photo = InObject.PHOTO; //照片 二进制码流 string shifouYk = InObject.SHIFOUYK; //是否有卡 string bangdingYhk = InObject.BANGDINGYHK; //绑定银行卡 string zhongduansbXx = InObject.ZHONGDUANSBXX; //终端识别信息 string bingrenXz = InObject.BINGRENXZ; //病人性质 string chongzhiJe = InObject.CHONGZHIJE; //充值金额 string zhifuFs = InObject.ZHIFUFS; //支付方式 string jiandangRen = InObject.BASEINFO.CAOZUOYDM; //建档人工号 string caozuoRq = InObject.BASEINFO.CAOZUORQ; //操作日期 string empiId = InObject.EMPIID; //实名制认证标识 OutObject = new RENYUANZC_OUT(); int JIUZHENKCD = Convert.ToInt32(ConfigurationManager.AppSettings["JIUZHENKCD"]); //就诊卡默认长度 char JIUZHENKTCZF = string.IsNullOrEmpty(ConfigurationManager.AppSettings["JIUZHENKTCZF"]) ? '0' : ConfigurationManager.AppSettings["JIUZHENKTCZF"].ToCharArray()[0]; //就诊卡填充字符 #region 基本入参判断 if (string.IsNullOrEmpty(jiuzhenKh) && string.IsNullOrEmpty(yibaokh)) { throw new Exception("就诊卡号和医保卡号不能同时为空!"); } if (string.IsNullOrEmpty(jiuzhenKh)) { jiuzhenKh = yibaokh; } if (string.IsNullOrEmpty(zhengjianHm)) { throw new Exception("证件号码不能为空!"); } if (string.IsNullOrEmpty(xingMing)) { throw new Exception("病人姓名不能为空!"); } if (string.IsNullOrEmpty(xingBie)) { throw new Exception("病人性别不能为空!"); } if (string.IsNullOrEmpty(chushengRq)) { throw new Exception("出生日期不能为空!"); } if (string.IsNullOrEmpty(jiatingZz)) { throw new Exception("家庭住址不能为空!"); } if (string.IsNullOrEmpty(lianxiDh)) { throw new Exception("联系电话不能为空!"); } #endregion #region 检查档案状态 StringBuilder sbSql = new StringBuilder("select a.bingrenid,a.jiuzhenkh ,a.xingming "); sbSql.Append("from gy_v_bingrenxx a ,gy_zijinzh b where a.bingrenid = b.bingrenid(+) "); #region 就诊卡自动长度补全 if (JIUZHENKCD > 0) { if (jiuzhenKh.Length < JIUZHENKCD) { jiuzhenKh = jiuzhenKh.PadLeft(JIUZHENKCD, JIUZHENKTCZF); } } #endregion sbSql.Append(" and (a.jiuzhenkh='" + jiuzhenKh + "' or a.yibaokh='" + yibaokh + "' or nvl(a.shenfenzh,'*') = '" + zhengjianHm + "' ) "); sbSql.Append(" order by a.yibaokh asc, a.xiugaisj desc "); #endregion DataTable dtRenYuanXX = DBVisitor.ExecuteTable(sbSql.ToString()); if (dtRenYuanXX == null || dtRenYuanXX.Rows.Count <= 0) { #region 建档 string sqlStr = "select FUN_GY_GETORDER('1', 'GY_BINGRENXX', 10) as bingrenid from dual "; string bingrenId = DBVisitor.ExecuteScalar(sqlStr).ToString(); string shoukuanRq = Convert.ToDateTime(caozuoRq).ToString("yyyy-MM-dd HH:mm:ss"); string jiaoyanMa = Unity.GetMD5(bingrenId + Convert.ToSingle(chongzhiJe).ToString("f4") + shoukuanRq + "1" + jiandangRen).ToLower(); //医保卡信息特殊处理 if (!string.IsNullOrEmpty(yibaokXx) && yibaokXx.Contains('$')) { yibaokXx = yibaokXx.Replace('$', '&'); } #region 医保病人需要转化获取所需的性质ID //联众医保yibaobrxz不填,要在包里取//add by renj //if (bingrenLb != "1") //{ // string sqlYb = string.Format("select xingzhiid from gy_feiyongxz where feiyonglb='{0}' and yibaobrxz='{1}'", bingrenLb, bingrenXz); // bingrenXz = new DBServer().GetCurrData(sqlYb); //} #endregion #region 性别信息转换 if (xingBie == "0") { xingBie = "未知"; } else if (xingBie == "1") { xingBie = "男"; } else if (xingBie == "2") { xingBie = "女"; } else { xingBie = "其他"; } #endregion #region 入参信息拼装 //病人性质? 建档人? //数据库包中有建档自动开启电子账户功能 可通过注释包语句进行该功能的关闭 string tradeMsgList = jiuzhenkLx + "|" + jiuzhenKh + "|" + bingrenLb + "|" + yibaokLx + "|" + yibaokXx + "|" + yibaokh + "|" + gerenBh + "|" + bingliBh + "|" + xingMing + "|" + xingBie + "|" + minZu + "|" + chushengRq + "|" + zhengjianLx + "|" + zhengjianHm + "|" + danweiLx + "|" + danweiBh + "|" + danweiMc + "|" + jiatingZz + "|" + renyuanLb + "|" + lianxiDh + "|" + yinhangKh + "|" + qianyueBz + "|" + yiliaoLb + "|" + jiesuanLb + "|" + yibaokMm + "|" + photo + "|" + shifouYk + "|" + bangdingYhk + "|" + zhongduansbXx + "|" + jiandangRen + "|" + chongzhiJe + "|" + bingrenId + "|" + zhifuFs + "|" + shoukuanRq + "|" + jiaoyanMa + "|" + bingrenXz + "|"; //LogHelper.WriteLog(typeof(GG_JiaoYiBLL), "建档交易入参:" + tradeMsgList);//交易入参日志 #endregion OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_MSG", OracleType.VarChar); paramJiaoYi[0].Value = tradeMsgList; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_OUTBUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; string returnValue = string.Empty; DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_GY_YINYIJK.PRC_BINGRENJD", paramJiaoYi, transaction); } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); //transaction.Connection.Close(); } throw new Exception(ex.Message); } returnValue = paramJiaoYi[1].Value.ToString(); string returnMsg = paramJiaoYi[2].Value.ToString(); string zhanghuId = string.Empty; if (returnValue == "1")//建档及生成虚拟账户成功 { transaction.Commit(); //transaction.Connection.Close(); //zhanghuId = returnMsg.Split('|')[1];//账户ID //此处需要处理返回成功的xml OutObject.JIUZHENKH = jiuzhenKh; OutObject.BINGRENID = bingrenId; //OutObject.XUNIZH = zhanghuId; } else { transaction.Rollback(); //transaction.Connection.Close(); throw new Exception(returnMsg); } #endregion } else { if (InObject.XINGMING != dtRenYuanXX.Rows[0]["xingming"].ToString()) { throw new Exception("该卡号和病人姓名不匹配,请核查!"); } OutObject.JIUZHENKH = dtRenYuanXX.Rows[0]["jiuzhenkh"].ToString(); OutObject.BINGRENID = dtRenYuanXX.Rows[0]["bingrenid"].ToString(); } if (!string.IsNullOrEmpty(OutObject.BINGRENID) && !string.IsNullOrEmpty(empiId)) { DBVisitor.ExecuteNonQuery(string.Format(" update gy_bingrenxx set empiid ='{0}' where bingrenid = '{1}' ", empiId, OutObject.BINGRENID)); } }
public override void ProcessMessage() { string jiuzhenKh = InObject.JIUZHENKH; string jiuzhenkLx = InObject.JIUZHENKLX; string xingMing = InObject.XINGMING; string zhengjianHm = InObject.ZHENGJIANHM; string bingRenID = InObject.BINGRENID; string lianxiDh = InObject.LIANXIDH; string jiandangRen = InObject.BASEINFO.CAOZUOYDM; //建档人工号 string caozuoRq = InObject.BASEINFO.CAOZUORQ; //操作日期 #region 基本入参判断 //就诊卡类型 //if (string.IsNullOrEmpty(jiuzhenkLx)) //{ // throw new Exception("就诊卡类型获取失败"); //} //就诊卡号 if (string.IsNullOrEmpty(jiuzhenKh) && string.IsNullOrEmpty(bingRenID)) { throw new Exception("就诊卡号获取失败"); } if (string.IsNullOrEmpty(jiuzhenKh)) { DataTable dtBingRenXX = DBVisitor.ExecuteTable(string.Format("select * from gy_v_bingrenxx where bingrenid = '{0}' "), bingRenID); if (dtBingRenXX.Rows.Count > 0) { jiuzhenKh = dtBingRenXX.Rows[0]["jiuzhenkh"].ToString(); } } ////证件号码 //if (string.IsNullOrEmpty(zhengjianHm)) //{ // throw new Exception(证件号码获取失败"); //} ////联系电话 //if (string.IsNullOrEmpty(lianxiDh)) //{ // throw new Exception(联系电话获取失败"); //} //建档人 if (string.IsNullOrEmpty(jiandangRen)) { throw new Exception("建档人获取失败"); } //操作日期 if (string.IsNullOrEmpty(caozuoRq)) { throw new Exception("操作日期获取失败"); } #endregion //就诊卡号|就诊卡类型|操作日期|操作员工号 string jiaoyiMsg = jiuzhenKh + "||" + caozuoRq + "|" + jiandangRen + "|"; //WcfCommon.writeLog(WcfCommon.LOGTYPE_SQLLOG, OutObject.GetType().Name.ToString(), "院内账户开通存储过程入参:" + jiaoyiMsg, messageId); //开通账户------------------------------------------------------------------------------------------- //SqlParameter param1 = new SqlParameter("PRM_MSG", jiaoyiMsg); //param1.SqlDbType = SqlDbType.VarChar; //param1.Direction = ParameterDirection.Input; //SqlParameter param2 = new SqlParameter("PRM_APPCODE", SqlDbType.Int); //param2.Direction = ParameterDirection.Output; //SqlParameter param3 = new SqlParameter("PRM_DATABUFFER", ""); //param3.SqlDbType = SqlDbType.VarChar; //param3.Direction = ParameterDirection.Output; //SqlParameter[] paramJiaoYi = { param1, param2, param3 }; //DBVisitor.CreateOracleParameter("PRM_MSG", OracleType.VarChar, jiaoyiMsg); //OracleParameter param2 = DBVisitor.CreateOracleParameter("PRM_APPCODE", OracleType.Number, 0, ParameterDirection.Output); //OracleParameter param3 = DBVisitor.CreateOracleParameter("PRM_DATABUFFER", OracleType.VarChar, "", ParameterDirection.Output); OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_MSG", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiMsg; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_OUTBUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); transaction = DBVisitor.ExecuteProcedure("PKG_GY_YINYIJK.PRC_KAITONGZH", paramJiaoYi, transaction);//院内账户开通 } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); conn.Close(); } throw new Exception(ex.Message); } //-------------------------------------------------------------------------------------------------- string returnValue = paramJiaoYi[1].Value.ToString(); string returnMsg = paramJiaoYi[2].Value.ToString(); if (returnValue != "1")// { transaction.Rollback(); conn.Close(); throw new Exception(returnMsg); } else { transaction.Commit(); conn.Close(); } }
public override void ProcessMessage() { string bingrenId = InObject.BINGRENID; //病人ID string zhifuLx = InObject.ZHIFUMX[0].ZHIFULX; //支付类型 string zhifuSm = InObject.ZHIFUMX[0].ZHIFUSM; //支付说明 string zhifuJe = InObject.ZHIFUMX[0].ZHIFUJE;; //支付金额 string yinhangKh = InObject.ZHIFUMX[0].YINHANGKH; //银行卡号 string yinhangMm = InObject.ZHIFUMX[0].YINHANGMM; //银行密码 string zhongduanBh = InObject.ZHIFUMX[0].ZHONGDUANBH; //终端编号 string ShanghuH = InObject.ZHIFUMX[0].SHANGHUH; //商户号 string yinhangkXx = InObject.ZHIFUMX[0].YINHANGKXX; //银行卡信息 string piaojuHm = InObject.ZHIFUMX[0].PIAOJUHM; //票据号码 string shoukuanRen = InObject.BASEINFO.CAOZUOYDM; //收款人 string shoukuanRq = InObject.BASEINFO.CAOZUORQ; //收款日期 #region 基本入参判断 if (string.IsNullOrEmpty(bingrenId)) { throw new Exception("病人唯一号不能为空"); } if (string.IsNullOrEmpty(zhifuLx)) { throw new Exception("支付类型不能为空"); } if (string.IsNullOrEmpty(zhifuJe)) { throw new Exception("支付金额不能为空"); } try { zhifuJe = Convert.ToDecimal(zhifuJe).ToString(); } catch (Exception ex) { throw new Exception(ex.Message); } #endregion //通过bingrenID获取病人住院ID string brSql = "select bingrenzyid from zy_bingrenxx where bingrenid='{0}' and zaiyuanzt in('0','1') "; string bingrenZyId = (string)DBVisitor.ExecuteScalar(string.Format(brSql, bingrenId)); //拼装交易字符串 string jiaoyiZfc = bingrenZyId + "|" + shoukuanRen + "|" + zhifuJe + "|" + zhifuLx + "|" //病人住院ID|收款人|交款金额|支付方式 + shoukuanRq + "|" + zhongduanBh + "|" + yinhangKh + "|" + "" + "|" + "0" + "|"; //交易日期|银行交易流水号|卡号|交易类型|重发标志 OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_MSG", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiZfc; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_DATABUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; string returnValue = string.Empty; DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_GY_YINYIJK.PRC_ZY_YuJiaoKUAN", paramJiaoYi, transaction); } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); conn.Close(); } throw new Exception(ex.Message); } //-------------------------------------------------------------------------------------------------- returnValue = paramJiaoYi[1].Value.ToString(); string returnMsg = paramJiaoYi[2].Value.ToString(); if (returnValue != "1") { if (transaction != null) { transaction.Rollback(); conn.Close(); } throw new Exception(returnMsg); } else { //交易成功 if (transaction != null) { transaction.Commit(); conn.Close(); } } }
public override void ProcessMessage() { string brxxcx = "select * from gy_bingrenxx where bingrenid = '{0}'"; DataTable dtBingRenXX = DBVisitor.ExecuteTable(string.Format(brxxcx, InObject.BINGRENID)); if (dtBingRenXX.Rows.Count <= 0) { throw new Exception("未找到该病人信息,无法完成预约!"); } //判断入参合法性 if (InObject.YUYUERQ == null) { throw new Exception("预约日期不能为空!"); } if (InObject.YUYUESJ == null) { throw new Exception("预约时间不能为空!"); } if (InObject.BINGRENLX == null || Convert.ToInt32(InObject.BINGRENLX) < 1 || Convert.ToInt32(InObject.BINGRENLX) > 3) { throw new Exception("病人类型代码不对!"); } if (InObject.SHENFENZH == null || InObject.SHENFENZH == string.Empty) { throw new Exception("病人身份证号不能为空!"); } if (InObject.YEWULY == null) { InObject.YEWULY = InObject.BINGRENLX.ToString(); } var jcsbdm = InObject.JIANCHASBDM.ToString(); //检查设备代码 var yyrq = InObject.YUYUERQ.ToString(); //预约日期 var yysj = InObject.YUYUESJ.ToString(); //预约时间 var yyh = ""; //预约号 //不能预约以前的日期 if (string.Compare(yyrq, DateTime.Now.ToString("yyyy-MM-dd")) < 0) { throw new Exception("预约日期必须大于等于今天!"); } var SONGJIANKS = System.Configuration.ConfigurationManager.AppSettings["SXZZ_SONGJIANKS"]; //送检科室 var SONGJIANYS = System.Configuration.ConfigurationManager.AppSettings["SXZZ_SONGJIANYS"]; //送检医生 HISYY_Submit resource = new HISYY_Submit(); //获取预约申请单编号 var yysqdBh = DBVisitor.ExecuteTable("select seq_fsdyy_sq_yysqdbh.nextval yysqdbh from dual"); //返回字段定义 OutObject = new SHEBEIYY_OUT(); //业务类型(1检查,2检验暂时不做) if (InObject.YEWULX == "1") { //调用包,判断入参是否正确 var jyjcdxx = ""; var jyjcmx = ""; var zdmx = ""; var jcxmdm = ""; int i = 0; if (InObject.JIANCHALB.Count < 1) { throw new Exception("检查项目不能为空!"); } //检查单信息 jyjcdxx += InObject.JIUZHENKLX + "|"; // 就诊卡类型 jyjcdxx += InObject.JIUZHENKH + "|"; // 就诊卡号 jyjcdxx += InObject.SHENQINGYSGH + "|"; // 送检医生 jyjcdxx += InObject.SHENQINGYYDM + "|"; // 送检科室 jyjcdxx += InObject.YUYUESF + "|"; // 收费识别 jyjcdxx += InObject.BINGQINGMS + "|"; // 病情描述 jyjcdxx += InObject.ZHENDUAN + "|"; // 诊断 jyjcdxx += InObject.BINGRENTZ + "|"; // 病人体征 jyjcdxx += InObject.QITAJC + "|"; // 其它检查 jyjcdxx += InObject.BINGRENZS + "|"; // 病人主诉 jyjcdxx += InObject.YEWULY + "|"; // 检查来源 jyjcdxx += InObject.BINGRENXM + "|"; // 病人姓名 jyjcdxx += InObject.SHENFENZH + "|"; // 病人身份证号 jyjcdxx += "0" + "|"; // 接收方式 jyjcdxx += "|"; // 检查申请单号 jyjcdxx += InObject.YUYUERQ + " " + InObject.YUYUESJ + "|"; // 检查日期 jyjcdxx += InObject.BINGRENXB + "|"; // 病人性别 jyjcdxx += InObject.BINGRENNL; // 病人年龄 //检验检查明细 foreach (var item in InObject.JIANCHALB) { if (i == 0) { jcxmdm = item.JIANCHAXMBH; } else { jcxmdm += "," + item.JIANCHAXMBH; } ++i; jyjcmx += item.JIANCHAXMBH + "|"; // 检查项目编号 jyjcmx += item.JIANCHAXMMC + "|"; // 检查项目名称 jyjcmx += item.JIANCHAFLBM + "|"; // 检查分类编码 jyjcmx += item.JIANCHASTBW + "|"; // 检查身体部位 jyjcmx += item.JIANCHAFXDM + "|"; // 检查方向代码 jyjcmx += item.JIANCHAZYDM + "|"; // 检查肢位代码 jyjcmx += item.JIANCHATS + "^"; // 检查提示 } //疾病明细 foreach (var item in InObject.ZHENDUANLB) { zdmx += item.ICD10 + "|"; // ICD10 zdmx += item.ZHENDUANMC + "^"; //诊断名称 } #region 调用莱达接口 if (InObject.YEWULX == "2") { resource.AdmissionSource = "10"; } else { resource.AdmissionSource = "50"; } resource.HospitalCode = InObject.SHENQINGYYDM;// InObject.BASEINFO.JIGOUDM; resource.HospitalName = InObject.SHENQINGYYMC; resource.PatientName = InObject.BINGRENXM; resource.IdNumber = InObject.SHENFENZH; resource.RequestNo = "";//预约的时候传空 if (InObject.YEWULY == "2") { resource.AdmissionID = InObject.BINGRENZYH; } else { resource.AdmissionID = InObject.BINGRENMZH; } resource.ExaminePartTime = InObject.XIANGMUHS; resource.PatientSex = InObject.BINGRENXB.ToString(); resource.PatientBorn = InObject.BINGRENCSRQ; resource.PatientAge = InObject.BINGRENNL; resource.PatientTel = InObject.BINGRENLXDH; resource.PatientAddress = InObject.BINGRENLXDZ; resource.PatientCard = InObject.BINGRENID + "|" + InObject.JIUZHENKH; resource.InPatientAreaName = InObject.BINGRENBQMC; resource.InPatientAreaCode = InObject.BINGRENBQDM; resource.BedNum = InObject.BINGRENCWH; resource.DeviceCode = InObject.JIANCHASBDM.ToString(); resource.DeviceName = InObject.JIANCHASBMC; //,B.DAIMAID,B.DAIMAMC,D.KESHIMC string jcxmSql = @"SELECT A.*,B.DAIMAID,B.DAIMAMC,D.KESHIMC FROM GY_JIANCHAXM A, GY_JIANCHABW B, GY_JIANCHAXMBWDY C, GY_KESHI D,GY_YUANQU E WHERE A.JIANCHAXMID = C.JIANCHAXMID AND B.DAIMAID = C.JIANCHABWID AND D.KESHIID=A.ZHIXINGKS AND A.ZUOFEIBZ = 0 AND B.ZUOFEIBZ = 0 AND D.YUANQUID = E.YUANQUID AND A.JIANCHAXMID IN({0}) AND B.DAIMAID = {1} AND E.YUANQUMC = '{2}'"; jcxmSql = string.Format(jcxmSql, jcxmdm, InObject.JIANCHABWDM.ToString(), ConfigurationManager.AppSettings["HospitalName_Fck"].ToString()); DataTable jcxmDt = DBVisitor.ExecuteTable(jcxmSql); foreach (DataRow dr in jcxmDt.Rows) { resource.StudiesExamine.Add(new StudiesExamine() { //HT 更改CODE取值 检查厂商使用的是HIS的部位ID和部位的名称,而没有检查项目ID //ExamineCode = dr["JIANCHAXMID"].ToString(), ExamineCode = dr["DAIMAID"].ToString(), ExamineName = XMLHandle.encodeString(dr["DAIMAMC"].ToString()), Numbers = "1", ExaminePrice = "0"//这里默认给个0 }); } resource.StudiesExamine = resource.StudiesExamine.Distinct().ToList(); resource.ExamineFY = resource.StudiesExamine.Sum <StudiesExamine>(group => { return(Convert.ToDecimal(group.ExaminePrice)); }).ToString(); resource.ReceiptNum = InObject.BINGRENFPH; resource.ZxDepartmentId = jcxmDt.Rows[0]["zhixingks"].ToString(); resource.ZxDepartmentName = jcxmDt.Rows[0]["keshimc"].ToString(); resource.Sqrq = InObject.BASEINFO.CAOZUORQ; resource.BespeakDateTime = InObject.YUYUERQ + " " + InObject.YUYUESJ; resource.JZ = "0"; // InObject.JIZHEN; resource.ZQ = "0"; //InObject.ZENGQIANG; resource.LS = "0"; //InObject.LINSHI; resource.PF = "1"; //调用莱达WEBSERVICE--------------------------------------------------------------- string url = System.Configuration.ConfigurationManager.AppSettings["LaiDa_Url"]; string xml = XMLHandle.EntitytoXML <HISYY_Submit>(resource); //LogHelper.WriteLog(typeof(GG_ShuangXiangZzBLL), "设备预约调用莱达XML入参:" + xml); string outxml = WSServer.Call <HISYY_Submit>(url, xml).ToString(); //LogHelper.WriteLog(typeof(GG_ShuangXiangZzBLL), "设备预约调用莱达XML出参:" + outxml); HISYY_Submit_Result result = XMLHandle.XMLtoEntity <HISYY_Submit_Result>(outxml); //------------------------------------------------------------------------------- if (result.Success == "False") { throw new Exception("预约失败,错误原因:" + result.Message); } #endregion //定义数据库transaction var tran = DBVisitor.Connection.BeginTransaction(); var xh = DBVisitor.ExecuteScalar("select seq_sxzz_jianchasqd.nextval from dual").ToString(); //保存预约数据 try { //先插入到临时表 var JCSQDH = result.JCH; //var jiuzhenid = DBVisitor.ExecuteScalar("select SEQ_ZJ_JIUZHENXX.NEXTVAL from dual").ToString(); int k = 0; //插入检查单信息 string insJcd = @"insert into SXZZ_JIANCHASQD(JIANCHASQDID,JIUZHENKLX,JIUZHENKH,BINGRENXM, BINGRENSFZH,SONGJIANYSGH,SONGJIANKSDM,SHOUFEIBZ, BINGQINGMS,ZHENDUANMC,BINGRENTZ,QITAJC, BINGRENZS,JIANCHALY,JIESHOUFS,JIESHOURQ, JIESHOUBZ,YIJISQDH,JIANCHARQ,BINGRENXB,BINGRENNL, JIANCHASQDZT,YIJIZXKS,YIJIZXKSMC,BINGRENLX, BINGRENLXMC,ZHUYUANHAO,SONGJIANBQDM,SONGJIANBQMC, CHAUNGWEIID,CHUSHENGRQ,BINGRENLXDZ,BINGRENLXDH, SONGJIANYSXM,SONGJIANKSMC,SONGJIANYYDM,SONGJIANYYMC, YIJISBDM,YIJISBMC,YIJISBDZ,YIJIYYH, YIJIYYSJD,YIJIXXAPSJ,YIJIYYRQ) values({0},'{1}','{2}','{3}', '{4}','{5}','{6}','{7}', '{8}','{9}','{10}','{11}', '{12}','{13}','{14}',sysdate, 0,'{15}',to_date('{16}','yyyy-mm-dd'),'{17}','{18}', '{19}','{20}','{21}','{22}', '{23}','{24}','{25}','{26}', '{27}',to_date('{28}','yyyy-mm-dd'),'{29}','{30}', '{31}','{32}','{33}','{34}', '{35}','{36}','{37}','{38}', '{39}','{40}',to_date('{41}','yyyy-mm-dd hh24:mi'))"; DBVisitor.ExecuteNonQuery(string.Format(insJcd, xh, "", InObject.JIUZHENKH, InObject.BINGRENXM, InObject.SHENFENZH, SONGJIANYS, SONGJIANKS, 0, InObject.BINGQINGMS, InObject.ZHENDUAN, InObject.BINGRENTZ, InObject.QITAJC, InObject.BINGRENZS, InObject.YEWULX, 0, JCSQDH, InObject.YUYUERQ, InObject.BINGRENXB, InObject.BINGRENNL, InObject.YUYUEZT, InObject.JIANCHAKSDM, InObject.JIANCHAKSMC, InObject.BINGRENLX, InObject.BINGRENLXMC, InObject.BINGRENZYH, InObject.BINGRENBQDM, InObject.BINGRENBQMC, InObject.BINGRENCWH, InObject.BINGRENCSRQ, InObject.BINGRENLXDZ, InObject.BINGRENLXDH, InObject.SHENQINGYSMC, //申请医生姓名 "", //申请科室名称 InObject.SHENQINGYYDM, //申请医院代码 InObject.SHENQINGYYMC, //申请医院名称 //InObject.YUYUESJ,//检查时间 //InObject.JIANCHAXMLX,//检查项目类型 InObject.JIANCHASBDM, //检查设备代码 InObject.JIANCHASBMC, //检查设备名称 InObject.JIANCHASBDD, //检查设备地点 result.YYH, //预约号 result.PDH, //时间段 预约申请时间段 InObject.XIANGMUHS, //详细安排时间 InObject.YUYUERQ + " " + InObject.YUYUESJ //预约日期 ), tran); //插入检查明细 foreach (var item in InObject.JIANCHALB) { var mxxh = DBVisitor.ExecuteScalar("select seq_sxzz_jianchasqdmx.nextval from dual").ToString(); string insJcmx = @"insert into SXZZ_JIANCHASQDMX(JIANCHASQDID,JIANCHASQDMXID,JIANCHAXMBH, JIANCHAXMMC,JIANCHAFLBM,JIANCHASTBW, JIANCHAFXDM,JIANCHAZYDM,JIANCHATS) values({0},{1},'{2}', '{3}','{4}','{5}', '{6}','{7}','{8}')"; DBVisitor.ExecuteNonQuery(string.Format(insJcmx, xh, mxxh, item.JIANCHAXMBH, item.JIANCHAXMMC, item.JIANCHAFLBM, item.JIANCHASTBW, item.JIANCHAFXDM, item.JIANCHAZYDM, item.JIANCHATS), tran); } k = 0; //插入诊断明细 foreach (var item in InObject.ZHENDUANLB) { var zdxh = DBVisitor.ExecuteScalar("select seq_sxzz_jianchasqdzd.nextval from dual").ToString(); string insZdmx = @"insert into SXZZ_JIANCHASQDZD(JIANCHASQDID,JIANCHADZDID,icd10,zhenduanmc) values({0},{1},'{2}','{3}')"; DBVisitor.ExecuteNonQuery(string.Format(insZdmx, xh, zdxh, item.ICD10, item.ZHENDUANMC), tran); } tran.Commit(); OutObject.YUYUERQ = InObject.YUYUERQ; OutObject.YUYUESJ = InObject.YUYUESJ; OutObject.YUYUEH = result.YYH; OutObject.JIANCHAH = result.JCH; OutObject.YUYUESQDBH = xh; } catch (Exception ex) { tran.Rollback(); var resource1 = new HISYY_Cancel(); resource1.RequestNo = "";// listyyxx.Items["YYH"].ToString(); resource1.YYH = result.YYH; resource1.JCH = result.PDH; string url1 = System.Configuration.ConfigurationManager.AppSettings["LaiDa_Url"]; string xml1 = XMLHandle.EntitytoXML <HISYY_Cancel>(resource1); string outxml1 = WSServer.Call <HISYY_Cancel>(url, xml).ToString(); HISYY_Cancel_Result result1 = XMLHandle.XMLtoEntity <HISYY_Cancel_Result>(outxml); throw new Exception(ex.Message); } var trans = DBVisitor.Connection.BeginTransaction(); try { //拼装交易字符串 //--1 病人id //--2 检查项目id //--3 检查部位id列表 //--4 临床诊断 //--5 院区id //--6 应用id //--7 操作员工号 //--8 中间表申请单序号 string jianChaBWDM = string.Empty; InObject.JIANCHALB.ForEach(o => jianChaBWDM += o.JIANCHASTBW + "#"); jianChaBWDM = jianChaBWDM.Trim('#'); string jiaoyiZfc = InObject.BINGRENID; //病人id jiaoyiZfc += "|" + InObject.JIANCHAXMDM; //检查项目id jiaoyiZfc += "|" + jianChaBWDM; //检查部位id列表 jiaoyiZfc += "|" + InObject.ZHENDUAN; //临床诊断 jiaoyiZfc += "|" + InObject.BASEINFO.FENYUANDM; //院区id jiaoyiZfc += "|" + "2301"; //应用id jiaoyiZfc += "|" + InObject.BASEINFO.CAOZUOYDM; //操作员工号 jiaoyiZfc += "|" + xh; //中间表申请单序号 //提交预约号------------------------------------------------------------------------------------------- OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("Prm_Msg", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiZfc; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("prm_AppCode", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("prm_DataBuffer", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; log.InfoFormat("{0}", "执行存储过程:PKG_YJ_YUYUE_YH.Prc_YJ_ShuangXiangZZJC_JieKou \r\nPRM_JIAOYIZFC:" + jiaoyiZfc + "\r\n"); DBVisitor.ExecuteProcedure("PKG_YJ_YUYUE_YH.Prc_YJ_ShuangXiangZZJC_JieKou", paramJiaoYi, trans); if (paramJiaoYi[1].Value.ToString() != "1") { throw new Exception("his系统计费失败!"); } trans.Commit(); } catch (Exception ex) { trans.Rollback(); var resource1 = new HISYY_Cancel(); resource1.RequestNo = "";// listyyxx.Items["YYH"].ToString(); resource1.YYH = result.YYH; resource1.JCH = result.PDH; string url1 = System.Configuration.ConfigurationManager.AppSettings["LaiDa_Url"]; string xml1 = XMLHandle.EntitytoXML <HISYY_Cancel>(resource1); string outxml1 = WSServer.Call <HISYY_Cancel>(url, xml).ToString(); HISYY_Cancel_Result result1 = XMLHandle.XMLtoEntity <HISYY_Cancel_Result>(outxml); throw ex; } } //检验,暂时先不考虑---------------------------------------------------------------------------- #region 检验设备预约 else { // //调用包,判断入参是否正确 // var jyjcdxx = ""; // var jyjcmx = ""; // var zdmx = ""; // var jcxmdm = ""; // int i = 0; // if (InObject.JIANCHALB.Count < 1) // { // throw new Exception(string.Format("检查项目不能为空!")); // } // //检查单信息 // jyjcdxx += InObject.JIUZHENKLX + "|";// 就诊卡类型 // jyjcdxx += InObject.JIUZHENKH + "|";// 就诊卡号 // jyjcdxx += SONGJIANKS + "|";// 送检医生 // jyjcdxx += SONGJIANYS + "|";// 送检科室 // jyjcdxx += InObject.YUYUESF + "|";// 收费识别 // jyjcdxx += InObject.BINGQINGMS + "|";// 病情描述 // jyjcdxx += InObject.ZHENDUAN + "|";// 诊断 // jyjcdxx += InObject.BINGRENTZ + "|";// 病人体征 // jyjcdxx += InObject.QITAJC + "|";// 其它检查 // jyjcdxx += InObject.BINGRENZS + "|";// 病人主诉 // jyjcdxx += InObject.YEWULY + "|";// 检查来源 // jyjcdxx += InObject.BINGRENXM + "|";// 病人姓名 // jyjcdxx += InObject.SHENFENZH + "|";// 病人身份证号 // jyjcdxx += "0" + "|";// 接收方式 // jyjcdxx += "|";// 检查申请单号 // jyjcdxx += InObject.YUYUERQ + " " + InObject.YUYUESJ + "|";// 检查日期 // jyjcdxx += InObject.BINGRENXB + "|";// 病人性别 // jyjcdxx += InObject.BINGRENNL;// 病人年龄 // //检验检查明细 // foreach (var item in InObject.JIANCHALB) // { // if (i == 0) // jcxmdm = item.JIANCHAXMBH; // else // jcxmdm += "," + item.JIANCHAXMBH; // ++i; // jyjcmx += item.JIANCHAXMBH + "|";// 检查项目编号 // jyjcmx += item.JIANCHAXMMC + "|";// 检查项目名称 // jyjcmx += item.JIANCHAFLBM + "|";// 检查分类编码 // jyjcmx += item.JIANCHASTBW + "|";// 检查身体部位 // jyjcmx += item.JIANCHAFXDM + "|";// 检查方向代码 // jyjcmx += item.JIANCHAZYDM + "|";// 检查肢位代码 // jyjcmx += item.JIANCHATS + "^";// 检查提示 // } // //疾病明细 // foreach (var item in InObject.ZHENDUANLB) // { // zdmx += item.ICD10 + "|";// ICD10 // zdmx += item.ZHENDUANMC + "^";// 诊断名称 // } // DBServer db = new DBServer(); // //调用检查开单包------------------------------------------------------------------------------------------- // OracleParameter[] jiaoYi ={ // new OracleParameter("ywlx",OracleDbType.VarChar,ParameterDirection.Input), // new OracleParameter("jyjcdxx",OracleDbType.VarChar,ParameterDirection.Input), // new OracleParameter("jyjcmx",OracleDbType.VarChar,ParameterDirection.Input), // new OracleParameter("zdmx",OracleDbType.VarChar,ParameterDirection.Input), // new OracleParameter("jylx",OracleDbType.VarChar,ParameterDirection.Input), // new OracleParameter("errno",OracleDbType.Integer,ParameterDirection.Output), // new OracleParameter("errmsg",OracleDbType.Integer,ParameterDirection.Output), // new OracleParameter("outdata",OracleDbType.VarChar,ParameterDirection.Output) // }; // jiaoYi[0].Value = 2; // jiaoYi[1].Value = jyjcdxx; // jiaoYi[2].Value = jyjcmx; // jiaoYi[3].Value = zdmx; // jiaoYi[4].Value = 1; // jiaoYi[5].Value = -1; // jiaoYi[6].Value = string.Empty.PadRight(1024); // jiaoYi[7].Value = string.Empty.PadRight(1024); // try // { // db.DbProOption("pkg_sxzz_jckd.prc_jsjcd", jiaoYi, 5); // } // catch (Exception ex) // { // tradeOut = WcfCommon.GetXmlString(tradeHead, tradeType, tradeDetail, new DataTable(), -1, ex.Message); // return -1; // } // if (jiaoYi[5].Value.ToString() != "0") // { // throw new Exception("更新预约信息失败:" + jiaoYi[6].Value.ToString()); // } // OracleConnection conn = new OracleConnection(MediTrade.Common.ConfigInfo.SqlConn); // OracleCommand comm = new OracleCommand(); // comm.Connection = conn; // if (conn.State != System.Data.ConnectionState.Open) // { // conn.Open(); // } // OracleTransaction tran = conn.BeginTransaction(); // comm.Transaction = tran; // try // { // //先插入到临时表 // var ID = new DBServer().GetCurrData("select seq_sxzz_jianchad.nextval from dual"); // var xh = ""; // var JCSQDH = ""; // int k = 0; // if (ID == null) // { // throw new Exception(string.Format("检查单序列获取失败!")); // } // else // { // xh = ID.ToString(); // } // var SQDH = new DBServer().GetCurrData("select SEQ_GY_YXSQD_SQDH.nextval from dual"); // if (SQDH == null) // { // throw new Exception(string.Format("申请单号获取失败!")); // } // else // { // JCSQDH = SQDH.ToString(); // } // //插入检查单信息 // string insJcd = @"insert into sxzz_jianchad(JIANCHADXH,JIUZHENKLX,JIUZHENKH,BINGRENXM, // BINGRENSFZH,SONGJIANYS,SONGJIANKS,SHOUFEISB, // BINGQINGMS,ZHENDUAN,BINGRENTZ,QITAJC, // BINGRENZS,JIANCHALY,JIESHOUFS,JIESHOURQ, // JIESHOUBZ,JIANCHASQDH,JIANCHARQ,BINGRENXB,BINGRENNL,YYSQDBH) // values({0},'{1}','{2}','{3}', // '{4}','{5}','{6}','{7}', // '{8}','{9}','{10}','{11}', // '{12}','{13}','{14}',sysdate, // 0,'{15}','{16}','{17}','{18}','{19}')"; // insJcd = string.Format(insJcd, xh, "", InObject.BINGRENMZH, InObject.BINGRENXM, // InObject.SHENFENZH, InObject.SHENQINGYSGH, InObject.JIANCHAKSDM, 0, // InObject.BINGQINGMS, InObject.ZHENDUAN, InObject.BINGRENTZ, InObject.QITAJC, // InObject.BINGRENZS, InObject.YEWULX, 0, JCSQDH, InObject.YUYUERQ, // InObject.BINGRENXB, InObject.BINGRENNL, yysqdBh); // comm.CommandText = insJcd; // comm.ExecuteNonQuery(); // //插入检查明细 // foreach (var item in InObject.JIANCHALB) // { // ++k; // string insJcmx = @"insert into sxzz_jianchadxm (JIANCHADXH,JIANCHADMXXH,JIANCHAXMBH, // JIANCHAXMMC,JIANCHAFLBM,JIANCHASTBW, // JIANCHAFXDM,JIANCHAZYDM,JIANCHATS) // values({0},{1},'{2}', // '{3}','{4}','{5}', // '{6}','{7}','{8}')"; // insJcmx = string.Format(insJcmx, xh, k, item.JIANCHAXMBH, // item.JIANCHAXMMC, item.JIANCHAFLBM, item.JIANCHASTBW, // item.JIANCHAFXDM, item.JIANCHAZYDM, item.JIANCHATS); // comm.CommandText = insJcmx; // comm.ExecuteNonQuery(); // } // k = 0; // //插入诊断明细 // foreach (var item in InObject.ZHENDUANLB) // { // ++k; // string insZdMx = @"insert into sxzz_jianchadzd (jianchadxh,jianchadzdxh,icd10,zhenduanmc) // values({0},{1},'{2}','{3}')"; // insZdMx = string.Format(insZdMx, xh, k, item.ICD10, item.ZHENDUANMC); // comm.CommandText = insZdMx; // comm.ExecuteNonQuery(); // } // var yysqlsh = new DBServer().GetCurrData("select seq_fsdyy_sq_yysqlsh.nextval yysqlsh from dual"); // //插入预约申请信息fdsyy_sq // string insYySqd = @"Insert into fsdyy_sq (yysqlsh,yysqdbh,yysqdmc,yysqdzt,jcksdm,jcksmc,brfph,brlx,brlxmc,brkh,brmzh,brzyh,brbqdm,brbqmc,brcwh,brxm, // brxb,brnl,brcsrq,brlxdz,brlxdh,sqysgh,sqysmc,sqksdm,sqksmc,sqyydm,sqyymc,sqsj,jch,jcrq,jcsj,jcxmdm,jcxmmc // ,jcxmlx,jcbwdm,jcbwmc,jcsbdm,jcsbmc,jcsbdd,yyh,sfzh,yysf,jcsqdbh,yxfx,yysjd,xxapsj,yyly,ywlx,sfzq,sfjz,sfls,yyrq,yyhxx) // values({42}, --预约申请流水号 // {43}, --预约申请单编号 // '{0}', --预约申请单名称 // {1}, --预约申请单状态(0未确认,1已确认,9作废) // '{2}', --检查科室代码 // '{3}', --检查科室名称 // '{4}', --病人发票号 // {5}, --病人类型 // '{6}', --病人类型名称 // '{7}', --病人卡号 // '{8}', --病人门诊号 // '{9}', --病人住院号 // '{10}', --病人病区代码 // '{11}', --病人病区名称 // '{12}', --病人床位号 // '{13}', --病人姓名 // {14}, --病人性别 // '{15}', --病人年龄 // to_date('{16}','yyyy-MM-dd'), --病人出生日期 // '{17}', --病人联系地址 // '{18}', --病人联系电话 // '{19}', --申请医生工号 // '{20}', --申请医生姓名 // '{21}', --申请科室代码 // '{22}', --申请科室名称 // '{23}', --申请医院代码 // '{24}', --申请医院名称 // sysdate, --申请时间 // '{25}', --检查号 // '{26}', --检查日期 // '{27}', --检查时间 // '{28}', --检查项目代码 // '{29}', --检查项目名称 // '{30}', --检查项目类型 // '{31}', --检查部位代码 // '{32}', --检查部位名称 // '{33}', --检查设备代码 // '{34}', --检查设备名称 // '{35}', --检查设备地点 // '{36}', --预约号 // '{37}', --身份证号 // {38}, --预约收费(0未收费,1已收费) // '{39}', --检查申请单编号 // '{40}', --影像方向 // '{41}', --预约时间段 // '{44}', --详细安排时间 // '{45}', --预约来源 // '{46}', --业务类型 // '{47}', --是否增强 // '{48}', --是否急诊 // '{49}', --是否临时 // to_date('{50}','yyyy-mm-dd HH24:mi:ss'),--预约日期 // '{51}') --预约号信息"; // insYySqd = string.Format(insYySqd, "申请单",//预约申请单名称 // InObject.YUYUEZT,//预约申请单状态(0未确认,1已确认,9作废) // InObject.JIANCHAKSDM,//检查科室代码 // InObject.JIANCHAKSMC,//检查科室名称 // InObject.BINGRENFPH,//病人发票号 // InObject.BINGRENLX,//病人类型 // InObject.BINGRENLXMC,//病人类型名称 // InObject.BINGRENKH,//病人卡号 // InObject.BINGRENMZH,//病人门诊号 // InObject.BINGRENZYH,//病人住院号 // InObject.BINGRENBQDM,//病人病区代码 // InObject.BINGRENBQMC,//病人病区名称 // InObject.BINGRENCWH,//病人床位号 // InObject.BINGRENXM,//病人姓名 // InObject.BINGRENXB,//病人性别 // InObject.BINGRENNL,//病人年龄 // InObject.BINGRENCSRQ,//病人出生日期 // InObject.BINGRENLXDZ,//病人联系地址 // InObject.BINGRENLXDH,//病人联系电话 // InObject.SHENQINGYSGH,//申请医生工号 // InObject.SHENQINGYSMC,//申请医生姓名 // "",//申请科室代码 // "",//申请科室名称 // InObject.SHENQINGYYDM,//申请医院代码 // InObject.SHENQINGYYMC,//申请医院名称 // JCSQDH,//检查号 // InObject.YUYUERQ,//检查日期 // InObject.YUYUESJ,//检查时间 // jcxmdm,//InObject.JIANCHAXMDM,//检查项目代码 // InObject.JIANCHAXMMC,//检查项目名称 // InObject.JIANCHAXMLX,//检查项目类型 // InObject.JIANCHABWDM,//检查部位代码 // InObject.JIANCHABWMC,//检查部位名称 // InObject.JIANCHASBDM,//检查设备代码 // InObject.JIANCHASBMC,//检查设备名称 // InObject.JIANCHASBDD,//检查设备地点 // "",//预约号 // InObject.SHENFENZH,//身份证号 // InObject.YUYUESF,//预约收费(0未收费,1已收费) // InObject.JIANCHASQDBH,//检查申请单编号 // InObject.YINGXIANGFX,//影像方向 // "",//时间段 // yysqlsh,//预约申请流水号 // yysqdBh,//预约申请单编号 // InObject.XIANGMUHS,//详细安排时间 // InObject.YEWULY, // InObject.YEWULX, // InObject.ZENGQIANG, // InObject.JIZHEN, // InObject.LINSHI, // InObject.YUYUERQ + " " + InObject.YUYUESJ,//预约日期 // 0); // comm.CommandText = insYySqd; // comm.ExecuteNonQuery(); // tran.Commit(); // conn.Close(); // OutObject = new SHEBEIYY_OUT(); // //OutObject.YUYUERQ = InObject.YUYUERQ; // //OutObject.YUYUESJ = InObject.YUYUESJ; // //OutObject.YUYUEH = result.YYH; // //OutObject.JIANCHAH = result.JCH; // OutObject.YUYUESQDBH = yysqdBh; // } // catch (Exception ex) // { // tran.Rollback(); // conn.Close(); // throw ex; // } } #endregion //--------------------------------------------------------------------------------------------- }
public override void ProcessMessage() { OutObject = new CHONGZHI_OUT(); string jiuzhenKh = InObject.JIUZHENKH; string jiuzhenkLx = InObject.JIUZHENKLX; string xingMing = InObject.XINGMING; string zhengjianHm = InObject.ZHENGJIANHM; string lianxiDh = InObject.LIANXIDH; string chongzhiJe = InObject.CHONGZHIJE; string zhifuFs = InObject.ZHIFUFS; string jiandangRen = InObject.BASEINFO.CAOZUOYDM; //建档人工号 string caozuoRq = InObject.BASEINFO.CAOZUORQ; //操作日期 string yuanQuDM = InObject.BASEINFO.FENYUANDM; //分院代码 string YINHANGKXX = InObject.YINGHANGKXX; int JIUZHENKCD = Convert.ToInt32(ConfigurationManager.AppSettings["JIUZHENKCD"]); //就诊卡默认长度 #region 基本入参判断 if (string.IsNullOrEmpty(yuanQuDM)) { throw new Exception("院区代码不能为空!"); } //就诊卡号 if (string.IsNullOrEmpty(jiuzhenKh)) { throw new Exception(string.Format("就诊卡号获取失败!")); } //支付方式 if (string.IsNullOrEmpty(zhifuFs)) { throw new Exception(string.Format("支付方式获取失败!")); } //充值金额 if (string.IsNullOrEmpty(zhifuFs)) { throw new Exception(string.Format("充值金额获取失败!")); } if (string.IsNullOrEmpty(caozuoRq) || caozuoRq.Length != 19) { caozuoRq = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } #endregion if (JIUZHENKCD > 0) { if (jiuzhenKh.Length < JIUZHENKCD) { jiuzhenKh = jiuzhenKh.PadLeft(JIUZHENKCD, '0'); } } string brxxSql = "select bingrenid, ZIJINZHQYBZ,xingMing,nvl(shenfenzh,'') as zhengjianHm," + "nvl(lianxirdh,'') as lianxiDh from gy_bingrenxx where jiuzhenkh='" + jiuzhenKh + "'"; DataTable dtBrxx = DBVisitor.ExecuteTable(brxxSql); string qiyongBz = string.Empty; string bingrenId = string.Empty; string jiaoyiMa = string.Empty;//交易码 if (dtBrxx.Rows.Count > 0) { qiyongBz = dtBrxx.Rows[0]["ZIJINZHQYBZ"].ToString(); bingrenId = dtBrxx.Rows[0]["bingrenid"].ToString(); zhengjianHm = dtBrxx.Rows[0]["zhengjianHm"].ToString(); xingMing = dtBrxx.Rows[0]["xingMing"].ToString(); lianxiDh = dtBrxx.Rows[0]["lianxiDh"].ToString(); } jiaoyiMa = Unity.GetMD5(bingrenId + Convert.ToSingle(chongzhiJe).ToString("f4") + caozuoRq + "1" + jiandangRen).ToLower(); if (qiyongBz == "1") { if (zhifuFs == "10" || zhifuFs == "15") { DataTable dtXLH = DBVisitor.ExecuteTable("Select seq_gy_posjiaoyixx.nextval POSXH From Dual"); if (dtXLH.Rows.Count > 0) { string POSJIAOYIXXID = dtXLH.Rows[0]["POSXH"].ToString(); YINHANGKXX += "#" + POSJIAOYIXXID; } } else if (zhifuFs == "21") { //DataTable dtXLH = DBVisitor.ExecuteTable("Select S_ZFB_JYLSH.nextval ZFBXH From Dual"); //if (dtXLH.Rows.Count > 0) //{ string ZFBJIAOYIXXID = "808";//dtXLH.Rows[0]["ZFBXH"].ToString(); YINHANGKXX += "#" + ZFBJIAOYIXXID + "#" + InObject.BASEINFO.FENYUANDM; //} } string jiaoyiMsg = jiuzhenKh + "|" + jiuzhenkLx + "|" + xingMing + "|" + zhengjianHm + "|" + lianxiDh + "|" + chongzhiJe + "|" + zhifuFs + "|" + caozuoRq + "|" + jiandangRen + "|" + jiaoyiMa + "|"; if (!string.IsNullOrEmpty(YINHANGKXX)) { jiaoyiMsg += YINHANGKXX + "|"; } else { jiaoyiMsg += "|"; } jiaoyiMsg += yuanQuDM + "|"; //WcfCommon.writeLog(WcfCommon.LOGTYPE_SQLLOG, OutObject.GetType().Name.ToString(), "院内账户充值存储过程入参:" + jiaoyiMsg, messageId); //账户充值------------------------------------------------------------------------------------------- OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_MSG", OracleType.VarChar); paramJiaoYi[0].Value = jiaoyiMsg; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_OUTBUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_GY_YINYIJK.PRC_ZZSF_DIANZIZHCZ", paramJiaoYi, transaction);//院内账户充值 } catch (Exception ex) { if (transaction != null) { transaction.Rollback(); conn.Close(); } throw new Exception(string.Format(ex.Message)); } //-------------------------------------------------------------------------------------------------- string returnValue = paramJiaoYi[1].Value.ToString(); string returnMsg = paramJiaoYi[2].Value.ToString(); if (returnValue == "1")// { transaction.Commit(); conn.Close(); OutObject.ZHANGHUYE = returnMsg; } else { transaction.Rollback(); conn.Close(); throw new Exception(returnMsg); } } else { throw new Exception("请先开通院内账户"); } }
public override void ProcessMessage() { OutObject = new GUAHAOYYTH_OUT(); string quhaoMm = InObject.QUHAOMM;//取号密码即预约号???? #region 基本入参判断 //if (string.IsNullOrEmpty(jiuzhenKh) && string.IsNullOrEmpty(zhengjianHm)) { // throw new Exception("就诊卡号和证件号码不能同时为空!"); //} if (string.IsNullOrEmpty(quhaoMm)) { throw new Exception("取号密码不能为空"); } #endregion string yuYueCZFS = ConfigurationManager.AppSettings["GUAHAOYYCZFS"];//挂号预约处理方式 if (!string.IsNullOrEmpty(yuYueCZFS) && yuYueCZFS == "1") { #region 兴悦城妇儿业务流程 string yuYueJL = @"select * from gy_jiuzhenyy where jiuzhenyyid = '{0}'"; DataTable dtYuYueJL = DBVisitor.ExecuteTable(string.Format(yuYueJL, quhaoMm)); if (dtYuYueJL == null || dtYuYueJL.Rows.Count <= 0) { throw new Exception("未找到预约记录!"); } string jiuZhenBZ = dtYuYueJL.Rows[0]["jiuzhenbz"].ToString(); if (string.IsNullOrEmpty(jiuZhenBZ)) { jiuZhenBZ = "0"; } if (jiuZhenBZ != "0") { throw new Exception("该病人已就诊,无法取消预约!"); } string quXiaoYY = "update gy_jiuzhenyy set zuofeibz = 1 where jiuzhenyyid = '{0}'"; DBVisitor.ExecuteNonQuery(string.Format(quXiaoYY, quhaoMm)); #endregion } else { #region 标准his4版本业务流程 OracleParameter[] paramJiaoYi = new OracleParameter[3]; paramJiaoYi[0] = new OracleParameter("PRM_YUYUEHAO", OracleType.VarChar); paramJiaoYi[0].Value = quhaoMm; paramJiaoYi[0].Direction = ParameterDirection.Input; paramJiaoYi[1] = new OracleParameter("PRM_APPCODE", OracleType.Number); paramJiaoYi[1].Value = null; paramJiaoYi[1].Direction = ParameterDirection.Output; paramJiaoYi[2] = new OracleParameter("PRM_DATABUFFER", OracleType.VarChar); paramJiaoYi[2].Value = null; paramJiaoYi[2].Size = 2000; paramJiaoYi[2].Direction = ParameterDirection.Output; log.InfoFormat("{0}", "执行存储过程:PKG_MZ_YUYUE.PRC_GY_QUXIAOYY \r\nPRM_YUYUEHAO:" + quhaoMm + "\r\n"); DbTransaction transaction = null; DbConnection conn = DBVisitor.Connection; try { transaction = conn.BeginTransaction(); DBVisitor.ExecuteProcedure("PKG_MZ_YUYUE.PRC_GY_QUXIAOYY", paramJiaoYi, transaction); } catch (Exception ex) { transaction.Rollback(); conn.Close(); throw new Exception(ex.Message); } //-------------------------------------------------------------------------------------------------- string returnValue = paramJiaoYi[2].Value.ToString(); if (returnValue.Length > 2 && returnValue.Substring(0, 2).ToUpper() == "OK")//取消预约成功 { transaction.Commit(); conn.Close(); OutObject.OUTMSG.ERRMSG = "预约取消成功!"; //tradeOut = WcfCommon.GetXmlString(tradeHead, tradeType, tradeDetail, new DataTable(), 0, "挂号预约退号成功"); //return 0; } else { transaction.Rollback(); conn.Close(); throw new Exception(returnValue.Substring(returnValue.IndexOf('|') + 1)); } #endregion } }