添加根据出院日期的接口同步
parent
4f33626843
commit
e09cbf2d75
@ -0,0 +1,93 @@
|
||||
package com.docus.server.collect.service;
|
||||
|
||||
import com.docus.server.collect.converter.FileReportConverter;
|
||||
import com.docus.server.collect.dto.PatientScanConditionDTO;
|
||||
import com.docus.server.collect.dto.TBasicQrDto;
|
||||
import com.docus.server.collect.entity.PatientScan;
|
||||
import com.docus.server.collect.entity.TBasic;
|
||||
import com.docus.server.collect.infrastructure.dao.CollectTaskDao;
|
||||
import com.docus.server.collect.infrastructure.mapper.PatientBasicMapper;
|
||||
import com.docus.server.collect.service.dto.PatScanSyncResult;
|
||||
import com.docus.server.collect.service.dto.ReportFileInfoDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 患者扫描数据采集者
|
||||
*
|
||||
* @author wyb
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class PatientScanSynchronizer {
|
||||
@Resource
|
||||
private PatientBasicMapper patientBasicMapper;
|
||||
@Resource
|
||||
private FileReportService fileReportService;
|
||||
@Resource
|
||||
private CollectTaskDao collectTaskDao;
|
||||
@Resource
|
||||
private FileReportConverter fileReportConverter;
|
||||
@Resource
|
||||
private PatientScanService patientScanService;
|
||||
@Value("${docus.sync.patsmGSys}")
|
||||
private String patmGSys;
|
||||
|
||||
/**
|
||||
* 根据病案号和住院次数进行扫描文件同步
|
||||
*
|
||||
* @param source 来源
|
||||
* @param patientScanConditionDTOList 病案号和住院次数集合
|
||||
* @return 同步结果
|
||||
*/
|
||||
public PatScanSyncResult sync(String source, List<PatientScanConditionDTO> patientScanConditionDTOList) {
|
||||
StringBuilder syncMsgStringBuilder = new StringBuilder();
|
||||
int patientTotalCount = patientScanConditionDTOList.size();
|
||||
int successPatientCount = 0;
|
||||
int fileCount = 0;
|
||||
for (PatientScanConditionDTO condition : patientScanConditionDTOList) {
|
||||
List<TBasic> basicList = getBasicInfo(condition);
|
||||
if (Objects.isNull(basicList) || basicList.size() != 1) {
|
||||
log.warn("{},住院号:{},住院次数:{} 查询基础数据没有数据或者有多条数据,请检查!", source, condition.getInpatientNo(), condition.getAdmissTimes());
|
||||
syncMsgStringBuilder.append(source).append(",住院号:").append(condition.getInpatientNo()).append("住院次数:").append(condition.getAdmissTimes()).append(" 查询基础数据没有数据或者有多条数据,请检查!");
|
||||
continue;
|
||||
}
|
||||
List<PatientScan> patientScanList = patientScanService.getScanDataByInpatientNoAndTimes(condition);
|
||||
log.info("{},住院号:{},住院次数:{} 采集视图数据:{} 条!,数据为:{}", source, condition.getInpatientNo(), condition.getAdmissTimes(), patientScanList.size(), patientScanList);
|
||||
saveCollectTaskAndReport(basicList.get(0), patientScanList);
|
||||
log.info("{},住院号:{},住院次数:{} 采集视图数据:{} 条,执行成功!", source, condition.getInpatientNo(), condition.getAdmissTimes(), patientScanList);
|
||||
fileCount += patientScanList.size();
|
||||
successPatientCount++;
|
||||
}
|
||||
PatScanSyncResult result = new PatScanSyncResult();
|
||||
result.setPatientTotalCount(patientTotalCount);
|
||||
result.setSuccessPatientCount(successPatientCount);
|
||||
result.setFileCount(fileCount);
|
||||
result.setMsg(syncMsgStringBuilder.toString());
|
||||
return result;
|
||||
}
|
||||
|
||||
private void saveCollectTaskAndReport(TBasic tBasic, List<PatientScan> patientScanList) {
|
||||
for (PatientScan patientScan : patientScanList) {
|
||||
// 转换后的对象缺失的补充
|
||||
ReportFileInfoDTO reportFileInfoDTO = fileReportConverter.convertReportFileInfoDTO(tBasic, patientScan);
|
||||
reportFileInfoDTO.setSysFlag(patmGSys);
|
||||
Long taskId = collectTaskDao.saveTask(reportFileInfoDTO);
|
||||
reportFileInfoDTO.setTaskId(taskId);
|
||||
fileReportService.saveDownloadTaskAndReport(reportFileInfoDTO);
|
||||
}
|
||||
}
|
||||
|
||||
private List<TBasic> getBasicInfo(PatientScanConditionDTO patientScanConditionDTO) {
|
||||
TBasicQrDto basicQrDto = new TBasicQrDto();
|
||||
basicQrDto.setInpatientNo(patientScanConditionDTO.getInpatientNo());
|
||||
basicQrDto.setAdmissTimes(Integer.parseInt(patientScanConditionDTO.getAdmissTimes()));
|
||||
basicQrDto.setIgnorePh(1);
|
||||
return patientBasicMapper.getBasicInfo(basicQrDto);
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.docus.server.collect.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author wyb
|
||||
*/
|
||||
@Data
|
||||
public class PatScanSyncResult {
|
||||
private int patientTotalCount;
|
||||
private int successPatientCount;
|
||||
private int fileCount;
|
||||
private String msg;
|
||||
}
|
Loading…
Reference in New Issue