using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHapi.Model.V24.Message; using NHapi.Model.V24.Group; using NHapi.Model.V24.Segment; using System.Data.Common; using System.Transactions; using Microsoft.Practices.EnterpriseLibrary.Data; using System.Data; using IL.Common; //using MediII.Adapter.Model.UE; namespace MediII.Adapter.BizComponent.MFN { /// /// 公用科室 /// zengfan 2012-09-04 /// /// public class MFN_Z2B_GY_KESHI_ZS : MFNBase { //数据库连接 //HealthCareContainer HealthCareContainer = new HealthCareContainer(); private Database ctx = null; public MFN_Z2B_GY_KESHI_ZS(Database dbCtx) { ctx = dbCtx; } /// /// 消息处理,入库 /// zengfan 2012-09-04 /// /// 转化过的强类型消息 /// /// public override int Process(NHapi.Base.Model.IMessage message) { //IEnumerable EmpList = HealthCareContainer.Employee; //取得消息类型 MAD新增 MUP更新 MDL删除 "MDC"作废 "MAC"恢复 string strMsgType; MFN_Z2B msg = message as MFN_Z2B; using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { for (int i = 0; i < msg.MFRepetitionsUsed; i++) { MFN_Z2B_Nofification group = msg.GetMF(i); strMsgType = group.MFE.RecordLevelEventCode.Value; //int KeShiLB; var pkid = StrHelepr.ObjToStrTrim(group.Z2B.KeShiId.Value); string qurysql = "select count(*) from HealthCare.dbo.Division where DivNo=@DivNo"; DbCommand command = ctx.GetSqlStringCommand(qurysql.ToString()); ctx.AddInParameter(command, "DivNo", System.Data.DbType.String, pkid); int counts = Convert.ToInt32(ctx.ExecuteScalar(command)); if (counts == 0) { Division_SyncAdd(group, pkid);//增加 } else { if ("MUP" == strMsgType || "MAD" == strMsgType)//修改 { string sql2 = @"update HealthCare.dbo.Division set DivName=@DivName, DivEngName=@DivEngName, DeptNo=@DeptNo, UpdateUser=@UpdateUser, UpdateTime=GETDATE(), Keyword1=@Keyword1, Keyword2=@Keyword2, Keyword3=@Keyword3, IsIss=@IsIss, OpdUseType=@OpdUseType, InpUseType=@InpUseType, Zone=@Zone, EmgUseType=@EmgUseType, DivCode=@DivCode, IsVirtual=@IsVirtual, IsConsultation=@IsConsultation, DivType=@DivType where DivNo=@DivNo "; DbCommand command2 = ctx.GetSqlStringCommand(sql2.ToString()); ctx.AddInParameter(command2, "DivNo", System.Data.DbType.AnsiString, pkid); SetDivisionEntity(group.Z2B, ctx, command2); ctx.ExecuteNonQuery(command2); } if ("MDL" == strMsgType) { Division_SyncDel(pkid); } } } scope.Complete(); } return 1; } /// /// 科室新增 /// public void Division_SyncAdd(MFN_Z2B_Nofification group, string pkid) { string sql = @"insert into HealthCare.dbo.Division(DivNo, DivCode, DivName, DivEngName, DeptNo, IsVirtual, IsConsultation, DivType, UpdateUser, UpdateTime, Keyword1, Keyword2, Keyword3, IsIss, OpdUseType, InpUseType, EmgUseType, Zone) VALUES(@DivNo, @DivCode, @DivName, @DivEngName, @DeptNo, @IsVirtual, @IsConsultation, @DivType, @UpdateUser, GETDATE(), @Keyword1, @Keyword2, @Keyword3, @IsIss, @OpdUseType, @InpUseType, @EmgUseType, @Zone)"; DbCommand command = ctx.GetSqlStringCommand(sql.ToString()); ctx.AddInParameter(command, "DivNo", System.Data.DbType.AnsiString, pkid);//部门代号 SetDivisionEntity(group.Z2B, ctx, command); ctx.ExecuteNonQuery(command); } public void SetDivisionEntity(Z2B seg, Database ctx, DbCommand command) { //string sql = @"SELECT Zone FROM HealthCare.dbo.HisInfo WHERE HisZone = @HisZone"; //DbCommand command1 = ctx.GetSqlStringCommand(sql.ToString()); //ctx.AddInParameter(command1, "HisZone", System.Data.DbType.AnsiString, seg.YuanQu.Identifier.Value); //DataTable dt = ctx.ExecuteDataSet(command1).Tables[0]; //string ZONE = ""; //if (dt.Rows.Count > 0) //{ // ZONE = dt.Rows[0]["Zone"].ToString(); //} ctx.AddInParameter(command, "Zone", System.Data.DbType.AnsiString, GetZone(seg.YuanQu.Identifier.Value)); //ctx.AddInParameter(command, "keshiid", System.Data.DbType.AnsiString, seg. KeShiId.Value); ctx.AddInParameter(command, "DivCode", System.Data.DbType.AnsiString, seg.KeShiBm.Value); //科别代码 ctx.AddInParameter(command, "DeptNo", System.Data.DbType.AnsiString, "");//seg.ShangJiKs.Identifier.Value); //科别代号 ctx.AddInParameter(command, "DivName", System.Data.DbType.AnsiString, seg.KeShiMc.Value); //科别名称 //ctx.AddInParameter(command, "keshibm", System.Data.DbType.AnsiString, seg.KeShiBm.Value); //ctx.AddInParameter(command, "weizhism", System.Data.DbType.AnsiString, seg.WeiZhiSm.Value); //wuchengwu 0904 不再更新renshiks数据 ctx.AddInParameter(command, "DivEngName", System.Data.DbType.AnsiString, seg.YingWenMing.Value); //英文名 ctx.AddInParameter(command, "IsVirtual", System.Data.DbType.Int16, 0); //是否为虚拟科别 ctx.AddInParameter(command, "IsConsultation", System.Data.DbType.Int16, 1); //是否可会诊 ctx.AddInParameter(command, "DivType", System.Data.DbType.Int16, seg.KeShiLB.Value); //科别类型 //ctx.AddInParameter(command, "lianxidh", System.Data.DbType.AnsiString, seg.LianXiDh.PhoneNumber.Value); //ctx.AddInParameter(command, "hesuanks", System.Data.DbType.AnsiString, seg.HeSuanKs.Identifier.Value); //ctx.AddInParameter(command, "chengbenks", System.Data.DbType.AnsiString, seg.ChengBenKs.Identifier.Value); //wuchengwu 0904 不再更新renshiks数据 //ctx.AddInParameter(command, "renshiks", System.Data.DbType.AnsiString, seg.RenShiKs.Identifier.Value); ctx.AddInParameter(command, "EmgUseType", System.Data.DbType.Int16, seg.JiZhenSyBz.Value == "1" ? (short)1 : (short)0); //11.04 //根据Division表的急诊标志,修改HealthCare.dbo.OpdRoomSet表的LocArea标志 int _EmgUseType = seg.JiZhenSyBz.Value == "1" ? (short)1 : (short)0; string _SQL = "select LocArea from HealthCare.dbo.OpdRoomSet where DivNo = @_DivNo"; DbCommand comd = ctx.GetSqlStringCommand(_SQL.ToString()); ctx.AddInParameter(comd, "_DivNo", System.Data.DbType.AnsiString, seg.KeShiId.Value); DataTable dt2 = ctx.ExecuteDataSet(comd).Tables[0]; string _LocArea = ""; if (dt2.Rows.Count > 0) { _LocArea = dt2.Rows[0]["LocArea"].ToString(); if (1 == _EmgUseType) { string _LocArea2 = "E00"; if (_LocArea != "E00") { AlertLocArea(_LocArea2, seg.KeShiId.Value); } } else if (0 == _EmgUseType) { string _LocArea2 = "O00"; if (_LocArea != "O00") { AlertLocArea(_LocArea2, seg.KeShiId.Value); } } } ctx.AddInParameter(command, "OpdUseType", System.Data.DbType.Int16, seg.MenZhenSyBz.Value == "1" ? (short)1 : (short)0); ctx.AddInParameter(command, "InpUseType", System.Data.DbType.Int16, seg.ZhuYuanSyBz.Value == "1" ? (short)1 : (short)0); //wuchengwu 0904 不再更新jizhenbz数据 //ctx.AddInParameter(command, "jizhenbz", System.Data.DbType.Int16, seg.JiZhenSyBz.Value == "1" ? (short)1 : (short)0); ctx.AddInParameter(command, "IsIss", System.Data.DbType.Int16, 0);//seg.ZuoFeiBZ.Value == "1" ? (short)1 : (short)0); //是否IIS分数(病人注记中) //ctx.AddInParameter(command, "shangjiywks", System.Data.DbType.AnsiString, seg.ShangJiKs.Identifier.Value); string SHURUMA1 = string.Empty; string SHURUMA2 = string.Empty; string SHURUMA3 = string.Empty; for (int i = 0; i < seg.ShuRuMaRepetitionsUsed; i++) { NHapi.Model.V24.Datatype.CE shuRuMa = seg.GetShuRuMa(i); if (SHURUMA1 == string.Empty) { SHURUMA1 = string.IsNullOrEmpty(shuRuMa.Text.Value) ? MFNBase.GetInputCode(0, seg.KeShiMc.Value) : shuRuMa.Text.Value; continue; } if (SHURUMA2 == string.Empty) { SHURUMA2 = string.IsNullOrEmpty(shuRuMa.Text.Value) ? MFNBase.GetInputCode(1, seg.KeShiMc.Value) : shuRuMa.Text.Value; continue; } if (SHURUMA3 == string.Empty) { SHURUMA3 = shuRuMa.Text.Value; continue; } } ctx.AddInParameter(command, "Keyword1", System.Data.DbType.AnsiString, string.IsNullOrEmpty(SHURUMA1) ? MFNBase.GetInputCode(0, seg.KeShiMc.Value) : SHURUMA1.Replace(" ", "").Replace("\r", "").Replace("\t", "").Replace("\n", "")); ctx.AddInParameter(command, "Keyword2", System.Data.DbType.AnsiString, string.IsNullOrEmpty(SHURUMA2) ? MFNBase.GetInputCode(1, seg.KeShiMc.Value) : SHURUMA2.Replace(" ", "").Replace("\r", "").Replace("\t", "").Replace("\n", "")); ctx.AddInParameter(command, "Keyword3", System.Data.DbType.AnsiString, string.IsNullOrEmpty(SHURUMA3) ? "" : SHURUMA3.Replace(" ", "").Replace("\r", "").Replace("\t", "").Replace("\n", "")); ctx.AddInParameter(command, "UpdateUser", System.Data.DbType.AnsiString, seg.XiuGaiRen.IDNumber.Value); ctx.AddInParameter(command, "UpdateTime", System.Data.DbType.DateTime, seg.XiuGaiSJ.TimeOfAnEvent.GetAsDate()); } /// /// 部门新增 /// /// /// /// /// /// 科室删除 /// /// 传入资料 /// 连线 /// 交易 public void Division_SyncDel(string pkid) { //string sql4 = "update HealthCare.dbo.Division set IsIss=1 where DivNo=@DivNo"; string sql4 = "delete from HealthCare.dbo.Division where DivNo=@DivNo"; DbCommand command4 = ctx.GetSqlStringCommand(sql4.ToString()); ctx.AddInParameter(command4, "DivNo", System.Data.DbType.AnsiString, pkid); ctx.ExecuteNonQuery(command4); } public void AlertLocArea(string LocArea, string KeShiID) { if (!string.IsNullOrEmpty(LocArea) && !string.IsNullOrEmpty(KeShiID)) { string sql = "update HealthCare.dbo.OpdRoomSet set LocArea = @LocArea where DivNo=@Loc_DivNo"; DbCommand command = ctx.GetSqlStringCommand(sql.ToString()); ctx.AddInParameter(command, "LocArea", System.Data.DbType.AnsiString, LocArea); ctx.AddInParameter(command, "Loc_DivNo", System.Data.DbType.AnsiString, KeShiID); ctx.ExecuteNonQuery(command); } } private string GetZone(string value) { string sql = @"SELECT Zone FROM HealthCare.dbo.HisInfo WHERE HisZone = @HisZone"; DbCommand command1 = ctx.GetSqlStringCommand(sql.ToString()); ctx.AddInParameter(command1, "HisZone", System.Data.DbType.AnsiString, value); DataTable dt = ctx.ExecuteDataSet(command1).Tables[0]; string ZONE = ""; if (dt.Rows.Count > 0) { ZONE = dt.Rows[0]["Zone"].ToString(); } return ZONE; } } }