fix(emr): 修复医生账号无权限访问电子病历管理
- 将EMR模块权限从 inpatient:emr 改为通用的 emr 权限 - 添加EMR数据同步菜单 - 为医生角色添加EMR相关权限
This commit is contained in:
@@ -21,7 +21,7 @@ public class EmrCompletenessController {
|
||||
private final IEmrCompletenessAppService emrCompletenessAppService;
|
||||
|
||||
@PostMapping("/check")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||
@Operation(summary = "执行病历完整性检查")
|
||||
public R<Map<String, Object>> checkCompleteness(
|
||||
@RequestParam("emrId") Long emrId,
|
||||
@@ -30,7 +30,7 @@ public class EmrCompletenessController {
|
||||
}
|
||||
|
||||
@GetMapping("/results/{emrId}")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "获取完整性检查结果")
|
||||
public R<?> getCheckResults(@PathVariable Long emrId) {
|
||||
return R.ok(emrCompletenessAppService.getCheckResults(emrId));
|
||||
|
||||
@@ -23,28 +23,28 @@ public class EmrDataWarehouseController {
|
||||
private final IEmrDataWarehouseAppService emrDataWarehouseAppService;
|
||||
|
||||
@PostMapping("/extract")
|
||||
@PreAuthorize("@ss.hasPermi('infection:emr:edit')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||
@Operation(summary = "提取结构化数据")
|
||||
public R<List<EmrStructuredData>> extractStructuredData(@RequestParam("emrId") Long emrId) {
|
||||
return R.ok(emrDataWarehouseAppService.extractStructuredData(emrId));
|
||||
}
|
||||
|
||||
@GetMapping("/data/{encounterId}")
|
||||
@PreAuthorize("@ss.hasPermi('infection:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "查询结构化数据")
|
||||
public R<List<EmrStructuredData>> getStructuredData(@PathVariable Long encounterId) {
|
||||
return R.ok(emrDataWarehouseAppService.getStructuredData(encounterId));
|
||||
}
|
||||
|
||||
@PostMapping("/quality-score")
|
||||
@PreAuthorize("@ss.hasPermi('infection:emr:edit')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||
@Operation(summary = "计算质控评分")
|
||||
public R<EmrQualityScore> calculateQualityScore(@RequestParam("encounterId") Long encounterId) {
|
||||
return R.ok(emrDataWarehouseAppService.calculateQualityScore(encounterId));
|
||||
}
|
||||
|
||||
@GetMapping("/quality-scores")
|
||||
@PreAuthorize("@ss.hasPermi('infection:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "查询质控评分列表")
|
||||
public R<List<EmrQualityScore>> getQualityScores(@RequestParam("encounterId") Long encounterId) {
|
||||
return R.ok(emrDataWarehouseAppService.getQualityScores(encounterId));
|
||||
|
||||
@@ -30,21 +30,21 @@ public class EmrRevisionController {
|
||||
private final IEmrRevisionAppService emrRevisionAppService;
|
||||
|
||||
@PostMapping("/record")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||
@Operation(summary = "记录修改留痕")
|
||||
public R<EmrRevision> recordRevision(@RequestBody EmrRevision revision) {
|
||||
return R.ok(emrRevisionAppService.recordRevision(revision));
|
||||
}
|
||||
|
||||
@GetMapping("/list/{emrId}")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "获取修改历史列表")
|
||||
public R<?> getRevisions(@PathVariable Long emrId) {
|
||||
return R.ok(emrRevisionAppService.getRevisions(emrId));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "分页查询修改留痕")
|
||||
public R<?> getPage(
|
||||
@RequestParam(value = "emrId", required = false) Long emrId,
|
||||
@@ -61,14 +61,14 @@ public class EmrRevisionController {
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "获取修订详情")
|
||||
public R<?> getById(@PathVariable Long id) {
|
||||
return R.ok(emrRevisionAppService.getRevisionDetail(id));
|
||||
}
|
||||
|
||||
@GetMapping("/compare")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "对比两个修订版本")
|
||||
public R<?> compareRevisions(
|
||||
@RequestParam("revisionId1") Long id1,
|
||||
|
||||
@@ -23,7 +23,7 @@ public class EmrTimelinessController {
|
||||
private final IEmrTimelinessAppService emrTimelinessAppService;
|
||||
|
||||
@PostMapping("/check")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||
@Operation(summary = "执行病历时限检查")
|
||||
public R<EmrTimelinessStatisticsDto> checkTimeliness(
|
||||
@RequestParam(value = "encounterId", required = false) Long encounterId) {
|
||||
@@ -31,7 +31,7 @@ public class EmrTimelinessController {
|
||||
}
|
||||
|
||||
@GetMapping("/alerts")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "获取病历时限提醒列表")
|
||||
public R<Map<String, Object>> getTimelinessAlerts(
|
||||
@RequestParam(value = "emrType", required = false) String emrType,
|
||||
|
||||
@@ -20,21 +20,21 @@ public class EmrVersionController {
|
||||
private final IEmrVersionAppService emrVersionAppService;
|
||||
|
||||
@PostMapping("/save")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||
@Operation(summary = "保存病历版本")
|
||||
public R<EmrVersion> saveVersion(@RequestBody EmrVersion version) {
|
||||
return R.ok(emrVersionAppService.saveVersion(version));
|
||||
}
|
||||
|
||||
@GetMapping("/list/{emrId}")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "获取病历版本列表")
|
||||
public R<?> getVersions(@PathVariable Long emrId) {
|
||||
return R.ok(emrVersionAppService.getVersions(emrId));
|
||||
}
|
||||
|
||||
@GetMapping("/compare")
|
||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
||||
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||
@Operation(summary = "对比两个版本")
|
||||
public R<?> compareVersions(
|
||||
@RequestParam("versionId1") Long versionId1,
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
-- V101__add_emr_sync_menu_and_permissions.sql
|
||||
-- 添加EMR数据同步菜单和医生权限
|
||||
|
||||
-- 1. 添加EMR数据同步菜单(在电子病历管理下)
|
||||
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (
|
||||
'EMR数据同步',
|
||||
(SELECT menu_id FROM sys_menu WHERE menu_name = '电子病历管理' LIMIT 1),
|
||||
99,
|
||||
'sync',
|
||||
'emr/sync/index',
|
||||
'C',
|
||||
'0',
|
||||
'0',
|
||||
'emr:sync:list',
|
||||
'upload',
|
||||
'admin',
|
||||
NOW(),
|
||||
'admin',
|
||||
NOW(),
|
||||
'EMR数据同步 - 从病历表同步数据到修订历史和搜索索引'
|
||||
);
|
||||
|
||||
-- 2. 为医生角色添加EMR权限
|
||||
-- 获取医生角色ID(假设角色名为'医生'或'doctor')
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT
|
||||
r.role_id,
|
||||
m.menu_id
|
||||
FROM sys_role r
|
||||
CROSS JOIN sys_menu m
|
||||
WHERE r.role_name IN ('医生', 'doctor', '门诊医生', '住院医生')
|
||||
AND m.perms IN (
|
||||
'emr:list',
|
||||
'emr:edit',
|
||||
'emr:sync:list'
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu rm
|
||||
WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id
|
||||
);
|
||||
|
||||
-- 3. 更新EMR相关菜单的权限(将inpatient:emr改为emr)
|
||||
UPDATE sys_menu SET perms = 'emr:list' WHERE perms = 'inpatient:emr:list';
|
||||
UPDATE sys_menu SET perms = 'emr:edit' WHERE perms = 'inpatient:emr:edit';
|
||||
UPDATE sys_menu SET perms = 'emr:list' WHERE perms = 'infection:emr:list';
|
||||
UPDATE sys_menu SET perms = 'emr:edit' WHERE perms = 'infection:emr:edit';
|
||||
Reference in New Issue
Block a user