添加根据出院日期的接口同步
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