ADT_A01B03_Handler.cs 4.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Practices.EnterpriseLibrary.Data;
  6. using System.Transactions;
  7. using System.Data;
  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. public class ADT_A01B03_Handler : ADTHandler
  15. {
  16. public override void Handler(TaskMessage m)
  17. {
  18. //初始化
  19. var rtnMsg = string.Empty;
  20. var msgHead = string.Empty;
  21. var msgBody = string.Empty;
  22. var resultCode = string.Empty;
  23. var result = string.Empty;
  24. string guid = MediII.Common.GUIDHelper.NewGUID();
  25. Restful server = new Restful();
  26. //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\":\"\",}}}";
  27. 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_charge_date\":\"{3}\",\"size\":1,\"begin_charge_date\":\"{2}\",\"page\":\"{6}\",\"inp_visit_id\":\"\",}}}";
  28. var token = JToken.Parse(jbody);
  29. var jtimestamp = token.SelectToken("Request.Head.Timestamp");
  30. jtimestamp.Replace(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  31. var jTranCode = token.SelectToken("Request.Head.TranCode");
  32. jTranCode.Replace("v_inp_charge_item_info");
  33. var jMessageId = token.SelectToken("Request.Head.MessageId");
  34. jMessageId.Replace(guid);
  35. var jend_date = token.SelectToken("Request.Body.end_charge_date");
  36. jend_date.Replace(m.Parameter2);
  37. var jbegin_date = token.SelectToken("Request.Body.begin_charge_date");
  38. jbegin_date.Replace(m.Parameter1);
  39. var jpage = token.SelectToken("Request.Body.page");
  40. jpage.Replace(m.Parameter3);
  41. var jsize = token.SelectToken("Request.Body.size");
  42. jsize.Replace(m.Reserve3);
  43. //读取配置的url
  44. var url = System.Configuration.ConfigurationManager.AppSettings["Post_url"];
  45. string responseMsg = string.Empty;
  46. LogHelper.LogInfo("send:" + JsonConvert.SerializeObject(token), LogCatagories.AdapterScan);
  47. responseMsg = server.Post(url, JsonConvert.SerializeObject(token));
  48. LogHelper.LogInfo("response:" + responseMsg, LogCatagories.AdapterScan);
  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" && (jdata["content"]).ToString().Length > 10)
  61. {
  62. //IL.Common.LogHelper.LogError("输出:" + (jdata["content"]).ToString(), LogCatagories.SQL);
  63. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  64. {
  65. var isql = @"INSERT INTO TaskResponse(TaskID, TaskType, `Status`, Content, ErrNm, ResolvingMsg, ResolvingTime, RemarkContent)
  66. VALUES(@TaskID,@TaskType,1,@Content,0,null,null,@RemarkContent)";
  67. //住院就诊
  68. var cmd = ctx.DBGetSqlStringCommand(isql);
  69. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskID", DbType.AnsiString, m.TaskID);
  70. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, m.TaskType);
  71. MySqlDataAccess.AddInParameter(ctx, cmd, "Content", DbType.AnsiString, responseMsg);
  72. MySqlDataAccess.AddInParameter(ctx, cmd, "RemarkContent", DbType.AnsiString, JsonConvert.SerializeObject(token));
  73. MySqlDataAccess.ExecuteNonQuery(ctx, cmd);
  74. scope.Complete();
  75. }
  76. SetNextTask(m);
  77. }
  78. }
  79. }
  80. }