ADT_A04B02_Handler.cs 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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_A04B02_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. 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}\",\"register_id\":\"\",}}}";
  31. var token = JToken.Parse(jbody);
  32. var jtimestamp = token.SelectToken("Request.Head.Timestamp");
  33. jtimestamp.Replace(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  34. var jTranCode = token.SelectToken("Request.Head.TranCode");
  35. jTranCode.Replace("v_opd_charge_info");
  36. var jMessageId = token.SelectToken("Request.Head.MessageId");
  37. jMessageId.Replace(guid);
  38. var jend_date = token.SelectToken("Request.Body.end_charge_date");
  39. jend_date.Replace(m.Parameter2);
  40. var jbegin_date = token.SelectToken("Request.Body.begin_charge_date");
  41. jbegin_date.Replace(m.Parameter1);
  42. var jpage = token.SelectToken("Request.Body.page");
  43. jpage.Replace(m.Parameter3);
  44. var jsize = token.SelectToken("Request.Body.size");
  45. jsize.Replace(m.Reserve3);
  46. //读取配置的url
  47. var url = System.Configuration.ConfigurationManager.AppSettings["Post_url"];
  48. string responseMsg = string.Empty;
  49. responseMsg = server.Post(url, JsonConvert.SerializeObject(token));
  50. if (string.IsNullOrWhiteSpace(responseMsg))
  51. throw new Exception("无返回数据," + responseMsg);
  52. //解析body,
  53. var jRequestBody = JObject.Parse(responseMsg);
  54. var jRequest = jRequestBody["Response"];
  55. var jBody = jRequest["Body"];
  56. var jHead = jRequest["Head"];
  57. var head = JsonConvert.DeserializeObject<ResponseHead>(jHead.ToString());
  58. var jdata = jBody["data"];
  59. if (head.AckCode != "100")
  60. throw new Exception("返回错误:" + head.AckMessage);
  61. if ((string)jdata["total"] != "0" && (jdata["content"]).ToString().Length > 10)
  62. {
  63. //IL.Common.LogHelper.LogError("输出:" + (jdata["content"]).ToString(), LogCatagories.SQL);
  64. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  65. {
  66. var isql = @"INSERT INTO TaskResponse(TaskID, TaskType, `Status`, Content, ErrNm, ResolvingMsg, ResolvingTime, RemarkContent)
  67. VALUES(@TaskID,@TaskType,1,@Content,0,null,null,@RemarkContent)";
  68. //住院就诊
  69. var cmd = ctx.DBGetSqlStringCommand(isql);
  70. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskID", DbType.AnsiString, m.TaskID);
  71. MySqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, m.TaskType);
  72. MySqlDataAccess.AddInParameter(ctx, cmd, "Content", DbType.AnsiString, responseMsg);
  73. MySqlDataAccess.AddInParameter(ctx, cmd, "RemarkContent", DbType.AnsiString, JsonConvert.SerializeObject(token));
  74. MySqlDataAccess.ExecuteNonQuery(ctx, cmd);
  75. scope.Complete();
  76. }
  77. SetNextTask(m);
  78. }
  79. }
  80. }
  81. }