Commit e0dc34a8 by lcx

Merge branch 'feature/提取前检查逻辑修改' into develop

parents 2216bc23 e553510f
......@@ -1851,7 +1851,7 @@
</member>
<member name="P:Performance.DtoModels.AccoungingRequest.Type">
<summary>
1 返回accounting列表 2 返回核算单元类型 3 返回核算单元
1 返回accounting列表 2 返回核算单元 3 返回核算单元类型
</summary>
</member>
<member name="P:Performance.DtoModels.AccoungingRequest.UnitType">
......
......@@ -2331,6 +2331,11 @@
只读 0、否 1、是
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.CheckScriptId">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.ex_result">
<summary>
......
......@@ -55,5 +55,10 @@ public class ex_module
/// 只读 0、否 1、是
/// </summary>
public Nullable<int> ReadOnly { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> CheckScriptId { get; set; }
}
}
......@@ -31,6 +31,8 @@ public class ExConfigService : IAutoInjection
private readonly PerforModdicRepository moddicRepository;
private readonly QueryService queryService;
private readonly ILogger logger;
private readonly PerforCofdrugtypeRepository cofdrugtypeRepository;
private readonly PerforPerdeptdicRepository perdeptdicRepository;
public ExConfigService(PerforExtypeRepository extypeRepository,
PerforExscriptRepository exscriptRepository,
......@@ -45,7 +47,9 @@ public class ExConfigService : IAutoInjection
PerforExtractRepository extractRepository,
PerforModdicRepository moddicRepository,
QueryService queryService,
ILogger<ExConfigService> logger
ILogger<ExConfigService> logger,
PerforCofdrugtypeRepository cofdrugtypeRepository,
PerforPerdeptdicRepository perdeptdicRepository
)
{
this.extypeRepository = extypeRepository;
......@@ -62,6 +66,8 @@ ILogger<ExConfigService> logger
this.moddicRepository = moddicRepository;
this.queryService = queryService;
this.logger = logger;
this.cofdrugtypeRepository = cofdrugtypeRepository;
this.perdeptdicRepository = perdeptdicRepository;
}
#region Modules
......@@ -689,6 +695,8 @@ public string Judge(int allotId, int hospitalId, int useTemplate, ref bool isSin
public Dictionary<string, object> CheckHasNewDepartmentOrCategory(int allotId)
{
#region 改正
/*
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
var allotList = perallotRepository.GetEntities(t => t.HospitalId == allot.HospitalId && new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive }.Contains(t.States));
......@@ -734,8 +742,99 @@ public string Judge(int allotId, int hospitalId, int useTemplate, ref bool isSin
if (noExistedTypename != null && noExistedTypename.Any())
stringBuilder.AppendLine($"新增费用类型:{string.Join(",", noExistedTypename)}");
paramtemers.Add(dic.Remark, stringBuilder.ToString());
paramtemers.Add(dic.Remark, stringBuilder.ToString());
}
return paramtemers; */
#endregion
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
var drugTypes = cofdrugtypeRepository.GetEntities(t => t.AllotID == allot.ID && t.HospitalId == allot.HospitalId);
var deptDic = perdeptdicRepository.GetEntities(t => t.HospitalId == allot.HospitalId);
var moduleSheet = exmoduleRepository.GetEntities(t => t.HospitalId == allot.HospitalId && t.SheetType == (int)SheetType.Income);
if (moduleSheet == null || !moduleSheet.Any()) return null;
var moduleScript = moduleSheet.Select(t => t.CheckScriptId);
var scripts = exscriptRepository.GetEntities(t => moduleScript.Contains(t.Id));
if (scripts == null || !scripts.Any()) return null;
var scriptConfig = scripts.Select(t => t.ConfigId);
var hosConfig = hospitalconfigRepository.GetEntities(t => scriptConfig.Contains(t.Id));
if (hosConfig == null) return null;
Dictionary<string, object> paramtemers = new Dictionary<string, object>();
StringBuilder stringBuilder = new StringBuilder();
List<string> deparmants = new List<string>();
List<string> drugs = new List<string>();
List<per_dept_dic> deptList = new List<per_dept_dic>();
List<cof_drugtype> drugTypeList = new List<cof_drugtype>();
string defaultSource = "住院", defauleUnittype = UnitType.医生组.ToString();
foreach (var scr in scripts)
{
var conf = hosConfig.FirstOrDefault(t => t.Id == scr.ConfigId);
if (conf == null)
continue;
var data = queryService.QueryData(conf, allot, scr.ExecScript);
if (data == null || !data.Any()) continue;
foreach (var module in moduleSheet.Where(t => t.CheckScriptId == scr.Id))
{
var noExistedDepartment = data.Select(t => t.Department).Distinct().ToList();
var source = module.ModuleName.Contains(defaultSource) ? "住院" : "门诊";
if (deptDic != null && deptDic.Any(t => t.Source == source))
{
var deptDics = deptDic.Where(t => t.Source == source).Select(t => t.HISDeptName);
noExistedDepartment = data.Select(t => t.Department).Except(deptDics).Distinct().ToList();
}
if (noExistedDepartment != null && noExistedDepartment.Any()) // 系统科室、标准科室唯一,门诊、住院核算单元可能不一致,因此数据可重复
{
var dept = noExistedDepartment.Select(t => new per_dept_dic
{
HISDeptName = t,
UnitType = defauleUnittype,
Source = source,
HospitalId = allot.HospitalId,
IsVerify = 0,
VerifyMessage = "抽取前科室校验后补增科室",
CreateUser = 1
}).ToList();
deparmants.AddRange(noExistedDepartment.Where(t => !deparmants.Contains(t)));
deptList.AddRange(dept);
}
}
var typeNames = drugTypes.Select(t => t.Charge).Distinct();
var noExistedTypename = data.Select(t => t.Category).Distinct().Except(typeNames);
if (noExistedTypename != null && noExistedTypename.Any(t => !drugs.Contains(t)))
{
var drugType = noExistedTypename.Where(t => !drugs.Contains(t)).Select(t => new cof_drugtype
{
HospitalId = allot.HospitalId,
AllotID = allot.ID,
Charge = t
}).ToList();
drugs.AddRange(noExistedTypename.Where(t => !drugs.Contains(t)));
drugTypeList.AddRange(drugType);
}
}
if (deparmants != null && deparmants.Any())
{
var distinctedDept = deptList.ToDistinct().ToList();
distinctedDept.ForEach(t => t.CreateTime = DateTime.Now); //在去重前添加时间,可能造成时间不一致,无法去重
perdeptdicRepository.AddRange(distinctedDept.ToArray());
stringBuilder.AppendLine($"新增科室:{string.Join(",", deparmants.Distinct())}");
}
if (drugs != null && drugs.Any())
{
cofdrugtypeRepository.AddRange(drugTypeList.ToDistinct().ToArray());
stringBuilder.AppendLine($"新增费用类型:{string.Join(",", drugs.Distinct())}");
}
paramtemers.Add("新增科室或费用类型", stringBuilder.ToString());
return paramtemers;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment