fix(emr): 修复医生账号无权限访问电子病历管理
- 将EMR模块权限从 inpatient:emr 改为通用的 emr 权限 - 添加EMR数据同步菜单 - 为医生角色添加EMR相关权限
This commit is contained in:
@@ -21,7 +21,7 @@ public class EmrCompletenessController {
|
|||||||
private final IEmrCompletenessAppService emrCompletenessAppService;
|
private final IEmrCompletenessAppService emrCompletenessAppService;
|
||||||
|
|
||||||
@PostMapping("/check")
|
@PostMapping("/check")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||||
@Operation(summary = "执行病历完整性检查")
|
@Operation(summary = "执行病历完整性检查")
|
||||||
public R<Map<String, Object>> checkCompleteness(
|
public R<Map<String, Object>> checkCompleteness(
|
||||||
@RequestParam("emrId") Long emrId,
|
@RequestParam("emrId") Long emrId,
|
||||||
@@ -30,7 +30,7 @@ public class EmrCompletenessController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/results/{emrId}")
|
@GetMapping("/results/{emrId}")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "获取完整性检查结果")
|
@Operation(summary = "获取完整性检查结果")
|
||||||
public R<?> getCheckResults(@PathVariable Long emrId) {
|
public R<?> getCheckResults(@PathVariable Long emrId) {
|
||||||
return R.ok(emrCompletenessAppService.getCheckResults(emrId));
|
return R.ok(emrCompletenessAppService.getCheckResults(emrId));
|
||||||
|
|||||||
@@ -23,28 +23,28 @@ public class EmrDataWarehouseController {
|
|||||||
private final IEmrDataWarehouseAppService emrDataWarehouseAppService;
|
private final IEmrDataWarehouseAppService emrDataWarehouseAppService;
|
||||||
|
|
||||||
@PostMapping("/extract")
|
@PostMapping("/extract")
|
||||||
@PreAuthorize("@ss.hasPermi('infection:emr:edit')")
|
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||||
@Operation(summary = "提取结构化数据")
|
@Operation(summary = "提取结构化数据")
|
||||||
public R<List<EmrStructuredData>> extractStructuredData(@RequestParam("emrId") Long emrId) {
|
public R<List<EmrStructuredData>> extractStructuredData(@RequestParam("emrId") Long emrId) {
|
||||||
return R.ok(emrDataWarehouseAppService.extractStructuredData(emrId));
|
return R.ok(emrDataWarehouseAppService.extractStructuredData(emrId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/data/{encounterId}")
|
@GetMapping("/data/{encounterId}")
|
||||||
@PreAuthorize("@ss.hasPermi('infection:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "查询结构化数据")
|
@Operation(summary = "查询结构化数据")
|
||||||
public R<List<EmrStructuredData>> getStructuredData(@PathVariable Long encounterId) {
|
public R<List<EmrStructuredData>> getStructuredData(@PathVariable Long encounterId) {
|
||||||
return R.ok(emrDataWarehouseAppService.getStructuredData(encounterId));
|
return R.ok(emrDataWarehouseAppService.getStructuredData(encounterId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/quality-score")
|
@PostMapping("/quality-score")
|
||||||
@PreAuthorize("@ss.hasPermi('infection:emr:edit')")
|
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||||
@Operation(summary = "计算质控评分")
|
@Operation(summary = "计算质控评分")
|
||||||
public R<EmrQualityScore> calculateQualityScore(@RequestParam("encounterId") Long encounterId) {
|
public R<EmrQualityScore> calculateQualityScore(@RequestParam("encounterId") Long encounterId) {
|
||||||
return R.ok(emrDataWarehouseAppService.calculateQualityScore(encounterId));
|
return R.ok(emrDataWarehouseAppService.calculateQualityScore(encounterId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/quality-scores")
|
@GetMapping("/quality-scores")
|
||||||
@PreAuthorize("@ss.hasPermi('infection:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "查询质控评分列表")
|
@Operation(summary = "查询质控评分列表")
|
||||||
public R<List<EmrQualityScore>> getQualityScores(@RequestParam("encounterId") Long encounterId) {
|
public R<List<EmrQualityScore>> getQualityScores(@RequestParam("encounterId") Long encounterId) {
|
||||||
return R.ok(emrDataWarehouseAppService.getQualityScores(encounterId));
|
return R.ok(emrDataWarehouseAppService.getQualityScores(encounterId));
|
||||||
|
|||||||
@@ -30,21 +30,21 @@ public class EmrRevisionController {
|
|||||||
private final IEmrRevisionAppService emrRevisionAppService;
|
private final IEmrRevisionAppService emrRevisionAppService;
|
||||||
|
|
||||||
@PostMapping("/record")
|
@PostMapping("/record")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||||
@Operation(summary = "记录修改留痕")
|
@Operation(summary = "记录修改留痕")
|
||||||
public R<EmrRevision> recordRevision(@RequestBody EmrRevision revision) {
|
public R<EmrRevision> recordRevision(@RequestBody EmrRevision revision) {
|
||||||
return R.ok(emrRevisionAppService.recordRevision(revision));
|
return R.ok(emrRevisionAppService.recordRevision(revision));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list/{emrId}")
|
@GetMapping("/list/{emrId}")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "获取修改历史列表")
|
@Operation(summary = "获取修改历史列表")
|
||||||
public R<?> getRevisions(@PathVariable Long emrId) {
|
public R<?> getRevisions(@PathVariable Long emrId) {
|
||||||
return R.ok(emrRevisionAppService.getRevisions(emrId));
|
return R.ok(emrRevisionAppService.getRevisions(emrId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "分页查询修改留痕")
|
@Operation(summary = "分页查询修改留痕")
|
||||||
public R<?> getPage(
|
public R<?> getPage(
|
||||||
@RequestParam(value = "emrId", required = false) Long emrId,
|
@RequestParam(value = "emrId", required = false) Long emrId,
|
||||||
@@ -61,14 +61,14 @@ public class EmrRevisionController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "获取修订详情")
|
@Operation(summary = "获取修订详情")
|
||||||
public R<?> getById(@PathVariable Long id) {
|
public R<?> getById(@PathVariable Long id) {
|
||||||
return R.ok(emrRevisionAppService.getRevisionDetail(id));
|
return R.ok(emrRevisionAppService.getRevisionDetail(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/compare")
|
@GetMapping("/compare")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "对比两个修订版本")
|
@Operation(summary = "对比两个修订版本")
|
||||||
public R<?> compareRevisions(
|
public R<?> compareRevisions(
|
||||||
@RequestParam("revisionId1") Long id1,
|
@RequestParam("revisionId1") Long id1,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class EmrTimelinessController {
|
|||||||
private final IEmrTimelinessAppService emrTimelinessAppService;
|
private final IEmrTimelinessAppService emrTimelinessAppService;
|
||||||
|
|
||||||
@PostMapping("/check")
|
@PostMapping("/check")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||||
@Operation(summary = "执行病历时限检查")
|
@Operation(summary = "执行病历时限检查")
|
||||||
public R<EmrTimelinessStatisticsDto> checkTimeliness(
|
public R<EmrTimelinessStatisticsDto> checkTimeliness(
|
||||||
@RequestParam(value = "encounterId", required = false) Long encounterId) {
|
@RequestParam(value = "encounterId", required = false) Long encounterId) {
|
||||||
@@ -31,7 +31,7 @@ public class EmrTimelinessController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/alerts")
|
@GetMapping("/alerts")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "获取病历时限提醒列表")
|
@Operation(summary = "获取病历时限提醒列表")
|
||||||
public R<Map<String, Object>> getTimelinessAlerts(
|
public R<Map<String, Object>> getTimelinessAlerts(
|
||||||
@RequestParam(value = "emrType", required = false) String emrType,
|
@RequestParam(value = "emrType", required = false) String emrType,
|
||||||
|
|||||||
@@ -20,21 +20,21 @@ public class EmrVersionController {
|
|||||||
private final IEmrVersionAppService emrVersionAppService;
|
private final IEmrVersionAppService emrVersionAppService;
|
||||||
|
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:edit')")
|
@PreAuthorize("@ss.hasPermi('emr:edit')")
|
||||||
@Operation(summary = "保存病历版本")
|
@Operation(summary = "保存病历版本")
|
||||||
public R<EmrVersion> saveVersion(@RequestBody EmrVersion version) {
|
public R<EmrVersion> saveVersion(@RequestBody EmrVersion version) {
|
||||||
return R.ok(emrVersionAppService.saveVersion(version));
|
return R.ok(emrVersionAppService.saveVersion(version));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list/{emrId}")
|
@GetMapping("/list/{emrId}")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "获取病历版本列表")
|
@Operation(summary = "获取病历版本列表")
|
||||||
public R<?> getVersions(@PathVariable Long emrId) {
|
public R<?> getVersions(@PathVariable Long emrId) {
|
||||||
return R.ok(emrVersionAppService.getVersions(emrId));
|
return R.ok(emrVersionAppService.getVersions(emrId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/compare")
|
@GetMapping("/compare")
|
||||||
@PreAuthorize("@ss.hasPermi('inpatient:emr:list')")
|
@PreAuthorize("@ss.hasPermi('emr:list')")
|
||||||
@Operation(summary = "对比两个版本")
|
@Operation(summary = "对比两个版本")
|
||||||
public R<?> compareVersions(
|
public R<?> compareVersions(
|
||||||
@RequestParam("versionId1") Long versionId1,
|
@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