From e0c6936c1c64acbcfb0b6b82370c0391022ef2f3 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Tue, 9 Jan 2024 15:11:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E6=8E=A8=E9=80=81=E6=89=8B=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E6=B2=A1=E6=9C=89=E4=BD=8F=E9=99=A2=E6=AC=A1=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8=E6=A3=80=E6=9F=A5=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collection/mapper/TBasicMapper.java | 10 ++++ ...IP1008InspectionReportAdditionHandler.java | 48 ++++++++++++++++++- src/main/resources/mapper/TBasicMapper.xml | 7 +++ 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/docus/server/collection/mapper/TBasicMapper.java b/src/main/java/com/docus/server/collection/mapper/TBasicMapper.java index fd1f1fb..59e4530 100644 --- a/src/main/java/com/docus/server/collection/mapper/TBasicMapper.java +++ b/src/main/java/com/docus/server/collection/mapper/TBasicMapper.java @@ -119,4 +119,14 @@ public interface TBasicMapper{ * @return 用户姓名 */ String getNameByUserName(@Param("userName")String userName); + +/** + * 根据住院号和报告时间,查询住院次数 + * @date 2024/1/9 14:46 + * @author YongBin Wen + * @param inpatientNo 住院号 + * @param reportTime 报告时间 yyyy-MM-dd HH:mm:ss + * @return 住院次数 + */ + List getAdmissTimesByInpNoAndReportTime(@Param("inpatientNo") String inpatientNo, @Param("reportTime") String reportTime); } diff --git a/src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java b/src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java index 43cd49c..13db7a6 100644 --- a/src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java +++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java @@ -4,6 +4,7 @@ import com.docus.core.util.DateUtil; import com.docus.core.util.Func; import com.docus.infrastructure.core.exception.BaseException; import com.docus.infrastructure.redis.service.RedisOps; +import com.docus.server.collection.mapper.TBasicMapper; import com.docus.server.report.api.ShunDePeopleService; import com.docus.server.report.api.dto.ReportDto; import com.docus.server.report.config.SdRyReportHandledConfig; @@ -21,6 +22,7 @@ import org.w3c.dom.Node; import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** * HIP1008-检查报告新增服务处理 @@ -38,6 +40,8 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive private ReportJob reportJob; @Resource private RedisOps redisOps; + @Resource + private TBasicMapper tBasicMapper; @Override @@ -145,6 +149,7 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive return reportDto; } + public ReportDto getReportDtoByInspectionInsert(XmlUtil inspectionInsertXmlUtil) { Node senderNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension"); String sender = senderNode.getNodeValue(); @@ -157,7 +162,13 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive String inpatientNo = inpatientNoNode.getNodeValue(); Node admissTimesNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension"); - Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue()); + Integer admissTimes; + try { + admissTimes = Integer.valueOf(admissTimesNode.getNodeValue()); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + admissTimes = null; + } // 检查报告单号标识 Node reportFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension"); @@ -171,6 +182,28 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive String[] split = reportFlag.split("_"); serialnum = split[0]; } + // 如果是手工单,住院次数可能为空,则需要根据检查报告时间与出入院区间获取住院次数 + // todo 实施手工单需求确认 + if (admissTimes == null && isManualDocuments(eafNo)) { + //检查报告日期 yyyyMMddHHmmss + String pattern = "yyyyMMddHHmmss"; + Node reportTimeNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/author/time/@value"); + String reportTime = reportTimeNode.getNodeValue(); + Date reportDate = Func.parseDate(reportTime, pattern); + String formatDateTime = Func.formatDateTime(reportDate); + List admissTimesList = tBasicMapper.getAdmissTimesByInpNoAndReportTime(inpatientNo, formatDateTime); + if (Func.isEmpty(admissTimesList)) { + log.warn("住院号:{},报告时间:{} 根据住院号与出入院日期匹配患者基础数据失败!", inpatientNo, formatDateTime); + } else if (admissTimesList.size() > 1) { + log.warn("住院号:{},报告时间:{} 根据住院号与出入院日期匹配患者基础数据失败,有多条!", inpatientNo, formatDateTime); + } else { + admissTimes = admissTimesList.get(0); + if (admissTimes == null) { + log.warn("住院号:{},报告时间:{} 根据住院号与出入院日期匹配患者基础数据,住院次数为空!", inpatientNo, formatDateTime); + } + } + } + // Node assortIdNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName"); // String assortId = assortIdNode.getNodeValue(); @@ -199,6 +232,19 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive return reportDto; } + + /** + * 根据电子申请单号判断是否手工单 + * + * @param eafNo 电子申请单号 + * @return boolean + * @date 2024/1/9 14:38 + * @author YongBin Wen + */ + private boolean isManualDocuments(String eafNo) { + return Func.isBlank(eafNo); + } + /** * 返回检查报告新增成功消息 * diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index 7fa29e4..9babfce 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -229,5 +229,12 @@ +