Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
performance
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zry
performance
Commits
ae146fc4
Commit
ae146fc4
authored
Sep 23, 2019
by
ruyun.zhang@suvalue.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/baodi' into develop
parents
e4e7326c
960cfb78
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
226 additions
and
4 deletions
+226
-4
performance/Performance.Api/wwwroot/Performance.Api.xml
+35
-0
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+48
-0
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+38
-0
performance/Performance.DtoModels/PerExcel/ExcelEnum.cs
+2
-0
performance/Performance.Services/AllotCompute/ProcessComputService.cs
+99
-4
performance/Performance.Services/AllotService.cs
+4
-0
No files found.
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
ae146fc4
...
...
@@ -473,6 +473,41 @@
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.GuaranteeController.Guarantee(Performance.DtoModels.GuaranteeRequest)"
>
<summary>
保底绩效配置列表
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.GuaranteeController.GuarantInsert(Performance.DtoModels.GuaranteeRequest)"
>
<summary>
新增保底绩效配置
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.GuaranteeController.GuarantUpdate(Performance.DtoModels.GuaranteeRequest)"
>
<summary>
修改保底绩效配置
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.GuaranteeController.GuarantDelete(Performance.DtoModels.GuaranteeRequest)"
>
<summary>
删除保底绩效配置
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.GuaranteeController.Accounting(Performance.DtoModels.GuaranteeRequest)"
>
<summary>
医院核算单元
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.HospitalController.GetHospitalList"
>
<summary>
获取当前登录用户管辖医院列表
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
ae146fc4
...
...
@@ -1243,6 +1243,24 @@
邮箱
</summary>
</member>
<member
name=
"P:Performance.DtoModels.GuaranteeRequest.Id"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.DtoModels.GuaranteeRequest.AllotId"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.DtoModels.GuaranteeRequest.Priority"
>
<summary>
优先级
</summary>
</member>
<member
name=
"P:Performance.DtoModels.GuaranteeRequest.UnitType"
>
<summary>
核算单元类型 1 医生组 2 护理组 3 医技组
</summary>
</member>
<member
name=
"P:Performance.DtoModels.GuaranteeRequest.Target"
>
<summary>
保底科室
</summary>
</member>
<member
name=
"P:Performance.DtoModels.GuaranteeRequest.Source"
>
<summary>
保底来源科室
</summary>
</member>
<member
name=
"T:Performance.DtoModels.HospitalRequest"
>
<summary>
登录请求
...
...
@@ -1622,6 +1640,36 @@
实发绩效
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DeptDataDetails.Pandect"
>
<summary>
概览
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DeptDataDetails.Detail"
>
<summary>
收入明细
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailDtos.ItemName"
>
<summary>
收入项名称
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailDtos.IncomeType"
>
<summary>
1、收入 2、支出 3、工作量
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailDtos.Amount"
>
<summary>
金额
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailDtos.Items"
>
<summary>
详情
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailModule.ItemName"
>
<summary>
明细项
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailModule.CellValue"
>
<summary>
原始值
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailModule.Factor"
>
<summary>
系数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailModule.ItemValue"
>
<summary>
结算值
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DeptResponse.ID"
>
<summary>
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
ae146fc4
...
...
@@ -46,6 +46,9 @@
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.cof_drugtype"
>
<summary>
药占比费用列头名称
</summary>
</member>
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.cof_guarantee"
>
<summary>
保底科室配置
</summary>
</member>
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.cof_income"
>
<summary>
ICU医生护士有效收入汇总计算系数
</summary>
</member>
...
...
@@ -722,6 +725,41 @@
费用名称
</summary>
</member>
<member
name=
"T:Performance.EntityModels.cof_guarantee"
>
<summary>
保底科室配置
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_guarantee.Id"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_guarantee.AllotId"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_guarantee.Priority"
>
<summary>
优先级
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_guarantee.UnitType"
>
<summary>
核算单元类型 1 医生组 2 护理组 3 医技组
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_guarantee.Target"
>
<summary>
保底科室
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_guarantee.Source"
>
<summary>
保底来源科室
</summary>
</member>
<member
name=
"T:Performance.EntityModels.cof_income"
>
<summary>
ICU医生护士有效收入汇总计算系数
...
...
performance/Performance.DtoModels/PerExcel/ExcelEnum.cs
View file @
ae146fc4
...
...
@@ -142,6 +142,8 @@ public enum MinimumType
保底护士
=
3
,
[
Description
(
"保底绩效行政工勤人均绩效"
)]
保底工勤
=
4
,
[
Description
(
"自定义保底绩效"
)]
自定义保底
=
5
,
}
///// <summary>
...
...
performance/Performance.Services/AllotCompute/ProcessComputService.cs
View file @
ae146fc4
...
...
@@ -27,6 +27,8 @@ public class ProcessComputService : IAutoInjection
private
PerforCofdrugtypeRepository
perforCofdrugtypeRepository
;
private
PerforCofworkitemRepository
perforCofworkitemRepository
;
private
readonly
LogManageService
logManageService
;
private
readonly
GuaranteeService
guaranteeService
;
public
ProcessComputService
(
PerforCofincomeRepository
perforCofincomeRepository
,
PerforCofdrugpropRepository
perforCofdrugpropRepository
,
PerforPersheetRepository
perforPerSheetRepository
,
...
...
@@ -37,7 +39,8 @@ public class ProcessComputService : IAutoInjection
PerforResbaiscnormRepository
perforResbaiscnormRepository
,
PerforCofdrugtypeRepository
perforCofdrugtypeRepository
,
PerforCofworkitemRepository
perforCofworkitemRepository
,
LogManageService
logManageService
)
LogManageService
logManageService
,
GuaranteeService
guaranteeService
)
{
this
.
perforCofincomeRepository
=
perforCofincomeRepository
;
this
.
perforCofdrugpropRepository
=
perforCofdrugpropRepository
;
...
...
@@ -50,6 +53,7 @@ public class ProcessComputService : IAutoInjection
this
.
perforCofdrugtypeRepository
=
perforCofdrugtypeRepository
;
this
.
perforCofworkitemRepository
=
perforCofworkitemRepository
;
this
.
logManageService
=
logManageService
;
this
.
guaranteeService
=
guaranteeService
;
}
///// <summary>
...
...
@@ -232,6 +236,7 @@ public void Save(List<PerSheet> perSheets, int allotId)
return
(
perSheet
,
mergeSheets
);
}
/// <summary>
/// 计算科室绩效
/// </summary>
...
...
@@ -279,9 +284,16 @@ public List<PerSheet> Compute(PerExcel excel, List<PerSheet> perSheet, List<res_
workDoctor
=
info
.
Data
.
FirstOrDefault
(
t
=>
t
.
AccountingUnit
==
dept
.
Department
&&
t
.
UnitType
==
UnitType
.
医生组
.
ToString
());
}
//保底绩效
var
minimum
=
baiscnormList
.
FirstOrDefault
(
t
=>
t
.
PositionName
==
dept
.
MinimumReference
);
if
(!
string
.
IsNullOrEmpty
(
dept
.
MinimumReference
)
&&
minimum
!=
null
)
dept
.
MinimumFee
=
minimum
.
AvgValue
*
(
dept
.
MinimumFactor
??
0
)
*
(
dept
.
ManagerNumber
+
dept
.
Number
);
if
(!
string
.
IsNullOrEmpty
(
dept
.
MinimumReference
))
{
string
minimumReference
=
dept
.
MinimumReference
;
if
(
dept
.
MinimumReference
==
EnumHelper
.
GetDescription
(
MinimumType
.
自定义保底
))
minimumReference
=
GetCustomMinimumName
(
dept
.
Department
);
var
minimum
=
baiscnormList
.
FirstOrDefault
(
t
=>
t
.
PositionName
==
minimumReference
);
if
(
minimum
!=
null
)
dept
.
MinimumFee
=
minimum
.
AvgValue
*
(
dept
.
MinimumFactor
??
0
)
*
(
dept
.
ManagerNumber
+
dept
.
Number
);
}
dept
.
ScoringAverage
=
dept
.
ScoringAverage
==
0
m
?
1
:
dept
.
ScoringAverage
;
dept
.
AdjustFactor
=
dept
.
AdjustFactor
==
0
m
?
1
:
dept
.
AdjustFactor
;
...
...
@@ -397,6 +409,89 @@ public List<res_baiscnorm> ComputeMinimum(PerExcel excel, List<PerSheet> perShee
}
/// <summary>
/// 计算科室自定义保底绩效范围(根据配置的科室范围计算人均绩效)
/// </summary>
/// <param name="excel"></param>
/// <param name="perSheet"></param>
/// <param name="baiscnormList"></param>
/// <param name="allotId"></param>
public
void
ComputeCustomMinimum
(
PerExcel
excel
,
List
<
PerSheet
>
perSheet
,
List
<
res_baiscnorm
>
baiscnormList
,
int
allotId
)
{
var
guaranteeList
=
guaranteeService
.
Guarantee
(
allotId
);
if
(
guaranteeList
==
null
||
!
guaranteeList
.
Any
())
return
;
var
guaranteeGroupList
=
guaranteeList
.
Where
(
t
=>
!
string
.
IsNullOrEmpty
(
t
.
Target
)
&&
!
string
.
IsNullOrEmpty
(
t
.
Source
))
.
GroupBy
(
t
=>
new
{
t
.
UnitType
,
t
.
Target
})
.
Select
(
t
=>
new
{
t
.
Key
.
UnitType
,
t
.
Key
.
Target
,
Priority
=
t
.
Min
(
m
=>
m
.
Priority
),
Items
=
t
.
Select
(
m
=>
m
.
Source
)
});
var
deptAccounting
=
excel
.
PerSheet
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
SheetType
.
AccountBasic
);
var
accountList
=
deptAccounting
.
PerData
.
Select
(
t
=>
(
PerDataAccountBaisc
)
t
);
var
economicData
=
perSheet
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
SheetType
.
ComputeEconomic
)?.
PerData
.
Select
(
t
=>
(
PerData
)
t
);
var
doctorWorkloadData
=
perSheet
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
SheetType
.
ComputeDoctorWorkload
)?.
PerData
.
Select
(
t
=>
(
PerData
)
t
);
var
nurseWorkloadData
=
perSheet
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
SheetType
.
ComputeNurseWorkload
)?.
PerData
.
Select
(
t
=>
(
PerData
)
t
);
var
basicRuleList
=
new
[]
{
new
{
Data
=
doctorWorkloadData
,
UnitType
=
UnitType
.
医生组
},
new
{
Data
=
doctorWorkloadData
,
UnitType
=
UnitType
.
医技组
},
new
{
Data
=
nurseWorkloadData
,
UnitType
=
UnitType
.
护理组
},
};
List
<
res_baiscnorm
>
newBaiscnormList
=
new
List
<
res_baiscnorm
>();
foreach
(
var
guaranteeGroup
in
guaranteeGroupList
)
{
var
unitType
=
(
UnitType
)
guaranteeGroup
.
UnitType
;
var
dataList
=
accountList
.
Where
(
t
=>
t
.
UnitType
==
unitType
.
ToString
()
&&
guaranteeGroup
.
Items
.
Contains
(
t
.
Department
));
var
count
=
dataList
.
Sum
(
t
=>
t
.
ManagerNumber
+
t
.
Number
);
decimal
totalValue
=
0
m
;
foreach
(
var
dept
in
dataList
)
{
var
econDoctor
=
economicData
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
unitType
.
ToString
()
&&
t
.
AccountingUnit
==
dept
.
Department
);
var
workdata
=
basicRuleList
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
unitType
)?.
Data
;
var
workload
=
workdata
==
null
?
null
:
workdata
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
unitType
.
ToString
()
&&
t
.
AccountingUnit
==
dept
.
Department
);
//保底绩效
var
minimum
=
baiscnormList
.
FirstOrDefault
(
t
=>
t
.
PositionName
==
dept
.
MinimumReference
);
if
(!
string
.
IsNullOrEmpty
(
dept
.
MinimumReference
)
&&
minimum
!=
null
)
dept
.
MinimumFee
=
minimum
.
AvgValue
*
(
dept
.
MinimumFactor
??
0
)
*
(
dept
.
ManagerNumber
+
dept
.
Number
);
dept
.
ScoringAverage
=
dept
.
ScoringAverage
==
0
m
?
1
:
dept
.
ScoringAverage
;
dept
.
AdjustFactor
=
dept
.
AdjustFactor
==
0
m
?
1
:
dept
.
AdjustFactor
;
dept
.
Income
=
econDoctor
?.
CellValue
??
0
;
dept
.
WorkloadFee
=
workload
?.
CellValue
??
0
;
dept
.
PerforFee
=
dept
.
Income
*
(
dept
.
BasicFactor
+
dept
.
SlopeFactor
);
dept
.
PerforTotal
=
dept
.
PerforFee
+
dept
.
WorkloadFee
+
dept
.
OtherPerfor1
+
(
dept
.
MinimumFee
??
0
);
dept
.
RealGiveFee
=
(
dept
.
PerforTotal
*
dept
.
ScoringAverage
+
dept
.
Extra
+
dept
.
OtherPerfor2
)
*
dept
.
AdjustFactor
;
dept
.
Avg
=
dept
.
ManagerNumber
+
dept
.
Number
==
0
?
0
:
dept
.
PerforTotal
/
(
dept
.
ManagerNumber
+
dept
.
Number
);
totalValue
+=
(
dept
.
RealGiveFee
??
0
);
}
var
baiscnorm
=
new
res_baiscnorm
{
AllotID
=
allotId
,
PositionName
=
GetCustomMinimumName
(
guaranteeGroup
.
Target
),
TotelNumber
=
count
,
TotelValue
=
totalValue
,
AvgValue
=
count
==
0
?
0
:
totalValue
/
count
};
baiscnormList
.
Add
(
baiscnorm
);
}
}
/// <summary>
/// 生成自定义保底名称
/// </summary>
/// <param name="department"></param>
/// <returns></returns>
private
string
GetCustomMinimumName
(
string
department
)
{
return
$"
{
EnumHelper
.
GetDescription
(
MinimumType
.
自定义保底
)}
(
{
department
}
)"
;
}
/// <summary>
/// 获取药占比分割比例
/// </summary>
/// <param name="excel"></param>
...
...
performance/Performance.Services/AllotService.cs
View file @
ae146fc4
...
...
@@ -256,6 +256,10 @@ public void Generate(per_allot allot, string mail)
logManageService
.
WriteMsg
(
"计算保底绩效参考标准值"
,
"计算科室业绩"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
sheet
=
processComputService
.
Compute
(
excel
,
mergeSheets
,
minimumBaiscnorm
);
//计算科室自定义保底绩效范围
logManageService
.
WriteMsg
(
"计算保底绩效参考标准值"
,
"正在计算科室自定义保底绩效范围"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
processComputService
.
ComputeCustomMinimum
(
excel
,
mergeSheets
,
minimumBaiscnorm
,
allot
.
ID
);
//计算各人群人均保底绩效
logManageService
.
WriteMsg
(
"计算保底绩效参考标准值"
,
"正在生成保底绩效行政工勤人均绩效"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
minimumBaiscnorm2
=
resultComputeService
.
Compute
(
allot
,
excel
,
sheet
,
false
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment