From 0a865dd0d557b462f8799559080470ea0263b419 Mon Sep 17 00:00:00 2001 From: chenqi Date: Thu, 18 Jun 2026 12:16:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(nursing):=20T6.3=20=E7=96=BC=E7=97=9B?= =?UTF-8?q?=E8=AF=84=E4=BC=B0NRS/VAS=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appservice/IPainAssessmentAppService.java | 10 ++ .../impl/PainAssessmentAppServiceImpl.java | 43 ++++++ .../controller/PainAssessmentController.java | 36 +++++ .../nursing/assessment/PainAssessment.vue | 143 ++++++++++++++++++ 4 files changed, 232 insertions(+) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/IPainAssessmentAppService.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/impl/PainAssessmentAppServiceImpl.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/controller/PainAssessmentController.java create mode 100644 healthlink-his-ui/src/views/nursing/assessment/PainAssessment.vue diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/IPainAssessmentAppService.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/IPainAssessmentAppService.java new file mode 100644 index 000000000..d2186b735 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/IPainAssessmentAppService.java @@ -0,0 +1,10 @@ +package com.healthlink.his.web.nursing.appservice; + +import com.healthlink.his.nursing.domain.NursingAssessment; + +import java.util.List; + +public interface IPainAssessmentAppService { + NursingAssessment assessPain(NursingAssessment assessment); + List getPainRecords(Long encounterId); +} \ No newline at end of file diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/impl/PainAssessmentAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/impl/PainAssessmentAppServiceImpl.java new file mode 100644 index 000000000..ba58fcb25 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/appservice/impl/PainAssessmentAppServiceImpl.java @@ -0,0 +1,43 @@ +package com.healthlink.his.web.nursing.appservice.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.healthlink.his.nursing.domain.NursingAssessment; +import com.healthlink.his.nursing.service.INursingAssessmentService; +import com.healthlink.his.web.nursing.appservice.IPainAssessmentAppService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class PainAssessmentAppServiceImpl implements IPainAssessmentAppService { + + @Autowired + private INursingAssessmentService assessmentService; + + @Override + public NursingAssessment assessPain(NursingAssessment assessment) { + assessment.setAssessmentTool("NRS_PAIN"); + assessment.setAssessmentType("PAIN"); + assessment.setRiskLevel(calculatePainRiskLevel(assessment)); + assessment.setDeleteFlag("0"); + assessmentService.save(assessment); + return assessment; + } + + @Override + public List getPainRecords(Long encounterId) { + return assessmentService.list(new LambdaQueryWrapper() + .eq(NursingAssessment::getEncounterId, encounterId) + .eq(NursingAssessment::getAssessmentTool, "NRS_PAIN") + .orderByDesc(NursingAssessment::getAssessmentTime)); + } + + private String calculatePainRiskLevel(NursingAssessment assessment) { + Integer totalScore = assessment.getTotalScore(); + if (totalScore == null) return "NORMAL"; + if (totalScore >= 7) return "HIGH"; + if (totalScore >= 4) return "MEDIUM"; + return "LOW"; + } +} \ No newline at end of file diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/controller/PainAssessmentController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/controller/PainAssessmentController.java new file mode 100644 index 000000000..3016cbaf6 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/nursing/controller/PainAssessmentController.java @@ -0,0 +1,36 @@ +package com.healthlink.his.web.nursing.controller; + +import com.core.common.core.domain.AjaxResult; +import com.healthlink.his.nursing.domain.NursingAssessment; +import com.healthlink.his.web.nursing.appservice.IPainAssessmentAppService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "疼痛评估NRS/VAS") +@RestController +@RequestMapping("/api/v1/nursing/pain") +public class PainAssessmentController { + + @Autowired + private IPainAssessmentAppService painAssessmentAppService; + + @Operation(summary = "疼痛评估") + @PostMapping("/assess") + @PreAuthorize("hasAuthority('nursing:nursing:edit')") + public AjaxResult assessPain(@RequestBody NursingAssessment assessment) { + return AjaxResult.success(painAssessmentAppService.assessPain(assessment)); + } + + @Operation(summary = "获取疼痛评估记录") + @GetMapping("/list/{encounterId}") + @PreAuthorize("hasAuthority('nursing:nursing:list')") + public AjaxResult getPainRecords(@PathVariable Long encounterId) { + List records = painAssessmentAppService.getPainRecords(encounterId); + return AjaxResult.success(records); + } +} \ No newline at end of file diff --git a/healthlink-his-ui/src/views/nursing/assessment/PainAssessment.vue b/healthlink-his-ui/src/views/nursing/assessment/PainAssessment.vue new file mode 100644 index 000000000..c769b76fa --- /dev/null +++ b/healthlink-his-ui/src/views/nursing/assessment/PainAssessment.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file