From 03973d2e06073014aaa03d748966ae6b611c9dbd Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Mon, 21 Aug 2023 14:56:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A4=E7=90=86=E6=8F=90=E4=BA=A4=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E9=87=8D=E7=97=87=EF=BC=8C=E9=87=8D=E7=97=87=E6=82=A3?= =?UTF-8?q?=E8=80=85=E6=A0=87=E8=AF=86=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/docus/server/AppRunBootstrap.java | 1 - .../message/busservice/SdBusinessService.java | 4 +- .../impl/SdBusinessServiceImpl.java | 41 ++++++++++++++++--- .../controller/SdRyHospitalController.java | 8 ++-- .../server/message/mapper/SdRyIcuMapper.java | 9 +++- .../server/message/mapper/TBasicMapper.java | 8 ++++ src/main/resources/mapper/SdRyIcuMapper.xml | 5 +-- src/main/resources/mapper/TBasicMapper.xml | 4 ++ 8 files changed, 63 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/docus/server/AppRunBootstrap.java b/src/main/java/com/docus/server/AppRunBootstrap.java index 0e021b5..9bc1cf8 100644 --- a/src/main/java/com/docus/server/AppRunBootstrap.java +++ b/src/main/java/com/docus/server/AppRunBootstrap.java @@ -1,7 +1,6 @@ package com.docus.server; - import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; diff --git a/src/main/java/com/docus/server/message/busservice/SdBusinessService.java b/src/main/java/com/docus/server/message/busservice/SdBusinessService.java index 8900f3f..c8a070c 100644 --- a/src/main/java/com/docus/server/message/busservice/SdBusinessService.java +++ b/src/main/java/com/docus/server/message/busservice/SdBusinessService.java @@ -21,11 +21,11 @@ public interface SdBusinessService { MessageResponse wsNurseSubmitHandle(Message message); /** - * 同步患者是否重症病人,住院号+住院次数 + * 确认患者是否重症病人,并标识重症病人状态, * @param inpatientNo 住院号 * @param admissTimes 住院次数 */ - void updIcuRecordState(String inpatientNo, Integer admissTimes); + void confirmAndUpdIcuRecordState(String inpatientNo, Integer admissTimes); /** * 是否是重症病人(重症视图是否有数据) diff --git a/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java b/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java index a562962..9f66091 100644 --- a/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java +++ b/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java @@ -103,12 +103,23 @@ public class SdBusinessServiceImpl implements SdBusinessService { } WsNurseSubmitDTO nurseSubmitDTO = WsNurseSubmitMessageConvert.convert(message.getMessage()); WsNurseSubmitValidate.verifyNurseSubmitDTO(nurseSubmitDTO); - List patientIds = tBasicMapper.getPatientIdsByInpatientNoAndTimes(nurseSubmitDTO.getInHospIndexNo(), nurseSubmitDTO.getVisitNo()); + String inHospIndexNo = nurseSubmitDTO.getInHospIndexNo(); + Integer visitNo = nurseSubmitDTO.getVisitNo(); + List patientIds = tBasicMapper.getPatientIdsByInpatientNoAndTimes(inHospIndexNo, visitNo); verifyPatientIds(patientIds); - if(!isDischargeAndUpdDisDate(patientIds.get(0),nurseSubmitDTO.getInHospIndexNo(), nurseSubmitDTO.getVisitNo())){ + if(!isDischargeAndUpdDisDate(patientIds.get(0), inHospIndexNo, visitNo)){ throw new BaseException("此患者未出院!"); } + // 如果是重症患者,如果没有重症报告的话,不能提交 + if (isIcuRecord(inHospIndexNo, visitNo)) { + // 更新重症标识 + confirmAndUpdIcuRecordState(inHospIndexNo,visitNo); + if (!hasIcuFile(patientIds.get(0))) { + throw new BaseException("重症患者,未采集重症文件,不允许提交!"); + } + } + tBasicMapper.insertOrUpdateNurseSubmitTime(patientIds.get(0), nurseSubmitDTO.getSubmitTime()); tBasicMapper.insertOrUpdateNurseFileCount(patientIds.get(0), nurseSubmitDTO.getFilesCount()); log.info("补偿护理任务 patientIds:{} collectId:{}", patientIds, taskConfig.getCollectorIds()); @@ -129,17 +140,37 @@ public class SdBusinessServiceImpl implements SdBusinessService { } } + /** + * 根据病案,查找是否有icu来源,未作废的文件数量>0 + * @param patientId 病案主键 + * @return 是否有icu来源,未作废的文件数量>0 + */ + private boolean hasIcuFile(String patientId) { + String source = "icu"; + return getFileCountByPatientAndSource(patientId, source) > 0; + } + + /** + * 根据病案主键和来源,统计未作废的文件数量 + * @param patientId 病案主键 + * @param source 系统/采集来源 + * @return 未作废文件数量 + */ + private int getFileCountByPatientAndSource(String patientId, String source) { + return tBasicMapper.getFileCountByPatientAndSource(patientId, source); + } + @Override - public void updIcuRecordState(String inpatientNo, Integer admissTimes) { + public void confirmAndUpdIcuRecordState(String inpatientNo, Integer admissTimes) { int state = isIcuRecord(inpatientNo, admissTimes) ? 1 : 0; tBasicMapper.updIcuRecordState(inpatientNo, admissTimes, state); } @Override public boolean isIcuRecord(String inpatientNo, Integer admissTimes) { - Integer exists = sdRyIcuMapper.isExists(inpatientNo, admissTimes); - return !Objects.isNull(exists); + Integer count = sdRyIcuMapper.countByInpNoAndAdmissTimes(inpatientNo, admissTimes); + return count>0; } private void compensateTask(List patientIds, List collectorIds) { diff --git a/src/main/java/com/docus/server/message/controller/SdRyHospitalController.java b/src/main/java/com/docus/server/message/controller/SdRyHospitalController.java index 724642b..f730fd9 100644 --- a/src/main/java/com/docus/server/message/controller/SdRyHospitalController.java +++ b/src/main/java/com/docus/server/message/controller/SdRyHospitalController.java @@ -24,11 +24,11 @@ public class SdRyHospitalController { private SdBusinessService sdBusinessService; - @ApiOperation("同步患者是否重症病人,住院号+住院次数") - @GetMapping("/updIcuRecordState") - public CommonResult updIcuRecordState(@RequestParam("inpatientNo") String inpatientNo, @RequestParam("admissTimes") Integer admissTimes) { + @ApiOperation("确认患者是否重症病人,并标识重症病人状态,住院号+住院次数") + @GetMapping("/confirmAndupdIcuRecordState") + public CommonResult confirmAndUpdIcuRecordState(@RequestParam("inpatientNo") String inpatientNo, @RequestParam("admissTimes") Integer admissTimes) { log.info("顺德人医,同步患者是否重症病人,住院号:{},住院次数:{}",inpatientNo,admissTimes); - sdBusinessService.updIcuRecordState(inpatientNo, admissTimes); + sdBusinessService.confirmAndUpdIcuRecordState(inpatientNo, admissTimes); return CommonResult.success("成功!"); } diff --git a/src/main/java/com/docus/server/message/mapper/SdRyIcuMapper.java b/src/main/java/com/docus/server/message/mapper/SdRyIcuMapper.java index bc17c21..7373c31 100644 --- a/src/main/java/com/docus/server/message/mapper/SdRyIcuMapper.java +++ b/src/main/java/com/docus/server/message/mapper/SdRyIcuMapper.java @@ -11,6 +11,11 @@ import java.util.Map; public interface SdRyIcuMapper { Map getById(@Param("id") String patientId); - - Integer isExists(@Param("inpatientNo")String inpatientNo,@Param("admissTimes") Integer admissTimes); + /** + * 根据病案号和住院次数统计icu视图数据数量 + * @param inpatientNo 病案号 + * @param admissTimes 住院次数 + * @return icu视图数据数量 + */ + Integer countByInpNoAndAdmissTimes(@Param("inpatientNo")String inpatientNo, @Param("admissTimes") Integer admissTimes); } diff --git a/src/main/java/com/docus/server/message/mapper/TBasicMapper.java b/src/main/java/com/docus/server/message/mapper/TBasicMapper.java index 5dfa46f..59059f6 100644 --- a/src/main/java/com/docus/server/message/mapper/TBasicMapper.java +++ b/src/main/java/com/docus/server/message/mapper/TBasicMapper.java @@ -62,4 +62,12 @@ public interface TBasicMapper { * @return 数据库操作行 */ int updIcuRecordState(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") Integer admissTimes, @Param("state") int state); + + /** + * 根据病案主键和来源,统计未作废的文件数量 + * @param patientId 病案主键 + * @param source 系统/采集来源 + * @return 未作废文件数量 + */ + int getFileCountByPatientAndSource(@Param("patientId") String patientId, @Param("source") String source); } diff --git a/src/main/resources/mapper/SdRyIcuMapper.xml b/src/main/resources/mapper/SdRyIcuMapper.xml index 7f3bdfb..49ac588 100644 --- a/src/main/resources/mapper/SdRyIcuMapper.xml +++ b/src/main/resources/mapper/SdRyIcuMapper.xml @@ -9,11 +9,10 @@ FROM `docus_medicalrecord`.t_basic tb WHERE tb.patient_id=#{id} - + select count(1) from smtz_10 where 住院号 = #{inpatientNo} and 住院次数 = #{admissTimes} - limit 1 diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index bb52d97..ff391d0 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -40,4 +40,8 @@ and tb.dis_date > '1801-02-03 00:00:00' +