From ddb4fb18de2e71619fb61c7476db71d9743e4d77 Mon Sep 17 00:00:00 2001 From: tan <11033394+tanzr@user.noreply.gitee.com> Date: Thu, 2 Nov 2023 11:07:52 +0800 Subject: [PATCH] push --- ...院电子病历采集-homeQualitySet.json | 5 +- .../com/docus/bgts/entity/CqcSubmitState.java | 32 ++ .../bgts/entity/ReportDownPatientDto.java | 6 + .../java/com/docus/bgts/entity/TBasic.java | 465 ++++++++++++++++++ src/main/java/com/docus/bgts/enums/Codes.java | 2 + .../bgts/facade/IAfCollectTaskService.java | 9 + .../docus/bgts/handler/TBasicWebService.java | 348 +++++++------ .../bgts/mapper/AfCollectTaskMapper.java | 7 + .../com/docus/bgts/mapper/TBasicMapper.java | 2 + .../service/AfCollectTaskServiceImpl.java | 140 ++++-- .../resources/mapper/AfCollectTaskMapper.xml | 3 + src/main/resources/mapper/TBasicMapper.xml | 119 +++-- 12 files changed, 905 insertions(+), 233 deletions(-) create mode 100644 src/main/java/com/docus/bgts/entity/CqcSubmitState.java create mode 100644 src/main/java/com/docus/bgts/entity/TBasic.java diff --git a/dataConfig/广东省中医院住院电子病历采集-homeQualitySet.json b/dataConfig/广东省中医院住院电子病历采集-homeQualitySet.json index 0f272cc..09c95e8 100644 --- a/dataConfig/广东省中医院住院电子病历采集-homeQualitySet.json +++ b/dataConfig/广东省中医院住院电子病历采集-homeQualitySet.json @@ -21,7 +21,8 @@ "filetitle":"FILENAME", //医生提交时间 "doctorSubmitTime":"SUBMIT_TIME", - + //封存id + "sealId":"SEAL_ID", //下载地址,&代表多个选其一 "downurl":"PDF_PATH", //电子病历排序时间 @@ -38,6 +39,8 @@ "filestoragetype":1, //上传接口 "uploadConnector":"http://192.9.100.171:9291/api/downplatform/report", + //封存上传接口 + "sealUpload":"", //基本数据存放处,根节点不填,最后一层为基本信息存放标签与doubleBasic配合 "basicDirectory":[""], //可能存在存储基本数据不同情况的标签 diff --git a/src/main/java/com/docus/bgts/entity/CqcSubmitState.java b/src/main/java/com/docus/bgts/entity/CqcSubmitState.java new file mode 100644 index 0000000..bf18947 --- /dev/null +++ b/src/main/java/com/docus/bgts/entity/CqcSubmitState.java @@ -0,0 +1,32 @@ +package com.docus.bgts.entity; + +import lombok.Data; + +/** + * @description 病案提交状态 + * @author zhengkai.blog.csdn.net + * @date 2022-08-17 + */ +@Data +public class CqcSubmitState { + + private static final long serialVersionUID = 1L; + + + /** + * 病案主键 + */ + private String patientId; + + /** + * 医生提交状态(0:未提交,1:已提交) + */ + private Integer doctorState; + + /** + * 护士提交状态 + */ + private Integer nurseState; + + +} \ No newline at end of file diff --git a/src/main/java/com/docus/bgts/entity/ReportDownPatientDto.java b/src/main/java/com/docus/bgts/entity/ReportDownPatientDto.java index 8509d86..8ac1376 100644 --- a/src/main/java/com/docus/bgts/entity/ReportDownPatientDto.java +++ b/src/main/java/com/docus/bgts/entity/ReportDownPatientDto.java @@ -7,4 +7,10 @@ import lombok.Data; public class ReportDownPatientDto { @ApiModelProperty(value = "记帐号") private String jzh; + + @ApiModelProperty(value = "封存id") + private String sealId; + + @ApiModelProperty(value = "主键") + private String patientid; } diff --git a/src/main/java/com/docus/bgts/entity/TBasic.java b/src/main/java/com/docus/bgts/entity/TBasic.java new file mode 100644 index 0000000..45c0c3c --- /dev/null +++ b/src/main/java/com/docus/bgts/entity/TBasic.java @@ -0,0 +1,465 @@ +package com.docus.bgts.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 病案基本信息 + *

+ * + * @author jiashi + * @since 2021-04-14 + */ +@Data +@EqualsAndHashCode +@ApiModel(value="TBasic对象", description="病案基本信息") +public class TBasic implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "病案主键") + @TableId(value = "patient_id", type = IdType.ASSIGN_ID) + private String patientId; + + + /** + * 住院次数 + */ + @ApiModelProperty("住院次数") + private Integer admissTimes; + + /** + * 病案号 + */ + @ApiModelProperty("病案号") + private String inpatientNo; + + /** + * 住院id号 + */ + @ApiModelProperty("住院id号") + private String admissId; + + /** + * 患者姓名 + */ + @ApiModelProperty("患者姓名") + private String name; + + /** + * 盘号 + */ + @ApiModelProperty("盘号") + private String ph; + + /** + * 患者姓名首拼 + */ + @ApiModelProperty("患者姓名首拼") + private String nameSpell; + + /** + * 性别 + */ + @ApiModelProperty("性别") + private String sex; + + /** + * 年龄_岁 + */ + @ApiModelProperty("年龄_岁") + private Integer age; + + /** + * 年龄_月 + */ + @ApiModelProperty("年龄_月") + private Integer ageMonth; + + /** + * 年龄_天 + */ + @ApiModelProperty("年龄_天") + private Integer ageDay; + + /** + * 身份证 + */ + @ApiModelProperty("身份证") + private String idCard; + + /** + * 手机号码 + */ + @ApiModelProperty("手机号码") + private String telphone; + + /** + * 住院日期 + */ + @ApiModelProperty("住院日期") + private Date admissDate; + + /** + * 住院科室 + */ + @ApiModelProperty("住院科室") + private String admissDept; + + /** + * 住院科室名称 + */ + @ApiModelProperty("住院科室名称") + private String admissDeptName; + + /** + * 出院日期 + */ + @ApiModelProperty("出院日期") + private Date disDate; + + /** + * 出院科室 + */ + @ApiModelProperty("出院科室") + private String disDept; + + /** + * 出院科室名称 + */ + @ApiModelProperty("出院科室名称") + private String disDeptName; + + /** + * 实际住院天数 + */ + @ApiModelProperty("实际住院天数") + private Integer admissDays; + + /** + * 主管医生 + */ + @ApiModelProperty("主管医生") + private String attending; + + /** + * 主管医生名称 + */ + @ApiModelProperty("主管医生名称") + private String attendingName; + + /** + * 主要诊断编码 + */ + @ApiModelProperty("主要诊断编码") + private String mainDiagCode; + + /** + * 主要诊断名称 + */ + @ApiModelProperty("主要诊断名称") + private String mainDiagName; + + /** + * 主要手术编码 + */ + @ApiModelProperty("主要手术编码") + private String mainOperateCode; + + /** + * 主要手术名称 + */ + @ApiModelProperty("主要手术名称") + private String mainOperateName; + + /** + * 是否死亡 + */ + @ApiModelProperty("是否死亡") + private Integer isDead; + + /** + * 是否作废(0:否,1:是) + */ + @ApiModelProperty("是否作废(0:否,1:是)") + private Integer isCancel; + + /** + * 签收时间 + */ + @ApiModelProperty("签收时间") + private Date signTime; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private Date createTime; + + /** + * 修改时间 + */ + @ApiModelProperty("修改时间") + private Date updateTime; + + /** + * 是否归档 1:已归档,0:未归档 + */ + @ApiModelProperty("是否归档 1:已归档,0:未归档") + private Integer isArchive; + + /** + * 归档时间 + */ + @ApiModelProperty("归档时间") + private Date archiveTime; + + /** + * 1 归档采集(pdf),2 异地扫描(图片),3 现场扫描(pdf),4 其他来源 + */ + @ApiModelProperty("1 归档采集(pdf),2 异地扫描(图片),3 现场扫描(pdf),4 其他来源") + private Integer fileSource; + + /** + * 完整性描述 + */ + @ApiModelProperty("完整性描述") + private String integrityDesc; + + /** + * 扫描生产软件-视频脑电图号 + */ + @ApiModelProperty("扫描生产软件-视频脑电图号") + private String bColumn1; + + /** + * 扫描生产软件-ep号 + */ + @ApiModelProperty("扫描生产软件-ep号") + private String bColumn2; + + /** + * 茂名流水号 + */ + @ApiModelProperty("茂名流水号") + private String bColumn3; + + /** + * 扫描生产软件-门诊号 + */ + @ApiModelProperty("扫描生产软件-门诊号") + private String bColumn4; + + /** + * b_column5 + */ + @ApiModelProperty("b_column5") + private String bColumn5; + + /** + * b_column6 + */ + @ApiModelProperty("b_column6") + private Integer bColumn6; + + /** + * b_column7 + */ + @ApiModelProperty("b_column7") + private Integer bColumn7; + + /** + * b_column8 + */ + @ApiModelProperty("b_column8") + private Integer bColumn8; + + /** + * b_column9 + */ + @ApiModelProperty("b_column9") + private Integer bColumn9; + + /** + * b_column10 + */ + @ApiModelProperty("b_column10") + private Integer bColumn10; + + /** + * 性别名称 + */ + @ApiModelProperty("性别名称") + private String sexName; + + /** + * 记账号(省中医患者主索引id) + */ + @ApiModelProperty("记账号(省中医患者主索引id)") + private String jzh; + + /** + * 患者主索引号(省中医记账号) + */ + @ApiModelProperty("患者主索引号(省中医记账号)") + private String empId; + + /** + * visit_type_code + */ + @ApiModelProperty("visit_type_code") + private String visitTypeCode; + + /** + * visit_type_name + */ + @ApiModelProperty("visit_type_name") + private String visitTypeName; + + /** + * tcm_diag_code + */ + @ApiModelProperty("tcm_diag_code") + private String tcmDiagCode; + + /** + * tcm_diag_name + */ + @ApiModelProperty("tcm_diag_name") + private String tcmDiagName; + + /** + * ward_palce + */ + @ApiModelProperty("ward_palce") + private String wardPalce; + + /** + * 床号位 + */ + @ApiModelProperty("床号位") + private String bedNum; + + /** + * 接收时间,目前澄海人医 使用 + */ + @ApiModelProperty("接收时间,目前澄海人医 使用") + private Date receiveTime; + + /** + * 状态 1:封存,3:锁定 + */ + @ApiModelProperty("状态 1:封存,3:锁定") + private Integer state; + + /** + * 是否扫描 2否 1是 + */ + @ApiModelProperty("是否扫描 2否 1是") + private String scanSource; + + /** + * 暂缓审核配置id ,隔开 + */ + @ApiModelProperty("暂缓审核配置id ,隔开") + private String cqcDeferAuditConfigId; + + /** + * 病案是否批注 0:没有批注 1:有批注 + */ + @ApiModelProperty("病案是否批注 0:没有批注 1:有批注") + private Integer commentStatus; + + /** + * 医生提交状态(0:未提交,1:已提交) + */ + @ApiModelProperty("医生提交状态(0:未提交,1:已提交)") + private Integer doctorState; + + /** + * 护士提交状态 + */ + @ApiModelProperty("护士提交状态") + private Integer nurseState; + + /** + * 纸质签收 0:未签收 1:已签收 + */ + @ApiModelProperty("纸质签收 0:未签收 1:已签收") + private Integer cqcSigninfo; + + /** + * 责任护士 + */ + @ApiModelProperty("责任护士") + private String dutyNurse; + + /** + * 审核状态 0:否 1:是 + */ + @ApiModelProperty("审核状态 0:否 1:是") + private Integer tagState; + + /** + * 是否手术 + */ + @ApiModelProperty("是否手术") + private String isOper; + + /** + * 现住址 + */ + @ApiModelProperty("现住址") + private String homeAddr; + + /** + * 损伤中毒 + */ + @ApiModelProperty("损伤中毒") + private String poisoningName; + + /** + * 病理诊断 + */ + @ApiModelProperty("病理诊断") + private String pathologyName; + + /** + * 其他诊断 + */ + @ApiModelProperty("其他诊断") + private String otherDiagName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + private String homeTel; + + public TBasic() {} + + /** + * 特殊处理 y:n + * @param isDead + */ + public void setIsDead(String isDead) { + this.isDead = isDead!=null&&isDead.toLowerCase().equals("y")?1:0; + } + + public Integer getIsDead() { + return isDead; + } + +// public void setIsDead(Integer isDead) { +// this.isDead = isDead; +// } +} diff --git a/src/main/java/com/docus/bgts/enums/Codes.java b/src/main/java/com/docus/bgts/enums/Codes.java index 2f25910..7d9e173 100644 --- a/src/main/java/com/docus/bgts/enums/Codes.java +++ b/src/main/java/com/docus/bgts/enums/Codes.java @@ -12,6 +12,8 @@ public enum Codes { DIRECTORY("1000","directory"), //上传接口地址 UPLOAD("0","uploadConnector"), + //封存上传接口地址 + SEALUPLOAD("0","sealUpload"), REPOAL("0","repoalConnector"), assortid("assortid","assortidKey"), collectorid("collectorid","collectoridKey"), diff --git a/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java b/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java index 9fd2549..b1233bc 100644 --- a/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java +++ b/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java @@ -22,12 +22,21 @@ public interface IAfCollectTaskService extends IService { */ String getpatientIdByEmpId(String empId); + /** + * 通过封存id获取patient_id + * @param sealId + * @return + */ + String getpatientIdBysealId(String sealId); + String getNameByPatientId(String patientId); String getOutpatientIdByJzhel(String jzh); void insert(ReportDownDto reportDownDto); + void insertSeal(ReportDownDto reportDownDto); + void insertOut(ReportDownDto reportDownDto); void updateInterfaceCollect(String collectSubId, int state); diff --git a/src/main/java/com/docus/bgts/handler/TBasicWebService.java b/src/main/java/com/docus/bgts/handler/TBasicWebService.java index 122bd95..3423f97 100644 --- a/src/main/java/com/docus/bgts/handler/TBasicWebService.java +++ b/src/main/java/com/docus/bgts/handler/TBasicWebService.java @@ -104,6 +104,8 @@ public class TBasicWebService implements ITBasicWebService { String sortingTimeKey = String.valueOf(FileUtils.getJsonByName("sortingTime")); // 获取患者主索引号 String empId = String.valueOf(FileUtils.getJsonByName(Codes.EMP_ID.getMessage())); + //电子病历封存id + String seal = String.valueOf(FileUtils.getJsonByName("sealId")); //判断是否为撤销 String isJudge = String.valueOf(FileUtils.getJsonByName("isJudge")); if (StringUtils.isBlank(isJudge) || isJudge.equals("0")) { @@ -119,7 +121,6 @@ public class TBasicWebService implements ITBasicWebService { logger.info("------新增/修改------"); } else if (judgeIndexElement.getText().equals("1")) { logger.info("---------撤回--------"); - CanlcelDto canlcelDto = new CanlcelDto(); String serialnum = String.valueOf(FileUtils.getJsonByName("serialnum")); String serialnumElement = getElementText(elementRoot, serialnum.split(",")); @@ -144,10 +145,10 @@ public class TBasicWebService implements ITBasicWebService { String sortingTime; String assortid; String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); - if(collectorid.equals("1")){ + if (collectorid.equals("1")) { assortid = String.valueOf(FileUtils.getJsonByName("assortid")); - }else { - assortid = getAssortid(elementRoot); + } else { + assortid = getAssortid(elementRoot); } reportDownDto = new ReportDownDto(); @@ -158,9 +159,80 @@ public class TBasicWebService implements ITBasicWebService { reportDownPatientDto = new ReportDownPatientDto(); //获取jzh String empIdText = getElementText(elementRoot, empId.split(",")); + //获取封存id + String sealId = getElementTextCanBeEmpty(elementRoot, seal.split(",")); + if (null != sealId && !"".equals(sealId)) { + reportDownPatientDto.setJzh(empIdText); + reportDownPatientDto.setSealId(sealId); + logger.info("封存患者jzh : " + empIdText); + reportDownDto.setPatient(reportDownPatientDto); + List elementList = xmlUtils.getJsonByName(elementRoot); + for (Element element : elementList) { + filetitle = getElementText(element, filetitleKey.split(",")); + downurl = getElementText(element, downurlKey.split(",")); + //downurl = handleDownUrl(downurl); + //添加护理提交时间 + if (collectorid.equals("1")) { + nurseSubmitTime = getElementText(element, nurseSubmitTime.split(",")); + afCollectTaskService.updateNurseSubmitTime(reportDownDto, nurseSubmitTime); + afCollectTaskService.insertNurseState(reportDownDto, nurseSubmitTime); + } + //获取电子病历排序时间 + sortingTime = getElementTextCanBeEmpty(element, sortingTimeKey.split(",")); + //获取采集流水号 + serialnum = getElementText(element, serialnmnKey.split(",")); + reportDownScanFileDto = new ReportDownScanFileDto(); + reportDownScanFileDto.setDownurl(downurl); + reportDownScanFileDto.setFiletitle(filetitle); + reportDownScanFileDto.setSerialnum(serialnum); + reportDownScanFileDto.setSortdate(sortingTime); + reportDownScanFileDto.setFilesource(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")))); + reportDownScanFileDto.setFilestoragetype(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")))); + //判断是否为base64 + if (reportDownScanFileDto.getDownurl().length() > 200) { + reportDownScanFileDto.setFiletype(2); + } + reportDownDtoArr.add(reportDownScanFileDto); + } + if (reportDownDtoArr.size() <= 0) { + throw new RuntimeException("不存在必要的基本信息"); + } else { + reportDownDto.setScanfiles(reportDownDtoArr); + } + + afCollectTaskService.insertSeal(reportDownDto); + + + String post = ""; + logger.info("--------执行上传功能----------"); + + Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class); + if (reportDownDto.getScanfiles().get(0).getFiletype() == 1) { + logger.info("封存id--"+reportDownDto.getPatient().getSealId()+ ": 上传参数:" + params); + } + long l = System.currentTimeMillis(); + post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.SEALUPLOAD.getMessage())), headMap, params); + long l1 = System.currentTimeMillis(); + logger.info("封存id--"+reportDownDto.getPatient().getSealId()+"请求下载耗时----------" + (l1 - l)); + + if (StringUtils.isBlank(post)) { + logger.info("封存id--"+reportDownDto.getPatient().getSealId()+"--------上传时出现错误,可能是文件服务没有启动----------"); + throw new RuntimeException("封存id--"+reportDownDto.getPatient().getSealId()+"上传时出现错误,可能是文件服务没有启动"); + } + Map resMap = JSON.parseObject(post, Map.class); + long l7 = System.currentTimeMillis(); + logger.info("接口总耗时--------" + (l7 - l6)); + if (String.valueOf(resMap.get("code")).equals("500")) { - //病理没有就诊流水号的根据住院号和检查申请日期时间匹配患者 -// String empIdText = getElementTextCanBeEmpty(elementRoot, empId.split(",")); + logger.info("封存id--"+reportDownDto.getPatient().getSealId()+ "--------上传失败!" + resMap.get("msg")); + throw new RuntimeException("封存id--"+reportDownDto.getPatient().getSealId()+ "上传失败:" + resMap.get("msg")); + } else { + logger.info("----------执行成功-----------"); + return ResultUtils.success().asXML(); + } + }else { + //病理没有就诊流水号的根据住院号和检查申请日期时间匹配患者 + // String empIdText = getElementTextCanBeEmpty(elementRoot, empId.split(",")); // if (null==empIdText||empIdText.equals("")){ // String examApplyDates = getElementText(elementRoot, examApplyDate.split(",")); // String inPatientNos = getElementText(elementRoot, inPatientNo.split(",")); @@ -177,143 +249,137 @@ public class TBasicWebService implements ITBasicWebService { // } - - // doctorSubmitTime = getElementText(elementRoot, doctorSubmitTime.split(",")); - - /** - * 删除电子病历数据 - */ - - long l2 = System.currentTimeMillis(); - String patientId = afCollectTaskService.getpatientIdByEmpId(empIdText); - long l3 = System.currentTimeMillis(); - logger.info("查询patient_id耗时"+(l3-l2)); - //删除af_downfile表数据 -// long l4 = System.currentTimeMillis(); -// int i = afCollectTaskService.deleteByPatientIdAndCollectorId(patientId, collectorid); -// long l5 = System.currentTimeMillis(); -// logger.info("删除"+empIdText+"af_downfile表"+i+"条数据耗时-----"+(l5-l4)); -// //删除t_scan_assort表数据 -// long l8 = System.currentTimeMillis(); -// int i1 = afCollectTaskService.deleteByPatientIdAndAssortId(patientId, assortid); -// long l11 = System.currentTimeMillis(); -// logger.info("删除"+empIdText+"t_scan_assort表"+i1+"条数据耗时-----"+(l11-l8)); -// //删除af_collect_task表数据 -// long l9 = System.currentTimeMillis(); -// int i2 = afCollectTaskService.deleteByPatientIdAndSysFlag(patientId, collectorid); -// long l10 = System.currentTimeMillis(); -// logger.info("删除"+empIdText+"af_collect_task表"+i2+"条数据耗时-----"+(l10-l9)); -// - - reportDownPatientDto.setJzh(empIdText); - logger.info("患者主索引号:" + empIdText); - reportDownDto.setPatient(reportDownPatientDto); - List elementList = xmlUtils.getJsonByName(elementRoot); - for (Element element : elementList) { - filetitle = getElementText(element, filetitleKey.split(",")); - downurl = getElementText(element, downurlKey.split(",")); - //downurl = handleDownUrl(downurl); - //添加护理提交时间 -// if (filetitle.equals("体温单")||filetitle.equals("护理记录单(通用)")||filetitle.equals("首次护理记录单(通用)")){ -// nurseSubmitTime = getElementText(element, nurseSubmitTime.split(",")); -// afCollectTaskService.updateNurseSubmitTime(reportDownDto, nurseSubmitTime); -// afCollectTaskService.insertNurseState(reportDownDto,nurseSubmitTime); -// } - - - //获取电子病历排序时间 - sortingTime = getElementTextCanBeEmpty(element,sortingTimeKey.split(",")); - //获取采集流水号 - serialnum = getElementText(element, serialnmnKey.split(",")); - reportDownScanFileDto = new ReportDownScanFileDto(); - reportDownScanFileDto.setDownurl(downurl); - reportDownScanFileDto.setFiletitle(filetitle); - reportDownScanFileDto.setSerialnum(serialnum); - reportDownScanFileDto.setSortdate(sortingTime); - reportDownScanFileDto.setFilesource(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")))); - reportDownScanFileDto.setFilestoragetype(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")))); - //判断是否为base64 - if (reportDownScanFileDto.getDownurl().length() > 200) { - reportDownScanFileDto.setFiletype(2); + // doctorSubmitTime = getElementText(elementRoot, doctorSubmitTime.split(",")); + + /** + * 删除电子病历数据 + */ + +// long l2 = System.currentTimeMillis(); +// String patientId = afCollectTaskService.getpatientIdByEmpId(empIdText); +// long l3 = System.currentTimeMillis(); +// logger.info("查询patient_id耗时" + (l3 - l2)); +// //删除af_downfile表数据 +// long l4 = System.currentTimeMillis(); +// int i = afCollectTaskService.deleteByPatientIdAndCollectorId(patientId, collectorid); +// long l5 = System.currentTimeMillis(); +// logger.info("删除" + empIdText + "af_downfile表" + i + "条数据耗时-----" + (l5 - l4)); +// //删除t_scan_assort表数据 +// long l8 = System.currentTimeMillis(); +// int i1 = afCollectTaskService.deleteByPatientIdAndAssortId(patientId, assortid); +// long l11 = System.currentTimeMillis(); +// logger.info("删除" + empIdText + "t_scan_assort表" + i1 + "条数据耗时-----" + (l11 - l8)); +// //删除af_collect_task表数据 +// long l9 = System.currentTimeMillis(); +// int i2 = afCollectTaskService.deleteByPatientIdAndSysFlag(patientId, collectorid); +// long l10 = System.currentTimeMillis(); +// logger.info("删除" + empIdText + "af_collect_task表" + i2 + "条数据耗时-----" + (l10 - l9)); + reportDownPatientDto.setJzh(empIdText); + logger.info("患者主索引号:" + empIdText); + reportDownDto.setPatient(reportDownPatientDto); + List elementList = xmlUtils.getJsonByName(elementRoot); + for (Element element : elementList) { + filetitle = getElementText(element, filetitleKey.split(",")); + downurl = getElementText(element, downurlKey.split(",")); + //downurl = handleDownUrl(downurl); + //添加护理提交时间 + if (collectorid.equals("1")) { + nurseSubmitTime = getElementText(element, nurseSubmitTime.split(",")); + afCollectTaskService.updateNurseSubmitTime(reportDownDto, nurseSubmitTime); + afCollectTaskService.insertNurseState(reportDownDto, nurseSubmitTime); + } + //获取电子病历排序时间 + // sortingTime = getElementTextCanBeEmpty(element, sortingTimeKey.split(",")); + //获取采集流水号 + serialnum = getElementText(element, serialnmnKey.split(",")); + reportDownScanFileDto = new ReportDownScanFileDto(); + reportDownScanFileDto.setDownurl(downurl); + reportDownScanFileDto.setFiletitle(filetitle); + reportDownScanFileDto.setSerialnum(serialnum); + // reportDownScanFileDto.setSortdate(sortingTime); + reportDownScanFileDto.setFilesource(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")))); + reportDownScanFileDto.setFilestoragetype(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")))); + //判断是否为base64 + if (reportDownScanFileDto.getDownurl().length() > 200) { + reportDownScanFileDto.setFiletype(2); + } + reportDownDtoArr.add(reportDownScanFileDto); + } + if (reportDownDtoArr.size() <= 0) { + throw new RuntimeException("不存在必要的基本信息"); + } else { + reportDownDto.setScanfiles(reportDownDtoArr); + } + if (collectorid.equals("22")) { + //查询正式住院患者信息 + TBasic tBasic = tBasicMapper.selectByjzh(empIdText); + if (null != tBasic) { + //查询预住院患者信息 + TBasicExtend tBasicExtend = tBasicExtendMapper.selectByPatientId(tBasic.getPatientId()); + if (null != tBasicExtend) { + TBasic tBasicPre = tBasicMapper.selectByjzh(tBasicExtend.getPreJzh()); + if (null != tBasicPre) { + int pre = tScanAssortMapper.updateByPatientId(tBasic.getPatientId(), tBasicPre.getPatientId()); + if (pre <= 0) { + logger.info("当前预住院没有文件!"); + } else { + logger.info("本次预住院合并" + pre + "份报告"); + } + } else { + logger.info("未查询到预住院患者信息!"); + } + } + } } - reportDownDtoArr.add(reportDownScanFileDto); - } - if (reportDownDtoArr.size() <= 0) { - throw new RuntimeException("不存在必要的基本信息"); - } else { - reportDownDto.setScanfiles(reportDownDtoArr); - } -// if (collectorid.equals("22")){ -// //查询正式住院患者信息 -// TBasic tBasic = tBasicMapper.selectByjzh(empIdText); -// if (null!=tBasic){ -// //查询预住院患者信息 -// TBasicExtend tBasicExtend = tBasicExtendMapper.selectByPatientId(tBasic.getPatientId()); -// if (null!=tBasicExtend){ -// TBasic tBasicPre = tBasicMapper.selectByjzh(tBasicExtend.getPreJzh()); -// if (null!=tBasicPre){ -// int pre = tScanAssortMapper.updateByPatientId(tBasic.getPatientId(), tBasicPre.getPatientId()); -// if (pre <= 0) { -// logger.info("当前预住院没有文件!"); -// }else { -// logger.info("本次预住院合并"+pre+"份报告"); -// } -// }else { -// logger.info("未查询到预住院患者信息!"); -// } -// } -// } -// } - //插入医生提交时间 - // afCollectTaskService.updateDoctorSubmitTime(reportDownDto, doctorSubmitTime); - //插入医生提交状态 - // afCollectTaskService.insertDoctorState(reportDownDto,doctorSubmitTime); - //插入文件af_collect_task表数据 + //插入医生提交时间 + // afCollectTaskService.updateDoctorSubmitTime(reportDownDto, doctorSubmitTime); + //插入医生提交状态 + // afCollectTaskService.insertDoctorState(reportDownDto, doctorSubmitTime); + //插入文件af_collect_task表数据 // synchronized (lock) { - // System.err.println(reportDownDto); - afCollectTaskService.insert(reportDownDto); - - + // System.err.println(reportDownDto); + afCollectTaskService.insert(reportDownDto); // } - String post = ""; - logger.info("--------执行上传功能----------"); - - - Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class); - if (reportDownDto.getScanfiles().get(0).getFiletype() == 1) { - logger.info("上传参数:" + params); - } - long l = System.currentTimeMillis(); - post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params); - long l1 = System.currentTimeMillis(); - logger.info("请求下载耗时----------"+(l1-l)); + String post = ""; + logger.info("--------执行上传功能----------"); + Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class); + if (reportDownDto.getScanfiles().get(0).getFiletype() == 1) { + logger.info(reportDownDto.getPatient().getJzh() + ": 上传参数:" + params); + } + long l = System.currentTimeMillis(); + post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params); + long l1 = System.currentTimeMillis(); + logger.info("请求下载耗时----------" + (l1 - l)); // String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap); - if (StringUtils.isBlank(post)) { - logger.info("--------上传时出现错误,可能是文件服务没有启动----------"); - throw new RuntimeException("上传时出现错误,可能是文件服务没有启动"); - } - Map resMap = JSON.parseObject(post, Map.class); - long l7 = System.currentTimeMillis(); - logger.info("接口总耗时--------"+(l7-l6)); - if (String.valueOf(resMap.get("code")).equals("500")) { - throw new RuntimeException(String.valueOf(resMap.get("msg"))); - } else { - logger.info("----------执行成功-----------"); - return ResultUtils.success().asXML(); + if (StringUtils.isBlank(post)) { + logger.info("--------上传时出现错误,可能是文件服务没有启动----------"); + throw new RuntimeException("上传时出现错误,可能是文件服务没有启动"); + } + Map resMap = JSON.parseObject(post, Map.class); + long l7 = System.currentTimeMillis(); + logger.info("接口总耗时--------" + (l7 - l6)); + if (String.valueOf(resMap.get("code")).equals("500")) { + logger.info(reportDownDto.getPatient().getJzh() + "--------上传失败!" + resMap.get("msg")); + throw new RuntimeException(reportDownDto.getPatient().getJzh() + "上传失败:" + resMap.get("msg")); + } else { + logger.info("----------执行成功-----------"); + return ResultUtils.success().asXML(); + } } + } catch (RuntimeException e) { e.printStackTrace(); - // mrReportErrorService.insert(xml); + // mrReportErrorService.insert(xml); logger.error(e.getMessage()); -// String stackTrace = ExceptionUtils.getStackTrace(e); -// logger.info("错误信息----------"+stackTrace); + String stackTrace = ExceptionUtils.getStackTrace(e); + logger.info("错误信息----------" + stackTrace); return ResultUtils.fail(e.getMessage()); } catch (Exception e) { - // mrReportErrorService.insert(xml); + // mrReportErrorService.insert(xml); logger.error(e.getMessage()); -// String stackTrace = ExceptionUtils.getStackTrace(e); -// logger.info("错误信息----------"+stackTrace); + String stackTrace = ExceptionUtils.getStackTrace(e); + logger.info("错误信息----------" + stackTrace); e.printStackTrace(); return ResultUtils.fail(e.getMessage()); } @@ -322,6 +388,7 @@ public class TBasicWebService implements ITBasicWebService { /** * 肇庆门急诊报告接收 + * * @param xml * @return */ @@ -356,7 +423,7 @@ public class TBasicWebService implements ITBasicWebService { String serialnum; String filetitle; String downurl; - // String sortingTime; + // String sortingTime; int filetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filetype"))); String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); @@ -379,7 +446,7 @@ public class TBasicWebService implements ITBasicWebService { downurl = getElementText(element, downurlKey.split(",")); serialnum = getElementText(element, serialnmnKey.split(",")); reportDownScanFileDto = new ReportDownScanFileDto(); - reportDownScanFileDto.setDownurl(downurl.substring(1,downurl.length() - 1)); + reportDownScanFileDto.setDownurl(downurl.substring(1, downurl.length() - 1)); reportDownScanFileDto.setFiletitle(filetitle); reportDownScanFileDto.setSerialnum(serialnum); reportDownScanFileDto.setFiletype(filetype); @@ -397,7 +464,7 @@ public class TBasicWebService implements ITBasicWebService { reportDownDto.setScanfiles(reportDownDtoArr); } - // System.err.println(reportDownDto); + // System.err.println(reportDownDto); afCollectTaskService.insertOut(reportDownDto); @@ -409,7 +476,7 @@ public class TBasicWebService implements ITBasicWebService { long l = System.currentTimeMillis(); post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params); long l1 = System.currentTimeMillis(); - logger.info("请求下载耗时----------"+(l1-l)); + logger.info("请求下载耗时----------" + (l1 - l)); if (StringUtils.isBlank(post)) { logger.info("--------上传时出现错误,可能是文件服务没有启动----------"); @@ -417,7 +484,7 @@ public class TBasicWebService implements ITBasicWebService { } Map resMap = JSON.parseObject(post, Map.class); long l7 = System.currentTimeMillis(); - logger.info("接口总耗时--------"+(l7-l6)); + logger.info("接口总耗时--------" + (l7 - l6)); if (String.valueOf(resMap.get("code")).equals("500")) { throw new RuntimeException(String.valueOf(resMap.get("msg"))); } else { @@ -459,7 +526,7 @@ public class TBasicWebService implements ITBasicWebService { return url; } } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); } return ""; } @@ -684,10 +751,9 @@ public class TBasicWebService implements ITBasicWebService { } } -// public static void main(String[] args) { -// depdf(); -// } - + public static void main(String[] args) { + depdf(); + } } diff --git a/src/main/java/com/docus/bgts/mapper/AfCollectTaskMapper.java b/src/main/java/com/docus/bgts/mapper/AfCollectTaskMapper.java index 1464052..aaea674 100644 --- a/src/main/java/com/docus/bgts/mapper/AfCollectTaskMapper.java +++ b/src/main/java/com/docus/bgts/mapper/AfCollectTaskMapper.java @@ -29,6 +29,13 @@ public interface AfCollectTaskMapper extends BaseMapper { */ String getpatientIdByEmpId(@Param("jzh") String empId); + /** + * 通过封存id获取patient_id + * @param sealId + * @return + */ + String getPatientIdBysealId(@Param("sealId") String sealId); + String selectJzh(@Param("inPatientNo") String inPatientNo,@Param("examApplyDate") String examApplyDate); diff --git a/src/main/java/com/docus/bgts/mapper/TBasicMapper.java b/src/main/java/com/docus/bgts/mapper/TBasicMapper.java index 940d697..b675645 100644 --- a/src/main/java/com/docus/bgts/mapper/TBasicMapper.java +++ b/src/main/java/com/docus/bgts/mapper/TBasicMapper.java @@ -16,4 +16,6 @@ public interface TBasicMapper extends BaseMapper { TBasic selectByjzh(String jzh); TBasic selectByPatientId(String patientId); + + int update(TBasic tbasic); } diff --git a/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java b/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java index 8030f98..eb1098f 100644 --- a/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java +++ b/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java @@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.docus.bgts.entity.*; import com.docus.bgts.enums.Codes; import com.docus.bgts.facade.IAfCollectTaskService; -import com.docus.bgts.mapper.AfCollectTaskMapper; -import com.docus.bgts.mapper.AfInterfaceCollectMapper; -import com.docus.bgts.mapper.AfInterfaceCollectSubMapper; -import com.docus.bgts.mapper.TBasicExtendMapper; +import com.docus.bgts.mapper.*; import com.docus.bgts.utils.FileUtils; import com.docus.bgts.utils.HttpUtils; import com.docus.bgts.utils.ResultUtils; @@ -52,12 +49,20 @@ public class AfCollectTaskServiceImpl extends ServiceImpl scanfiles = reportDownDto.getScanfiles(); + for (ReportDownScanFileDto scanfile : scanfiles) { + long l = System.currentTimeMillis(); + + // 判断任务是否已存在 + afCollectTask = afCollectTaskMapper.selectOne(new QueryWrapper().eq("C1", scanfile.getSerialnum()).eq("sysflag", reportDownDto.getCollectorid())); + if (afCollectTask == null || afCollectTask.getId() == null) { + //不存在 新增 + afCollectTask = new AfCollectTask(); + afCollectTask.setPatientId(patientId); + afCollectTask.setSysflag(reportDownDto.getCollectorid()); + afCollectTask.setState("0"); + afCollectTask.setSyncTime(date); + afCollectTask.setC1(scanfile.getSerialnum()); + afCollectTask.setC2(scanfile.getFiletitle()); + afCollectTask.setC3(reportDownDto.getPatient().getJzh()); + save = afCollectTaskMapper.insert(afCollectTask); + + } else { + + //存在就修改 + afCollectTask.setPatientId(patientId); + afCollectTask.setSysflag(reportDownDto.getCollectorid()); + afCollectTask.setState("0"); + afCollectTask.setSyncTime(date); + afCollectTask.setC1(scanfile.getSerialnum()); + afCollectTask.setC2(scanfile.getFiletitle()); + afCollectTask.setC3(reportDownDto.getPatient().getJzh()); + save = afCollectTaskMapper.updateById(afCollectTask); + } + + if (save <= 0) { + log.info("封存任务表操作出错"); + throw new RuntimeException("封存插入病案任务表数据出错"); + } + if (afCollectTask.getId() != null) { + scanfile.setTaskid(afCollectTask.getId()); + } else { + log.info("封存插入任务id为空!"); + throw new RuntimeException("封存插入任务id为空"); + } + } + reportDownDto.setScanfiles(scanfiles); + } + @Override public void updateInterfaceCollect(String collectSubId, int state) { AfInterfaceCollectSub afInterfaceCollectSub = afInterfaceCollectSubMapper.selectById(collectSubId); @@ -367,57 +430,58 @@ public class AfCollectTaskServiceImpl extends ServiceImpl 0) { + log.info("护士提交状态修改成功!"); + }else { + log.info("护士提交状态修改失败!"); + } } else { - if (null != nurseSubmitTime && !("").equals(nurseSubmitTime)) { - cqcSubmitState1.setNurseState(1); - } else { - cqcSubmitState1.setNurseState(0); + tBasic.setNurseState(0); + int update = tBasicMapper.update(tBasic); + if (update > 0) { + log.info("护士提交状态修改成功!"); + }else { + log.info("护士提交状态修改失败!"); } - afCollectTaskMapper.updateDoctorState(cqcSubmitState1); } } @Override public void insertDoctorState(ReportDownDto reportDownDto, String doctorSubmitTime) { - String patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh()); - if (StringUtils.isBlank(patientId)) { + TBasic tBasic = tBasicMapper.selectByjzh(reportDownDto.getPatient().getJzh()); + if (null == tBasic) { throw new RuntimeException("操作的病案信息不存在"); } - CqcSubmitState cqcSubmitState1 = afCollectTaskMapper.selectByPatientId(patientId); - if (null == cqcSubmitState1) { - CqcSubmitState cqcSubmitState = new CqcSubmitState(); - cqcSubmitState.setPatientId(patientId); - if (null != doctorSubmitTime && !("").equals(doctorSubmitTime)) { - cqcSubmitState.setDoctorState(1); - } else { - cqcSubmitState.setDoctorState(0); - } - afCollectTaskMapper.insertDoctorState(cqcSubmitState); - } else { if (null != doctorSubmitTime && !("").equals(doctorSubmitTime)) { - cqcSubmitState1.setDoctorState(1); + tBasic.setDoctorState(1); + int update = tBasicMapper.update(tBasic); + if (update > 0) { + log.info("医生提交状态修改成功!"); + }else { + log.info("医生提交状态修改失败!"); + } } else { - cqcSubmitState1.setDoctorState(0); + tBasic.setDoctorState(0); + int update = tBasicMapper.update(tBasic); + if (update > 0) { + log.info("医生提交状态修改成功!"); + }else { + log.info("医生提交状态修改失败!"); + } } - afCollectTaskMapper.updateDoctorState(cqcSubmitState1); - } + + + } diff --git a/src/main/resources/mapper/AfCollectTaskMapper.xml b/src/main/resources/mapper/AfCollectTaskMapper.xml index a13b053..23ff72e 100644 --- a/src/main/resources/mapper/AfCollectTaskMapper.xml +++ b/src/main/resources/mapper/AfCollectTaskMapper.xml @@ -108,5 +108,8 @@ where patient_id=#{patientId} select creater_name from docus_medicalrecord.cqc_back_info_log where patient_id=#{patientId} and create_time in (select max(create_time) from docus_medicalrecord.cqc_back_info_log where patient_id=#{patientId}) + \ No newline at end of file diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index a309095..b22360c 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -3,61 +3,74 @@ 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} - + + 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} + + + + UPDATE docus_medicalrecord.t_basic + + doctor_state = #{doctorState}, + nurse_state = #{nurseState}, + + WHERE patient_id = #{patientId} + \ No newline at end of file