|
@@ -2,20 +2,18 @@
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text;
|
|
|
|
+using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
using System.Transactions;
|
|
using System.Transactions;
|
|
using System.Data;
|
|
using System.Data;
|
|
-using System.Data.Common;
|
|
|
|
using IL.Common;
|
|
using IL.Common;
|
|
|
|
|
|
namespace MediII.Adapter.BizComponent.ADT
|
|
namespace MediII.Adapter.BizComponent.ADT
|
|
{
|
|
{
|
|
- /// <summary>
|
|
|
|
- /// 住院就诊记录
|
|
|
|
- /// </summary>
|
|
|
|
public class ADT_A04_Handler : ADTHandler
|
|
public class ADT_A04_Handler : ADTHandler
|
|
{
|
|
{
|
|
public override void Handler(string m)
|
|
public override void Handler(string m)
|
|
{
|
|
{
|
|
|
|
+
|
|
//初始化
|
|
//初始化
|
|
var rtnMsg = string.Empty;
|
|
var rtnMsg = string.Empty;
|
|
var msgHead = string.Empty;
|
|
var msgHead = string.Empty;
|
|
@@ -28,79 +26,113 @@ namespace MediII.Adapter.BizComponent.ADT
|
|
var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
|
|
var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
|
|
//读取就诊流水号
|
|
//读取就诊流水号
|
|
string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
|
|
string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
|
|
- var tmp = xmlHelper.XpathRead(m, "//*[name()='effectiveTime']");
|
|
|
|
- var visitDate = tmp[0].LastChild.Attributes["value"].Value;
|
|
|
|
|
|
+ var tmp=xmlHelper.XpathRead(m,"//*[name()='effectiveTime']");
|
|
|
|
+ var visitDate=tmp[0].LastChild.Attributes["value"].Value;
|
|
DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
|
|
DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
|
|
|
|
|
|
- using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
|
|
|
|
|
|
+ if (GetScanTaskCount(visitNo, "ADT^A04[B01]") > 0)
|
|
|
|
+ {
|
|
|
|
+ return;//存在任务则无需增加
|
|
|
|
+ }
|
|
|
|
+ using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
|
|
{
|
|
{
|
|
|
|
+
|
|
var isql = @"INSERT INTO HL7_Platform.dbo.HL7_Scan (ID ,ChartNo,VisitNo,OtherNo1,OtherNo2,OtherNo3,OtherName , TaskType , TaskStatus , UpdateUser , UpdateTime,Reserve1) VALUES (@ID ,@ChartNo ,@VisitNo ,@OtherNo1 , @OtherNo2 ,@OtherNo3 ,@OtherName ,@TaskType ,@TaskStatus , @UpdateUser , GETDATE(),@Reserve1)";
|
|
var isql = @"INSERT INTO HL7_Platform.dbo.HL7_Scan (ID ,ChartNo,VisitNo,OtherNo1,OtherNo2,OtherNo3,OtherName , TaskType , TaskStatus , UpdateUser , UpdateTime,Reserve1) VALUES (@ID ,@ChartNo ,@VisitNo ,@OtherNo1 , @OtherNo2 ,@OtherNo3 ,@OtherName ,@TaskType ,@TaskStatus , @UpdateUser , GETDATE(),@Reserve1)";
|
|
- //住院就诊
|
|
|
|
- var cmd = ctx.DBGetSqlStringCommand(isql);
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "ID", DbType.AnsiString, Guid.NewGuid().ToString("N"));
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, visitNo);
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "VisitNo", DbType.AnsiString, visitNo);
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo1", DbType.AnsiString, date.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo2", DbType.AnsiString, "");
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo3", DbType.AnsiString, "");
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "OtherName", DbType.AnsiString, "住院就诊信息登记");
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, "ADT^A04[B01]");
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "TaskStatus", DbType.Int32, 1);
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "UpdateUser", DbType.AnsiString, "9999");
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "Reserve1", DbType.AnsiString, "");
|
|
|
|
- SqlDataAccess.ExecuteNonQuery(ctx, cmd);
|
|
|
|
|
|
+ //门诊处方单
|
|
|
|
+ if (GetScanTaskCount(visitNo, "ADT^A04[B01]") <= 0)
|
|
|
|
+ {
|
|
|
|
+ var dcmd = ctx.DBGetSqlStringCommand(isql);
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B01]");
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
|
|
|
|
+ ctx.DBAddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
|
|
|
|
+ ctx.DBExecuteNonQuery(dcmd);
|
|
|
|
+ }
|
|
|
|
|
|
- //ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
|
|
|
|
- //ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
|
|
|
|
- //ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
|
|
|
|
- //ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
- //ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
|
|
|
|
- //ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
|
|
|
|
- //ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
|
|
|
|
- //ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B01]");
|
|
|
|
- //ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
|
|
|
|
- //ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
|
|
|
|
- //ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
|
|
|
|
- //ctx.DBExecuteNonQuery(cmd);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- scope.Complete();
|
|
|
|
- }
|
|
|
|
|
|
+ if (GetScanTaskCount(visitNo, "ADT^A01[B02]")<= 0)
|
|
|
|
+ {
|
|
|
|
+ //门诊收费明细
|
|
|
|
+ var lcmd = ctx.DBGetSqlStringCommand(isql);
|
|
|
|
+ ctx.AddInParameter(lcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
|
|
|
|
+ ctx.AddInParameter(lcmd, "ChartNo", System.Data.DbType.String, visitNo);
|
|
|
|
+ ctx.AddInParameter(lcmd, "VisitNo", System.Data.DbType.String, visitNo);
|
|
|
|
+ ctx.AddInParameter(lcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
+ ctx.AddInParameter(lcmd, "OtherNo2", System.Data.DbType.String, "");
|
|
|
|
+ ctx.AddInParameter(lcmd, "OtherNo3", System.Data.DbType.String, "");
|
|
|
|
+ ctx.AddInParameter(lcmd, "OtherName", System.Data.DbType.String, "门诊收费明细");
|
|
|
|
+ ctx.AddInParameter(lcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B02]");
|
|
|
|
+ ctx.AddInParameter(lcmd, "TaskStatus", System.Data.DbType.Int32, 1);
|
|
|
|
+ ctx.AddInParameter(lcmd, "UpdateUser", System.Data.DbType.String, "9999");
|
|
|
|
+ ctx.AddInParameter(lcmd, "Reserve1", System.Data.DbType.String, "");
|
|
|
|
+ ctx.DBExecuteNonQuery(lcmd);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ if (GetScanTaskCount(visitNo, "ADT^A01[B03]") <= 0)
|
|
|
|
+ {
|
|
|
|
+ //门诊挂号
|
|
|
|
+ var gcmd = ctx.DBGetSqlStringCommand(isql);
|
|
|
|
+ ctx.AddInParameter(gcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
|
|
|
|
+ ctx.AddInParameter(gcmd, "ChartNo", System.Data.DbType.String, visitNo);
|
|
|
|
+ ctx.AddInParameter(gcmd, "VisitNo", System.Data.DbType.String, visitNo);
|
|
|
|
+ ctx.AddInParameter(gcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
+ ctx.AddInParameter(gcmd, "OtherNo2", System.Data.DbType.String, "");
|
|
|
|
+ ctx.AddInParameter(gcmd, "OtherNo3", System.Data.DbType.String, "");
|
|
|
|
+ ctx.AddInParameter(gcmd, "OtherName", System.Data.DbType.String, "门诊挂号明细");
|
|
|
|
+ ctx.AddInParameter(gcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B03]");
|
|
|
|
+ ctx.AddInParameter(gcmd, "TaskStatus", System.Data.DbType.Int32, 1);
|
|
|
|
+ ctx.AddInParameter(gcmd, "UpdateUser", System.Data.DbType.String, "9999");
|
|
|
|
+ ctx.AddInParameter(gcmd, "Reserve1", System.Data.DbType.String, "");
|
|
|
|
+ ctx.DBExecuteNonQuery(gcmd);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ scope.Complete();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
|
- /// 获取门诊就诊次数
|
|
|
|
- /// </summary>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- private int GetOutNumByChartNo(string chartNo)
|
|
|
|
- {
|
|
|
|
|
|
|
|
- string OutPatientSql = @"select count(1)
|
|
|
|
- from HealthCare.dbo.OutPatient a, HealthCare.dbo.VisitRecord b
|
|
|
|
- where a.VisitNo = b.VisitNo AND b.ChartNo= @ChartNo
|
|
|
|
- AND a.VisitStatus<>'D' ";
|
|
|
|
- var cmd = SqlDataAccess.GetSqlStringCommand(ctx, OutPatientSql);
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
|
|
|
|
- return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd))); //看诊次数
|
|
|
|
|
|
+ public string GetDiagNo(string icdCode)
|
|
|
|
+ {
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ var sql = string.Format("SELECT DiagNo FROM HealthCare.dbo.Diag WHERE IcdCode='{0}'", icdCode);
|
|
|
|
+ var obj = ctx.DBExecuteScalar(CommandType.Text, sql);
|
|
|
|
+ var val = StrHelepr.Obj2StrTrim(obj);
|
|
|
|
+ if (string.IsNullOrWhiteSpace(val))
|
|
|
|
+ {
|
|
|
|
+ val = icdCode;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ return val;
|
|
|
|
+ }
|
|
|
|
+ catch (Exception ex)
|
|
|
|
+ {
|
|
|
|
+ IL.Common.LogHelper.LogError(string.Format("获取DiagNo错误:{0} {1}\r\n{2}", icdCode, ex.Message, ex.StackTrace), LogCatagories.MQAccess);
|
|
|
|
+ return string.Empty;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
|
- /// 获取急诊就诊次数
|
|
|
|
- /// </summary>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- private int GetEmgNumByChartNo(string chartNo)
|
|
|
|
|
|
+ public string GetBedNo(Database ctx, string roombed)
|
|
{
|
|
{
|
|
- string EmgPatientSql = @"select count(1) from HealthCare.dbo.Emergency a, HealthCare.dbo.VisitRecord b
|
|
|
|
- where a.VisitNo = b.VisitNo
|
|
|
|
- AND b.ChartNo= @ChartNo AND a.VisitStatus<>'D' ";
|
|
|
|
- var cmd = SqlDataAccess.GetSqlStringCommand(ctx, EmgPatientSql);
|
|
|
|
- SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
|
|
|
|
- return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd))); //看诊次数
|
|
|
|
|
|
+ var sql = "SELECT Top 1 BedNo FROM HealthCare.dbo.Bed WHERE RoomBed=@RoomBed";
|
|
|
|
+ var cmd = ctx.DBGetSqlStringCommand(sql);
|
|
|
|
+ ctx.AddInParameter(cmd, "RoomBed", DbType.String, roombed);
|
|
|
|
+ var obj = StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd));
|
|
|
|
+ if (string.IsNullOrWhiteSpace(obj))
|
|
|
|
+ {
|
|
|
|
+ obj = roombed;
|
|
|
|
+ }
|
|
|
|
+ return obj;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|