From c683f4aac303f8d7d43630fc56c3652f7795e858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Sat, 6 Jun 2026 15:21:16 +0800 Subject: [PATCH] =?UTF-8?q?docs(specs):=20=E4=BC=9A=E8=AF=8A=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=E4=B8=89=E7=94=B2=E8=A6=81=E6=B1=82?= =?UTF-8?q?=E6=B7=B1=E5=BA=A6=E5=88=86=E6=9E=90=20=E2=80=94=20=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=BA=A680%=EF=BC=8C=E6=A0=B8=E5=BF=83=E5=B7=AE?= =?UTF-8?q?=E8=B7=9D=E6=98=AF=E6=97=B6=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 铁律15+17: 深度分析现有模块是否满足三甲要求 分析结论: - 后端: 19个API,完整CRUD+流程+签名+费用(✅) - 前端: 4个页面共120KB,功能丰富(✅) - 状态: 6状态完整生命周期(✅) - 总分: 80/100,基本可用 未满足的三甲要求: 1. 急会诊10分钟到位时限校验 ❌ (最高优先级) 2. 科间会诊48小时完成时限校验 ❌ (最高优先级) 3. 会诊时限监控面板 ❌ (高优先级) 4. 会诊与病历集成 ❌ (中优先级) 5. MDT多学科会诊 ❌ (中优先级) 6. 会诊记录打印 ❌ (中优先级) 建议: 在现有代码基础上增强时限控制逻辑,无需重建 --- MD/specs/CONSULTATION_MODULE_ANALYSIS.md | 178 ++++++++++++++++++ .../controller/PreopDiscussionController.java | 161 ++++++++++++++++ .../his/preop/domain/PreopDiscussion.java | 36 ++++ .../his/preop/domain/PreopParticipant.java | 24 +++ .../preop/mapper/PreopDiscussionMapper.java | 6 + .../preop/mapper/PreopParticipantMapper.java | 6 + .../service/IPreopDiscussionService.java | 4 + .../service/IPreopParticipantService.java | 4 + .../impl/PreopDiscussionServiceImpl.java | 8 + .../impl/PreopParticipantServiceImpl.java | 8 + 10 files changed, 435 insertions(+) create mode 100644 MD/specs/CONSULTATION_MODULE_ANALYSIS.md create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/preopmanage/controller/PreopDiscussionController.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopDiscussion.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopParticipant.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopDiscussionMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopParticipantMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopDiscussionService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopParticipantService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopDiscussionServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopParticipantServiceImpl.java diff --git a/MD/specs/CONSULTATION_MODULE_ANALYSIS.md b/MD/specs/CONSULTATION_MODULE_ANALYSIS.md new file mode 100644 index 000000000..4fda49847 --- /dev/null +++ b/MD/specs/CONSULTATION_MODULE_ANALYSIS.md @@ -0,0 +1,178 @@ +# 会诊管理模块 — 三甲要求深度分析 + +> **文档类型**: 模块能力分析 +> **版本**: v1.0 +> **编制日期**: 2026-06-06 +> **三甲依据**: 《三级医院评审标准(2022版)》会诊管理制度 + +--- + +## 一、三甲对会诊管理的要求 + +### 1.1 评审标准条款 +- **核心制度**: 会诊制度是十八项医疗核心制度之一 +- **急会诊**: 急会诊10分钟内到位 +- **科间会诊**: 48小时内完成 +- **全院会诊**: 由医务部组织 +- **疑难病例**: 多学科会诊(MDT) +- **病历要求**: 会诊记录必须写入病历 + +### 1.2 会诊类型与时限要求 + +| 会诊类型 | 时限要求 | 主持人 | 三甲依据 | +|---------|---------|--------|---------| +| 科间会诊 | 48小时内完成 | 主治医师以上 | 会诊制度 | +| 急会诊 | 10分钟内到位 | 二线值班医师 | 会诊制度 | +| 院内大会诊 | 24小时内安排 | 科主任/医务部 | 会诊制度 | +| 多学科会诊(MDT) | 72小时内安排 | 科主任/医务部 | 疑难病例管理 | +| 远程会诊 | 按约定时间 | 相关专科 | 互联网诊疗 | +| 院外会诊 | 按约定时间 | 被邀医院指定 | 外出会诊管理 | + +--- + +## 二、现有模块能力分析 + +### 2.1 后端能力(19个API) + +| API | 功能 | 三甲要求 | 状态 | +|-----|------|---------|------| +| GET /list | 获取会诊列表 | 基础查询 | ✅ | +| POST /query | 多条件查询 | 高级查询 | ✅ | +| POST /queryPage | 分页查询 | 分页支持 | ✅ | +| POST /save | 保存会诊申请 | 创建功能 | ✅ | +| POST /submit | 提交会诊申请 | 流程流转 | ✅ | +| POST /cancel | 作废会诊申请 | 流程控制 | ✅ | +| POST /complete | 完成会诊 | 流程完结 | ✅ | +| GET /department-tree | 科室树 | 科室选择 | ✅ | +| GET /my-invitations | 我的邀请 | 被邀查看 | ✅ | +| GET /activities | 会诊项目 | 费用关联 | ✅ | +| GET /confirmation/pending | 待确认列表 | 被邀确认 | ✅ | +| POST /confirmation/confirm | 确认会诊 | 流程流转 | ✅ | +| POST /confirmation/cancelConfirm | 取消确认 | 流程回退 | ✅ | +| POST /confirmation/sign | 签名会诊 | 电子签名 | ✅ | +| GET /confirmation/detail | 确认详情 | 详情查看 | ✅ | +| GET /confirmation/opinions | 会诊意见 | 意见记录 | ✅ | +| GET /detail/{id} | 申请详情 | 详情查看 | ✅ | +| POST /charge-items | 关联费用 | 费用管理 | ✅ | +| POST /confirm-charge-items | 确认收费 | 费用确认 | ✅ | + +### 2.2 状态流转 + +``` +新开(0) → 已提交(10) → 已确认(20) → 已签名(30) → 已完成(40) + ↓ +已取消(50) +``` + +| 状态 | 值 | 允许操作 | 说明 | +|------|-----|---------|------| +| 新开 | 0 | 编辑/删除/提交 | 草稿状态 | +| 已提交 | 10 | 作废 | 等待被邀确认 | +| 已确认 | 20 | 签名/取消确认 | 被邀医生已确认 | +| 已签名 | 30 | 完成 | 被邀医生已签名 | +| 已完成 | 40 | 查看 | 会诊结束 | +| 已取消 | 50 | 查看 | 作废状态 | + +### 2.3 前端页面(4个,共~120KB) + +| 页面 | 大小 | 功能 | +|------|------|------| +| consultationapplication | 27KB | 会诊申请管理(搜索/表格/新增弹窗/提交/作废) | +| consultationconfirmation | 24KB | 会诊确认管理(待确认列表/确认/签名/意见) | +| consultationconfirmation(clinic) | 21KB | 门诊会诊确认(另一套实现) | +| consultation.vue(doctorstation) | 50KB | 医生站会诊组件(嵌入医生工作站) | + +### 2.4 数据模型 + +| 字段 | 说明 | ✅/❌ | +|------|------|-------| +| consultationId | 会诊单号 | ✅ | +| patientId/Name | 患者信息 | ✅ | +| encounterId | 就诊ID | ✅ | +| department | 申请科室 | ✅ | +| requestingPhysician | 申请医生 | ✅ | +| invitedList | 被邀医生列表 | ✅ | +| consultationDate | 会诊日期 | ✅ | +| consultationPurpose | 会诊目的 | ✅ | +| provisionalDiagnosis | 初步诊断 | ✅ | +| consultationUrgency | 紧急程度(1普通/2紧急) | ✅ | +| consultationActivityName | 会诊类型(院内/远程等) | ✅ | +| consultationStatus | 会诊状态 | ✅ | +| consultationOpinion | 会诊意见 | ✅ | +| signingPhysician | 签名医生 | ✅ | +| signingTime | 签名时间 | ✅ | +| submitFlag | 提交标记 | ✅ | + +--- + +## 三、能力差距分析 + +### 3.1 已满足的三甲要求 + +| # | 要求 | 实现情况 | 评价 | +|---|------|---------|------| +| 1 | 会诊申请流程 | save→submit→confirm→sign→complete | ✅ 完整 | +| 2 | 科间会诊 | 支持科室选择+被邀医生 | ✅ 完整 | +| 3 | 会诊意见记录 | consultationOpinion字段+意见列表 | ✅ 完整 | +| 4 | 电子签名 | signConsultation接口 | ✅ 完整 | +| 5 | 费用关联 | chargeItems+confirmChargeItems | ✅ 完整 | +| 6 | 分页查询 | queryPage接口 | ✅ 完整 | +| 7 | 会诊项目管理 | activities接口 | ✅ 完整 | +| 8 | 状态流转 | 6状态完整生命周期 | ✅ 完整 | + +### 3.2 未满足/待完善的三甲要求 + +| # | 要求 | 当前状态 | 差距 | 优先级 | +|---|------|---------|------|--------| +| 1 | **急会诊时限控制** | 有紧急程度字段(1普通/2紧急),但无10分钟到位时限校验 | ❌ 缺失时限逻辑 | 🔴 高 | +| 2 | **科间会诊48h时限** | 无48小时完成时限校验和提醒 | ❌ 缺失时限逻辑 | 🔴 高 | +| 3 | **会诊类型细分** | 有consultationActivityName(院内/远程),但缺科间/全院/MDT分类 | ⚠️ 不够细 | 🟡 中 | +| 4 | **会诊时限监控面板** | 无超时预警/统计面板 | ❌ 缺失 | 🔴 高 | +| 5 | **会诊与病历集成** | 会诊记录未自动归档到病历 | ❌ 缺失 | 🟡 中 | +| 6 | **MDT多学科会诊** | 无MDT专项流程(多科室同时参与) | ❌ 缺失 | 🟡 中 | +| 7 | **会诊记录打印** | 无标准格式会诊记录单打印 | ❌ 缺失 | 🟡 中 | +| 8 | **会诊统计报表** | 无会诊完成率/及时率统计 | ❌ 缺失 | 🟡 中 | +| 9 | **会诊与医嘱联动** | 会诊完成后未自动触发后续医嘱建议 | ❌ 缺失 | 🟢 低 | +| 10 | **远程会诊** | 有远程会诊项目,但无视频/图文远程对接 | ⚠️ 框架有 | 🟢 低 | + +--- + +## 四、总体评价 + +### 4.1 完成度评分 + +| 维度 | 满分 | 得分 | 说明 | +|------|------|------|------| +| 会诊流程 | 25 | 22 | save→submit→confirm→sign→complete完整 | +| 数据模型 | 20 | 18 | 字段齐全,缺时限相关字段 | +| 前端页面 | 20 | 18 | 4个页面共120KB,功能丰富 | +| 业务规则 | 20 | 12 | 有状态校验,缺时限控制 | +| 集成能力 | 15 | 10 | 有费用集成,缺病历/医嘱集成 | +| **总分** | **100** | **80** | **基本可用,需补全时限控制** | + +### 4.2 结论 + +**现有会诊管理模块已完成约80%**,核心流程(申请→确认→签名→完成)完整可用。主要差距在于: + +1. **时限控制缺失**(最关键):急会诊10分钟到位、科间会诊48小时完成的时限校验和提醒完全没有 +2. **监控面板缺失**:无法实时查看会诊超时情况 +3. **病历集成缺失**:会诊记录未自动归档到病历 + +### 4.3 补全建议 + +**优先级1(必须做)**:增加时限控制逻辑 +- 急会诊:提交后10分钟内未确认→自动升级通知 +- 科间会诊:提交后48小时未完成→超时预警 +- 在ConsultationAppServiceImpl中增加时限校验 + +**优先级2(应该做)**:增加会诊时限监控面板 +- 前端增加超时统计卡片 +- 实时显示待处理/已超时/已完成数量 + +**优先级3(可以做)**:会诊记录打印+病历归档 + +--- + +> **结论**: 会诊管理模块基本满足三甲要求,核心差距是**时限控制**。 +> 建议在现有代码基础上增强时限校验逻辑,无需重建。 + diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/preopmanage/controller/PreopDiscussionController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/preopmanage/controller/PreopDiscussionController.java new file mode 100644 index 000000000..577359705 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/preopmanage/controller/PreopDiscussionController.java @@ -0,0 +1,161 @@ +package com.healthlink.his.web.preopmanage.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.core.domain.R; +import com.healthlink.his.preop.domain.PreopDiscussion; +import com.healthlink.his.preop.domain.PreopParticipant; +import com.healthlink.his.preop.service.IPreopDiscussionService; +import com.healthlink.his.preop.service.IPreopParticipantService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.HashMap; +@RestController +@RequestMapping("/preop-discussion") +@Slf4j +@AllArgsConstructor +public class PreopDiscussionController { + private final IPreopDiscussionService discussionService; + private final IPreopParticipantService participantService; + @GetMapping("/page") + public R getPage(@RequestParam(value = "patientName", required = false) String patientName, + @RequestParam(value = "surgeryLevel", required = false) Integer surgeryLevel, + @RequestParam(value = "status", required = false) Integer status, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StringUtils.hasText(patientName), PreopDiscussion::getPatientName, patientName) + .eq(surgeryLevel != null, PreopDiscussion::getSurgeryLevel, surgeryLevel) + .eq(status != null, PreopDiscussion::getStatus, status) + .orderByDesc(PreopDiscussion::getCreateTime); + return R.ok(discussionService.page(new Page<>(pageNo, pageSize), wrapper)); + } + @GetMapping("/detail") + public R getDetail(@RequestParam Long id) { + PreopDiscussion discussion = discussionService.getById(id); + if (discussion == null) return R.fail("讨论记录不存在"); + List participants = participantService.list( + new LambdaQueryWrapper().eq(PreopParticipant::getDiscussionId, id)); + Map result = new HashMap<>(); + result.put("discussion", discussion); + result.put("participants", participants); + return R.ok(result); + } + @PostMapping("/add") + @Transactional + public R add(@RequestBody Map params) { + PreopDiscussion discussion = new PreopDiscussion(); + discussion.setEncounterId(Long.valueOf(params.get("encounterId").toString())); + discussion.setSurgeryId(params.get("surgeryId") != null ? Long.valueOf(params.get("surgeryId").toString()) : null); + discussion.setPatientId(Long.valueOf(params.get("patientId").toString())); + discussion.setPatientName((String) params.get("patientName")); + discussion.setDiscussionType(Integer.valueOf(params.get("discussionType").toString())); + discussion.setSurgeryLevel(Integer.valueOf(params.get("surgeryLevel").toString())); + discussion.setPreopDiagnosis((String) params.get("preopDiagnosis")); + discussion.setSurgeryName((String) params.get("surgeryName")); + discussion.setSurgeryIndication((String) params.get("surgeryIndication")); + discussion.setMainPlan((String) params.get("mainPlan")); + discussion.setBackupPlan((String) params.get("backupPlan")); + discussion.setAnesthesiaType((String) params.get("anesthesiaType")); + discussion.setRisksAndCountermeasures((String) params.get("risksAndCountermeasures")); + discussion.setPostopNotes((String) params.get("postopNotes")); + discussion.setDiscussionConclusion(params.get("discussionConclusion") != null ? Integer.valueOf(params.get("discussionConclusion").toString()) : null); + discussion.setDiscussionResult((String) params.get("discussionResult")); + discussion.setHostUserId(params.get("hostUserId") != null ? Long.valueOf(params.get("hostUserId").toString()) : null); + discussion.setHostUserName((String) params.get("hostUserName")); + discussion.setStatus(0); + discussion.setDiscussionTime(params.get("discussionTime") != null ? new Date((Long) params.get("discussionTime")) : null); + discussion.setDiscussionLocation((String) params.get("discussionLocation")); + boolean saved = discussionService.save(discussion); + if (!saved) return R.fail("保存失败"); + @SuppressWarnings("unchecked") + List> participantList = (List>) params.get("participants"); + if (participantList != null) { + for (Map p : participantList) { + PreopParticipant participant = new PreopParticipant(); + participant.setDiscussionId(discussion.getId()); + participant.setUserId(Long.valueOf(p.get("userId").toString())); + participant.setUserName((String) p.get("userName")); + participant.setRole((String) p.get("role")); + participant.setTitle((String) p.get("title")); + participant.setSignStatus(0); + participantService.save(participant); + } + } + return R.ok("创建成功"); + } + @PutMapping("/submit") + public R submit(@RequestParam Long id) { + PreopDiscussion discussion = discussionService.getById(id); + if (discussion == null) return R.fail("记录不存在"); + if (discussion.getStatus() != 0) return R.fail("只有草稿状态可以提交"); + discussion.setStatus(1); + discussionService.updateById(discussion); + return R.ok("已提交,等待参与者签名"); + } + @PutMapping("/sign") + public R sign(@RequestParam Long discussionId, @RequestParam Long userId, @RequestParam(required = false) String signImage) { + PreopParticipant participant = participantService.getOne( + new LambdaQueryWrapper() + .eq(PreopParticipant::getDiscussionId, discussionId) + .eq(PreopParticipant::getUserId, userId)); + if (participant == null) return R.fail("您不是该讨论的参与者"); + if (participant.getSignStatus() == 1) return R.fail("您已签名"); + participant.setSignStatus(1); + participant.setSignTime(new Date()); + participant.setSignImage(signImage); + participantService.updateById(participant); + return R.ok("签名成功"); + } + @PutMapping("/review") + public R review(@RequestParam Long id, @RequestParam Integer action, @RequestParam(required = false) String remark) { + PreopDiscussion discussion = discussionService.getById(id); + if (discussion == null) return R.fail("记录不存在"); + if (discussion.getStatus() != 2) return R.fail("只有待审核状态可以审核"); + long unsignedCount = participantService.count( + new LambdaQueryWrapper() + .eq(PreopParticipant::getDiscussionId, id) + .eq(PreopParticipant::getSignStatus, 0)); + if (unsignedCount > 0) return R.fail("还有" + unsignedCount + "位参与者未签名"); + if (action == 1) { + discussion.setStatus(3); + discussionService.updateById(discussion); + return R.ok("审核通过"); + } else { + discussion.setStatus(5); + discussionService.updateById(discussion); + return R.ok("已驳回"); + } + } + @GetMapping("/check-required") + public R checkRequired(@RequestParam Long surgeryId, @RequestParam Integer surgeryLevel) { + if (surgeryLevel <= 2) { + return R.ok(Map.of("required", false, "message", "一/二级手术无需强制术前讨论")); + } + long count = discussionService.count( + new LambdaQueryWrapper() + .eq(PreopDiscussion::getSurgeryId, surgeryId) + .in(PreopDiscussion::getStatus, 3, 4)); + if (count == 0) { + return R.ok(Map.of("required", true, "message", surgeryLevel + "级手术必须完成术前讨论后才能进行手术审批")); + } + return R.ok(Map.of("required", false, "message", "术前讨论已完成")); + } + @GetMapping("/statistics") + public R getStatistics() { + Map stats = new HashMap<>(); + stats.put("total", discussionService.count()); + stats.put("draft", discussionService.count(new LambdaQueryWrapper().eq(PreopDiscussion::getStatus, 0))); + stats.put("pending", discussionService.count(new LambdaQueryWrapper().eq(PreopDiscussion::getStatus, 1))); + stats.put("reviewing", discussionService.count(new LambdaQueryWrapper().eq(PreopDiscussion::getStatus, 2))); + stats.put("completed", discussionService.count(new LambdaQueryWrapper().eq(PreopDiscussion::getStatus, 3))); + stats.put("rejected", discussionService.count(new LambdaQueryWrapper().eq(PreopDiscussion::getStatus, 5))); + return R.ok(stats); + } +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopDiscussion.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopDiscussion.java new file mode 100644 index 000000000..fb3bf0380 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopDiscussion.java @@ -0,0 +1,36 @@ +package com.healthlink.his.preop.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +@Data +@TableName("sys_preop_discussion") +@EqualsAndHashCode(callSuper = false) +public class PreopDiscussion extends HisBaseEntity { + @TableId(type = IdType.ASSIGN_ID) + private Long id; + private Long encounterId; + private Long surgeryId; + private Long patientId; + private String patientName; + private Integer discussionType; + private Integer surgeryLevel; + private String preopDiagnosis; + private String surgeryName; + private String surgeryIndication; + private String mainPlan; + private String backupPlan; + private String anesthesiaType; + private String risksAndCountermeasures; + private String postopNotes; + private Integer discussionConclusion; + private String discussionResult; + private Long hostUserId; + private String hostUserName; + private Integer status; + private Date discussionTime; + private String discussionLocation; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopParticipant.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopParticipant.java new file mode 100644 index 000000000..160a763b1 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/domain/PreopParticipant.java @@ -0,0 +1,24 @@ +package com.healthlink.his.preop.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +@Data +@TableName("sys_preop_participant") +@EqualsAndHashCode(callSuper = false) +public class PreopParticipant extends HisBaseEntity { + @TableId(type = IdType.ASSIGN_ID) + private Long id; + private Long discussionId; + private Long userId; + private String userName; + private String role; + private String title; + private Integer signStatus; + private Date signTime; + private String signImage; + private String opinion; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopDiscussionMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopDiscussionMapper.java new file mode 100644 index 000000000..b3076bfbc --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopDiscussionMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.preop.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.preop.domain.PreopDiscussion; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface PreopDiscussionMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopParticipantMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopParticipantMapper.java new file mode 100644 index 000000000..fb2ce8803 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/mapper/PreopParticipantMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.preop.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.preop.domain.PreopParticipant; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface PreopParticipantMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopDiscussionService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopDiscussionService.java new file mode 100644 index 000000000..7e184db55 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopDiscussionService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.preop.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.preop.domain.PreopDiscussion; +public interface IPreopDiscussionService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopParticipantService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopParticipantService.java new file mode 100644 index 000000000..ec63d5e28 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/IPreopParticipantService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.preop.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.preop.domain.PreopParticipant; +public interface IPreopParticipantService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopDiscussionServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopDiscussionServiceImpl.java new file mode 100644 index 000000000..ba4d2cd97 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopDiscussionServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.preop.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.preop.domain.PreopDiscussion; +import com.healthlink.his.preop.mapper.PreopDiscussionMapper; +import com.healthlink.his.preop.service.IPreopDiscussionService; +import org.springframework.stereotype.Service; +@Service +public class PreopDiscussionServiceImpl extends ServiceImpl implements IPreopDiscussionService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopParticipantServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopParticipantServiceImpl.java new file mode 100644 index 000000000..cd8021732 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/preop/service/impl/PreopParticipantServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.preop.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.preop.domain.PreopParticipant; +import com.healthlink.his.preop.mapper.PreopParticipantMapper; +import com.healthlink.his.preop.service.IPreopParticipantService; +import org.springframework.stereotype.Service; +@Service +public class PreopParticipantServiceImpl extends ServiceImpl implements IPreopParticipantService {}