ADT_A08B01_Handler.cs 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Transactions;
  6. using System.Data;
  7. using System.Data.Common;
  8. using IL.Common;
  9. using MediII.Adapter.ReceiveToScanModel;
  10. using Newtonsoft.Json.Linq;
  11. using Newtonsoft.Json;
  12. namespace MediII.Adapter.BizComponent.ADT
  13. {
  14. /// <summary>
  15. /// 门急诊诊断信息
  16. /// </summary>
  17. public class ADT_A08B01_Handler : ADTHandler
  18. {
  19. public override void Handler(TaskMessage m)
  20. {
  21. //初始化
  22. var rtnMsg = string.Empty;
  23. var msgHead = string.Empty;
  24. var msgBody = string.Empty;
  25. var resultCode = string.Empty;
  26. var result = string.Empty;
  27. string guid = MediII.Common.GUIDHelper.NewGUID();
  28. Restful server = new Restful();
  29. string jbody = "{\"Request\":{\"Head\":{\"LicId\":\"6F9619FF-8B86-D011-B66D-00C04FC966FF\",\"RecAppId\":\"HIS\",\"ContentType\":\"text/json\",\"TranCode\":\"{0}\",\"Timestamp\":\"{5}\",\"OrgId\":\"991797\",\"AppId\":\"WiNEX\",\"Version\":\"1.1\",\"ServiceVersion\":\"1.0\",\"RecOrgId\":\"991797\",\"IPAddress\":\"100.100.100.100\",\"AppType\":\"PC\",\"MessageId\":\"{4}\"},\"Body\":{\"end_date\":\"{3}\",\"size\":1,\"begin_date\":\"{2}\",\"page\":\"{6}\",\"patient_no\":\"\",\"patient_name\":\"\",}}}";
  30. var token = JToken.Parse(jbody);
  31. var jtimestamp = token.SelectToken("Request.Head.Timestamp");
  32. jtimestamp.Replace(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  33. var jTranCode = token.SelectToken("Request.Head.TranCode");
  34. jTranCode.Replace("v_opd_diag_info");
  35. var jMessageId = token.SelectToken("Request.Head.MessageId");
  36. jMessageId.Replace(guid);
  37. var jend_date = token.SelectToken("Request.Body.end_date");
  38. jend_date.Replace(m.Parameter2);
  39. var jbegin_date = token.SelectToken("Request.Body.begin_date");
  40. jbegin_date.Replace(m.Parameter1);
  41. var jpage = token.SelectToken("Request.Body.page");
  42. jpage.Replace(m.Parameter3);
  43. var jsize = token.SelectToken("Request.Body.size");
  44. jsize.Replace(m.Reserve3);
  45. //读取配置的url
  46. var url = System.Configuration.ConfigurationManager.AppSettings["Post_url"];
  47. string responseMsg = string.Empty;
  48. responseMsg = server.Post(url, JsonConvert.SerializeObject(token));
  49. if (string.IsNullOrWhiteSpace(responseMsg))
  50. throw new Exception("无返回数据," + responseMsg);
  51. //解析body,
  52. var jRequestBody = JObject.Parse(responseMsg);
  53. var jRequest = jRequestBody["Response"];
  54. var jBody = jRequest["Body"];
  55. var jHead = jRequest["Head"];
  56. var head = JsonConvert.DeserializeObject<ResponseHead>(jHead.ToString());
  57. var jdata = jBody["data"];
  58. if (head.AckCode != "100")
  59. throw new Exception("返回错误:" + head.AckMessage);
  60. if ((string)jdata["total"] != "0")
  61. {
  62. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  63. {
  64. var isql = @"INSERT INTO TaskResponse(TaskID, TaskType, `Status`, Content, ErrNm, ResolvingMsg, ResolvingTime, RemarkContent)
  65. VALUES(@TaskID,@TaskType,1,@Content,0,null,null,@RemarkContent)";
  66. //住院就诊
  67. var cmd = ctx.DBGetSqlStringCommand(isql);
  68. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskID", DbType.AnsiString, m.TaskID);
  69. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, m.TaskType);
  70. MySqlDataAccess.AddInParameter(ctx, cmd, "Content", DbType.AnsiString, responseMsg);
  71. MySqlDataAccess.AddInParameter(ctx, cmd, "RemarkContent", DbType.AnsiString, JsonConvert.SerializeObject(token));
  72. MySqlDataAccess.ExecuteNonQuery(ctx, cmd);
  73. scope.Complete();
  74. }
  75. SetNextTask(m);
  76. }
  77. }
  78. }
  79. }