feat:梅州中医院,添加心电采集器,并且心电、手麻如果出院8天没有报告则作废任务

master
wyb 2 months ago
parent f39992abc3
commit 8eca5ee798

@ -41,4 +41,6 @@ public interface TBasicMapper {
List<String> getYzyPatientIdFromScanAssort();
List<TBasic> getNoTaskPatientByDisDate(@Param("startDateTime") String startDateTime,@Param("collectorId") String collectorId);
int cancelTask(@Param("patientId") String patientId, @Param("sysflag") String collectorId);
}

@ -0,0 +1,34 @@
package com.docus.server.mzzyy.entity;
/**
* @author YongBin Wen
* @date 2025/6/4 0004 8:39
*/
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
* @author YongBin Wen
* @date 2024/7/12 14:38
*/
@Data
@ApiModel("梅州中医院提供的心电视图 V_JSWZH_XD")
public class MzZyyXinDianView {
/**
*
*/
private String jzh;
/**
* id
*/
private String bgid;
/**
*
*/
private String bgmc;
/**
*
*/
private String bgdz;
}

@ -6,7 +6,10 @@ import com.alibaba.fastjson.JSONObject;
import com.docus.core.util.Func;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.infrastructure.web.api.ResultCode;
import com.docus.server.archive.entity.TBasic;
import com.docus.server.archive.mapper.TBasicMapper;
import com.docus.server.mzzyy.entity.MzZyyXinDianView;
import com.docus.server.mzzyy.mapper.MzZyyXinDianViewMapper;
import com.docus.server.rpc.DownPlatformService;
import com.docus.server.rpc.MzZyyLisService;
import com.docus.server.rpc.MzZyyShouMaService;
@ -26,12 +29,15 @@ import com.docus.server.rpc.dto.ReportTaskTwoDto;
import com.docus.server.rpc.enums.MzZyyLisType;
import com.docus.server.util.StaticResourceMapping;
import com.docus.server.util.TableJsonRead;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
@ -57,6 +63,8 @@ public class MzZyyReportCollectJob {
private MzZyyShouMaService mzZyyShouMaService;
@Autowired
private TBasicMapper tBasicMapper;
@Autowired
private MzZyyXinDianViewMapper xinDianViewMapper;
@XxlJob("MzZyyLisCollectJob")
public void lisCollectJob() {
@ -186,6 +194,7 @@ public class MzZyyReportCollectJob {
if (!Objects.isNull(queryMedicalDocumentInfoList)) {
log.info("住院号:{},住院流水号:{},查询手麻医疗文书列表为空,返回信息为:{}。", inpatientNo, jzh, Func.toJson(queryMedicalDocumentInfoList));
}
determineAndCancelTask(patientId, collectorId);
return;
}
List<ReportDownScanFileDto> scanFiles = new ArrayList<>();
@ -244,6 +253,99 @@ public class MzZyyReportCollectJob {
}
}
@XxlJob("MzZyyXinDianCollectJob")
public void xinDianCollectJob() {
log.info(">>>>>>>>>>>>>>>>>>>>>> 梅州中医院心电视图采集任务开始!");
// 1.获取任务和患者信息 2.查询视图信息 3.上报下载
String jobParam = XxlJobHelper.getJobParam();
JSONObject jobParamJsonObject = JSONObject.parseObject(jobParam);
String assortId = jobParamJsonObject.getString("assortId");
String collectorId = jobParamJsonObject.getString("collectorId");
String extraCondition = jobParamJsonObject.getString("extraCondition");
if (Func.isBlank(assortId) || Func.isBlank(collectorId)) {
log.warn(">>>>>>>>>>>>>>>>>>>>>> 梅州中医院心电视图采集任务,未配置心电采集器和采集文件分段");
return;
}
CommonResult<ReportDownTwoDto> commonResult = taskDistributeService.getNoViewTaskByCollectorId(collectorId);
if (ResultCode.SUCCESS.getCode().equals(commonResult.getCode())
&& commonResult.getData() != null) {
ReportDownTwoDto downTwoDto = commonResult.getData();
ReportTaskTwoDto task = downTwoDto.getTasks().get(0);
log.info("获取了任务:{}", Func.toJson(task));
String patientId = downTwoDto.getPatientId();
String jzh = downTwoDto.getJzh();
List<MzZyyXinDianView> xinDianViews = xinDianViewMapper.getPatientXinDianView(jzh, extraCondition);
int size = xinDianViews.size();
log.info("记账号:{} 采集心电数据:{} 条!", jzh, size);
if (size <= 0) {
determineAndCancelTask(patientId, collectorId);
return;
}
tBasicMapper.invalidFileBySource(patientId, collectorId);
ReportDownPatientDto patient = new ReportDownPatientDto();
patient.setPatientid(patientId);
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setAssortid(assortId);
reportDownDto.setCollectorid(collectorId);
reportDownDto.setIp("");
reportDownDto.setPatient(patient);
for (MzZyyXinDianView result : xinDianViews) {
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setDownurl(result.getBgdz());
reportDownScanFileDto.setFiletitle(result.getBgmc());
reportDownScanFileDto.setSerialnum(result.getBgid());
reportDownScanFileDto.setFilesource(1);
reportDownScanFileDto.setFiletype(1);
reportDownScanFileDto.setFilestoragetype(1);
reportDownScanFileDto.setTaskid(task.getTaskId());
List<ReportDownScanFileDto> scanFiles = Collections.singletonList(reportDownScanFileDto);
reportDownDto.setScanfiles(scanFiles);
downPlatformService.report(reportDownDto);
}
}
log.info(">>>>>>>>>>>>>>>>>>>>>> 梅州中医院心电视图采集任务结束!");
}
/**
* 8
*
* @param patientId
* @param collectorId id
* @date 2025/6/4 0004 9:03
* @author YongBin Wen
*/
private void determineAndCancelTask(String patientId, String collectorId) {
List<TBasic> tbasics = tBasicMapper.getTbasicByPatientIds(Collections.singletonList(patientId));
if (Func.isEmpty(tbasics)) {
return;
}
TBasic tBasic = tbasics.get(0);
Date disDate = tBasic.getDisDate();
if (Objects.isNull(disDate)) {
return;
}
LocalDateTime disDateLocalDateTime = disDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
if (disDateLocalDateTime.getYear() < 1900) {
return;
}
final int cancelDays = 8;
LocalDateTime endLocalDateTime = disDateLocalDateTime.plusDays(cancelDays);
// 现在时间大于出院n天作废任务
if (!LocalDateTime.now().isBefore(endLocalDateTime)) {
tBasicMapper.cancelTask(patientId, collectorId);
}
}
/**
*
*

@ -0,0 +1,25 @@
package com.docus.server.mzzyy.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.server.mzzyy.entity.MzZyyXinDianView;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author YongBin Wen
* @date 2025/6/4 0004 8:38
*/
@DS("mzzyy-xd")
@Mapper
public interface MzZyyXinDianViewMapper {
/**
* jzh
*
* @param jzh
* @param extraCondition sql
* @return
*/
List<MzZyyXinDianView> getPatientXinDianView(@Param("jzh") String jzh, @Param("ext") String extraCondition);
}

@ -99,6 +99,29 @@ spring:
test-on-borrow: false
test-on-return: false
validation-query: select 1
mzzyy-xd:
url: jdbc:sqlserver://199.168.91.23:1433;DatabaseName=CardioScanServer
username: dmsuser
password: dmsecg@2020
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
type: com.alibaba.druid.pool.DruidDataSource
# 初始化配置
initial-size: 3
# 最小连接数
min-idle: 3
# 最大连接数
max-active: 10
# 获取连接超 时时间
max-wait: 5000
# 连接有效性检测时间
time-between-eviction-runs-millis: 90000
# 最大空闲时间
min-evictable-idle-time-millis: 1800000
test-while-idle: true
test-on-borrow: false
test-on-return: false
validation-query: select 1
redis:
host: redis.docus.cn
password: JSdocus@702

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.sdry.mapper.ShouMaViewMapper">
<select id="getPatientShouMaView" resultType="com.docus.server.sdry.entity.ShouMaView">
SELECT
JZH as jzh,
BGID as bgid,
BGMC as bgmc,
BGDZ as bgdz
FROM dbo.V_JSWZH_XD
WHERE 1=1
<if test="ext != null and ext != ''">
${ext}
</if>
</select>
</mapper>

@ -34,6 +34,9 @@
<delete id="delTaskById">
delete from docus_archivefile.af_collect_task where id=#{id}
</delete>
<update id="cancelTask">
update docus_archivefile.af_collect_task set state='4' where patient_id=#{patientId} and sysflag=#{sysflag}
</update>
<select id="getTbasicByReportTimeAndInpNoOrIdCard" resultType="com.docus.server.archive.entity.TBasic">
select
patient_id as patientId,

Loading…
Cancel
Save