From cbabcbf1dfdf6bca2a06c05a2be7026a47a0b202 Mon Sep 17 00:00:00 2001 From: tan <11033394+tanzr@user.noreply.gitee.com> Date: Thu, 2 Nov 2023 11:19:37 +0800 Subject: [PATCH] push --- .../dataConfig/In/collectList.json | 4 + .../dataConfig/{ => In}/homeQualitySet.json | 123 ++--- docus-webservice/dataConfig/collectList.json | 25 - .../dataConfig/seal/homeQualitySet.json | 54 +++ .../webservice/config/AsyncConfiguration.java | 2 +- .../docus/webservice/config/MyScheduling.java | 18 +- .../com/docus/webservice/entity/TBasic.java | 5 + .../docus/webservice/entity/TBasicExtend.java | 36 ++ .../com/docus/webservice/enums/Codes.java | 11 +- .../webservice/handler/ITBasicWebService.java | 29 ++ .../webservice/handler/TBasicWebService.java | 430 ++++++++++++++++-- .../webservice/mapper/TBasicExtendMapper.java | 15 + .../docus/webservice/mapper/TSealMapper.java | 10 + .../webservice/service/IPcmachineService.java | 2 + .../webservice/service/ITBasicService.java | 9 +- .../service/PcmachineServiceImpl.java | 115 ++++- .../webservice/service/TBasicServiceImpl.java | 178 +++++++- .../src/main/resources/application.yml | 6 +- .../src/main/resources/logback-spring.xml | 4 +- .../main/resources/mapper/TBasicMapper.xml | 52 ++- .../resources/mapper/TbasicExtendMapper.xml | 7 + 21 files changed, 949 insertions(+), 186 deletions(-) create mode 100644 docus-webservice/dataConfig/In/collectList.json rename docus-webservice/dataConfig/{ => In}/homeQualitySet.json (50%) delete mode 100644 docus-webservice/dataConfig/collectList.json create mode 100644 docus-webservice/dataConfig/seal/homeQualitySet.json create mode 100644 docus-webservice/src/main/java/com/docus/webservice/entity/TBasicExtend.java create mode 100644 docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicExtendMapper.java create mode 100644 docus-webservice/src/main/java/com/docus/webservice/mapper/TSealMapper.java create mode 100644 docus-webservice/src/main/resources/mapper/TbasicExtendMapper.xml diff --git a/docus-webservice/dataConfig/In/collectList.json b/docus-webservice/dataConfig/In/collectList.json new file mode 100644 index 0000000..54d2338 --- /dev/null +++ b/docus-webservice/dataConfig/In/collectList.json @@ -0,0 +1,4 @@ +{ + "task_count": 4, + "collectList":[] +} \ No newline at end of file diff --git a/docus-webservice/dataConfig/homeQualitySet.json b/docus-webservice/dataConfig/In/homeQualitySet.json similarity index 50% rename from docus-webservice/dataConfig/homeQualitySet.json rename to docus-webservice/dataConfig/In/homeQualitySet.json index 36063dc..df23c27 100644 --- a/docus-webservice/dataConfig/homeQualitySet.json +++ b/docus-webservice/dataConfig/In/homeQualitySet.json @@ -3,22 +3,22 @@ { "serialNumber": "1", "tableName": "t_basic", - "columnName": "ward_palce", - "qualityColumn": "SUBOR_HOSPITAL_DISTRICT", + "columnName": "inpatient_no", + "qualityColumn": "INHOSP_INDEX_NO", "byNull":0 }, { "serialNumber": "2", "tableName": "t_basic", - "columnName": "emp_id", - "qualityColumn": "EMPI_ID", + "columnName": "jzh", + "qualityColumn": "INHOSP_NO", "byNull":0 }, { "serialNumber": "3", "tableName": "t_basic", - "columnName": "admiss_id", - "qualityColumn": "ACCOUNT_NUM", + "columnName": "emp_id", + "qualityColumn": "EMPI_ID", "byNull":0 }, { @@ -31,136 +31,65 @@ { "serialNumber": "5", "tableName": "t_basic", - "columnName": "admiss_times", - "qualityColumn": "VISIT_NO", + "columnName": "visit_type_code", + "qualityColumn": "VISIT_TYPE_CODE", "byNull":0 }, { "serialNumber": "6", "tableName": "t_basic", - "columnName": "dis_dept", - "qualityColumn": "DEPT_CODE", - "byNull":1 + "columnName": "visit_type_name", + "qualityColumn": "VISIT_TYPE_NAME", + "byNull":0 }, { "serialNumber": "7", "tableName": "t_basic", - "columnName": "dis_dept_name", - "qualityColumn": "DEPT_NAME", + "columnName": "admiss_date", + "qualityColumn": "ADMIT_DATETIME", "byNull":0 }, { "serialNumber": "8", "tableName": "t_basic", - "columnName": "attending", - "qualityColumn": "CHAR_DOC_CODE", + "columnName": "admiss_times", + "qualityColumn": "INHOSP_NUM", "byNull":0 }, { "serialNumber": "9", "tableName": "t_basic", - "columnName": "dis_date", - "qualityColumn": "DISCHARGE_DATETIME", - "byNull":0 + "columnName": "id_card", + "qualityColumn": "ID_NUMBER", + "byNull":1 }, { "serialNumber": "10", "tableName": "t_basic", - "columnName": "is_dead", - "qualityColumn": "DEATH_FLAG", + "columnName": "attending", + "qualityColumn": "PRIMARY_DR_CODE", "byNull":0 }, { "serialNumber": "11", "tableName": "t_basic", - "columnName": "inpatient_no", - "qualityColumn": "INHOSP_NO", + "columnName": "attending_name", + "qualityColumn": "PRIMARY_DR_NAME", "byNull":0 }, { "serialNumber": "12", "tableName": "t_basic", - "columnName": "jzh", - "qualityColumn": "INHOSP_INDEX_NO", + "columnName": "dis_dept", + "qualityColumn": "DEPT_CODE", "byNull":0 }, { "serialNumber": "13", "tableName": "t_basic", - "columnName": "visit_type_code", - "qualityColumn": "VISIT_TYPE_CODE", - "byNull":0 - }, - { - "serialNumber": "14", - "tableName": "t_basic", - "columnName": "visit_type_name", - "qualityColumn": "VISIT_TYPE_NAME", - "byNull":0 - }, - { - "serialNumber": "15", - "tableName": "t_basic", - "columnName": "admiss_days", - "qualityColumn": "INHOSP_DAYS", - "byNull":0 - }, - { - "serialNumber": "16", - "tableName": "t_basic", - "columnName": "id_card", - "qualityColumn": "ID_NUMBER", - "byNull":0 - }, - { - "serialNumber": "17", - "tableName": "t_basic", - "columnName": "main_diag_code", - "qualityColumn": "WM_DIAG_CODE", - "byNull":0 - }, - { - "serialNumber": "18", - "tableName": "t_basic", - "columnName": "main_diag_name", - "qualityColumn": "WM_DIAG_NAME", - "byNull":0 - }, - { - "serialNumber": "19", - "tableName": "t_basic", - "columnName": "tcm_diag_code", - "qualityColumn": "TCM_DIAG_CODE", - "byNull":0 - }, - { - "serialNumber": "20", - "tableName": "t_basic", - "columnName": "tcm_diag_name", - "qualityColumn": "TCM_DIAG_NAME", + "columnName": "dis_dept_name", + "qualityColumn": "DEPT_NAME", "byNull":0 - }, - { - "serialNumber": "21", - "tableName": "t_basic", - "columnName": "admiss_dept", - "qualityColumn": "ADMIT_DEPT_CODE", - "byNull":1 - }, - { - "serialNumber": "22", - "tableName": "t_basic", - "columnName": "admiss_dept_name", - "qualityColumn": "ADMIT_DEPT_NAME", - "byNull":1 - } - , - { - "serialNumber": "23", - "tableName": "t_basic", - "columnName": "admiss_date", - "qualityColumn": "ADMIT_DATE", - "byNull":1 } ] } \ No newline at end of file diff --git a/docus-webservice/dataConfig/collectList.json b/docus-webservice/dataConfig/collectList.json deleted file mode 100644 index 0f31cd3..0000000 --- a/docus-webservice/dataConfig/collectList.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "task_count": 4, - "collectList":[ - { - "collectsys_code": "13", - "requestUrl": "http://localhost:9302/collect", - "remark": "电生理" - }, - { - "collectsys_code": "3", - "requestUrl": "http://localhost:9303/collect", - "remark": "PACS" - }, - { - "collectsys_code": "14", - "requestUrl": "http://localhost:9304/collect", - "remark": "内镜" - }, - { - "collectsys_code": "4", - "requestUrl": "http://localhost:9305/collect", - "remark": "心电图" - } - ] -} \ No newline at end of file diff --git a/docus-webservice/dataConfig/seal/homeQualitySet.json b/docus-webservice/dataConfig/seal/homeQualitySet.json new file mode 100644 index 0000000..5af5622 --- /dev/null +++ b/docus-webservice/dataConfig/seal/homeQualitySet.json @@ -0,0 +1,54 @@ +{ + "selectColumns":[ + { + "serialNumber": "1", + "tableName": "t_seal", + "columnName": "seal_id", + "qualityColumn": "SEAL_ID", + "byNull":0 + }, + { + "serialNumber": "2", + "tableName": "t_seal", + "columnName": "inpatient_no", + "qualityColumn": "INHOSP_INDEX_NO", + "byNull":0 + }, + { + "serialNumber": "3", + "tableName": "t_seal", + "columnName": "jzh", + "qualityColumn": "INHOSP_NO", + "byNull":0 + }, + { + "serialNumber": "4", + "tableName": "t_seal", + "columnName": "name", + "qualityColumn": "PAT_NAME", + "byNull":0 + }, + { + "serialNumber": "5", + "tableName": "t_seal", + "columnName": "admiss_times", + "qualityColumn": "VISIT_NO", + "byNull":0 + }, + { + "serialNumber": "6", + "tableName": "t_seal", + "columnName": "seal_date", + "qualityColumn": "SEAL_DATETIME", + "byNull":0 + }, + { + "serialNumber": "7", + "tableName": "t_seal", + "columnName": "admiss_date", + "qualityColumn": "ADMIT_DATE", + "byNull":0 + } + + ] +} \ No newline at end of file diff --git a/docus-webservice/src/main/java/com/docus/webservice/config/AsyncConfiguration.java b/docus-webservice/src/main/java/com/docus/webservice/config/AsyncConfiguration.java index f6b55ab..46db75c 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/config/AsyncConfiguration.java +++ b/docus-webservice/src/main/java/com/docus/webservice/config/AsyncConfiguration.java @@ -17,7 +17,7 @@ public class AsyncConfiguration { // 核心线程数:线程池创建时候初始化的线程数 executor.setCorePoolSize(10); // 最大线程数:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程 - executor.setMaxPoolSize(20); + executor.setMaxPoolSize(50); // 缓冲队列:用来缓冲执行任务的队列 executor.setQueueCapacity(500); // 允许线程的空闲时间60秒:当超过了核心线程之外的线程在空闲时间到达之后会被销毁 diff --git a/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java b/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java index 67ab25c..4af925a 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java +++ b/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java @@ -17,14 +17,14 @@ public class MyScheduling { private Logger logger = LogManager.getLogger(MyScheduling.class); //10分钟执行一次 - @Scheduled(fixedRate = 1000 * 60 * 10) - public void beat() { - Integer count = pcmachineService.count(); - logger.info("----心跳执行开始,当前在线采集器数:" + count + "----"); - pcmachineService.isBeat(); - Integer count2 = pcmachineService.count(); - logger.info("----心跳执行结束,此次心跳下线采集数:" + (count - count2) + "----"); - - } +// @Scheduled(fixedRate = 1000 * 60 * 10) +// public void beat() { +// Integer count = pcmachineService.count(); +// logger.info("----心跳执行开始,当前在线采集器数:" + count + "----"); +// pcmachineService.isBeat(); +// Integer count2 = pcmachineService.count(); +// logger.info("----心跳执行结束,此次心跳下线采集数:" + (count - count2) + "----"); +// +// } } diff --git a/docus-webservice/src/main/java/com/docus/webservice/entity/TBasic.java b/docus-webservice/src/main/java/com/docus/webservice/entity/TBasic.java index 68b12bd..83e55c2 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/entity/TBasic.java +++ b/docus-webservice/src/main/java/com/docus/webservice/entity/TBasic.java @@ -1,6 +1,8 @@ package com.docus.webservice.entity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -71,6 +73,7 @@ public class TBasic implements Serializable { @ApiModelProperty(value = "住院科室名称") private String admissDeptName; + @ApiModelProperty(value = "出院日期") private Date disDate; @@ -162,6 +165,8 @@ public class TBasic implements Serializable { private String tcmDiagName; @ApiModelProperty(value = "所在院区") private String wardPalce; + @ApiModelProperty(value = "是否作废(0:否,1:是)") + private String isCancel; /** * 特殊处理 y:n diff --git a/docus-webservice/src/main/java/com/docus/webservice/entity/TBasicExtend.java b/docus-webservice/src/main/java/com/docus/webservice/entity/TBasicExtend.java new file mode 100644 index 0000000..a55f7b4 --- /dev/null +++ b/docus-webservice/src/main/java/com/docus/webservice/entity/TBasicExtend.java @@ -0,0 +1,36 @@ +package com.docus.webservice.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +/** + *

+ * 病案基本信息扩展表 + *

+ * + * @author jiashi + * @since 2022-06-13 + */ +@Data +@EqualsAndHashCode +@ApiModel(value="TBasicExtend对象", description="病案基本信息扩展表") +public class TBasicExtend { + @ApiModelProperty(value = "病案主键") + @TableId(value = "patient_id", type = IdType.ASSIGN_ID) + private String patientId; + @ApiModelProperty(value = "报销政策代码") + private String claimPolicyCode; + @ApiModelProperty(value = "报销政策名称") + private String claimPolicyName; + @ApiModelProperty(value = "医保结算类型代码") + private String mioSettleTypeCode; + @ApiModelProperty(value = "医保结算类型名称") + private String mioSettleTypeName; + @ApiModelProperty(value = "责任护士") + private String dutyNurse; + @ApiModelProperty(value = "预住院流水号") + private String preJzh; +} diff --git a/docus-webservice/src/main/java/com/docus/webservice/enums/Codes.java b/docus-webservice/src/main/java/com/docus/webservice/enums/Codes.java index e44961a..07ae5f5 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/enums/Codes.java +++ b/docus-webservice/src/main/java/com/docus/webservice/enums/Codes.java @@ -18,8 +18,12 @@ public enum Codes { RET_CON("103","RetCon"), //web service 服务名 // EXTERNAL("9201","docus_tBasic_data"), - //静态文件存放位置 - JSON_ADDRESS("999","\\dataConfig\\homeQualitySet.json"), + //静态文件存放位置 住院 + JSON_ADDRESS("999","\\dataConfig\\In\\homeQualitySet.json"), + //静态文件存放位置 出院 + JSON_OUT_ADDRESS("999","\\dataConfig\\Out\\homeQualitySet.json"), + //静态文件存放位置 封存 + JSON_SEAL_ADDRESS("999","\\dataConfig\\seal\\homeQualitySet.json"), //接收二级节点 MSG("201","Msg"), //错误日志编号 @@ -29,7 +33,8 @@ public enum Codes { //静态文件根元素名 SELECT_COLUMNS("10000","selectColumns"), //collectList静态文件根元素名 - JSON_COLLECTLIST("800","\\dataConfig\\collectList.json"), + JSON_COLLECTLIST("800","\\dataConfig\\In\\collectList.json"), + JSON_OUT_COLLECTLIST("800","\\dataConfig\\Out\\collectList.json"), JSON_TASK_COUNT("801","task_count"), JSON_COLLECTLIST_ROOT("802","collectList"); //代码 diff --git a/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java b/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java index 52f075f..653a0a1 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java +++ b/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java @@ -14,6 +14,35 @@ public interface ITBasicWebService { @WebMethod String OUT_HOS_REG(String tbasic); + /** + * 住院患者修改 + * @param tbasic + * @return + */ @WebMethod String OUT_HOS_CAN(String tbasic); + + /** + * 出院患者信息新增 + * @param tbasic + * @return + */ + @WebMethod + String DISCHARGE_REG(String tbasic); + + /** + * 出院患者修改 + * @param tbasic + * @return + */ + @WebMethod + String DISCHARGE_CAN(String tbasic); + +// /** +// * 病案封存 +// * @param tseal +// * @return +// */ +// @WebMethod +// String MEDICAL_RECORD_SEAL(String tseal); } diff --git a/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java b/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java index 677f9ad..d87aaeb 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java +++ b/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java @@ -2,15 +2,12 @@ package com.docus.webservice.handler; import com.alibaba.fastjson.JSON; -import com.docus.webservice.dto.CollectList; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.docus.webservice.dto.SelectColumn; -import com.docus.webservice.entity.AfInterfaceCollect; -import com.docus.webservice.entity.AfInterfaceCollectSub; -import com.docus.webservice.entity.MrReportError; +import com.docus.webservice.entity.*; -import com.docus.webservice.entity.TBasic; import com.docus.webservice.enums.Codes; -import com.docus.webservice.mapper.AfInterfaceCollectMapper; +import com.docus.webservice.mapper.*; import com.docus.webservice.service.IMrReportErrorService; import com.docus.webservice.service.IPcmachineService; import com.docus.webservice.service.ITBasicService; @@ -19,14 +16,13 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; import javax.jws.WebService; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.net.URISyntaxException; +import java.text.SimpleDateFormat; import java.util.*; @WebService @@ -44,6 +40,18 @@ public class TBasicWebService implements ITBasicWebService { @Autowired private AfInterfaceCollectMapper afInterfaceCollectMapper; + @Autowired + private TBasicMapper tBasicMapper; + + @Autowired + private TScanAssortMapper tScanAssortMapper; + + @Autowired + private TBasicExtendMapper tBasicExtendMapper; + + @Autowired + private TSealMapper tSealMapper; + private Logger log = LogManager.getLogger(TBasicWebService.class); /** @@ -73,6 +81,12 @@ public class TBasicWebService implements ITBasicWebService { mrReportErrorService.save(mrReportError); } + /** + * 住院成员信息新增 + * + * @param tbasic + * @return + */ @Override public String OUT_HOS_REG(String tbasic) { log.info("住院成员信息新增xml" + tbasic); @@ -80,7 +94,9 @@ public class TBasicWebService implements ITBasicWebService { //解析xml HashMap tBasicMap = new HashMap<>(); HashMap tBasicSubMap = new HashMap<>(); - parseXml(tbasic, tBasicMap, tBasicSubMap); + HashMap dateMap = new HashMap<>(); + // Date disDate=null; + parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap); //处理业务 TBasic tBasic; if (tBasicMap != null && tBasicMap.size() > 0) { @@ -91,12 +107,22 @@ public class TBasicWebService implements ITBasicWebService { // } //特殊处理出院时间 没有就取当前时间 Date currentDate = new Date(); - if(tBasic.getDisDate()==null){ - tBasic.setDisDate(currentDate); - } +// if(tBasic.getDisDate()==null){ +// tBasic.setDisDate(currentDate); +// } + //tBasic.setCreateTime(currentDate); tBasic.setCreateTime(currentDate); - itBasicService.savaAndSub(tBasic, tBasicSubMap); -// this.saveAndCall(tBasic); + itBasicService.savaAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh"))); + // this.saveAndCall(tBasic); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US); + if (dateMap.size() > 1) { + Date admissDate = sdf1.parse(String.valueOf(dateMap.get("admissDate"))); + Date disDate = sdf1.parse(String.valueOf(dateMap.get("disDate"))); + tBasic.setAdmissDate(sdf.parse(sdf.format(admissDate))); + tBasic.setDisDate(sdf.parse(sdf.format(disDate))); + tBasic.setInpatientNo(dateMap.get("inpatientNo").toString()); + } pcmachineService.saveAndCall(tBasic); } else { insertLog(tbasic); @@ -110,20 +136,21 @@ public class TBasicWebService implements ITBasicWebService { } catch (Exception e) { e.printStackTrace(); log.error("OUT_HOS_REG方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(); + return ResultUtils.fail(e.getMessage()); } - log.info("返回结果:" + ResultUtils.success().asXML()); + log.info("OUT_HOS_REG返回结果:" + ResultUtils.success().asXML()); return ResultUtils.success().asXML(); } + /** - * 解析xml + * 住院解析xml * * @param tbasic * @param tBasicMap * @param tBasicSubMap */ - private void parseXml(String tbasic, HashMap tBasicMap, HashMap tBasicSubMap) { + private void parseXml(String tbasic, HashMap tBasicMap, HashMap tBasicSubMap, HashMap dateMap) { XmlUtils xmlUtils = null; log.info("开始解析xml"); try { @@ -162,55 +189,396 @@ public class TBasicWebService implements ITBasicWebService { } } } + try { + String preJzh = xmlUtils.getElementText("PRE_INHOSP_NO"); + System.err.println(preJzh); + if (null != preJzh && !"".equals(preJzh)) { + //预住院患者记录 + TBasic tBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", preJzh)); + //正式住院患者记录 + TBasic tBasic1 = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasicMap.get("jzh"))); + if (null != tBasic && null != tBasic1) { + dateMap.put("admissDate", tBasic.getAdmissDate().toString()); + dateMap.put("disDate", tBasic1.getAdmissDate().toString()); + dateMap.put("inpatientNo", tBasic.getInpatientNo()); + //将预住院患者病历文件patient_id改为正式住院的patient_id,合并病历 + int i = tScanAssortMapper.updateByPatientId(tBasic1.getPatientId(), tBasic.getPatientId()); + if (i <= 0) { + log.info("当前预住院没有文件!"); + }else { + log.info("本次预住院合并"+i+"份报告"); + } + } else { + log.error(""); + } + } + dateMap.put("preJzh",preJzh); + } catch (Exception e) { + log.error("预住院错误信息{}", e.getMessage()); + } + } + /** + * 住院成员信息修改 + * + * @param tbasic + * @return + */ @Override public String OUT_HOS_CAN(String tbasic) { log.info("住院成员信息修改xml" + tbasic); try { + long l = System.currentTimeMillis(); HashMap tBasicMap = new HashMap<>(); HashMap tBasicSubMap = new HashMap<>(); - parseXml(tbasic, tBasicMap, tBasicSubMap); + HashMap dateMap = new HashMap<>(); + //parseXml(tbasic, tBasicMap, tBasicSubMap); + parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap); + TBasic tBasic; + XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); + String elementText = xmlUtils.getElementText("IS_ADM_CANCEL"); + if (elementText.equals("1")) { + tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); + tBasic.setIsCancel("1"); + int update = tBasicMapper.update(tBasic, new QueryWrapper().eq("jzh", tBasic.getJzh())); + if (update > 0) { + log.info(tBasic.getJzh() + "取消入院成功!"); + } + + } else { + long l1 = System.currentTimeMillis(); + log.info("解析xml时间------" + (l1 - l)); + //处理业务 + long l2 = System.currentTimeMillis(); + + if (tBasicMap != null && tBasicMap.size() > 0) { + long l3 = System.currentTimeMillis(); + tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); +// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ +// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); +// tBasic.setIsDead(isDead); +// } + long l4 = System.currentTimeMillis(); + log.info("获取tBasic对象时间----------" + (l4 - l3)); + if (StringUtils.isBlank(tBasic.getEmpId())) { + insertLog(tbasic); + log.info("emp_id字段不能为空值"); + return ResultUtils.fail("emp_id字段不能为空值"); + } + long l5 = System.currentTimeMillis(); + tBasic.setUpdateTime(new Date()); + try { + itBasicService.updateAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh"))); +// this.saveAndCall(tBasic); + long l6 = System.currentTimeMillis(); + log.info("update耗时----------" + (l6 - l5)); + long l7 = System.currentTimeMillis(); + tBasic.setAdmissDate(dateMap.get("admissDate")); + tBasic.setDisDate(dateMap.get("disDate")); + pcmachineService.saveAndCall(tBasic); + long l8 = System.currentTimeMillis(); + log.info("saveAndCall耗时-------" + (l8 - l7)); + } catch (RuntimeException e) { + insertLog(tbasic); + e.printStackTrace(); + log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); + return ResultUtils.fail(e.getMessage()); + } + } else { + insertLog(tbasic); + return ResultUtils.fail("请提供完整的xml"); + } + long l3 = System.currentTimeMillis(); + log.info("业务处理时间------------" + (l3 - l2)); + } + + } catch (Exception e) { + e.printStackTrace(); + log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); + return ResultUtils.fail(e.getMessage()); + } + log.info("OUT_HOS_CAN方法运行结果:" + ResultUtils.success().asXML()); + return ResultUtils.success().asXML(); + } + + + /** + * 出院成员信息新增 + * + * @param tbasic + * @return + */ + @Override + public String DISCHARGE_REG(String tbasic) { + log.info("出院成员信息新增xml" + tbasic); + try { + //解析xml + HashMap tBasicMap = new HashMap<>(); + HashMap tBasicSubMap = new HashMap<>(); + HashMap tBasicExtendMap = new HashMap<>(); + OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap); //处理业务 TBasic tBasic; + XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); + String elementText = xmlUtils.getElementText("IS_ADM_CANCEL"); + if (elementText.equals("1")) { + tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); + tBasic.setIsCancel("1"); + int update = tBasicMapper.update(tBasic, new QueryWrapper().eq("jzh", tBasic.getJzh())); + if (update > 0) { + log.info(tBasic.getJzh() + "取消入院成功!"); + } + + }else { + TBasicExtend tBasicExtend; + if (tBasicMap != null && tBasicMap.size() > 0) { + tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); + tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class); + tBasicExtend.setPatientId(tBasic.getPatientId()); +// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ +// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); +// tBasic.setIsDead(isDead); +// } + //特殊处理出院时间 没有就取当前时间 + +// if(tBasic.getDisDate()==null){ +// tBasic.setDisDate(currentDate); +// } + //tBasic.setCreateTime(currentDate); + + itBasicService.OutSavaAndSub(tBasic, tBasicSubMap, tBasicExtend); + // this.saveAndCall(tBasic); + pcmachineService.saveAndCallOut(tBasic); + } else { + insertLog(tbasic); + log.info("请提供完整的xml"); + return ResultUtils.fail("请提供完整的xml"); + } + } + } catch (RuntimeException e) { + insertLog(tbasic); + log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage()); + return ResultUtils.fail(e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage()); + return ResultUtils.fail(e.getMessage()); + } + log.info("DISCHARGE_REG返回结果:" + ResultUtils.success().asXML()); + return ResultUtils.success().asXML(); + } + + /** + * 出院成员信息修改 + * + * @param tbasic + * @return + */ + @Override + public String DISCHARGE_CAN(String tbasic) { + log.info("出院成员信息修改xml" + tbasic); + + try { + + long l = System.currentTimeMillis(); + HashMap tBasicMap = new HashMap<>(); + HashMap tBasicSubMap = new HashMap<>(); + HashMap tBasicExtendMap = new HashMap<>(); + TBasic tBasic; + TBasicExtend tBasicExtend; + OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap); + long l1 = System.currentTimeMillis(); + log.info("解析xml时间------" + (l1 - l)); + //处理业务 + long l2 = System.currentTimeMillis(); + if (tBasicMap != null && tBasicMap.size() > 0) { + long l3 = System.currentTimeMillis(); tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); + tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class); + tBasicExtend.setPatientId(tBasic.getPatientId()); // if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ // String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); // tBasic.setIsDead(isDead); // } - if (StringUtils.isBlank(tBasic.getEmpId())) { + long l4 = System.currentTimeMillis(); + log.info("获取tBasic对象时间----------" + (l4 - l3)); + if (StringUtils.isBlank(tBasic.getJzh())) { insertLog(tbasic); - log.info("emp_id字段不能为空值"); - return ResultUtils.fail("emp_id字段不能为空值"); + log.info("INHOSP_NO字段不能为空值"); + return ResultUtils.fail("INHOSP_NO字段不能为空值"); } + long l5 = System.currentTimeMillis(); tBasic.setUpdateTime(new Date()); try { - itBasicService.updateAndSub(tBasic, tBasicSubMap); + itBasicService.OutUpdateAndSub(tBasic, tBasicSubMap, tBasicExtend); // this.saveAndCall(tBasic); - pcmachineService.saveAndCall(tBasic); + long l6 = System.currentTimeMillis(); + log.info("update耗时----------" + (l6 - l5)); + long l7 = System.currentTimeMillis(); + pcmachineService.saveAndCallOut(tBasic); + long l8 = System.currentTimeMillis(); + log.info("saveAndCall耗时-------" + (l8 - l7)); } catch (RuntimeException e) { insertLog(tbasic); e.printStackTrace(); - log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); + log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage()); return ResultUtils.fail(e.getMessage()); } } else { insertLog(tbasic); return ResultUtils.fail("请提供完整的xml"); } + long l3 = System.currentTimeMillis(); + log.info("业务处理时间------------" + (l3 - l2)); } catch (Exception e) { e.printStackTrace(); - log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(); + log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage()); + return ResultUtils.fail(e.getMessage()); } - log.info("OUT_HOS_CAN方法运行结果:" + ResultUtils.success().asXML()); + log.info("DISCHARGE_CAN方法运行结果:" + ResultUtils.success().asXML()); return ResultUtils.success().asXML(); } + /** + * 病案封存 + * + * @param tseal + * @return + */ +// @Override +// public String MEDICAL_RECORD_SEAL(String tseal) { +// log.info("病案封存" + tseal); +// try { +// //解析xml +// HashMap tSealMap = new HashMap<>(); +// SealParseXml(tseal, tSealMap); +// //处理业务 +// TSeal tSeal; +// if (tSealMap != null && tSealMap.size() > 0) { +// tSeal = JSON.parseObject(JSON.toJSONString(tSealMap), TSeal.class); +// int insert = tSealMapper.insert(tSeal); +// if (insert > 0){ +// log.info(tSeal.getJzh()+"----封存信息插入成功!"); +// }else { +// log.info(tSeal.getJzh()+"----封存信息插入失败!"); +// } +// } else { +// insertLog(tseal); +// log.info("请提供完整的xml"); +// return ResultUtils.fail("请提供完整的xml"); +// } +// } catch (RuntimeException e) { +// insertLog(tseal); +// log.error("MEDICAL_RECORD_SEAL方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("MEDICAL_RECORD_SEAL中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } +// log.info("MEDICAL_RECORD_SEAL返回结果:" + ResultUtils.success().asXML()); +// return ResultUtils.success().asXML(); +// } +// /** +// * 封存解析xml +// * +// * @param tSeal +// * @param tSealMap +// */ +// private void SealParseXml(String tSeal, HashMap tSealMap) { +// XmlUtils xmlUtils = null; +// log.info("开始解析xml"); +// try { +// xmlUtils = new XmlUtils(new ByteArrayInputStream(tSeal.getBytes("UTF-8"))); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// +// if (StringUtils.isBlank(xmlUtils.getElementText("SEAL_ID"))){ +// log.error("SEAL_ID 字段不能为空值"); +// throw new RuntimeException("SEAL_ID 字段不能为空值"); +// } +// //解析json映射文件 +// String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_SEAL_ADDRESS.getMessage()); +// Map jsonMap = JSON.parseObject(json, Map.class); +// +// List selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class); +// String value; +// for (SelectColumn selectColumn : selectColumns) { +// try { +// value = xmlUtils.getElementText(selectColumn.getQualityColumn()) == null ? null : String.valueOf(xmlUtils.getElementText(selectColumn.getQualityColumn())); +// } catch (RuntimeException e) { +// String message = e.getMessage(); +// log.error("解析xml出现:" + message); +// throw new RuntimeException(message); +// } +// if (StringUtils.isBlank(value)) { +// if (selectColumn.getByNull() == 0) { +// insertLog(tSeal); +// log.error(selectColumn.getQualityColumn() + " 字段不能为空值"); +// throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值"); +// } else { +// continue; +// } +// } else { +// if (selectColumn.getTableName().equals("t_seal")) { +// tSealMap.put(selectColumn.getColumnName(), value); +// } +// } +// } +// } +// + /** + * 出院解析xml + * + * @param tbasic + * @param tBasicMap + * @param tBasicSubMap + */ + private void OutParseXml(String tbasic, HashMap tBasicMap, HashMap tBasicSubMap, HashMap tBasicExtendMap) { + XmlUtils xmlUtils = null; + log.info("开始解析xml"); + try { + xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + //解析json映射文件 + String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_OUT_ADDRESS.getMessage()); + Map jsonMap = JSON.parseObject(json, Map.class); - - - + List selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class); + String value; + for (SelectColumn selectColumn : selectColumns) { + try { + value = xmlUtils.getElementText(selectColumn.getQualityColumn()) == null ? null : String.valueOf(xmlUtils.getElementText(selectColumn.getQualityColumn())); + } catch (RuntimeException e) { + String message = e.getMessage(); + log.error("解析xml出现:" + message); + throw new RuntimeException(message); + } + if (StringUtils.isBlank(value)) { + if (selectColumn.getByNull() == 0) { + insertLog(tbasic); + log.error(selectColumn.getQualityColumn() + " 字段不能为空值"); + throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值"); + } else { + continue; + } + } else { + if (selectColumn.getTableName().equals("t_basic")) { + tBasicMap.put(selectColumn.getColumnName(), value); + } + if (selectColumn.getTableName().equals("t_basic_extend")) { + tBasicExtendMap.put(selectColumn.getColumnName(), value); + } + if (selectColumn.getTableName().equals("t_basic_sub")) { + tBasicSubMap.put(selectColumn.getColumnName(), value); + } + } + } + } } diff --git a/docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicExtendMapper.java b/docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicExtendMapper.java new file mode 100644 index 0000000..2980e64 --- /dev/null +++ b/docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicExtendMapper.java @@ -0,0 +1,15 @@ +package com.docus.webservice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.docus.webservice.entity.TBasicExtend; + +/** + *

+ * 病案基本信息扩展 Mapper 接口 + *

+ * + * @author jiashi + * @since 2022-06-13 + */ +public interface TBasicExtendMapper extends BaseMapper { +} diff --git a/docus-webservice/src/main/java/com/docus/webservice/mapper/TSealMapper.java b/docus-webservice/src/main/java/com/docus/webservice/mapper/TSealMapper.java new file mode 100644 index 0000000..23ea86b --- /dev/null +++ b/docus-webservice/src/main/java/com/docus/webservice/mapper/TSealMapper.java @@ -0,0 +1,10 @@ +package com.docus.webservice.mapper; + + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.docus.webservice.entity.TSeal; + +public interface TSealMapper extends BaseMapper { +} + diff --git a/docus-webservice/src/main/java/com/docus/webservice/service/IPcmachineService.java b/docus-webservice/src/main/java/com/docus/webservice/service/IPcmachineService.java index 3ca8830..3fa77b5 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/service/IPcmachineService.java +++ b/docus-webservice/src/main/java/com/docus/webservice/service/IPcmachineService.java @@ -12,4 +12,6 @@ public interface IPcmachineService { Integer count(); void saveAndCall(TBasic tBasic) throws URISyntaxException; + + void saveAndCallOut(TBasic tBasic); } diff --git a/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java b/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java index 811d9c4..8c43578 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java +++ b/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java @@ -3,6 +3,7 @@ package com.docus.webservice.service; import com.baomidou.mybatisplus.extension.service.IService; import com.docus.webservice.entity.TBasic; +import com.docus.webservice.entity.TBasicExtend; import java.util.HashMap; @@ -15,7 +16,11 @@ import java.util.HashMap; * @since 2021-04-14 */ public interface ITBasicService extends IService { - void savaAndSub(TBasic tBasic, HashMap tBasicSubMap); + void savaAndSub(TBasic tBasic, HashMap tBasicSubMap,String preJzh); - void updateAndSub(TBasic tBasic, HashMap tBasicSubMap); + void OutSavaAndSub(TBasic tBasic, HashMap tBasicSubMap, TBasicExtend tBasicExtend); + + void updateAndSub(TBasic tBasic, HashMap tBasicSubMap,String preJzh); + + void OutUpdateAndSub(TBasic tBasic, HashMap tBasicSubMap,TBasicExtend tBasicExtend); } diff --git a/docus-webservice/src/main/java/com/docus/webservice/service/PcmachineServiceImpl.java b/docus-webservice/src/main/java/com/docus/webservice/service/PcmachineServiceImpl.java index b1c8ad6..77b652f 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/service/PcmachineServiceImpl.java +++ b/docus-webservice/src/main/java/com/docus/webservice/service/PcmachineServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; +import java.text.SimpleDateFormat; import java.util.*; @Service @@ -78,6 +79,11 @@ public class PcmachineServiceImpl implements IPcmachineService { return currentpath; } + /** + * 住院调用 + * @param tBasic + * @throws URISyntaxException + */ @Async("execCollector") @Override public void saveAndCall(TBasic tBasic) throws URISyntaxException { @@ -124,22 +130,125 @@ public class PcmachineServiceImpl implements IPcmachineService { log.info("省中医病案采集-子任务失败!"); } for (CollectList collectList : collectLists) { - //调用http发送请求 + //调用http发送请求 执行采集器 try { - this.sendHttp(collectList, tBasic.getJzh()); + if (collectList.getCollectsys_code().equals("3")){ + this.sendHttpPacs(collectList,tBasic); + log.info("调用pacs采集参数{}",tBasic); + }else { + this.sendHttp(collectList, tBasic.getJzh()); + } }catch (Exception e){ - log.info("采集器:"+collectList+"出错"); + log.info("采集器:"+collectList+"出错"+e.getMessage()+"参数{}"+tBasic); + } + } + } + log.info("------------异步结束---------------"); + } + + /** + * 出院调用 + * @param tBasic + * @throws URISyntaxException + */ + @Async("execCollector") + @Override + public void saveAndCallOut(TBasic tBasic) { + log.info("--------------异步调用此方法---------------"); + log.info("病案对象" + tBasic.toString()); + //解析json映射文件 + String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_OUT_COLLECTLIST.getMessage()); + if (StringUtils.isNotBlank(json)) { + Map jsonMap = JSON.parseObject(json, Map.class); + //任务数 + Integer task_count = JSON.parseObject(String.valueOf(jsonMap.get(Codes.JSON_TASK_COUNT.getMessage())), Integer.class); + + List collectLists = JSON.parseArray(String.valueOf(jsonMap.get(Codes.JSON_COLLECTLIST_ROOT.getMessage())), CollectList.class); + if(collectLists==null||collectLists.size()==0){ + return; + } + //添加省中医病案采集 + SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); + AfInterfaceCollect afc = new AfInterfaceCollect(); + Long afcId = idWorker.nextId(); + afc.setId(afcId); + afc.setJzh(tBasic.getJzh()); + afc.setTaskCount(task_count); + afc.setCreateTime(new Date()); + int i = afInterfaceCollectMapper.addAfInterfaceCollect(afc); + if (i < 0) { + log.info("省中医病案采集表添加信息失败!"); + } + //添加省中医病案采集-子任务 + List list = new ArrayList<>(); + + for (CollectList collectList : collectLists) { + AfInterfaceCollectSub afInterfaceCollectSub = new AfInterfaceCollectSub(); + Long afcsId = idWorker.nextId(); + afInterfaceCollectSub.setId(afcsId); + afInterfaceCollectSub.setAfInterfaceCollectId(afcId); + afInterfaceCollectSub.setCollectsysCode(collectList.getCollectsys_code()); + afInterfaceCollectSub.setJzh(tBasic.getJzh()); + collectList.setId(afcsId); + list.add(afInterfaceCollectSub); + } + int i1 = afInterfaceCollectMapper.addAfInterfaceCollectSub(list); + if (i1 < 0) { + log.info("省中医病案采集-子任务失败!"); + } + for (CollectList collectList : collectLists) { + //调用http发送请求 执行采集器 + try { + if (collectList.getCollectsys_code().equals("3")){ + this.sendHttpPacs(collectList,tBasic); + log.info("调用"+collectList.getRemark()+"采集器"); + }else if (collectList.getCollectsys_code().equals("23")||collectList.getCollectsys_code().equals("4")){ + this.sendHttpEcg(collectList,tBasic); + log.info("调用"+collectList.getRemark()+"采集器"); + }else { + this.sendHttp(collectList, tBasic.getJzh()); + log.info("调用"+collectList.getRemark()+"采集器"); } + }catch (Exception e){ + log.info("采集器:"+collectList+"出错"+e.getMessage()); } + } } log.info("------------异步结束---------------"); } + private String sendHttp(CollectList collectList, String jzh) throws Exception { Map params = new HashMap<>(); params.put("empId", jzh); params.put("collectSubId", String.valueOf(collectList.getId())); return HttpUtils.get(collectList.getRequestUrl(), params); } + private String sendHttpPacs(CollectList collectList, TBasic tBasic) throws Exception { + Map params = new HashMap<>(); + params.put("empId", tBasic.getInpatientNo()); + params.put("collectSubId", String.valueOf(collectList.getId())); + params.put("admissDate",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tBasic.getAdmissDate())); + params.put("disDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tBasic.getDisDate())); + System.err.println(params); + log.info("调用pacs采集器参数{}",params); + params.put("times",String.valueOf(tBasic.getAdmissTimes())); + return HttpUtils.get(collectList.getRequestUrl(), params); + } + + private String sendHttpEcg(CollectList collectList, TBasic tBasic) throws Exception { + Map params = new HashMap<>(); + params.put("empId",tBasic.getJzh()); + params.put("collectSubId", String.valueOf(collectList.getId())); + params.put("admissDate",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tBasic.getAdmissDate())); + params.put("disDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tBasic.getDisDate())); + System.err.println(params); + log.info("调用心电采集器参数{}",params); + params.put("times",String.valueOf(tBasic.getAdmissTimes())); + return HttpUtils.get(collectList.getRequestUrl(), params); + } + + + } diff --git a/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java b/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java index 3f69a44..854775e 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java +++ b/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java @@ -3,17 +3,28 @@ package com.docus.webservice.service; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.docus.webservice.entity.TBasic; +import com.docus.webservice.entity.TBasicExtend; import com.docus.webservice.entity.TBasicSub; +import com.docus.webservice.handler.TBasicWebService; +import com.docus.webservice.mapper.TBasicExtendMapper; import com.docus.webservice.mapper.TBasicMapper; import com.docus.webservice.mapper.TBasicSubMapper; import com.docus.webservice.utils.ResultUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.sql.Wrapper; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashMap; /** @@ -34,36 +45,184 @@ public class TBasicServiceImpl extends ServiceImpl impleme @Autowired private TBasicSubMapper tBasicSubMapper; + @Autowired + private TBasicExtendMapper tBasicExtendMapper; + + private Logger log = LogManager.getLogger(ServiceImpl.class); + + /** + * 出院调用 + * + * @param tBasic + * @param tBasicSubMap + * @param tBasicExtend + */ @Transactional @Override - public void savaAndSub(TBasic tBasic, HashMap tBasicSubMap) { + public void OutSavaAndSub(TBasic tBasic, HashMap tBasicSubMap, TBasicExtend tBasicExtend) { TBasic selectTBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasic.getJzh())); if (selectTBasic == null) { + log.info("基础信息住院天数----" + tBasic.getAdmissDays()); int insert = tBasicMapper.insert(tBasic); if (insert <= 0) { throw new RuntimeException("数据库执行出错,请重试"); } - TBasicSub tBasicSub = JSON.parseObject(JSON.toJSONString(tBasicSubMap), TBasicSub.class); - tBasicSub.setPatientId(tBasic.getPatientId()); - insert = tBasicSubMapper.insert(tBasicSub); + if (tBasicExtend.getClaimPolicyCode() != null || tBasicExtend.getMioSettleTypeCode() != null) { + TBasic selectTBasic1 = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasic.getJzh())); + tBasicExtend.setPatientId(selectTBasic1.getPatientId()); + TBasicExtend tBasicExtend1 = tBasicExtendMapper.selectOne(new QueryWrapper().eq("patient_id", tBasicExtend.getPatientId())); + if (tBasicExtend1 == null) { + int insert1 = tBasicExtendMapper.insert(tBasicExtend); + if (insert1 <= 0) { + throw new RuntimeException("医保结算类型/政策出错!"); + } + } else { + int i = tBasicExtendMapper.updateById(tBasicExtend); + if (i <= 0) { + throw new RuntimeException("医保结算类型/政策出错!"); + } + } + } + //TBasicSub tBasicSub = JSON.parseObject(JSON.toJSONString(tBasicSubMap), TBasicSub.class); + // tBasicSub.setPatientId(tBasic.getPatientId()); + //insert = tBasicSubMapper.insert(tBasicSub); if (insert <= 0) { throw new RuntimeException("数据库执行出错,请重试"); } } else { - throw new RuntimeException("就诊号不能和已有的重复"); + OutUpdateAndSub(tBasic, tBasicSubMap, tBasicExtend); } } + /** + * 出院调用 + * + * @param tBasic + * @param tBasicSubMap + * @param tBasicExtend + */ @Override - public void updateAndSub(TBasic tBasic, HashMap tBasicSubMap) { - TBasic selectTBasic = tBasicMapper.selectOne(new QueryWrapper().eq("emp_id", tBasic.getEmpId())); + public void OutUpdateAndSub(TBasic tBasic, HashMap tBasicSubMap, TBasicExtend tBasicExtend) { + long l = System.currentTimeMillis(); + TBasic selectTBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasic.getJzh())); + long l1 = System.currentTimeMillis(); + log.info("selectTBasic耗时---------" + (l1 - l)); if (selectTBasic != null) { - int insert = tBasicMapper.update(tBasic, new QueryWrapper().eq("emp_id", tBasic.getEmpId())); + long l2 = System.currentTimeMillis(); + System.err.println(tBasic.getDisDate()); + log.info("基础信息住院天数----" + tBasic.getAdmissDays()); + LambdaUpdateWrapper eq = Wrappers.lambdaUpdate() + .set(TBasic::getDisDate, null == tBasic.getDisDate() ? null : tBasic.getDisDate()) + .set(TBasic::getWardPalce, tBasic.getWardPalce()).set(TBasic::getAdmissDays, tBasic.getAdmissDays()) + .set(TBasic::getAdmissDept,tBasic.getAdmissDept()).set(TBasic ::getAdmissDeptName,tBasic.getAdmissDeptName()) + .set(TBasic::getIsDead,tBasic.getIsDead()).set(TBasic::getName,tBasic.getName()) + .set(TBasic::getInpatientNo,tBasic.getInpatientNo()).set(TBasic::getDisDept,tBasic.getDisDept()) + .set(TBasic::getDisDeptName,tBasic.getDisDeptName()).eq(TBasic::getJzh, tBasic.getJzh()); + int update1 = tBasicMapper.update(tBasic, eq); + if (tBasicExtend.getClaimPolicyCode() != null || tBasicExtend.getMioSettleTypeCode() != null) { + tBasicExtend.setPatientId(selectTBasic.getPatientId()); + TBasicExtend selectTBasicExtend = tBasicExtendMapper.selectOne(new QueryWrapper().eq("patient_id", tBasicExtend.getPatientId())); + if (selectTBasicExtend == null) { + int insert1 = tBasicExtendMapper.insert(tBasicExtend); + if (insert1 <= 0) { + throw new RuntimeException("医保结算类型/政策出错!"); + } + } else { + int update = tBasicExtendMapper.update(tBasicExtend, new QueryWrapper().eq("patient_id", selectTBasicExtend.getPatientId())); + if (update <= 0) { + throw new RuntimeException("医保结算类型/政策出错!"); + } + } + } + long l3 = System.currentTimeMillis(); + log.info("tBasicMapper.update耗时----------" + (l3 - l2)); + if (update1 <= 0) { + throw new RuntimeException("数据库执行出错,请重试"); + } + + if (tBasicSubMap != null && tBasicSubMap.size() > 0) { + long l4 = System.currentTimeMillis(); + TBasicSub tBasicSub = JSON.parseObject(JSON.toJSONString(tBasicSubMap), TBasicSub.class); + long l5 = System.currentTimeMillis(); + log.info("JSON.parseObject耗时-------" + (l5 - l4)); + long l6 = System.currentTimeMillis(); + tBasicSub.setPatientId(selectTBasic.getPatientId()); + update1 = tBasicSubMapper.updateById(tBasicSub); + if (update1 <= 0) { + throw new RuntimeException("数据库执行出错,请重试"); + } + } + } else { + throw new RuntimeException("ResultUtils.fail(\"修改时,需提供有效的emp_id\");"); + } + } + + /** + * 住院调用 + * + * @param tBasic + * @param tBasicSubMap + */ + @Override + public void savaAndSub(TBasic tBasic, HashMap tBasicSubMap, String preJzh) { + TBasic selectTBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasic.getJzh())); + if (selectTBasic == null) { + tBasic.setFileSource(1); + int insert = tBasicMapper.insert(tBasic); + if (insert <= 0) { + throw new RuntimeException("数据库执行出错,请重试"); + } + //TBasicSub tBasicSub = JSON.parseObject(JSON.toJSONString(tBasicSubMap), TBasicSub.class); + // tBasicSub.setPatientId(tBasic.getPatientId()); + //insert = tBasicSubMapper.insert(tBasicSub); +// if (insert <= 0) { +// throw new RuntimeException("数据库执行出错,请重试"); +// } + } else { + updateAndSub(tBasic, tBasicSubMap,preJzh); + } + if (null != preJzh && !preJzh.equals("")) { + TBasic tbasic1 = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasic.getJzh())); + if (tbasic1 != null) { + TBasicExtend tBasicExtend = new TBasicExtend(); + tBasicExtend.setPatientId(tbasic1.getPatientId()); + tBasicExtend.setPreJzh(preJzh); + int insert = tBasicExtendMapper.insert(tBasicExtend); + if (insert <= 0) { + throw new RuntimeException("数据库执行出错,请重试"); + } + } + + } + } + + /** + * 住院调用 + * + * @param tBasic + * @param tBasicSubMap + */ + @Override + public void updateAndSub(TBasic tBasic, HashMap tBasicSubMap, String preJzh) { + long l = System.currentTimeMillis(); + TBasic selectTBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasic.getJzh())); + long l1 = System.currentTimeMillis(); + log.info("selectTBasic耗时---------" + (l1 - l)); + if (selectTBasic != null) { + long l2 = System.currentTimeMillis(); + tBasic.setFileSource(1); + int insert = tBasicMapper.update(tBasic, new QueryWrapper().eq("patient_id", selectTBasic.getPatientId())); + long l3 = System.currentTimeMillis(); + log.info("tBasicMapper.update耗时----------" + (l3 - l2)); if (insert <= 0) { throw new RuntimeException("数据库执行出错,请重试"); } if (tBasicSubMap != null && tBasicSubMap.size() > 0) { + long l4 = System.currentTimeMillis(); TBasicSub tBasicSub = JSON.parseObject(JSON.toJSONString(tBasicSubMap), TBasicSub.class); + long l5 = System.currentTimeMillis(); + log.info("JSON.parseObject耗时-------" + (l5 - l4)); + long l6 = System.currentTimeMillis(); tBasicSub.setPatientId(selectTBasic.getPatientId()); insert = tBasicSubMapper.updateById(tBasicSub); if (insert <= 0) { @@ -71,7 +230,8 @@ public class TBasicServiceImpl extends ServiceImpl impleme } } } else { - throw new RuntimeException("ResultUtils.fail(\"修改时,需提供有效的emp_id\");"); + log.info("住院修改:患者"+tBasic.getJzh()+"不存在!\n新增患者"+tBasic.getJzh()); + savaAndSub(tBasic,tBasicSubMap,preJzh); } } } diff --git a/docus-webservice/src/main/resources/application.yml b/docus-webservice/src/main/resources/application.yml index 31375f1..9ae2b02 100644 --- a/docus-webservice/src/main/resources/application.yml +++ b/docus-webservice/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 9399 + port: 9299 mybatis-plus: configuration: @@ -16,8 +16,8 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver username: docus password: docus702 - url: jdbc:mysql://db.docus.cn:3306/docus_medicalrecord?characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://localhost:3306/docus_medicalrecord?characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai ws: port: 9101 - parameter: docus_tBasic_data + parameter: in_docus_tBasic_data diff --git a/docus-webservice/src/main/resources/logback-spring.xml b/docus-webservice/src/main/resources/logback-spring.xml index 130fce9..d41897d 100644 --- a/docus-webservice/src/main/resources/logback-spring.xml +++ b/docus-webservice/src/main/resources/logback-spring.xml @@ -21,8 +21,8 @@ log/demo.%d.%i.log - - 15 + + 30 10MB diff --git a/docus-webservice/src/main/resources/mapper/TBasicMapper.xml b/docus-webservice/src/main/resources/mapper/TBasicMapper.xml index 1a8abd2..71bdacf 100644 --- a/docus-webservice/src/main/resources/mapper/TBasicMapper.xml +++ b/docus-webservice/src/main/resources/mapper/TBasicMapper.xml @@ -3,5 +3,55 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + + update docus_medicalrecord.t_basic + + + IPAddress=#{pcmachine.ipaddress}, + + + LastOnline=#{pcmachine.lastonline}, + + + PCStatus=#{pcmachine.pcstatus} + + + IPAddress=#{pcmachine.ipaddress}, + + + LastOnline=#{pcmachine.lastonline}, + + + PCStatus=#{pcmachine.pcstatus} + + + IPAddress=#{pcmachine.ipaddress}, + + + LastOnline=#{pcmachine.lastonline}, + + + PCStatus=#{pcmachine.pcstatus} + + + IPAddress=#{pcmachine.ipaddress}, + + + LastOnline=#{pcmachine.lastonline}, + + + PCStatus=#{pcmachine.pcstatus} + + + IPAddress=#{pcmachine.ipaddress}, + + + LastOnline=#{pcmachine.lastonline}, + + + PCStatus=#{pcmachine.pcstatus} + + + where id=#{pcmachine.id} + \ No newline at end of file diff --git a/docus-webservice/src/main/resources/mapper/TbasicExtendMapper.xml b/docus-webservice/src/main/resources/mapper/TbasicExtendMapper.xml new file mode 100644 index 0000000..814216b --- /dev/null +++ b/docus-webservice/src/main/resources/mapper/TbasicExtendMapper.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file