Browse Source

收费

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
3aa86fc491
  1. 2
      src/Shentun.ColumnReferencePlugIns/ChargeRequestForPlugIns.cs
  2. 14
      src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs
  3. 12
      src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
  4. 231
      src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs
  5. 3
      src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs

2
src/Shentun.ColumnReferencePlugIns/ChargeRequestForPlugIns.cs

@ -27,6 +27,8 @@ namespace Shentun.Peis.PlugIns
/// </summary>
public char ChargeRequestFlag { get; set; }
public string ConcurrencyStamp { get; set; }
public List<ChargeRequestAsbitemForPlugIns> Asbitems = new List<ChargeRequestAsbitemForPlugIns> ();
}
}

14
src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs

@ -75,7 +75,8 @@ where patient.id = patient_register.patient_id and
sql = @"SELECT id as charge_request_id,
charge_request_no,
his_charge_no,
charge_request_flag
charge_request_flag,
concurrency_stamp
FROM charge_request
WHERE id =@ChargeRequestId
";
@ -113,7 +114,8 @@ where patient.id = patient_register.patient_id and
sql = @"SELECT id as charge_request_id,
charge_request_no,
his_charge_no,
charge_request_flag
charge_request_flag,
concurrency_stamp
FROM charge_request
WHERE (charge_request_flag = '0' or
charge_request_flag = '2' or
@ -153,16 +155,18 @@ where patient.id = patient_register.patient_id and
// }
//}
public async Task SetAppChargeRequestFlagAsync(Guid chargeRequestId, char chargeRequestFlag)
public async Task SetAppChargeRequestFlagAsync(Guid chargeRequestId, string concurrencyStamp, char chargeRequestFlag)
{
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;
sql = @" update charge_request set charge_request_flag =" + chargeRequestFlag +
@" where id = @ChargeRequestId
@" where id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
";
conn.Execute(sql,
new { ChargeRequestId = chargeRequestId });
new { ChargeRequestId = chargeRequestId,
ConcurrencyStamp = concurrencyStamp
});
if (chargeRequestFlag == ChargeRequestFlag.AlreadyCharge)
{
sql = @" update register_check_asbitem set is_charge = 'Y' where charge_request_id = @ChargeRequestId

12
src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs

@ -53,5 +53,17 @@ namespace Shentun.Peis.RegisterChecks
/// 审核时间
/// </summary>
public DateTime? AuditTime { get; set; }
/// <summary>
/// 检查类别
/// </summary>
public char CheckTypeFlag { get; set; }
/// <summary>
/// 项目类别显示顺序
/// </summary>
public int ItemTypeDisplayOrder { get; set; }
/// <summary>
/// 组合项目顺序
/// </summary>
public int AsbitemDisplayOrder { get; set; }
}
}

231
src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs

@ -52,6 +52,8 @@ namespace Shentun.Peis.ImportLisResults
private readonly RegisterCheckAppService _registerCheckAppService;
private List<Unit> _units;
private List<ReferenceRange> _referenceRanges;
private static bool _isRunning = false;
private static readonly object lockObject = new object();
public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -109,140 +111,143 @@ namespace Shentun.Peis.ImportLisResults
public async Task ImportResultAsync(List<CreateImportLisResultDto> input)
{
//设置结果
var list = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckItem.RegisterCheckId
join item in await _itemRepository.GetQueryableAsync()
on registerCheckItem.ItemId equals item.Id
join lisRequest in await _lisRequestRepository.GetQueryableAsync()
on registerCheckAsbitem.LisRequestId equals lisRequest.Id
where input.Select(o => o.LisRequestNo).ToList().Contains(lisRequest.LisRequestNo)
select new
{
patientRegister,
registerCheck,
registerCheckAsbitem,
registerCheckItem,
item,
lisRequest,
}).ToList();
var lisRequestNos = input.Select(o => o.LisRequestNo).Distinct().ToList();
var registerChecks = new List<RegisterCheck>();
_referenceRanges = _referenceRangeRepository.GetListAsync().Result;
foreach (var inputItem in input)
lock (lockObject)
{
var lisRequestItem = list.Where(o => o.lisRequest.LisRequestNo == inputItem.LisRequestNo
&& o.registerCheckItem.ItemId == inputItem.ItemId).FirstOrDefault();
if (lisRequestItem == null)
{
continue;
}
lisRequestItem.registerCheckItem.Result = inputItem.Result;
//var itemSource = new RegisterCheckItem()
//{
// Result = inputItem.Result,
// ReferenceRangeValue = inputItem.ReferenceRangeValue,
// Unit = inputItem.Unit,
// CriticalRangeValue = inputItem.CriticalRangeValue
//};
//修改参考范围
await UpdateItemReferenceRangeValueAsync(inputItem.ItemId, lisRequestItem.patientRegister.SexId,
lisRequestItem.patientRegister.Age, inputItem.ReferenceRangeValue);
//修改单位
await UpdateItemUnitAsync(inputItem.ItemId, inputItem.Unit);
//await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem);
//await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem,true);
if (!registerChecks.Where(o => o.Id == lisRequestItem.registerCheck.Id).ToList().Any())
{
lisRequestItem.registerCheck.CheckDoctorId = inputItem.CheckDoctorName;
lisRequestItem.registerCheck.CheckDate = inputItem.CheckDate;
registerChecks.Add(lisRequestItem.registerCheck);
}
}
var list = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckItem.RegisterCheckId
join item in await _itemRepository.GetQueryableAsync()
on registerCheckItem.ItemId equals item.Id
join lisRequest in await _lisRequestRepository.GetQueryableAsync()
on registerCheckAsbitem.LisRequestId equals lisRequest.Id
where input.Select(o => o.LisRequestNo).ToList().Contains(lisRequest.LisRequestNo)
select new
{
patientRegister,
registerCheck,
registerCheckAsbitem,
registerCheckItem,
item,
lisRequest,
}).ToList();
//更新参考范围和单位
foreach (var registerCheck in registerChecks)
{
var lisRequestItems = list.Where(o => o.registerCheck.Id == registerCheck.Id).ToList();
foreach (var lisRequestItem in lisRequestItems)
var lisRequestNos = input.Select(o => o.LisRequestNo).Distinct().ToList();
var registerChecks = new List<RegisterCheck>();
_referenceRanges = _referenceRangeRepository.GetListAsync().Result;
foreach (var inputItem in input)
{
var referenceRange = _referenceRangeManager.GetReferenceRangeBySexAgeTemp(_referenceRanges,
lisRequestItem.item, lisRequestItem.patientRegister.SexId, lisRequestItem.patientRegister.Age);
if (referenceRange != null)
var lisRequestItem = list.Where(o => o.lisRequest.LisRequestNo == inputItem.LisRequestNo
&& o.registerCheckItem.ItemId == inputItem.ItemId).FirstOrDefault();
if (lisRequestItem == null)
{
lisRequestItem.registerCheckItem.ReferenceRangeValue = referenceRange.ReferenceRangeValue;
lisRequestItem.registerCheckItem.CriticalRangeValue = referenceRange.CriticalRangeValue;
continue;
}
else
{
lisRequestItem.registerCheckItem.ReferenceRangeValue = "";
lisRequestItem.registerCheckItem.CriticalRangeValue = "";
}
var unit = _units.Where(o => o.Id == lisRequestItem.item.UnitId).FirstOrDefault();
if (unit != null)
lisRequestItem.registerCheckItem.Result = inputItem.Result;
//var itemSource = new RegisterCheckItem()
//{
// Result = inputItem.Result,
// ReferenceRangeValue = inputItem.ReferenceRangeValue,
// Unit = inputItem.Unit,
// CriticalRangeValue = inputItem.CriticalRangeValue
//};
//修改参考范围
await UpdateItemReferenceRangeValueAsync(inputItem.ItemId, lisRequestItem.patientRegister.SexId,
lisRequestItem.patientRegister.Age, inputItem.ReferenceRangeValue);
//修改单位
await UpdateItemUnitAsync(inputItem.ItemId, inputItem.Unit);
//await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem);
//await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem,true);
if (!registerChecks.Where(o => o.Id == lisRequestItem.registerCheck.Id).ToList().Any())
{
lisRequestItem.registerCheckItem.Unit = unit.DisplayName;
lisRequestItem.registerCheck.CheckDoctorId = inputItem.CheckDoctorName;
lisRequestItem.registerCheck.CheckDate = inputItem.CheckDate;
registerChecks.Add(lisRequestItem.registerCheck);
}
else
}
//更新参考范围和单位
foreach (var registerCheck in registerChecks)
{
var lisRequestItems = list.Where(o => o.registerCheck.Id == registerCheck.Id).ToList();
foreach (var lisRequestItem in lisRequestItems)
{
lisRequestItem.registerCheckItem.Unit = "";
var referenceRange = _referenceRangeManager.GetReferenceRangeBySexAgeTemp(_referenceRanges,
lisRequestItem.item, lisRequestItem.patientRegister.SexId, lisRequestItem.patientRegister.Age);
if (referenceRange != null)
{
lisRequestItem.registerCheckItem.ReferenceRangeValue = referenceRange.ReferenceRangeValue;
lisRequestItem.registerCheckItem.CriticalRangeValue = referenceRange.CriticalRangeValue;
}
else
{
lisRequestItem.registerCheckItem.ReferenceRangeValue = "";
lisRequestItem.registerCheckItem.CriticalRangeValue = "";
}
var unit = _units.Where(o => o.Id == lisRequestItem.item.UnitId).FirstOrDefault();
if (unit != null)
{
lisRequestItem.registerCheckItem.Unit = unit.DisplayName;
}
else
{
lisRequestItem.registerCheckItem.Unit = "";
}
await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem, true);
}
await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem, true);
}
}
//保存结果
}
//保存结果
foreach (var registerCheck in registerChecks)
{
var updateCheckResultDto = new UpdateCheckResultDto()
foreach (var registerCheck in registerChecks)
{
RegisterCheckId = registerCheck.Id,
CheckDoctorId = registerCheck.CheckDoctorId,
CheckDate = registerCheck.CheckDate,
RegisterCheckItems = list.Where(o => o.registerCheck.Id == registerCheck.Id)
.Select(o => new UpdateRegisterCheckItemDetail()
var updateCheckResultDto = new UpdateCheckResultDto()
{
ItemId = o.registerCheckItem.ItemId,
Result = o.registerCheckItem.Result,
RegisterCheckId = registerCheck.Id,
CheckDoctorId = registerCheck.CheckDoctorId,
CheckDate = registerCheck.CheckDate,
RegisterCheckItems = list.Where(o => o.registerCheck.Id == registerCheck.Id)
.Select(o => new UpdateRegisterCheckItemDetail()
{
ItemId = o.registerCheckItem.ItemId,
Result = o.registerCheckItem.Result,
}).ToList()
}).ToList()
};
};
var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
{
RegisterCheckId = registerCheck.Id,
Items = list.Where(o => o.registerCheck.Id == registerCheck.Id)
.Select(o => new GetDiagnosisResultRequest_Item()
var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
{
ItemId = o.registerCheckItem.ItemId,
Result = o.registerCheckItem.Result,
}).ToList()
};
//生成小结
var summarry = await _diagnosisFunctionAppService.GetDoctorCheckDiagnosisResultAsync(getDiagnosisResultRequestDto);
RegisterCheckId = registerCheck.Id,
Items = list.Where(o => o.registerCheck.Id == registerCheck.Id)
.Select(o => new GetDiagnosisResultRequest_Item()
{
ItemId = o.registerCheckItem.ItemId,
Result = o.registerCheckItem.Result,
}).ToList()
};
//生成小结
var summarry = await _diagnosisFunctionAppService.GetDoctorCheckDiagnosisResultAsync(getDiagnosisResultRequestDto);
for (var i = 0; i < summarry.DiagnosisResultDetails.Count; i++)
{
updateCheckResultDto.Summarys.Add(new UpdateRegisterCheckSummaryDetail()
for (var i = 0; i < summarry.DiagnosisResultDetails.Count; i++)
{
Summary = summarry.DiagnosisResultDetails[i].DiagnosisResult,
SummaryFlag = '0'
});
}
updateCheckResultDto.Summarys.Add(new UpdateRegisterCheckSummaryDetail()
{
Summary = summarry.DiagnosisResultDetails[i].DiagnosisResult,
SummaryFlag = '0'
});
}
await _registerCheckAppService.UpdateCheckResult(updateCheckResultDto);
await _registerCheckAppService.UpdateCheckResult(updateCheckResultDto);
}
}
}
private async Task UpdateItemReferenceRangeValueAsync(Guid itemId, char sexId, int? age, string referenceRangeValue)

3
src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs

@ -261,6 +261,9 @@ namespace Shentun.Peis.RegisterChecks
IsAudit = s.IsAudit,
IsCharge = s.RegisterCheckAsbitems.Where(m => m.IsCharge == 'Y').Count() > 0 ? 'Y' : 'N',
IsLock = s.IsLock,
CheckTypeFlag = s.RegisterCheckAsbitems.First().Asbitem.ItemType.CheckTypeFlag,
ItemTypeDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.ItemType.DisplayOrder,
AsbitemDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.DisplayOrder,
}).ToList();
return entdto;

Loading…
Cancel
Save