MFN_Z2B_GY_KESHI_ZS.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using NHapi.Model.V24.Message;
  6. using NHapi.Model.V24.Group;
  7. using NHapi.Model.V24.Segment;
  8. using System.Data.Common;
  9. using System.Transactions;
  10. using Microsoft.Practices.EnterpriseLibrary.Data;
  11. using System.Data;
  12. using IL.Common;
  13. //using MediII.Adapter.Model.UE;
  14. namespace MediII.Adapter.BizComponent.MFN
  15. {
  16. /// <summary>
  17. /// 公用科室
  18. /// zengfan 2012-09-04
  19. /// </summary>
  20. /// <remarks></remarks>
  21. public class MFN_Z2B_GY_KESHI_ZS : MFNBase
  22. {
  23. //数据库连接
  24. //HealthCareContainer HealthCareContainer = new HealthCareContainer();
  25. private Database ctx = null;
  26. public MFN_Z2B_GY_KESHI_ZS(Database dbCtx)
  27. {
  28. ctx = dbCtx;
  29. }
  30. /// <summary>
  31. /// 消息处理,入库
  32. /// zengfan 2012-09-04
  33. /// </summary>
  34. /// <param name="message">转化过的强类型消息</param>
  35. /// <returns></returns>
  36. /// <remarks></remarks>
  37. public override int Process(NHapi.Base.Model.IMessage message)
  38. {
  39. //IEnumerable<Employee> EmpList = HealthCareContainer.Employee;
  40. //取得消息类型 MAD新增 MUP更新 MDL删除 "MDC"作废 "MAC"恢复
  41. string strMsgType;
  42. MFN_Z2B msg = message as MFN_Z2B;
  43. using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  44. {
  45. for (int i = 0; i < msg.MFRepetitionsUsed; i++)
  46. {
  47. MFN_Z2B_Nofification group = msg.GetMF(i);
  48. strMsgType = group.MFE.RecordLevelEventCode.Value;
  49. //int KeShiLB;
  50. var pkid = StrHelepr.ObjToStrTrim(group.Z2B.KeShiId.Value);
  51. string qurysql = "select count(*) from HealthCare.dbo.Division where DivNo=@DivNo";
  52. DbCommand command = ctx.GetSqlStringCommand(qurysql.ToString());
  53. ctx.AddInParameter(command, "DivNo", System.Data.DbType.String, pkid);
  54. int counts = Convert.ToInt32(ctx.ExecuteScalar(command));
  55. if (counts == 0)
  56. {
  57. Division_SyncAdd(group, pkid);//增加
  58. }
  59. else
  60. {
  61. if ("MUP" == strMsgType || "MAD" == strMsgType)//修改
  62. {
  63. string sql2 = @"update HealthCare.dbo.Division
  64. set DivName=@DivName,
  65. DivEngName=@DivEngName,
  66. DeptNo=@DeptNo,
  67. UpdateUser=@UpdateUser,
  68. UpdateTime=GETDATE(),
  69. Keyword1=@Keyword1,
  70. Keyword2=@Keyword2,
  71. Keyword3=@Keyword3,
  72. IsIss=@IsIss,
  73. OpdUseType=@OpdUseType,
  74. InpUseType=@InpUseType,
  75. Zone=@Zone,
  76. EmgUseType=@EmgUseType,
  77. DivCode=@DivCode,
  78. IsVirtual=@IsVirtual,
  79. IsConsultation=@IsConsultation,
  80. DivType=@DivType
  81. where DivNo=@DivNo
  82. ";
  83. DbCommand command2 = ctx.GetSqlStringCommand(sql2.ToString());
  84. ctx.AddInParameter(command2, "DivNo", System.Data.DbType.AnsiString, pkid);
  85. SetDivisionEntity(group.Z2B, ctx, command2);
  86. ctx.ExecuteNonQuery(command2);
  87. }
  88. if ("MDL" == strMsgType)
  89. {
  90. Division_SyncDel(pkid);
  91. }
  92. }
  93. }
  94. scope.Complete();
  95. }
  96. return 1;
  97. }
  98. /// <summary>
  99. /// 科室新增
  100. /// </summary>
  101. public void Division_SyncAdd(MFN_Z2B_Nofification group, string pkid)
  102. {
  103. string sql = @"insert into HealthCare.dbo.Division(DivNo,
  104. DivCode,
  105. DivName,
  106. DivEngName,
  107. DeptNo,
  108. IsVirtual,
  109. IsConsultation,
  110. DivType,
  111. UpdateUser,
  112. UpdateTime,
  113. Keyword1,
  114. Keyword2,
  115. Keyword3,
  116. IsIss,
  117. OpdUseType,
  118. InpUseType,
  119. EmgUseType,
  120. Zone)
  121. VALUES(@DivNo,
  122. @DivCode,
  123. @DivName,
  124. @DivEngName,
  125. @DeptNo,
  126. @IsVirtual,
  127. @IsConsultation,
  128. @DivType,
  129. @UpdateUser,
  130. GETDATE(),
  131. @Keyword1,
  132. @Keyword2,
  133. @Keyword3,
  134. @IsIss,
  135. @OpdUseType,
  136. @InpUseType,
  137. @EmgUseType,
  138. @Zone)";
  139. DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
  140. ctx.AddInParameter(command, "DivNo", System.Data.DbType.AnsiString, pkid);//部门代号
  141. SetDivisionEntity(group.Z2B, ctx, command);
  142. ctx.ExecuteNonQuery(command);
  143. }
  144. public void SetDivisionEntity(Z2B seg, Database ctx, DbCommand command)
  145. {
  146. //string sql = @"SELECT Zone FROM HealthCare.dbo.HisInfo WHERE HisZone = @HisZone";
  147. //DbCommand command1 = ctx.GetSqlStringCommand(sql.ToString());
  148. //ctx.AddInParameter(command1, "HisZone", System.Data.DbType.AnsiString, seg.YuanQu.Identifier.Value);
  149. //DataTable dt = ctx.ExecuteDataSet(command1).Tables[0];
  150. //string ZONE = "";
  151. //if (dt.Rows.Count > 0)
  152. //{
  153. // ZONE = dt.Rows[0]["Zone"].ToString();
  154. //}
  155. ctx.AddInParameter(command, "Zone", System.Data.DbType.AnsiString, GetZone(seg.YuanQu.Identifier.Value));
  156. //ctx.AddInParameter(command, "keshiid", System.Data.DbType.AnsiString, seg. KeShiId.Value);
  157. ctx.AddInParameter(command, "DivCode", System.Data.DbType.AnsiString, seg.KeShiBm.Value); //科别代码
  158. ctx.AddInParameter(command, "DeptNo", System.Data.DbType.AnsiString, "");//seg.ShangJiKs.Identifier.Value); //科别代号
  159. ctx.AddInParameter(command, "DivName", System.Data.DbType.AnsiString, seg.KeShiMc.Value); //科别名称
  160. //ctx.AddInParameter(command, "keshibm", System.Data.DbType.AnsiString, seg.KeShiBm.Value);
  161. //ctx.AddInParameter(command, "weizhism", System.Data.DbType.AnsiString, seg.WeiZhiSm.Value);
  162. //wuchengwu 0904 不再更新renshiks数据
  163. ctx.AddInParameter(command, "DivEngName", System.Data.DbType.AnsiString, seg.YingWenMing.Value); //英文名
  164. ctx.AddInParameter(command, "IsVirtual", System.Data.DbType.Int16, 0); //是否为虚拟科别
  165. ctx.AddInParameter(command, "IsConsultation", System.Data.DbType.Int16, 1); //是否可会诊
  166. ctx.AddInParameter(command, "DivType", System.Data.DbType.Int16, seg.KeShiLB.Value); //科别类型
  167. //ctx.AddInParameter(command, "lianxidh", System.Data.DbType.AnsiString, seg.LianXiDh.PhoneNumber.Value);
  168. //ctx.AddInParameter(command, "hesuanks", System.Data.DbType.AnsiString, seg.HeSuanKs.Identifier.Value);
  169. //ctx.AddInParameter(command, "chengbenks", System.Data.DbType.AnsiString, seg.ChengBenKs.Identifier.Value);
  170. //wuchengwu 0904 不再更新renshiks数据
  171. //ctx.AddInParameter(command, "renshiks", System.Data.DbType.AnsiString, seg.RenShiKs.Identifier.Value);
  172. ctx.AddInParameter(command, "EmgUseType", System.Data.DbType.Int16, seg.JiZhenSyBz.Value == "1" ? (short)1 : (short)0); //11.04
  173. //根据Division表的急诊标志,修改HealthCare.dbo.OpdRoomSet表的LocArea标志
  174. int _EmgUseType = seg.JiZhenSyBz.Value == "1" ? (short)1 : (short)0;
  175. string _SQL = "select LocArea from HealthCare.dbo.OpdRoomSet where DivNo = @_DivNo";
  176. DbCommand comd = ctx.GetSqlStringCommand(_SQL.ToString());
  177. ctx.AddInParameter(comd, "_DivNo", System.Data.DbType.AnsiString, seg.KeShiId.Value);
  178. DataTable dt2 = ctx.ExecuteDataSet(comd).Tables[0];
  179. string _LocArea = "";
  180. if (dt2.Rows.Count > 0)
  181. {
  182. _LocArea = dt2.Rows[0]["LocArea"].ToString();
  183. if (1 == _EmgUseType)
  184. {
  185. string _LocArea2 = "E00";
  186. if (_LocArea != "E00")
  187. { AlertLocArea(_LocArea2, seg.KeShiId.Value); }
  188. }
  189. else if (0 == _EmgUseType)
  190. {
  191. string _LocArea2 = "O00";
  192. if (_LocArea != "O00")
  193. { AlertLocArea(_LocArea2, seg.KeShiId.Value); }
  194. }
  195. }
  196. ctx.AddInParameter(command, "OpdUseType", System.Data.DbType.Int16, seg.MenZhenSyBz.Value == "1" ? (short)1 : (short)0);
  197. ctx.AddInParameter(command, "InpUseType", System.Data.DbType.Int16, seg.ZhuYuanSyBz.Value == "1" ? (short)1 : (short)0);
  198. //wuchengwu 0904 不再更新jizhenbz数据
  199. //ctx.AddInParameter(command, "jizhenbz", System.Data.DbType.Int16, seg.JiZhenSyBz.Value == "1" ? (short)1 : (short)0);
  200. ctx.AddInParameter(command, "IsIss", System.Data.DbType.Int16, 0);//seg.ZuoFeiBZ.Value == "1" ? (short)1 : (short)0); //是否IIS分数(病人注记中)
  201. //ctx.AddInParameter(command, "shangjiywks", System.Data.DbType.AnsiString, seg.ShangJiKs.Identifier.Value);
  202. string SHURUMA1 = string.Empty;
  203. string SHURUMA2 = string.Empty;
  204. string SHURUMA3 = string.Empty;
  205. for (int i = 0; i < seg.ShuRuMaRepetitionsUsed; i++)
  206. {
  207. NHapi.Model.V24.Datatype.CE shuRuMa = seg.GetShuRuMa(i);
  208. if (SHURUMA1 == string.Empty)
  209. {
  210. SHURUMA1 = string.IsNullOrEmpty(shuRuMa.Text.Value) ? MFNBase.GetInputCode(0, seg.KeShiMc.Value) : shuRuMa.Text.Value;
  211. continue;
  212. }
  213. if (SHURUMA2 == string.Empty)
  214. {
  215. SHURUMA2 = string.IsNullOrEmpty(shuRuMa.Text.Value) ? MFNBase.GetInputCode(1, seg.KeShiMc.Value) : shuRuMa.Text.Value;
  216. continue;
  217. }
  218. if (SHURUMA3 == string.Empty)
  219. {
  220. SHURUMA3 = shuRuMa.Text.Value;
  221. continue;
  222. }
  223. }
  224. 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", ""));
  225. 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", ""));
  226. ctx.AddInParameter(command, "Keyword3", System.Data.DbType.AnsiString, string.IsNullOrEmpty(SHURUMA3) ? "" : SHURUMA3.Replace(" ", "").Replace("\r", "").Replace("\t", "").Replace("\n", ""));
  227. ctx.AddInParameter(command, "UpdateUser", System.Data.DbType.AnsiString, seg.XiuGaiRen.IDNumber.Value);
  228. ctx.AddInParameter(command, "UpdateTime", System.Data.DbType.DateTime, seg.XiuGaiSJ.TimeOfAnEvent.GetAsDate());
  229. }
  230. /// <summary>
  231. /// 部门新增
  232. /// </summary>
  233. /// <param name="seg"></param>
  234. /// <param name="HealthCareContainer"></param>
  235. /// <param name="scope"></param>
  236. /// <summary>
  237. /// 科室删除
  238. /// </summary>
  239. /// <param name="seg">传入资料</param>
  240. /// <param name="HealthCareContainer">连线</param>
  241. /// <param name="scope">交易</param>
  242. public void Division_SyncDel(string pkid)
  243. {
  244. //string sql4 = "update HealthCare.dbo.Division set IsIss=1 where DivNo=@DivNo";
  245. string sql4 = "delete from HealthCare.dbo.Division where DivNo=@DivNo";
  246. DbCommand command4 = ctx.GetSqlStringCommand(sql4.ToString());
  247. ctx.AddInParameter(command4, "DivNo", System.Data.DbType.AnsiString, pkid);
  248. ctx.ExecuteNonQuery(command4);
  249. }
  250. public void AlertLocArea(string LocArea, string KeShiID)
  251. {
  252. if (!string.IsNullOrEmpty(LocArea) && !string.IsNullOrEmpty(KeShiID))
  253. {
  254. string sql = "update HealthCare.dbo.OpdRoomSet set LocArea = @LocArea where DivNo=@Loc_DivNo";
  255. DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
  256. ctx.AddInParameter(command, "LocArea", System.Data.DbType.AnsiString, LocArea);
  257. ctx.AddInParameter(command, "Loc_DivNo", System.Data.DbType.AnsiString, KeShiID);
  258. ctx.ExecuteNonQuery(command);
  259. }
  260. }
  261. private string GetZone(string value)
  262. {
  263. string sql = @"SELECT Zone FROM HealthCare.dbo.HisInfo WHERE HisZone = @HisZone";
  264. DbCommand command1 = ctx.GetSqlStringCommand(sql.ToString());
  265. ctx.AddInParameter(command1, "HisZone", System.Data.DbType.AnsiString, value);
  266. DataTable dt = ctx.ExecuteDataSet(command1).Tables[0];
  267. string ZONE = "";
  268. if (dt.Rows.Count > 0)
  269. {
  270. ZONE = dt.Rows[0]["Zone"].ToString();
  271. }
  272. return ZONE;
  273. }
  274. }
  275. }