123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- using System;
- using System.Data;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- //using MediII.Adapter.BaseBiz;
- using System.Data.Common;
- using System.Transactions;
- using Microsoft.Practices.EnterpriseLibrary.Data;
- //using MediII.Adapter.Model.UE;
- using System.Globalization;
- using MediII.Adapter.BizComponent.Base;
- using IL.Common;
- using System.Xml;
- namespace MediII.Adapter.BizComponent.DFT
- {
- public class BizComponent_DFT : BaseBizComponent, IBizComponent
- {
- const string Insert = "B01"; //增加个人纪录
- //const string Update = "B02"; //更新个人记录
- //const string Delete = "B03"; //删除个人记录
- //数据库连接
- protected Database ctx;
- protected Database Scanctx;
- public BizComponent_DFT()
- {
- DatabaseProviderFactory factory = new DatabaseProviderFactory();
- ctx = factory.Create("HealthCare");
- Scanctx = factory.CreateDefault();
- }
- ////HealthCareContainer HealthCareContainer = new HealthCareContainer();
- //private Database ctx = null;
- //public BizComponent_PMU(Database dbCtx)
- //{
- // ctx = dbCtx;
- //}
- public override string DoProcess(string m, string msgType, string ID)
- {
- string strMsgType = null;
- var resultCode = string.Empty;
- var result = string.Empty;
- //try
- //{
- //try
- // {
- //取得消息类型 MAD新增 MUP更新 MDL删除 "MDC"作废 "MAC"恢复
- OperateXmlUtil helper = new OperateXmlUtil();
- WebService server = new WebService();
- string orgCode = System.Configuration.ConfigurationManager.AppSettings["orgCode"];
- var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
-
- var startTime="";
- var endTime = DateTime.Now.ToString("yyyy-MM-dd");
- var pageIndex="0";
- var pageSize = System.Configuration.ConfigurationManager.AppSettings["pageSize"];
- GetStartTime(ID,out startTime,out pageIndex);
- string msgBody = helper.GetMsgBody(orgCode, "startTime", startTime, "endTime", endTime, pageIndex, pageSize);
- string msgHead = helper.GetMsgHead("getChargeitem", cert);
- string rtnMsg = server.TestInterface(msgHead, msgHead);
- //存储访问记录
- MessageHelper.SaveSendMsg(Scanctx, ID, "DFT^B01[B01]", msgHead, msgBody, rtnMsg);
- //消息判断是否成功
- if (!helper.isSuccess(rtnMsg, ref resultCode, ref result))
- {
- throw new Exception(result);
- }
- XmlNodeList root = helper.XpathRead(rtnMsg, "//returnContents//returnContent");
- if (root.Count <= 0)
- return string.Empty;
- using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
- {
- var usql = @"update item_his_original set yn_code=@yn_code,item_name=@item_name,fee_code=@fee_code,fee_name=@fee_code,spell_code=@spell_code,price=@price,status=@status,status_date=@status_date where item_code=@item_code";
- var sql = @"insert into item_his_original(item_code,yn_code,item_name,fee_code,fee_name,spell_code,price,status,status_date) Values(@item_code,@yn_code,@item_name,@fee_code,@fee_name,@spell_code,@price,@status,@status_date);";
- foreach (XmlElement xe in root)
- {
- var iSet = GetDOCT(xe.SelectSingleNode("item_code").InnerText);
- if (iSet <= 0)
- {
- var cmd = SqlDataAccess.GetSqlStringCommand(ctx, sql);
- ctx.AddInParameter(cmd, "item_code", System.Data.DbType.String, xe.SelectSingleNode("ITEM_CODE").InnerText);
- ctx.AddInParameter(cmd, "yn_code", System.Data.DbType.String, xe.SelectSingleNode("YN_CODE").InnerText);
- ctx.AddInParameter(cmd, "item_name", System.Data.DbType.String, xe.SelectSingleNode("ITEM_NAME").InnerText);
- ctx.AddInParameter(cmd, "fee_code", System.Data.DbType.String, xe.SelectSingleNode("FEE_CODE").InnerText);
- ctx.AddInParameter(cmd, "fee_name", System.Data.DbType.String, xe.SelectSingleNode("FEE_NAME").InnerText);
- ctx.AddInParameter(cmd, "spell_code", System.Data.DbType.String, xe.SelectSingleNode("SPELL_CODE").InnerText);
- decimal price = 0;
- try
- {
- decimal.TryParse(xe.SelectSingleNode("PRICE").InnerText, out price);
- this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, price);
- }
- catch
- {
- this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, 0);
- }
- //ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, xe.SelectSingleNode("PRICE").InnerText);
- ctx.AddInParameter(cmd, "status", System.Data.DbType.String, xe.SelectSingleNode("STATUS").InnerText);
- var date = xe.SelectSingleNode("STATUS_DATE").InnerText;
- DateTime time = DateTime.Now;
- if (!string.IsNullOrWhiteSpace(date))
- {
- if (!DateTime.TryParse(date, out time))
- {
- time = DateTime.Now;
- }
- }
- ctx.AddInParameter(cmd, "status_date", System.Data.DbType.DateTime, time);
- SqlDataAccess.DBExecuteNonQuery(ctx, cmd);
- }
- else
- {
- var cmd = SqlDataAccess.GetSqlStringCommand(ctx, usql);
- ctx.AddInParameter(cmd, "item_code", System.Data.DbType.String, xe.SelectSingleNode("ITEM_CODE").InnerText);
- ctx.AddInParameter(cmd, "yn_code", System.Data.DbType.String, xe.SelectSingleNode("YN_CODE").InnerText);
- ctx.AddInParameter(cmd, "item_name", System.Data.DbType.String, xe.SelectSingleNode("ITEM_NAME").InnerText);
- ctx.AddInParameter(cmd, "fee_code", System.Data.DbType.String, xe.SelectSingleNode("FEE_CODE").InnerText);
- ctx.AddInParameter(cmd, "fee_name", System.Data.DbType.String, xe.SelectSingleNode("FEE_NAME").InnerText);
- ctx.AddInParameter(cmd, "spell_code", System.Data.DbType.String, xe.SelectSingleNode("SPELL_CODE").InnerText);
- decimal price = 0;
- try
- {
- decimal.TryParse(xe.SelectSingleNode("PRICE").InnerText, out price);
- this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, price);
- }
- catch
- {
- this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, 0);
- }
- //ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, xe.SelectSingleNode("price").InnerText);
- ctx.AddInParameter(cmd, "status", System.Data.DbType.String, xe.SelectSingleNode("STATUS").InnerText);
- var date = xe.SelectSingleNode("STATUS_DATE").InnerText;
- DateTime time = DateTime.Now;
- if (!string.IsNullOrWhiteSpace(date))
- {
- if (!DateTime.TryParse(date, out time))
- {
- time = DateTime.Now;
- }
- }
- ctx.AddInParameter(cmd, "status_date", System.Data.DbType.DateTime, time);
- SqlDataAccess.DBExecuteNonQuery(ctx, cmd);
- }
- }
- scope.Complete();
- }
- using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
- {
- var ScanSql = @"update HL7_Scan set OtherNo2=@OtherNo2 where ID=@ID";
- var ucmd = SqlDataAccess.GetSqlStringCommand(Scanctx, ScanSql);
- Scanctx.AddInParameter(ucmd, "ID", System.Data.DbType.String, ID);
- Scanctx.AddInParameter(ucmd, "OtherNo2", System.Data.DbType.String, pageIndex);
- SqlDataAccess.DBExecuteNonQuery(Scanctx, ucmd);
- transactionScope.Complete();
-
- }
- return string.Empty;
- }
- public void AddData(string message, string id)
- {
- #region 新增
- string sql = @"INSERT INTO dbo.his_doct
- ( DOCT_CODE ,
- DOCT_NAME ,
- HIS_DEPT_CODE ,
- HIS_DEPT_NAME ,
- status
- )
- VALUES ( @DOCT_CODE,
- @DOCT_NAME ,
- @HIS_DEPT_CODE ,
- @HIS_DEPT_NAME ,
- @status)";
- DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
- SetEntity(message, command, id);
- SqlDataAccess.ExecuteNonQuery(ctx, command);
- #endregion
- }
- public void UpDateData(string message, string id)
- {
- #region 修改
- string sql1 = @"update dbo.his_doct set
- DOCT_NAME =@DOCT_NAME,
- HIS_DEPT_CODE =@HIS_DEPT_CODE,
- HIS_DEPT_NAME =@HIS_DEPT_NAME,
- status=@status
- where DOCT_CODE=@DOCT_CODE";
- DbCommand command1 = ctx.GetSqlStringCommand(sql1.ToString());
- SetEntity(message, command1, id);
- SqlDataAccess.ExecuteNonQuery(ctx, command1);
- #endregion
- }
- public void SetEntity(string message, DbCommand command, string id)
- {
- string value = string.Empty;
- OperateXmlUtil xmlHelper = new OperateXmlUtil();
- ctx.AddInParameter(command, "DOCT_CODE", System.Data.DbType.String, id);
- var valueNode = xmlHelper.XpathRead(message, "//*[name()='healthCarePrincipalPerson']").Item(0);
- foreach (XmlNode xe in valueNode.ChildNodes)
- {
- if (xe.Name == "name")
- {
- value = xe.LastChild.LastChild.Attributes["value"].Value;
- ctx.AddInParameter(command, "DOCT_NAME", System.Data.DbType.String, value);
- break;
- }
- }
- value = xmlHelper.XpathRead(message, "//*[@root='2.16.156.10011.1.26']", "extension");
- ctx.AddInParameter(command, "HIS_DEPT_CODE", System.Data.DbType.AnsiString, value);
- valueNode = xmlHelper.XpathRead(message, "//*[name()='affiliatedPrincipalOrganization']").Item(0);
- foreach (XmlNode xe in valueNode.ChildNodes)
- {
- if (xe.Name == "name")
- {
- value = xe.LastChild.LastChild.Attributes["value"].Value;
- ctx.AddInParameter(command, "HIS_DEPT_NAME", System.Data.DbType.String, value);
- break;
- }
- }
- ctx.AddInParameter(command, "status", System.Data.DbType.String, "在用");
- //ctx.ExecuteNonQuery(command);
- }
- public int GetDOCT(string DOCT_Code)
- {
- var sql = "SELECT count(1) FROM dbo.item_his_original WITH(NOLOCK) WHERE item_code=@item_code";
- var cmd = ctx.DBGetSqlStringCommand(sql);
- ctx.AddInParameter(cmd, "item_code", DbType.String, DOCT_Code);
- var obj = int.Parse(StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd)));
- return obj;
- }
- public void GetStartTime(string ID, out string startTime, out string pageIndex)
- {
- string text = "SELECT OtherNo1,OtherNo2 FROM dbo.HL7_Scan WITH(NOLOCK) where ID=@ID";
- System.Data.Common.DbCommand dbCommand = SqlDataAccess.DBGetSqlStringCommand(this.Scanctx, text);
- this.Scanctx.AddInParameter(dbCommand, "ID", System.Data.DbType.String, ID);
- System.Data.DataSet dataSet = this.Scanctx.ExecuteDataSet(dbCommand);
- startTime = dataSet.Tables[0].Rows[0][0].ToString();
- pageIndex = (int.Parse(dataSet.Tables[0].Rows[0][1].ToString()) + 1).ToString();
- }
- }
- }
|