From 21dd790dd98dc345efecf6543e2e319243f23f43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Sun, 7 Jun 2026 11:22:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(V35):=20P2=E6=B7=B1=E5=BA=A6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20=E2=80=94=20=E6=8A=A4=E7=90=86=E8=AF=84=E4=BC=B0/?= =?UTF-8?q?=E7=9F=A5=E6=83=85=E5=90=8C=E6=84=8F/DRG=E9=A2=84=E8=AD=A6/?= =?UTF-8?q?=E6=8A=97=E8=8F=8C=E7=AE=A1=E7=90=86/120=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit V35 Flyway迁移: - 护理评估动态评分+干预效果追踪(nursing_assessment_dynamic) - 知情同意电子签名+版本管理(informed_consent_enhanced) - DRG费用异常预警(drg_cost_alert) - 抗菌药物分级管理增强(antibiotic_management_enhanced) - 急诊120院前联动(emergency_ambulance_link) 后端 EnhancementController: 1. 护理评估: 自动风险等级计算(FALL/PRESSURE/NUTRITION/PAIN/THROMBOSIS) 干预→再评估→效果自动判断(IMPROVED/STABLE/WORSENED)+趋势分析 2. 知情同意: 草稿→待签→已签,电子签名+版本管理+撤销+过期管理 3. DRG预警: 费用偏差自动计算+级别判定(CRITICAL/WARNING/INFO) 4. 抗菌药物: 限制/特殊/非限制三级分级,DDD值追踪,联合用药审核 5. 120联动: 派车→到达→转运→到达→交接全流程追踪 前端 5个页面: - enhanced-nursing: 评估动态评分+趋势箭头(↑↓→) - enhanced-consent: 电子签名状态+版本管理 - enhanced-drg-alert: 费用偏差百分比可视化 - enhanced-antibiotic: 分级标签+审核状态 - enhanced-ambulance: 120全流程状态追踪 --- .../controller/EnhancementController.java | 369 ++++++++++++++++++ .../db/migration/V35__p2_enhancement.sql | 185 +++++++++ .../domain/AntibioticManagementEnhanced.java | 21 + .../his/crossmodule/domain/DrgCostAlert.java | 19 + .../domain/EmergencyAmbulanceLink.java | 20 + .../domain/InformedConsentEnhanced.java | 20 + .../domain/NursingAssessmentDynamic.java | 19 + .../AntibioticManagementEnhancedMapper.java | 6 + .../mapper/DrgCostAlertMapper.java | 6 + .../mapper/EmergencyAmbulanceLinkMapper.java | 6 + .../mapper/InformedConsentEnhancedMapper.java | 6 + .../NursingAssessmentDynamicMapper.java | 6 + .../IAntibioticManagementEnhancedService.java | 4 + .../service/IDrgCostAlertService.java | 4 + .../IEmergencyAmbulanceLinkService.java | 4 + .../IInformedConsentEnhancedService.java | 4 + .../INursingAssessmentDynamicService.java | 4 + ...tibioticManagementEnhancedServiceImpl.java | 8 + .../service/impl/DrgCostAlertServiceImpl.java | 8 + .../EmergencyAmbulanceLinkServiceImpl.java | 8 + .../InformedConsentEnhancedServiceImpl.java | 8 + .../NursingAssessmentDynamicServiceImpl.java | 8 + .../crossmodule/enhanced-ambulance/api.js | 4 + .../crossmodule/enhanced-ambulance/index.vue | 43 ++ .../crossmodule/enhanced-antibiotic/api.js | 4 + .../crossmodule/enhanced-antibiotic/index.vue | 41 ++ .../views/crossmodule/enhanced-consent/api.js | 4 + .../crossmodule/enhanced-consent/index.vue | 45 +++ .../crossmodule/enhanced-drg-alert/api.js | 4 + .../crossmodule/enhanced-drg-alert/index.vue | 48 +++ .../views/crossmodule/enhanced-nursing/api.js | 4 + .../crossmodule/enhanced-nursing/index.vue | 58 +++ 32 files changed, 998 insertions(+) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/crossmodule/controller/EnhancementController.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V35__p2_enhancement.sql create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/AntibioticManagementEnhanced.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/DrgCostAlert.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/EmergencyAmbulanceLink.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/InformedConsentEnhanced.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/NursingAssessmentDynamic.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/AntibioticManagementEnhancedMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/DrgCostAlertMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/EmergencyAmbulanceLinkMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/InformedConsentEnhancedMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/NursingAssessmentDynamicMapper.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IAntibioticManagementEnhancedService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IDrgCostAlertService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IEmergencyAmbulanceLinkService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IInformedConsentEnhancedService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/INursingAssessmentDynamicService.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/AntibioticManagementEnhancedServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/DrgCostAlertServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/EmergencyAmbulanceLinkServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/InformedConsentEnhancedServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/NursingAssessmentDynamicServiceImpl.java create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/api.js create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/index.vue create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/api.js create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/index.vue create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-consent/api.js create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-consent/index.vue create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/api.js create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/index.vue create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-nursing/api.js create mode 100644 healthlink-his-ui/src/views/crossmodule/enhanced-nursing/index.vue diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/crossmodule/controller/EnhancementController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/crossmodule/controller/EnhancementController.java new file mode 100644 index 000000000..059c14c74 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/crossmodule/controller/EnhancementController.java @@ -0,0 +1,369 @@ +package com.healthlink.his.web.crossmodule.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.core.domain.R; +import com.healthlink.his.crossmodule.domain.*; +import com.healthlink.his.crossmodule.service.*; +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.math.BigDecimal; +import java.util.*; + +/** + * P2深度优化 Controller — V35 + * + * 1. 护理评估动态评分+干预效果追踪: 评估→干预→再评估→效果判断,动态趋势分析 + * 2. 知情同意电子签名+版本管理: 草稿→待签→已签,版本追溯+撤销+过期管理 + * 3. DRG费用异常预警: 费用偏差/住院日偏差/非计划再入院自动检测 + * 4. 抗菌药物分级管理增强: 限制/特殊/非限制分级,DDD值追踪,联合用药审核 + * 5. 急诊120院前联动: 派车→到达→转运→到达→交接全流程追踪+院前预警 + */ +@RestController +@RequestMapping("/enhancement") +@Slf4j +@AllArgsConstructor +public class EnhancementController { + + private final INursingAssessmentDynamicService assessService; + private final IInformedConsentEnhancedService consentService; + private final IDrgCostAlertService drgAlertService; + private final IAntibioticManagementEnhancedService antibioticService; + private final IEmergencyAmbulanceLinkService ambulanceService; + + // ==================== 1. 护理评估动态评分 ==================== + + @GetMapping("/nursing-assessment/page") + public R getAssessPage( + @RequestParam(value = "patientName", required = false) String patientName, + @RequestParam(value = "assessmentType", required = false) String type, + @RequestParam(value = "riskLevel", required = false) String risk, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.like(StringUtils.hasText(patientName), NursingAssessmentDynamic::getPatientName, patientName) + .eq(StringUtils.hasText(type), NursingAssessmentDynamic::getAssessmentType, type) + .eq(StringUtils.hasText(risk), NursingAssessmentDynamic::getRiskLevel, risk) + .orderByDesc(NursingAssessmentDynamic::getAssessmentDate); + return R.ok(assessService.page(new Page<>(pageNo, pageSize), w)); + } + + @GetMapping("/nursing-assessment/trend") + public R getAssessmentTrend( + @RequestParam("encounterId") Long encounterId, + @RequestParam("assessmentType") String type) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(NursingAssessmentDynamic::getEncounterId, encounterId) + .eq(NursingAssessmentDynamic::getAssessmentType, type) + .orderByAsc(NursingAssessmentDynamic::getAssessmentDate); + List list = assessService.list(w); + Map trend = new HashMap<>(); + trend.put("assessments", list); + trend.put("count", list.size()); + if (list.size() >= 2) { + int first = list.get(0).getScore(); + int last = list.get(list.size() - 1).getScore(); + trend.put("trend", last < first ? "IMPROVED" : last > first ? "WORSENED" : "STABLE"); + trend.put("scoreChange", last - first); + } + return R.ok(trend); + } + + @PostMapping("/nursing-assessment/add") + @Transactional(rollbackFor = Exception.class) + public R addAssessment(@RequestBody NursingAssessmentDynamic assess) { + // 自动计算风险等级 + assess.setRiskLevel(calculateRiskLevel(assess.getAssessmentType(), assess.getScore())); + assess.setAssessmentDate(assess.getAssessmentDate() != null ? assess.getAssessmentDate() : java.time.LocalDate.now()); + assess.setCreateTime(new Date()); + assessService.save(assess); + return R.ok(assess); + } + + @PutMapping("/nursing-assessment/{id}/reassess") + @Transactional(rollbackFor = Exception.class) + public R reassess(@PathVariable Long id, @RequestBody NursingAssessmentDynamic data) { + NursingAssessmentDynamic assess = assessService.getById(id); + if (assess != null) { + assess.setReAssessmentScore(data.getReAssessmentScore()); + assess.setReAssessmentDate(java.time.LocalDate.now()); + // 自动判断效果 + if (assess.getReAssessmentScore() < assess.getScore()) { + assess.setEffectResult("IMPROVED"); + } else if (assess.getReAssessmentScore() > assess.getScore()) { + assess.setEffectResult("WORSENED"); + } else { + assess.setEffectResult("STABLE"); + } + assess.setEffectDescription(data.getEffectDescription()); + // 自动判断趋势 + assess.setTrend(assess.getReAssessmentScore() < assess.getScore() ? "DOWN" : + assess.getReAssessmentScore() > assess.getScore() ? "UP" : "FLAT"); + assessService.updateById(assess); + } + return R.ok(assess); + } + + private String calculateRiskLevel(String type, int score) { + return switch (type) { + case "FALL" -> score >= 45 ? "HIGH" : score >= 25 ? "MEDIUM" : "LOW"; + case "PRESSURE" -> score >= 14 ? "HIGH" : score >= 10 ? "MEDIUM" : "LOW"; + case "NUTRITION" -> score <= 10 ? "CRITICAL" : score <= 14 ? "HIGH" : score <= 17 ? "MEDIUM" : "LOW"; + case "PAIN" -> score >= 7 ? "HIGH" : score >= 4 ? "MEDIUM" : "LOW"; + case "THROMBOSIS" -> score >= 5 ? "HIGH" : score >= 3 ? "MEDIUM" : "LOW"; + default -> "MEDIUM"; + }; + } + + @DeleteMapping("/nursing-assessment/delete/{id}") + @Transactional(rollbackFor = Exception.class) + public R deleteAssessment(@PathVariable Long id) { assessService.removeById(id); return R.ok(); } + + // ==================== 2. 知情同意电子签名 ==================== + + @GetMapping("/consent/page") + public R getConsentPage( + @RequestParam(value = "patientName", required = false) String patientName, + @RequestParam(value = "consentType", required = false) String type, + @RequestParam(value = "consentStatus", required = false) String status, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.like(StringUtils.hasText(patientName), InformedConsentEnhanced::getPatientName, patientName) + .eq(StringUtils.hasText(type), InformedConsentEnhanced::getConsentType, type) + .eq(StringUtils.hasText(status), InformedConsentEnhanced::getConsentStatus, status) + .orderByDesc(InformedConsentEnhanced::getCreateTime); + return R.ok(consentService.page(new Page<>(pageNo, pageSize), w)); + } + + @PostMapping("/consent/add") + @Transactional(rollbackFor = Exception.class) + public R addConsent(@RequestBody InformedConsentEnhanced consent) { + consent.setVersion(1); + consent.setConsentStatus("DRAFT"); + consent.setCreateTime(new Date()); + consentService.save(consent); + return R.ok(consent); + } + + @PutMapping("/consent/{id}/sign") + @Transactional(rollbackFor = Exception.class) + public R signConsent(@PathVariable Long id, @RequestBody InformedConsentEnhanced data) { + InformedConsentEnhanced consent = consentService.getById(id); + if (consent != null) { + if (StringUtils.hasText(data.getPatientSignature())) { + consent.setPatientSignature(data.getPatientSignature()); + consent.setPatientSignTime(new Date()); + } + if (StringUtils.hasText(data.getDoctorSignature())) { + consent.setDoctorSignature(data.getDoctorSignature()); + consent.setDoctorSignTime(new Date()); + } + if (StringUtils.hasText(data.getWitnessSignature())) { + consent.setWitnessSignature(data.getWitnessSignature()); + consent.setWitnessName(data.getWitnessName()); + } + // 检查是否全部签完 + if (StringUtils.hasText(consent.getPatientSignature()) && StringUtils.hasText(consent.getDoctorSignature())) { + consent.setConsentStatus("SIGNED"); + consent.setEffectiveTime(new Date()); + } else { + consent.setConsentStatus("PENDING"); + } + consentService.updateById(consent); + } + return R.ok(consent); + } + + @PutMapping("/consent/{id}/revoke") + @Transactional(rollbackFor = Exception.class) + public R revokeConsent(@PathVariable Long id, @RequestBody InformedConsentEnhanced data) { + InformedConsentEnhanced consent = consentService.getById(id); + if (consent != null) { + consent.setRevokeFlag(true); + consent.setRevokeTime(new Date()); + consent.setRevokeReason(data.getRevokeReason()); + consent.setConsentStatus("REVOKED"); + consentService.updateById(consent); + } + return R.ok(); + } + + @DeleteMapping("/consent/delete/{id}") + @Transactional(rollbackFor = Exception.class) + public R deleteConsent(@PathVariable Long id) { consentService.removeById(id); return R.ok(); } + + // ==================== 3. DRG费用异常预警 ==================== + + @GetMapping("/drg-alert/page") + public R getDrgAlertPage( + @RequestParam(value = "alertType", required = false) String type, + @RequestParam(value = "alertLevel", required = false) String level, + @RequestParam(value = "handleStatus", required = false) String status, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(StringUtils.hasText(type), DrgCostAlert::getAlertType, type) + .eq(StringUtils.hasText(level), DrgCostAlert::getAlertLevel, level) + .eq(StringUtils.hasText(status), DrgCostAlert::getHandleStatus, status) + .orderByDesc(DrgCostAlert::getCreateTime); + return R.ok(drgAlertService.page(new Page<>(pageNo, pageSize), w)); + } + + @PostMapping("/drg-alert/check") + @Transactional(rollbackFor = Exception.class) + public R checkDrgAlert(@RequestBody DrgCostAlert alert) { + // 自动计算偏差 + if (alert.getExpectedCost() != null && alert.getActualCost() != null && alert.getExpectedCost().compareTo(BigDecimal.ZERO) > 0) { + alert.setCostDeviation(alert.getActualCost().subtract(alert.getExpectedCost()) + .multiply(BigDecimal.valueOf(100)).divide(alert.getExpectedCost(), 2, BigDecimal.ROUND_HALF_UP)); + } + // 自动判断预警级别 + if (alert.getCostDeviation() != null) { + double dev = alert.getCostDeviation().doubleValue(); + alert.setAlertLevel(dev > 50 ? "CRITICAL" : dev > 20 ? "WARNING" : "INFO"); + alert.setAlertContent(String.format("费用偏差 %.1f%%, 实际费用 %.2f, 预期费用 %.2f", + dev, alert.getActualCost(), alert.getExpectedCost())); + } + // Auto-detect alert type + if (!StringUtils.hasText(alert.getAlertType())) { + if (alert.getCostDeviation() != null && alert.getCostDeviation().doubleValue() > 0) alert.setAlertType("COST_OVER"); + else if (alert.getLosActual() != null && alert.getLosExpected() != null && alert.getLosActual() > alert.getLosExpected()) alert.setAlertType("LOS_OVER"); + else if (Boolean.TRUE.equals(alert.getReadmitFlag())) alert.setAlertType("READMIT"); + else alert.setAlertType("COST_OVER"); + } + alert.setHandleStatus("PENDING"); + alert.setCreateTime(new Date()); + drgAlertService.save(alert); + return R.ok(alert); + } + + @PutMapping("/drg-alert/{id}/handle") + @Transactional(rollbackFor = Exception.class) + public R handleDrgAlert(@PathVariable Long id, @RequestBody DrgCostAlert data) { + DrgCostAlert alert = drgAlertService.getById(id); + if (alert != null) { + alert.setHandleStatus("HANDLED"); + alert.setHandler(data.getHandler()); + alert.setHandleTime(new Date()); + alert.setHandleResult(data.getHandleResult()); + drgAlertService.updateById(alert); + } + return R.ok(); + } + + @DeleteMapping("/drg-alert/delete/{id}") + @Transactional(rollbackFor = Exception.class) + public R deleteDrgAlert(@PathVariable Long id) { drgAlertService.removeById(id); return R.ok(); } + + // ==================== 4. 抗菌药物分级管理 ==================== + + @GetMapping("/antibiotic/page") + public R getAntibioticPage( + @RequestParam(value = "patientName", required = false) String patientName, + @RequestParam(value = "antibioticLevel", required = false) String level, + @RequestParam(value = "auditStatus", required = false) String status, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.like(StringUtils.hasText(patientName), AntibioticManagementEnhanced::getPatientName, patientName) + .eq(StringUtils.hasText(level), AntibioticManagementEnhanced::getAntibioticLevel, level) + .eq(StringUtils.hasText(status), AntibioticManagementEnhanced::getAuditStatus, status) + .orderByDesc(AntibioticManagementEnhanced::getCreateTime); + return R.ok(antibioticService.page(new Page<>(pageNo, pageSize), w)); + } + + @PostMapping("/antibiotic/add") + @Transactional(rollbackFor = Exception.class) + public R addAntibiotic(@RequestBody AntibioticManagementEnhanced ab) { + ab.setAuditStatus("PENDING"); + ab.setCreateTime(new Date()); + antibioticService.save(ab); + return R.ok(ab); + } + + @PutMapping("/antibiotic/{id}/audit") + @Transactional(rollbackFor = Exception.class) + public R auditAntibiotic(@PathVariable Long id, @RequestBody AntibioticManagementEnhanced data) { + AntibioticManagementEnhanced ab = antibioticService.getById(id); + if (ab != null) { + ab.setAuditStatus("AUDITED"); + ab.setAuditor(data.getAuditor()); + ab.setAuditTime(new Date()); + ab.setAuditResult(data.getAuditResult()); + antibioticService.updateById(ab); + } + return R.ok(); + } + + @DeleteMapping("/antibiotic/delete/{id}") + @Transactional(rollbackFor = Exception.class) + public R deleteAntibiotic(@PathVariable Long id) { antibioticService.removeById(id); return R.ok(); } + + // ==================== 5. 急诊120院前联动 ==================== + + @GetMapping("/ambulance/page") + public R getAmbulancePage( + @RequestParam(value = "ambulanceId", required = false) String ambId, + @RequestParam(value = "linkStatus", required = false) String status, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(StringUtils.hasText(ambId), EmergencyAmbulanceLink::getAmbulanceId, ambId) + .eq(StringUtils.hasText(status), EmergencyAmbulanceLink::getLinkStatus, status) + .orderByDesc(EmergencyAmbulanceLink::getDispatchTime); + return R.ok(ambulanceService.page(new Page<>(pageNo, pageSize), w)); + } + + @PostMapping("/ambulance/dispatch") + @Transactional(rollbackFor = Exception.class) + public R dispatch(@RequestBody EmergencyAmbulanceLink link) { + link.setDispatchTime(new Date()); + link.setLinkStatus("DISPATCHED"); + link.setNotificationSent(true); + link.setNotificationTime(new Date()); + link.setCreateTime(new Date()); + ambulanceService.save(link); + return R.ok(link); + } + + @PutMapping("/ambulance/{id}/arrive-scene") + @Transactional(rollbackFor = Exception.class) + public R arriveAtScene(@PathVariable Long id) { + EmergencyAmbulanceLink link = ambulanceService.getById(id); + if (link != null) { link.setArrivalSceneTime(new Date()); link.setLinkStatus("ON_SCENE"); ambulanceService.updateById(link); } + return R.ok(); + } + + @PutMapping("/ambulance/{id}/transport") + @Transactional(rollbackFor = Exception.class) + public R startTransport(@PathVariable Long id) { + EmergencyAmbulanceLink link = ambulanceService.getById(id); + if (link != null) { link.setLeaveSceneTime(new Date()); link.setLinkStatus("TRANSPORTING"); ambulanceService.updateById(link); } + return R.ok(); + } + + @PutMapping("/ambulance/{id}/arrive-hospital") + @Transactional(rollbackFor = Exception.class) + public R arriveHospital(@PathVariable Long id) { + EmergencyAmbulanceLink link = ambulanceService.getById(id); + if (link != null) { link.setArriveHospitalTime(new Date()); link.setLinkStatus("ARRIVED"); ambulanceService.updateById(link); } + return R.ok(); + } + + @PutMapping("/ambulance/{id}/handoff") + @Transactional(rollbackFor = Exception.class) + public R completeHandoff(@PathVariable Long id) { + EmergencyAmbulanceLink link = ambulanceService.getById(id); + if (link != null) { link.setHandoffTime(new Date()); link.setLinkStatus("HANDOFF"); ambulanceService.updateById(link); } + return R.ok(); + } + + @DeleteMapping("/ambulance/delete/{id}") + @Transactional(rollbackFor = Exception.class) + public R deleteAmbulance(@PathVariable Long id) { ambulanceService.removeById(id); return R.ok(); } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V35__p2_enhancement.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V35__p2_enhancement.sql new file mode 100644 index 000000000..e29cc0157 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V35__p2_enhancement.sql @@ -0,0 +1,185 @@ +-- V35: P2深度优化 — 护理评估/知情同意/DRG/抗菌/急诊120 + +-- 1. 护理评估动态评分+干预效果追踪 +CREATE TABLE IF NOT EXISTS nursing_assessment_dynamic ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(50), + assessment_type VARCHAR(30) NOT NULL, + assessment_tool VARCHAR(50), + score INT NOT NULL, + risk_level VARCHAR(20), + assessment_date DATE NOT NULL, + assessor VARCHAR(64), + intervention_plan TEXT, + intervention_executor VARCHAR(64), + intervention_time TIMESTAMP, + re_assessment_date DATE, + re_assessment_score INT, + effect_result VARCHAR(20), + effect_description TEXT, + trend VARCHAR(20), + delete_flag VARCHAR(1) DEFAULT '0', + create_by VARCHAR(64), + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by VARCHAR(64), + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id BIGINT DEFAULT 0 +); +COMMENT ON TABLE nursing_assessment_dynamic IS '护理评估动态评分+干预效果追踪'; +COMMENT ON COLUMN nursing_assessment_dynamic.assessment_type IS '类型(FALL跌倒/PRESSURE压疮/NUTRITION营养/PAIN疼痛/THROMBOSIS血栓)'; +COMMENT ON COLUMN nursing_assessment_dynamic.risk_level IS '风险(LOW低/MEDIUM中/HIGH高/CRITICAL极高)'; +COMMENT ON COLUMN nursing_assessment_dynamic.effect_result IS '效果(IMPROVED改善/STABLE稳定/WORSENED恶化)'; +COMMENT ON COLUMN nursing_assessment_dynamic.trend IS '趋势(UP上升/DOWN下降/FLAT持平)'; +CREATE INDEX IF NOT EXISTS nad_encounter ON nursing_assessment_dynamic(encounter_id); +CREATE INDEX IF NOT EXISTS nad_type ON nursing_assessment_dynamic(assessment_type); + +-- 2. 知情同意电子签名+版本管理 +CREATE TABLE IF NOT EXISTS informed_consent_enhanced ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(50), + consent_type VARCHAR(30) NOT NULL, + consent_title VARCHAR(200) NOT NULL, + consent_content TEXT NOT NULL, + version INT NOT NULL DEFAULT 1, + version_reason TEXT, + previous_version_id BIGINT, + patient_signature VARCHAR(500), + patient_sign_time TIMESTAMP, + doctor_signature VARCHAR(500), + doctor_sign_time TIMESTAMP, + witness_signature VARCHAR(500), + witness_name VARCHAR(64), + consent_status VARCHAR(20) DEFAULT 'DRAFT', + effective_time TIMESTAMP, + expire_time TIMESTAMP, + revoke_flag BOOLEAN DEFAULT FALSE, + revoke_time TIMESTAMP, + revoke_reason TEXT, + delete_flag VARCHAR(1) DEFAULT '0', + create_by VARCHAR(64), + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by VARCHAR(64), + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id BIGINT DEFAULT 0 +); +COMMENT ON TABLE informed_consent_enhanced IS '知情同意电子签名+版本管理'; +COMMENT ON COLUMN informed_consent_enhanced.consent_type IS '类型(SURGERY手术/ANESTHESIA麻醉/BLOOD输血/EXAM检查/REFUSE拒绝治疗)'; +COMMENT ON COLUMN informed_consent_enhanced.consent_status IS '状态(DRAFT草稿/PENDING待签/SIGNED已签/REVOKED已撤销/EXPIRED已过期)'; +CREATE INDEX IF NOT EXISTS ice_encounter ON informed_consent_enhanced(encounter_id); +CREATE INDEX IF NOT EXISTS ice_status ON informed_consent_enhanced(consent_status); + +-- 3. DRG费用异常预警 +CREATE TABLE IF NOT EXISTS drg_cost_alert ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(50), + drg_code VARCHAR(20), + drg_name VARCHAR(200), + expected_cost DECIMAL(12,2), + actual_cost DECIMAL(12,2), + cost_deviation DECIMAL(5,2), + alert_type VARCHAR(30) NOT NULL, + alert_level VARCHAR(10) DEFAULT 'WARNING', + alert_content TEXT, + suggested_action TEXT, + los_expected INT, + los_actual INT, + los_deviation INT, + readmit_flag BOOLEAN DEFAULT FALSE, + readmit_days INT, + handle_status VARCHAR(20) DEFAULT 'PENDING', + handler VARCHAR(64), + handle_time TIMESTAMP, + handle_result TEXT, + delete_flag VARCHAR(1) DEFAULT '0', + create_by VARCHAR(64), + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by VARCHAR(64), + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id BIGINT DEFAULT 0 +); +COMMENT ON TABLE drg_cost_alert IS 'DRG费用异常预警'; +COMMENT ON COLUMN drg_cost_alert.alert_type IS '类型(COST_OVER费用超标/LOS_OVER住院日超标/READMIT非计划再入院/WEIGHT_LOW权重偏低)'; +COMMENT ON COLUMN drg_cost_alert.alert_level IS '级别(INFO提示/WARNING警告/CRITICAL严重)'; +CREATE INDEX IF NOT EXISTS dca_encounter ON drg_cost_alert(encounter_id); +CREATE INDEX IF NOT EXISTS dca_alert ON drg_cost_alert(alert_type, alert_level); + +-- 4. 抗菌药物分级管理增强 +CREATE TABLE IF NOT EXISTS antibiotic_management_enhanced ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + patient_name VARCHAR(50), + drug_code VARCHAR(50) NOT NULL, + drug_name VARCHAR(200) NOT NULL, + antibiotic_level VARCHAR(20) NOT NULL, + usage_indication TEXT, + dosage VARCHAR(100), + frequency VARCHAR(20), + duration_days INT, + use_method VARCHAR(20), + pathogen_result VARCHAR(200), + culture_result VARCHAR(200), + dose_adjusted BOOLEAN DEFAULT FALSE, + ddd_value DECIMAL(8,2), + ddd_usage_days INT, + 联合用药_flag BOOLEAN DEFAULT FALSE, + 联合用药_names TEXT, + doctor_id BIGINT, + doctor_name VARCHAR(64), + audit_status VARCHAR(20) DEFAULT 'PENDING', + auditor VARCHAR(64), + audit_time TIMESTAMP, + audit_result VARCHAR(50), + delete_flag VARCHAR(1) DEFAULT '0', + create_by VARCHAR(64), + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by VARCHAR(64), + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id BIGINT DEFAULT 0 +); +COMMENT ON TABLE antibiotic_management_enhanced IS '抗菌药物分级管理增强'; +COMMENT ON COLUMN antibiotic_management_enhanced.antibiotic_level IS '分级(RESTRICTED限制使用/SPECIAL特殊使用/NON_RESTRICTED非限制)'; +COMMENT ON COLUMN antibiotic_management_enhanced.use_method IS '给药途径(IV静脉/PO口服/IM肌注)'; +CREATE INDEX IF NOT EXISTS ame_encounter ON antibiotic_management_enhanced(encounter_id); +CREATE INDEX IF NOT EXISTS ame_level ON antibiotic_management_enhanced(antibiotic_level); + +-- 5. 急诊120院前联动 +CREATE TABLE IF NOT EXISTS emergency_ambulance_link ( + id BIGSERIAL PRIMARY KEY, + encounter_id BIGINT, + patient_id BIGINT, + patient_name VARCHAR(50), + ambulance_id VARCHAR(50), + dispatch_time TIMESTAMP, + arrival_scene_time TIMESTAMP, + leave_scene_time TIMESTAMP, + arrive_hospital_time TIMESTAMP, + handoff_time TIMESTAMP, + distance_km DECIMAL(6,2), + route_description TEXT, + pre_diagnosis TEXT, + pre_vitals TEXT, + pre_medications TEXT, + ekg_sent BOOLEAN DEFAULT FALSE, + ekg_data TEXT, + notification_sent BOOLEAN DEFAULT FALSE, + notification_time TIMESTAMP, + bed_ready BOOLEAN DEFAULT FALSE, + team_ready BOOLEAN DEFAULT FALSE, + link_status VARCHAR(20) DEFAULT 'DISPATCHED', + delete_flag VARCHAR(1) DEFAULT '0', + create_by VARCHAR(64), + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by VARCHAR(64), + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + tenant_id BIGINT DEFAULT 0 +); +COMMENT ON TABLE emergency_ambulance_link IS '急诊120院前联动'; +COMMENT ON COLUMN emergency_ambulance_link.link_status IS '状态(DISPATCHED已派车/ON_SCENE到达现场/TRANSPORTING转运中/ARRIVED已到达/HANDOFF已完成交接)'; +CREATE INDEX IF NOT EXISTS eal_status ON emergency_ambulance_link(link_status); diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/AntibioticManagementEnhanced.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/AntibioticManagementEnhanced.java new file mode 100644 index 000000000..64c37ae2f --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/AntibioticManagementEnhanced.java @@ -0,0 +1,21 @@ +package com.healthlink.his.crossmodule.domain; +import com.baomidou.mybatisplus.annotation.*; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; +@Data @EqualsAndHashCode(callSuper = true) @TableName("antibiotic_management_enhanced") +public class AntibioticManagementEnhanced extends HisBaseEntity { + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; + private Long encounterId; private Long patientId; private String patientName; + private String drugCode; private String drugName; private String antibioticLevel; + private String usageIndication; private String dosage; private String frequency; + private Integer durationDays; private String useMethod; + private String pathogenResult; private String cultureResult; + private Boolean doseAdjusted; private BigDecimal dddValue; private Integer dddUsageDays; + private Boolean combinationFlag; private String combinationNames; + private Long doctorId; private String doctorName; + private String auditStatus; private String auditor; private Date auditTime; private String auditResult; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/DrgCostAlert.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/DrgCostAlert.java new file mode 100644 index 000000000..803d897f3 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/DrgCostAlert.java @@ -0,0 +1,19 @@ +package com.healthlink.his.crossmodule.domain; +import com.baomidou.mybatisplus.annotation.*; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; +@Data @EqualsAndHashCode(callSuper = true) @TableName("drg_cost_alert") +public class DrgCostAlert extends HisBaseEntity { + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; + private Long encounterId; private Long patientId; private String patientName; + private String drgCode; private String drgName; + private BigDecimal expectedCost; private BigDecimal actualCost; private BigDecimal costDeviation; + private String alertType; private String alertLevel; private String alertContent; private String suggestedAction; + private Integer losExpected; private Integer losActual; private Integer losDeviation; + private Boolean readmitFlag; private Integer readmitDays; + private String handleStatus; private String handler; private Date handleTime; private String handleResult; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/EmergencyAmbulanceLink.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/EmergencyAmbulanceLink.java new file mode 100644 index 000000000..eb7bd20bc --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/EmergencyAmbulanceLink.java @@ -0,0 +1,20 @@ +package com.healthlink.his.crossmodule.domain; +import com.baomidou.mybatisplus.annotation.*; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; +@Data @EqualsAndHashCode(callSuper = true) @TableName("emergency_ambulance_link") +public class EmergencyAmbulanceLink extends HisBaseEntity { + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; + private Long encounterId; private Long patientId; private String patientName; + private String ambulanceId; private Date dispatchTime; private Date arrivalSceneTime; + private Date leaveSceneTime; private Date arriveHospitalTime; private Date handoffTime; + private BigDecimal distanceKm; private String routeDescription; + private String preDiagnosis; private String preVitals; private String preMedications; + private Boolean ekgSent; private String ekgData; + private Boolean notificationSent; private Date notificationTime; + private Boolean bedReady; private Boolean teamReady; private String linkStatus; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/InformedConsentEnhanced.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/InformedConsentEnhanced.java new file mode 100644 index 000000000..89e39a486 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/InformedConsentEnhanced.java @@ -0,0 +1,20 @@ +package com.healthlink.his.crossmodule.domain; +import com.baomidou.mybatisplus.annotation.*; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; +@Data @EqualsAndHashCode(callSuper = true) @TableName("informed_consent_enhanced") +public class InformedConsentEnhanced extends HisBaseEntity { + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; + private Long encounterId; private Long patientId; private String patientName; + private String consentType; private String consentTitle; private String consentContent; + private Integer version; private String versionReason; private Long previousVersionId; + private String patientSignature; private Date patientSignTime; + private String doctorSignature; private Date doctorSignTime; + private String witnessSignature; private String witnessName; + private String consentStatus; private Date effectiveTime; private Date expireTime; + private Boolean revokeFlag; private Date revokeTime; private String revokeReason; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/NursingAssessmentDynamic.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/NursingAssessmentDynamic.java new file mode 100644 index 000000000..879425d31 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/domain/NursingAssessmentDynamic.java @@ -0,0 +1,19 @@ +package com.healthlink.his.crossmodule.domain; +import com.baomidou.mybatisplus.annotation.*; +import com.core.common.core.domain.HisBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; +@Data @EqualsAndHashCode(callSuper = true) @TableName("nursing_assessment_dynamic") +public class NursingAssessmentDynamic extends HisBaseEntity { + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; + private Long encounterId; private Long patientId; private String patientName; + private String assessmentType; private String assessmentTool; + private Integer score; private String riskLevel; private LocalDate assessmentDate; + private String assessor; private String interventionPlan; + private String interventionExecutor; private Date interventionTime; + private LocalDate reAssessmentDate; private Integer reAssessmentScore; + private String effectResult; private String effectDescription; private String trend; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/AntibioticManagementEnhancedMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/AntibioticManagementEnhancedMapper.java new file mode 100644 index 000000000..1eb83ccaa --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/AntibioticManagementEnhancedMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.crossmodule.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.crossmodule.domain.AntibioticManagementEnhanced; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface AntibioticManagementEnhancedMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/DrgCostAlertMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/DrgCostAlertMapper.java new file mode 100644 index 000000000..69b6bb378 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/DrgCostAlertMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.crossmodule.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.crossmodule.domain.DrgCostAlert; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface DrgCostAlertMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/EmergencyAmbulanceLinkMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/EmergencyAmbulanceLinkMapper.java new file mode 100644 index 000000000..57e34e5cd --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/EmergencyAmbulanceLinkMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.crossmodule.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.crossmodule.domain.EmergencyAmbulanceLink; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface EmergencyAmbulanceLinkMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/InformedConsentEnhancedMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/InformedConsentEnhancedMapper.java new file mode 100644 index 000000000..c5aa6097e --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/InformedConsentEnhancedMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.crossmodule.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.crossmodule.domain.InformedConsentEnhanced; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface InformedConsentEnhancedMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/NursingAssessmentDynamicMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/NursingAssessmentDynamicMapper.java new file mode 100644 index 000000000..b2009217b --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/mapper/NursingAssessmentDynamicMapper.java @@ -0,0 +1,6 @@ +package com.healthlink.his.crossmodule.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.crossmodule.domain.NursingAssessmentDynamic; +import org.apache.ibatis.annotations.Mapper; +@Mapper +public interface NursingAssessmentDynamicMapper extends BaseMapper {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IAntibioticManagementEnhancedService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IAntibioticManagementEnhancedService.java new file mode 100644 index 000000000..b67819a63 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IAntibioticManagementEnhancedService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.crossmodule.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.crossmodule.domain.AntibioticManagementEnhanced; +public interface IAntibioticManagementEnhancedService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IDrgCostAlertService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IDrgCostAlertService.java new file mode 100644 index 000000000..9560ed146 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IDrgCostAlertService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.crossmodule.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.crossmodule.domain.DrgCostAlert; +public interface IDrgCostAlertService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IEmergencyAmbulanceLinkService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IEmergencyAmbulanceLinkService.java new file mode 100644 index 000000000..920b880d5 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IEmergencyAmbulanceLinkService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.crossmodule.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.crossmodule.domain.EmergencyAmbulanceLink; +public interface IEmergencyAmbulanceLinkService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IInformedConsentEnhancedService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IInformedConsentEnhancedService.java new file mode 100644 index 000000000..68afa7897 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/IInformedConsentEnhancedService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.crossmodule.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.crossmodule.domain.InformedConsentEnhanced; +public interface IInformedConsentEnhancedService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/INursingAssessmentDynamicService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/INursingAssessmentDynamicService.java new file mode 100644 index 000000000..4bea31882 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/INursingAssessmentDynamicService.java @@ -0,0 +1,4 @@ +package com.healthlink.his.crossmodule.service; +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.crossmodule.domain.NursingAssessmentDynamic; +public interface INursingAssessmentDynamicService extends IService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/AntibioticManagementEnhancedServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/AntibioticManagementEnhancedServiceImpl.java new file mode 100644 index 000000000..65fe54346 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/AntibioticManagementEnhancedServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.crossmodule.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.crossmodule.domain.AntibioticManagementEnhanced; +import com.healthlink.his.crossmodule.mapper.AntibioticManagementEnhancedMapper; +import com.healthlink.his.crossmodule.service.IAntibioticManagementEnhancedService; +import org.springframework.stereotype.Service; +@Service +public class AntibioticManagementEnhancedServiceImpl extends ServiceImpl implements IAntibioticManagementEnhancedService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/DrgCostAlertServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/DrgCostAlertServiceImpl.java new file mode 100644 index 000000000..50367651e --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/DrgCostAlertServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.crossmodule.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.crossmodule.domain.DrgCostAlert; +import com.healthlink.his.crossmodule.mapper.DrgCostAlertMapper; +import com.healthlink.his.crossmodule.service.IDrgCostAlertService; +import org.springframework.stereotype.Service; +@Service +public class DrgCostAlertServiceImpl extends ServiceImpl implements IDrgCostAlertService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/EmergencyAmbulanceLinkServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/EmergencyAmbulanceLinkServiceImpl.java new file mode 100644 index 000000000..a0b3d7359 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/EmergencyAmbulanceLinkServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.crossmodule.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.crossmodule.domain.EmergencyAmbulanceLink; +import com.healthlink.his.crossmodule.mapper.EmergencyAmbulanceLinkMapper; +import com.healthlink.his.crossmodule.service.IEmergencyAmbulanceLinkService; +import org.springframework.stereotype.Service; +@Service +public class EmergencyAmbulanceLinkServiceImpl extends ServiceImpl implements IEmergencyAmbulanceLinkService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/InformedConsentEnhancedServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/InformedConsentEnhancedServiceImpl.java new file mode 100644 index 000000000..4e963d831 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/InformedConsentEnhancedServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.crossmodule.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.crossmodule.domain.InformedConsentEnhanced; +import com.healthlink.his.crossmodule.mapper.InformedConsentEnhancedMapper; +import com.healthlink.his.crossmodule.service.IInformedConsentEnhancedService; +import org.springframework.stereotype.Service; +@Service +public class InformedConsentEnhancedServiceImpl extends ServiceImpl implements IInformedConsentEnhancedService {} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/NursingAssessmentDynamicServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/NursingAssessmentDynamicServiceImpl.java new file mode 100644 index 000000000..21cab162f --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/crossmodule/service/impl/NursingAssessmentDynamicServiceImpl.java @@ -0,0 +1,8 @@ +package com.healthlink.his.crossmodule.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.crossmodule.domain.NursingAssessmentDynamic; +import com.healthlink.his.crossmodule.mapper.NursingAssessmentDynamicMapper; +import com.healthlink.his.crossmodule.service.INursingAssessmentDynamicService; +import org.springframework.stereotype.Service; +@Service +public class NursingAssessmentDynamicServiceImpl extends ServiceImpl implements INursingAssessmentDynamicService {} diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/api.js b/healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/api.js new file mode 100644 index 000000000..5afdff9ef --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/api.js @@ -0,0 +1,4 @@ +import request from '@/utils/request' +export function getPage(p){return request({url:'/enhancement/ambulance/page',method:'get',params:p})} +export function add(d){return request({url:'/enhancement/ambulance/add',method:'post',data:d})} +export function del(id){return request({url:'/enhancement/ambulance/delete/'+id,method:'delete'})} diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/index.vue b/healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/index.vue new file mode 100644 index 000000000..6437b06cb --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-ambulance/index.vue @@ -0,0 +1,43 @@ + + diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/api.js b/healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/api.js new file mode 100644 index 000000000..d300a5cc0 --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/api.js @@ -0,0 +1,4 @@ +import request from '@/utils/request' +export function getPage(p){return request({url:'/enhancement/antibiotic/page',method:'get',params:p})} +export function add(d){return request({url:'/enhancement/antibiotic/add',method:'post',data:d})} +export function del(id){return request({url:'/enhancement/antibiotic/delete/'+id,method:'delete'})} diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/index.vue b/healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/index.vue new file mode 100644 index 000000000..aeb8eba68 --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-antibiotic/index.vue @@ -0,0 +1,41 @@ + + diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-consent/api.js b/healthlink-his-ui/src/views/crossmodule/enhanced-consent/api.js new file mode 100644 index 000000000..93ef7c074 --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-consent/api.js @@ -0,0 +1,4 @@ +import request from '@/utils/request' +export function getPage(p){return request({url:'/enhancement/consent/page',method:'get',params:p})} +export function add(d){return request({url:'/enhancement/consent/add',method:'post',data:d})} +export function del(id){return request({url:'/enhancement/consent/delete/'+id,method:'delete'})} diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-consent/index.vue b/healthlink-his-ui/src/views/crossmodule/enhanced-consent/index.vue new file mode 100644 index 000000000..579a4abdf --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-consent/index.vue @@ -0,0 +1,45 @@ + + diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/api.js b/healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/api.js new file mode 100644 index 000000000..d376fdaa2 --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/api.js @@ -0,0 +1,4 @@ +import request from '@/utils/request' +export function getPage(p){return request({url:'/enhancement/drg-alert/page',method:'get',params:p})} +export function add(d){return request({url:'/enhancement/drg-alert/add',method:'post',data:d})} +export function del(id){return request({url:'/enhancement/drg-alert/delete/'+id,method:'delete'})} diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/index.vue b/healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/index.vue new file mode 100644 index 000000000..0f87c8801 --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-drg-alert/index.vue @@ -0,0 +1,48 @@ + + diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-nursing/api.js b/healthlink-his-ui/src/views/crossmodule/enhanced-nursing/api.js new file mode 100644 index 000000000..567bac65c --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-nursing/api.js @@ -0,0 +1,4 @@ +import request from '@/utils/request' +export function getPage(p){return request({url:'/enhancement/nursing-assessment/page',method:'get',params:p})} +export function add(d){return request({url:'/enhancement/nursing-assessment/add',method:'post',data:d})} +export function del(id){return request({url:'/enhancement/nursing-assessment/delete/'+id,method:'delete'})} diff --git a/healthlink-his-ui/src/views/crossmodule/enhanced-nursing/index.vue b/healthlink-his-ui/src/views/crossmodule/enhanced-nursing/index.vue new file mode 100644 index 000000000..3827fb0eb --- /dev/null +++ b/healthlink-his-ui/src/views/crossmodule/enhanced-nursing/index.vue @@ -0,0 +1,58 @@ + +