Browse Source

收费

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
684031914e
  1. 173
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs
  2. 6
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/LisRequestPlugInsGem.cs
  3. 6
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisterPluginsGemHis.cs
  4. 2
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/LisRequestPlugInsGemTest.cs
  5. 16
      src/Shentun.ColumnReferencePlugIns/ChargeRequestAsbitemForPlugIns.cs
  6. 31
      src/Shentun.ColumnReferencePlugIns/ChargeRequestForPlugIns.cs
  7. 97
      src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs
  8. 7
      src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs
  9. 12
      src/Shentun.ColumnReferencePlugIns/LisRequestPlugInsBase.cs
  10. 9
      src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs
  11. 2
      src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs
  12. 26
      src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs
  13. 4
      src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
  14. 14
      src/Shentun.Peis.Domain/ChargeRequestAsbitems/ChargeRequestAsbitemManager.cs
  15. 59
      src/Shentun.Peis.Domain/ChargeRequests/ChargeRequestManager.cs
  16. 10
      src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
  17. 6
      test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs

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

@ -0,0 +1,173 @@
using Dapper;
using Npgsql;
using ServiceReferenceHzcyHis;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using static ServiceReferenceHzcyHis.bstjPortTypeClient;
namespace Shentun.Peis.PlugIns.Gem
{
public class ChargeRequestPlugInsGem : ChargeRequestPlugInsBase
{
private string _endpointAddress = "";
public ChargeRequestPlugInsGem(string parmValue) : base(parmValue)
{
_endpointAddress = InterfaceConfig.GetSection("Interface").GetSection("EndpointAddress").Value;
}
public override async Task<ChargeRequestPlugInsOut> SendRequest(ChargeRequestPlugInsInput input)
{
//建立人员档案
var patientRegisterForPlugIns = await GetPatientRegisterForPlugInsAsync(input.ChargeRequestId);
var chargeRequestForPlugIns = await GeChargeRequestForPlugInsAsync(input.ChargeRequestId);
if(chargeRequestForPlugIns == null)
{
throw new Exception("没有申请单信息");
}
if (!chargeRequestForPlugIns.Asbitems.Any())
{
throw new Exception("申请单没有组合项目信息");
}
if (patientRegisterForPlugIns.BirthDate == null)
{
throw new Exception("出生日期不能为空");
}
var hisPatientQueryInput = new HisPatientQueryInput()
{
Data = new HisPatientQueryDataInput()
{
MsgHeader = new HisMsgHeaderInput()
{
Sender = "PEIS",
MsgType = "SVR_ODS_1101",
MsgVersion = "3.1",
},
Patient = new HisPatientQueryPatientInput()
{
IdCard = patientRegisterForPlugIns.IdNo,
IdCardCode = "01",
Name = patientRegisterForPlugIns.PatientName,
Sex = "1",
BirthDate = ((DateTime)patientRegisterForPlugIns.BirthDate).ToString("yyyy-MM-dd", System.Globalization.DateTimeFormatInfo.InvariantInfo),
PatientPhone = patientRegisterForPlugIns.MobileTelephone,
EthnicGroupCode = "01",
WorkUnit = patientRegisterForPlugIns.CustomerOrgName,
Address = patientRegisterForPlugIns.Address,
}
}
};
var result = await PatientQuery(hisPatientQueryInput);
if (result.MsgHeader.Status != "true")
{
throw new Exception("建立HIS档案失败"+ result.MsgHeader.Detail);
}
//更新人员登记信息
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
conn.Execute(@"update patient_register set his_patient_id = @HisPatientId
where id = @PatientRegisterId",
new { HisPatientId = result.Patient.PatientId,
PatientRegisterId = patientRegisterForPlugIns.PatientRegisterId
});
}
//发送项目
var hisInput = new HisMecSaveInput()
{
Data = new HisMecSaveDataInput()
{
MsgHeader = new HisMsgHeaderInput()
{
Sender = "PEIS",
MsgType = "SVR_ODS_6101",
MsgVersion = "3.1",
},
Items = new List<HisMecSaveDataItemInput>()
{
new HisMecSaveDataItemInput()
{
ExamRequestNo =chargeRequestForPlugIns.ChargeRequestNo,
FeeType = "1",
EmpId = result.Patient.PatientId,
DeptId = "",
DoctId = "",
ExeDeptId = "",
Tjunit = patientRegisterForPlugIns.CustomerOrgName,
Tjfee = chargeRequestForPlugIns.Asbitems.Sum(o=>o.Charges).ToString(),
Ztxm = "",
Remark = "体检科"
},
}
}
};
var mecSaveResult = await MecSave(hisInput);
if (mecSaveResult.MsgHeader.Status != "true")
{
throw new Exception("建立HIS档案失败" + mecSaveResult.MsgHeader.Detail);
}
//更新申请单信息
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
conn.Execute(@"update charge_request set his_charge_no = @HisChargeNo
where id = @ChargeRequestId",
new
{
HisChargeNo = mecSaveResult.MsgHeader.Yjxh,
ChargeRequestId = input.ChargeRequestId
});
}
return new ChargeRequestPlugInsOut();
}
public async Task<HisPatientQueryOut> PatientQuery(HisPatientQueryInput input)
{
using (var client = CreateClient())
{
input.SeviceBaseArg.Service = "patientQuery";
var data = XmlHelper.SerializeToXml(input.Data);
var resultStr = (await client.invokeAsync(input.SeviceBaseArg.Service,
input.SeviceBaseArg.Urid,
input.SeviceBaseArg.Pwd,
data)).@return;
var result = XmlHelper.DeserializeXml<HisPatientQueryOut>(resultStr);
return result;
}
}
public async Task<HisMecSaveOut> MecSave(HisMecSaveInput input)
{
using (var client = CreateClient())
{
input.SeviceBaseArg.Service = "mecSave";
var data = XmlHelper.SerializeToXml(input.Data);
var resultStr = (await client.invokeAsync(input.SeviceBaseArg.Service,
input.SeviceBaseArg.Urid,
input.SeviceBaseArg.Pwd,
data)).@return;
var result = XmlHelper.DeserializeXml<HisMecSaveOut>(resultStr);
return result;
}
}
private bstjPortTypeClient CreateClient()
{
return new bstjPortTypeClient(EndpointConfiguration.bstjHttpSoap11Endpoint,
_endpointAddress);
}
}
}

6
ThirdPlugIns/Shentun.Peis.PlugIns.Gem/LisRequestPlugInsGem.cs

@ -16,7 +16,7 @@ namespace Shentun.Peis.PlugIns.Gem
{
}
public override async Task<LisRequestPluginsOut> SendRequest(LisRequestPluginsInput input)
public override async Task<LisRequestPlugInsOut> SendRequest(LisRequestPlugInsInput input)
{
var patientRegisterForPlugIns = await GetPatientRegisterForPlugInsAsync(input.LisRequestId);
var lisRequestForPlugIns = await GetLisRequestForPlugInsAsync(input.LisRequestId);
@ -54,7 +54,7 @@ namespace Shentun.Peis.PlugIns.Gem
}
}
using (DbConnection conn = new NpgsqlConnection(ConnctionStr))
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
conn.Execute("delete from third_lis_request where lis_request_id = @LisRequestId",
new { LisRequestId = input.LisRequestId });
@ -101,7 +101,7 @@ namespace Shentun.Peis.PlugIns.Gem
conn.Execute(sql, thirdLisRequestEntity);
}
return new LisRequestPluginsOut();
return new LisRequestPlugInsOut();
}
}

6
ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisterPluginsGemHis.cs

@ -16,10 +16,8 @@ namespace Shentun.Peis.PlugIns.Gem
public PatientRegisterPluginsGemHis(string parmValue) : base(parmValue)
{
var configurationBuilder = new ConfigurationBuilder()
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
var interfaceConfig = configurationBuilder.Build();
_endpointAddress = interfaceConfig.GetSection("Interface").GetSection("EndpointAddress").Value;
_endpointAddress = InterfaceConfig.GetSection("Interface").GetSection("EndpointAddress").Value;
}
public async Task<HisPatientQueryOut> PatientQuery(HisPatientQueryInput input)

2
ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/LisRequestPlugInsGemTest.cs

@ -20,7 +20,7 @@ namespace Shentun.Peis.PlugIns.Gem.Test
public async Task SendRequest()
{
var lisRequestPlugInsGem = new LisRequestPlugInsGem(GetConfigParm());
await lisRequestPlugInsGem.SendRequest(new LisRequestPluginsInput()
await lisRequestPlugInsGem.SendRequest(new LisRequestPlugInsInput()
{
LisRequestId = new Guid("3a123266-4581-83c4-9099-1f24cd0f3a49")
});

16
src/Shentun.ColumnReferencePlugIns/ChargeRequestAsbitemForPlugIns.cs

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.PlugIns
{
public class ChargeRequestAsbitemForPlugIns
{
public Guid AsbitemId { get; set; }
public string AsbitemName { get; set; } = string.Empty;
public string ThirdAsbitemCode { get; set; } = string.Empty;
public decimal Charges { get; set; }
}
}

31
src/Shentun.ColumnReferencePlugIns/ChargeRequestForPlugIns.cs

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.PlugIns
{
public class ChargeRequestForPlugIns
{
/// <summary>
/// 收费申请单号
/// </summary>
public string ChargeRequestNo { get; set; }
/// <summary>
/// HIS收费单号
/// </summary>
public string HisChargeNo { get; set; }
/// <summary>
/// 0、申请 1-收费,2-退费
/// </summary>
public char ChargeRequestFlag { get; set; }
public List<ChargeRequestAsbitemForPlugIns> Asbitems = new List<ChargeRequestAsbitemForPlugIns> ();
}
}

97
src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs

@ -1,5 +1,8 @@
using System;
using Dapper;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -12,20 +15,104 @@ namespace Shentun.Peis.PlugIns
{
}
public virtual async Task<ChargeRequestPluginsOut> Send(ChargeRequestPluginsInput input)
public virtual async Task<ChargeRequestPlugInsOut> SendRequest(ChargeRequestPlugInsInput input)
{
var result = new ChargeRequestPluginsOut();
var result = new ChargeRequestPlugInsOut();
return result;
}
public virtual async Task<ChargeRequestPlugInsOut> CancelRequest(ChargeRequestPlugInsInput input)
{
var result = new ChargeRequestPlugInsOut();
return result;
}
public virtual async Task<ChargeRequestPlugInsOut> Refund(ChargeRequestPlugInsInput input)
{
var result = new ChargeRequestPlugInsOut();
return result;
}
public async Task<PatientRegisterForPlugIns> GetPatientRegisterForPlugInsAsync(Guid chargeRequestId)
{
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;
sql = @"SELECT DISTINCT patient.id as patient_id,
patient_register.id as patient_register_id,
patient_register.patient_register_no,
patient.patient_no ,
patient_register.his_patient_id,
patient_register.medical_center_id,
patient_register.patient_name,
patient_register.sex_id,
patient_register.marital_status_id,
patient_register.birth_date,
patient_register.age,
patient.nation_id,
patient.id_no,
patient.email,
patient.telephone,
patient.mobile_telephone,
patient.address
from patient,patient_register,charge_request
where patient.id = patient_register.patient_id and
patient_register.id = charge_request.patient_register_id and
charge_request.id =@ChargeRequestId
";
var patientRegisterForPlugIns = (await conn.QueryAsync<PatientRegisterForPlugIns>(sql,
new { ChargeRequestId = chargeRequestId })).SingleOrDefault();
return patientRegisterForPlugIns;
}
}
public async Task<ChargeRequestForPlugIns> GeChargeRequestForPlugInsAsync(Guid chargeRequestId)
{
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;
sql = @"SELECT charge_request_no,
his_charge_no,
charge_request_flag
FROM charge_request
WHERE id =@ChargeRequestId
";
var chargeRequestForPlugIns = (await conn.QueryAsync<ChargeRequestForPlugIns>(sql,
new { ChargeRequestId = chargeRequestId })).SingleOrDefault();
if (chargeRequestForPlugIns == null)
{
return null;
}
sql = @"
SELECT register_check_asbitem.asbitem_id,
asbitem.display_name as asbitem_name,
register_check_asbitem.amount * register_check_asbitem.charge_price as charges
from register_check
JOIN register_check_asbitem on register_check.id = register_check_asbitem.register_check_id
JOIN charge_request on register_check_asbitem.charge_request_id = charge_request.id
JOIN asbitem on register_check_asbitem.asbitem_id = asbitem.id
where
charge_request.id=@ChargeRequestId
";
chargeRequestForPlugIns.Asbitems = (await conn.QueryAsync<ChargeRequestAsbitemForPlugIns>(sql,
new { ChargeRequestId = chargeRequestId })).ToList();
return chargeRequestForPlugIns;
}
}
}
public class ChargeRequestPluginsInput
public class ChargeRequestPlugInsInput
{
public Guid ChargeRequestId { get; set; }
}
//public class ChargeRequestAsbitemPlugInsInput
//{
public class ChargeRequestPluginsOut
//}
public class ChargeRequestPlugInsOut
{
public string? ThirdChargeRequestId { get; set; }
}

7
src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs

@ -15,7 +15,7 @@ namespace Shentun.Peis.PlugIns
public class ColumnReferencePlugInsBase : PlugInsBase,IColumnReferencePlugIns
{
protected IConfiguration InterfaceConfig;
protected string AppSql;
private List<ColumnReferenceColumn> _columns;
private List<ColumnReferenceColumn> _interfaceColumns;
@ -23,9 +23,6 @@ namespace Shentun.Peis.PlugIns
public ColumnReferencePlugInsBase(string parmValue):base(parmValue)
{
var configurationBuilder = new ConfigurationBuilder()
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
InterfaceConfig = configurationBuilder.Build();
AppSql = InterfaceConfig.GetSection("App").GetSection("Sql").Value;
var columns = InterfaceConfig.GetSection("App").GetSection("Columns").Value;
string[]? columnArry;
@ -116,7 +113,7 @@ namespace Shentun.Peis.PlugIns
}
public virtual async Task<List<ColumnReferenceCodeValue>> GetAppCodeValuesAsync()
{
using (DbConnection conn = new NpgsqlConnection(ConnctionStr))
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
var list = (await conn.QueryAsync<ColumnReferenceCodeValue>(AppSql)).ToList();
return list;

12
src/Shentun.ColumnReferencePlugIns/LisRequestPlugInsBase.cs

@ -36,15 +36,15 @@ namespace Shentun.Peis.PlugIns
}
public virtual async Task<LisRequestPluginsOut> SendRequest(LisRequestPluginsInput input)
public virtual async Task<LisRequestPlugInsOut> SendRequest(LisRequestPlugInsInput input)
{
var result = new LisRequestPluginsOut();
var result = new LisRequestPlugInsOut();
return result;
}
public async Task<PatientRegisterForPlugIns> GetPatientRegisterForPlugInsAsync(Guid lisRequestId)
{
using (DbConnection conn = new NpgsqlConnection(ConnctionStr))
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;
sql = @"SELECT DISTINCT patient.id as patient_id,
@ -80,7 +80,7 @@ where patient.id = patient_register.patient_id and
public async Task<LisRequestForPlugIns> GetLisRequestForPlugInsAsync(Guid lisRequestId)
{
using (DbConnection conn = new NpgsqlConnection(ConnctionStr))
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;
sql = @"SELECT DISTINCT lis_request.id as lis_request_id,
@ -133,14 +133,14 @@ where patient.id = patient_register.patient_id and
}
}
public class LisRequestPluginsInput
public class LisRequestPlugInsInput
{
public Guid LisRequestId { get; set; }
}
public class LisRequestPluginsOut
public class LisRequestPlugInsOut
{
public string? ThirdLisRequestId { get; set; }
}

9
src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs

@ -11,7 +11,8 @@ namespace Shentun.Peis.PlugIns
public class PlugInsBase
{
protected IConfiguration AppConfig;
protected string? ConnctionStr;
protected IConfiguration InterfaceConfig;
protected string? AppConnctionStr;
static PlugInsBase()
{
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
@ -22,9 +23,13 @@ namespace Shentun.Peis.PlugIns
.SetBasePath(DirectoryHelper.GetAppDirectory()) // 设置基础路径为当前目录
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();
ConnctionStr = AppConfig.GetSection("ConnectionStrings")
AppConnctionStr = AppConfig.GetSection("ConnectionStrings")
.GetSection("Default").Value;
var configurationBuilder = new ConfigurationBuilder()
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
InterfaceConfig = configurationBuilder.Build();
}
}
}

2
src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs

@ -22,7 +22,7 @@ namespace Shentun.Peis.PlugIns
public async Task<List<ColumnReferenceInterfaceCodeValue>> GetColumnReferenceInterfaceCodeValues(Guid columnReferenceId,
string appCodeValue)
{
using (DbConnection conn = new NpgsqlConnection(ConnctionStr))
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;
sql = @"

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

@ -1,5 +1,8 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Org.BouncyCastle.Asn1.Ocsp;
using Shentun.Peis.ChargeRequestAsbitems;
using Shentun.Peis.LisRequests;
using Shentun.Peis.Models;
using System;
using System.Collections.Generic;
@ -9,9 +12,12 @@ using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
namespace Shentun.Peis.ChargeRequests
{
[ApiExplorerSettings(GroupName = "Work")]
[Authorize]
public class ChargeRequestAppService: ApplicationService
{
private readonly IRepository<ChargeRequest, Guid> _chargeRequestRepository;
@ -21,6 +27,7 @@ namespace Shentun.Peis.ChargeRequests
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly ChargeRequestManager _chargeRequestManager;
private readonly ChargeRequestAsbitemManager _chargeRequestAsbitemManager;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public ChargeRequestAppService(
IRepository<ChargeRequest, Guid> chargeRequestRepository,
IRepository<ChargeRequestAsbitem, Guid> chargeRequestAsbitemRepository,
@ -28,7 +35,9 @@ namespace Shentun.Peis.ChargeRequests
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
ChargeRequestManager chargeRequestManager,
ChargeRequestAsbitemManager chargeRequestAsbitemManager)
ChargeRequestAsbitemManager chargeRequestAsbitemManager,
IUnitOfWorkManager unitOfWorkManager
)
{
_chargeRequestRepository = chargeRequestRepository;
_chargeRequestAsbitemRepository = chargeRequestAsbitemRepository;
@ -37,6 +46,7 @@ namespace Shentun.Peis.ChargeRequests
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_chargeRequestManager = chargeRequestManager;
_chargeRequestAsbitemManager = chargeRequestAsbitemManager;
_unitOfWorkManager = unitOfWorkManager;
}
/// <summary>
///
@ -71,10 +81,10 @@ namespace Shentun.Peis.ChargeRequests
foreach (var item in list)
{
item.registerCheckAsbitem.ChargeRequestId = chargeRequest.Id;
await _registerCheckAsbitemRepository.UpdateAsync(item.registerCheckAsbitem);
await _registerCheckAsbitemRepository.UpdateAsync(item.registerCheckAsbitem,true);
}
//插入申请单信息
chargeRequest = await _chargeRequestRepository.InsertAsync(chargeRequest);
chargeRequest = await _chargeRequestRepository.InsertAsync(chargeRequest,true);
foreach (var item in list)
{
var chargeRequestAsbitemSource = new ChargeRequestAsbitem()
@ -87,8 +97,14 @@ namespace Shentun.Peis.ChargeRequests
IsCharge = 'N'
};
var chargeRequestAsbitem = await _chargeRequestAsbitemManager.CreateAsync(chargeRequestAsbitemSource);
await _chargeRequestAsbitemRepository.InsertAsync(chargeRequestAsbitem);
await _chargeRequestAsbitemRepository.InsertAsync(chargeRequestAsbitem,true);
}
//await _unitOfWorkManager.Current.SaveChangesAsync();
await _unitOfWorkManager.Current.CompleteAsync();
//await UnitOfWorkManager.Current.SaveChangesAsync();
//await UnitOfWorkManager.Current.CompleteAsync();
await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id);
ChargeRequestDto result = new ChargeRequestDto();
result.Id = chargeRequest.Id;
result.ChargeRequestNo = chargeRequest.ChargeRequestNo;

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

@ -336,7 +336,7 @@ namespace Shentun.Peis.RegisterAsbitems
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("api/app/registerasbitem/GetCanChargeAsbitemsByPatientRegisterId")]
[HttpPost("api/app/registerasbitem/GetCanChargeAsbitemsByPatientRegisterId")]
public async Task<List<RegisterCheckAsbitemOrAsbitemDto>> GetCanChargeAsbitemsByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
var patientReigister = await _patientRegisterRepository.GetAsync(input.PatientRegisterId);
@ -345,7 +345,7 @@ namespace Shentun.Peis.RegisterAsbitems
.Include(x => x.Asbitem.ItemType)
.Include(x => x.RegisterCheck)
.Where(m => m.PatientRegisterId == input.PatientRegisterId &&
m.IsCharge == 'Y' && 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

14
src/Shentun.Peis.Domain/ChargeRequestAsbitems/ChargeRequestAsbitemManager.cs

@ -1,7 +1,12 @@
using Shentun.Peis.Models;
using Microsoft.Extensions.Configuration;
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.PlugIns;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
@ -12,7 +17,9 @@ namespace Shentun.Peis.ChargeRequestAsbitems
public class ChargeRequestAsbitemManager : DomainService
{
private readonly IRepository<ChargeRequestAsbitem, Guid> _repository;
public ChargeRequestAsbitemManager(IRepository<ChargeRequestAsbitem, Guid> repository)
public ChargeRequestAsbitemManager(IRepository<ChargeRequestAsbitem, Guid> repository,
IRepository<ThirdInterface, Guid> thirdInterfaceRepository)
{
_repository = repository;
@ -41,5 +48,8 @@ namespace Shentun.Peis.ChargeRequestAsbitems
};
}
}
}

59
src/Shentun.Peis.Domain/ChargeRequests/ChargeRequestManager.cs

@ -1,9 +1,13 @@
using Shentun.Peis.Enums;
using Microsoft.Extensions.Configuration;
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.PlugIns;
using Shentun.Peis.SysParmValues;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
@ -18,15 +22,18 @@ namespace Shentun.Peis.ChargeRequests
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository;
private readonly SysParmValueManager _sysParmValueManager;
private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository;
public ChargeRequestManager(IRepository<ChargeRequest, Guid> repository,
IRepository<PrimarykeyBuilder> primarykeyBuilderRepository,
SysParmValueManager sysParmValueManager,
IRepository<PatientRegister, Guid> patientRegisterRepository)
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<ThirdInterface, Guid> thirdInterfaceRepository)
{
_repository = repository;
_primarykeyBuilderRepository = primarykeyBuilderRepository;
_sysParmValueManager = sysParmValueManager;
_patientRegisterRepository = patientRegisterRepository;
_thirdInterfaceRepository = thirdInterfaceRepository;
}
/// <summary>
@ -51,6 +58,54 @@ namespace Shentun.Peis.ChargeRequests
};
}
public async Task SendThirChargeRequestAsync(Guid id)
{
var thirdInterfaces = (await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ChargeRequest))
.OrderBy(o => o.DisplayOrder).ToList();
foreach (var thirdInterface in thirdInterfaces)
{
var chargeRequestPlugInsInput = new ChargeRequestPlugInsInput()
{
ChargeRequestId = id
};
var parmValue = thirdInterface.ParmValue;
var configurationBuilder = new ConfigurationBuilder()
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
var config = configurationBuilder.Build();
var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value;
var className = config.GetSection("Interface").GetSection("ClassName").Value;
object[] objects = new object[] { chargeRequestPlugInsInput };
var chargeRequestPluginsOut = await InvokeAsync(assemblyName, className, parmValue, "SendRequest", objects);
}
}
private async Task<ChargeRequestPlugInsOut> InvokeAsync(string assemblyName, string className, string classConstructorArg, string methodName, object[] args = null)
{
Assembly assembly = Assembly.Load(assemblyName);
Type type = assembly.GetType(className);
// 创建类的实例
object instance = Activator.CreateInstance(type, classConstructorArg);
// 获取方法信息
MethodInfo method = type.GetMethod(methodName);
// 调用方法,如果方法需要参数,可以传入对应的参数数组,例如: new object[] { arg1, arg2 }
ChargeRequestPlugInsOut returnValue;
var isAsync = (method.ReturnType == typeof(Task) ||
(method.ReturnType.IsGenericType && method.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)));
if (isAsync)
{
// 使用反射调用方法
//object returnValue = method.Invoke(instance, args);
returnValue = await (Task<ChargeRequestPlugInsOut>)method.Invoke(instance, args);
}
else
{
returnValue = (ChargeRequestPlugInsOut)method.Invoke(instance, args);
}
return returnValue;
}
private async Task<string> CreateChargeRequestNo(Guid medicalCenterId)
{
string LisRequestNo = ""; //条码号

10
src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs

@ -325,7 +325,7 @@ namespace Shentun.Peis.LisRequests
.OrderBy(o => o.DisplayOrder).ToList();
foreach (var thirdInterface in thirdInterfaces)
{
var lisRequestPluginsInput = new LisRequestPluginsInput()
var lisRequestPluginsInput = new LisRequestPlugInsInput()
{
LisRequestId = id
};
@ -474,7 +474,7 @@ namespace Shentun.Peis.LisRequests
public Guid SampleGroupId { get; set; }
public Guid? LisRequestId { get; set; }
}
private async Task<LisRequestPluginsOut> InvokeAsync(string assemblyName, string className, string classConstructorArg, string methodName, object[] args = null)
private async Task<LisRequestPlugInsOut> InvokeAsync(string assemblyName, string className, string classConstructorArg, string methodName, object[] args = null)
{
Assembly assembly = Assembly.Load(assemblyName);
Type type = assembly.GetType(className);
@ -483,7 +483,7 @@ namespace Shentun.Peis.LisRequests
// 获取方法信息
MethodInfo method = type.GetMethod(methodName);
// 调用方法,如果方法需要参数,可以传入对应的参数数组,例如: new object[] { arg1, arg2 }
LisRequestPluginsOut returnValue;
LisRequestPlugInsOut returnValue;
var isAsync = (method.ReturnType == typeof(Task) ||
(method.ReturnType.IsGenericType && method.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)));
if (isAsync)
@ -491,11 +491,11 @@ namespace Shentun.Peis.LisRequests
// 使用反射调用方法
//object returnValue = method.Invoke(instance, args);
returnValue = await (Task<LisRequestPluginsOut>)method.Invoke(instance, args);
returnValue = await (Task<LisRequestPlugInsOut>)method.Invoke(instance, args);
}
else
{
returnValue = (LisRequestPluginsOut)method.Invoke(instance, args);
returnValue = (LisRequestPlugInsOut)method.Invoke(instance, args);
}
return returnValue;

6
test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs

@ -38,11 +38,11 @@ namespace Shentun.Peis
var entity = new CreateChargeRequestDto()
{
PatientRegisterId = new Guid("3a11ee70-02cb-c5e6-a087-79ecdd0356b6"),
PatientRegisterId = new Guid("3a123c55-06de-4988-691c-448b5af468ff"),
RegisterCheckAsbitems = new List<CreateChargeRequestAsbitemDto>()
{
new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a11ee70-0319-2fb3-5bf1-e3796dadda1c")},
new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a11ee70-0319-359e-164c-3bbd31234ffd")}
new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a123c55-0792-17bd-6d63-d7b3238aca18")},
new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a123c55-0791-2d82-97be-1bf9a6152513")}
}
};

Loading…
Cancel
Save