Browse Source

收费

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
f7bb78e68a
  1. 87
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs
  2. 3
      src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs
  3. 3
      src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs
  4. 9
      src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsDbBase.cs
  5. 5
      src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs
  6. 24
      src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs
  7. 3
      src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
  8. 2
      src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs
  9. 7
      test/Shentun.Peis.ColumnReference.Tests/appsettings.json

87
ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs

@ -187,53 +187,58 @@ namespace Shentun.Peis.PlugIns.Gem
foreach (var chargeRequest in chargeRequests)
{
var hisInput = new HisPayStatusInput()
SyncChargeRequestFlagFromInterfaceAsync(chargeRequest.ChargeRequestId);
}
return base.DoWork();
}
public override async Task SyncChargeRequestFlagFromInterfaceAsync(Guid chargeRequestId)
{
var chargeRequest = await GetChargeRequestAsync(chargeRequestId);
var hisInput = new HisPayStatusInput()
{
Data = new HisPayStatusDataInput()
{
Data = new HisPayStatusDataInput()
MsgHeader = new HisMsgHeaderInput()
{
MsgHeader = new HisMsgHeaderInput()
{
Sender = "PEIS",
MsgType = "SVR_ODS_6105",
MsgVersion = "3.1",
},
Item = new HisPayStatusDataItemInput()
{
Yjxh = chargeRequest.HisChargeNo,
ExamRequestNo = chargeRequest.ChargeRequestNo,
}
Sender = "PEIS",
MsgType = "SVR_ODS_6105",
MsgVersion = "3.1",
},
Item = new HisPayStatusDataItemInput()
{
Yjxh = chargeRequest.HisChargeNo,
ExamRequestNo = chargeRequest.ChargeRequestNo,
}
};
var result = PayStatus(hisInput).Result;
if (result.MsgHeader.Status != "true")
{
throw new Exception("查询支付状态失败" + result.MsgHeader.Detail);
}
//1:已支付,2.已作废3.已退费, 其他:未支付
char charRequstFlag;
if (result.MsgHeader.ErrCode == "1")
{
charRequstFlag = ChargeRequestFlag.AlreadyCharge;
SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag);
};
var result = PayStatus(hisInput).Result;
if (result.MsgHeader.Status != "true")
{
throw new Exception("查询支付状态失败" + result.MsgHeader.Detail);
}
//1:已支付,2.已作废3.已退费, 其他:未支付
char charRequstFlag;
if (result.MsgHeader.ErrCode == "1")
{
charRequstFlag = ChargeRequestFlag.AlreadyCharge;
SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag);
}
else if (result.MsgHeader.ErrCode == "2")
{
charRequstFlag = ChargeRequestFlag.AlreadyCancelCharge;
SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag);
}
else if (result.MsgHeader.ErrCode == "3")
{
charRequstFlag = ChargeRequestFlag.AlreadyRefund;
SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag);
}
else
{
throw new Exception("查询支付状态不支持的收费标志" + result.MsgHeader.ErrCode);
}
}
return base.DoWork();
else if (result.MsgHeader.ErrCode == "2")
{
charRequstFlag = ChargeRequestFlag.AlreadyCancelCharge;
SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag);
}
else if (result.MsgHeader.ErrCode == "3")
{
charRequstFlag = ChargeRequestFlag.AlreadyRefund;
SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag);
}
else
{
//throw new Exception("查询支付状态不支持的收费标志" + result.MsgHeader.ErrCode);
}
}
public override async Task<ChargeRequestPlugInsOut> RefundRequestAsync(ChargeRequestPlugInsInput input)
{

3
src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs

@ -182,7 +182,10 @@ where patient.id = patient_register.patient_id and
}
}
public virtual async Task SyncChargeRequestFlagFromInterfaceAsync(Guid chargeRequestId)
{
}
}
public class ChargeRequestPlugInsInput

3
src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs

@ -16,7 +16,8 @@ namespace Shentun.Peis.PlugIns
protected string AppLisPassword;
public LisResultImportPlugInsBase(string parmValue) : base(parmValue)
{
var itemColumnReferenceIdStr = InterfaceConfig.GetSection("Interface").GetSection("ItemColumnReferenceId").Value;
var itemColumnReferenceIdStr = InterfaceConfig.GetSection("Interface")
.GetSection("ItemColumnReferenceId").Value;
if (!string.IsNullOrWhiteSpace(itemColumnReferenceIdStr))
{
ItemColumnReferenceId = new Guid(itemColumnReferenceIdStr);

9
src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsDbBase.cs

@ -28,6 +28,10 @@ namespace Shentun.Peis.PlugIns
public override async Task<LisResultImportPlugInsOut> ImportResultAsync(LisResultImportPlugInsInput input)
{
if (ItemColumnReferenceId == null || ItemColumnReferenceId == Guid.Empty)
{
throw new Exception("没有设置项目编码对照");
}
var result = new LisResultImportPlugInsOut();
var lisRequests = await GetLisRequestForResultImportPlugInssAsync(input.PatientRegisterId);
using (DbConnection conn = CreateInterfaceDbConnect())
@ -53,13 +57,10 @@ namespace Shentun.Peis.PlugIns
continue;
}
if (!Guid.TryParse(columnReferenceCode.CodeValue, out var appItemId))
{
continue;
}
else
{
throw new Exception($"{lisResult.ItemName}对照的编码无效");
}
var createImportLisResultDto = new CreateImportLisResultDto()
{
LisRequestNo = lisResult.LisRequestNo,

5
src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs

@ -43,6 +43,11 @@ namespace Shentun.Peis.PlugIns
public async Task<List<ColumnReferenceCodeValue>> GetColumnReferenceCodeValuesAsync(Guid columnReferenceId,
string interfaceCodeValue)
{
if(string.IsNullOrWhiteSpace(interfaceCodeValue))
{
throw new Exception("第三方编码不能为空");
}
interfaceCodeValue = interfaceCodeValue.Trim();
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;

24
src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs

@ -91,9 +91,11 @@ namespace Shentun.Peis.ChargeRequests
if(item.registerCheckAsbitem.ChargeRequestId != null)
{
var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId);
if(haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest)
if(haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest ||
haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.CancelChargeRequest ||
haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.RefundRequest)
{
throw new UserFriendlyException($"{item.asbitem.DisplayName}已经申请,必须先撤销申请");
throw new UserFriendlyException($"{item.asbitem.DisplayName}已经处于收费、作废、退费申请状态");
}
}
item.registerCheckAsbitem.ChargeRequestId = chargeRequest.Id;
@ -139,7 +141,11 @@ namespace Shentun.Peis.ChargeRequests
{
throw new UserFriendlyException("input参数不能为空");
}
var chargeRequest = await _chargeRequestRepository.GetAsync(input.ChargeRequestId);
if (chargeRequest.ChargeRequestFlag != ChargeRequestFlag.ChargeRequest)
{
throw new UserFriendlyException("状态不是收费申请,不允许作废申请");
}
await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "CancelChargeRequestAsync");
ChargeRequestDto result = new ChargeRequestDto();
@ -160,8 +166,12 @@ namespace Shentun.Peis.ChargeRequests
throw new UserFriendlyException("input参数不能为空");
}
var chargeRequest = await _chargeRequestRepository.GetAsync(input.ChargeRequestId);
//if(chargeRequest.ChargeRequestFlag == ChargeRequestFlag.)
await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "RefundRequestAsync");
if (chargeRequest.ChargeRequestFlag != ChargeRequestFlag.ChargeRequest &&
chargeRequest.ChargeRequestFlag != ChargeRequestFlag.CancelChargeRequest)
{
throw new UserFriendlyException("状态不是收费申请和作废申请,不允许退费申请");
}
await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "RefundRequestAsync");
ChargeRequestDto result = new ChargeRequestDto();
@ -206,8 +216,8 @@ namespace Shentun.Peis.ChargeRequests
return result;
}
[HttpPost("api/app/ChargeRequest/GetChargeRequestAsbitemsByChargeQuestId")]
public async Task<List<ChargeRequestAsbitemDto>> GetChargeRequestAsbitemsByChargeQuestIdAsync(ChargeRequestIdInputDto input)
[HttpPost("api/app/ChargeRequest/GetChargeRequestAsbitemsByChargeRequestId")]
public async Task<List<ChargeRequestAsbitemDto>> GetChargeRequestAsbitemsByChargeRequestIdAsync(ChargeRequestIdInputDto input)
{
if (input == null)
{

3
src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs

@ -345,7 +345,8 @@ namespace Shentun.Peis.RegisterAsbitems
.Include(x => x.Asbitem.ItemType)
.Include(x => x.RegisterCheck)
.Where(m => m.PatientRegisterId == input.PatientRegisterId &&
m.IsCharge == 'N' && m.PayTypeFlag == PayTypeFlag.PersonPay).ToList().OrderByDescending(o => o.GroupPackageId).ThenBy(o => o.Asbitem.DisplayOrder);
m.IsCharge == 'N' && m.PayTypeFlag == PayTypeFlag.PersonPay)
.ToList().OrderByDescending(o => o.GroupPackageId).ThenBy(o => o.Asbitem.DisplayOrder);
var entdto = entlist.Select(s => new RegisterCheckAsbitemOrAsbitemDto

2
src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs

@ -16,6 +16,6 @@ namespace Shentun.Peis.Enums
public const string ChargeRequest = "02";
[Description("LIS结果导入")]
public const string ImportLisResult = "02";
public const string ImportLisResult = "03";
}
}

7
test/Shentun.Peis.ColumnReference.Tests/appsettings.json

@ -16,11 +16,12 @@
//"DbType": "SqlServer",
"DbType": "Oracle",
//"ConnectionStrings": "Server=.;Database=mypeis_wyy;User ID=sa;Password=shentun;Application Name=mypeis;Encrypt=False;TrustServerCertificate=True",
"ConnectionStrings": "User ID=TJ_LIS;Password=TJ_LIS;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.12.34)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = HIS56)))",
"ConnectionStrings": "User ID=TJ_LIS;Password=TJ_LIS;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.13.13)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = HISDB)))",
//"Sql": "select ZHID as Code ,ZHMC as DisplayName from PORTAL56_LIS.vi_tj_testitemgroup",
"Sql": "SELECT TMH AS LisRequestNo,TJBH AS PatientId,TESID as ItemId,XMMC as ItemName,XMJG as Result,UNIT as Unit,CKFW AS ReferenceRangeValue FROM PORTAL56_LIS.VI_TJ_RESULT",
"ColumnNames": "Code=编码,DisplayName=名称"
"Sql": "SELECT TMH AS LisRequestNo,TJBH AS PatientId,TESTID as ItemId,XMMC as ItemName,XMJG as Result ,UNIT as Unit ,CKFW AS FROM PORTAL56_LIS.VI_TJ_RESULT",
"ColumnNames": "Code=编码,DisplayName=名称",
"ItemColumnReferenceId": "3a125a29-ae4d-1ba8-db69-cffd0c629fc0"
},
"ConnectionStrings": {
//"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;",

Loading…
Cancel
Save