package com.ruoyi.datacollection.collect;
|
|
import com.ruoyi.common.core.service.dto.InhospPositionRecord;
|
import com.ruoyi.common.core.service.dto.SltdGatherReq;
|
import com.ruoyi.datacollection.domain.HnDataGatherVO;
|
import com.ruoyi.datacollection.domain.ServiceSLTDDeptReqVO;
|
import com.ruoyi.datacollection.domain.ServiceSLTDInhospReqVO;
|
import com.ruoyi.datacollection.domain.ServiceSLTDInhospResDTO;
|
import com.ruoyi.datacollection.service.IHNGatherPatArchiveService;
|
import com.ruoyi.common.core.service.IIcd10Service;
|
import com.ruoyi.datacollection.service.IServiceSLTDHealthcareRecordService;
|
import com.ruoyi.datacollection.service.IXHGatherPatArchiveService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.time.LocalDateTime;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 4 个 HIS 采集器的聚合入口(原 smartor 的 HisGatherApiBridge) —— 四个 HIS 采集实现的归属方。
|
*
|
* <h3>方向说明</h3>
|
* 契约声明在 {@code ruoyi-common}、实现放在 smartor:因为
|
* <b>采集实现目前仍在 smartor</b>(新华 / 河南 / 省立同德·南华附一 / 疾病字典),
|
* 而 {@code ruoyi-datacollection} 不能依赖 smartor(否则新模块被单体绑死,模块化倒退)。
|
* Spring 运行期注入本实现。
|
*
|
* <h3>⚠️ 本类必须保持"纯转发"</h3>
|
* 只做两件事:<b>契约 DTO → 内部 VO 的逐字段搬运</b>、<b>调用既有 Service</b>。
|
* <b>不得</b>在这里加业务判断、补默认值、吞异常或改调用顺序 ——
|
* 移植前后的行为差异都要能在 {@code HisDataCollectionServiceImpl} 一处看清。
|
*
|
* <h3>将来动作(分阶段搬迁)</h3>
|
* 采集实现按批搬进 {@code ruoyi-datacollection} 后,对应方法从本类与
|
* {@link HisGatherApi} 一起删除;全部搬完时本类整体删除。
|
* 见 {@code doc/数据采集模块化_调研与实施方案.md}。
|
*/
|
@Slf4j
|
@Component
|
public class HisGatherCollectors {
|
|
@Autowired
|
private IXHGatherPatArchiveService ixhGatherPatArchiveService;
|
|
@Autowired
|
private IHNGatherPatArchiveService ihnGatherPatArchiveService;
|
|
@Autowired
|
private IServiceSLTDHealthcareRecordService serviceSLTDHealthcareRecordService;
|
|
@Autowired
|
private IIcd10Service iIcd10Service;
|
|
public void gatherXhInhospRecords(String cry, LocalDateTime startTime, LocalDateTime endTime) {
|
// 原 RyTask#dealHisData 直调 ixhGatherPatArchiveService.getInHospDataGather(cry, start, end)
|
ixhGatherPatArchiveService.getInHospDataGather(cry, startTime, endTime);
|
}
|
|
public void gatherHnRecords(Date startTime, Date endTime) {
|
// 原 RyTask#dealHisData 组装 HnDataGatherVO(只有 startTime / endTime 两个字段)后调用
|
HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
|
hnDataGatherVO.setStartTime(startTime);
|
hnDataGatherVO.setEndTime(endTime);
|
ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO);
|
}
|
|
public Boolean gatherSltdDeptWardArea(SltdGatherReq req) {
|
ServiceSLTDDeptReqVO deptReqVO = new ServiceSLTDDeptReqVO();
|
deptReqVO.setOrgId(req.getOrgId());
|
deptReqVO.setCampusIds(req.getCampusIds());
|
return serviceSLTDHealthcareRecordService.queryDeptWardAreaInfoList(deptReqVO);
|
}
|
|
public Boolean gatherSltdHospUser(SltdGatherReq req) {
|
return serviceSLTDHealthcareRecordService.queryHospUserInfoList(toInhospReq(req));
|
}
|
|
public int gatherSltdHealthcareRecords(SltdGatherReq req) {
|
// 原调用点丢弃返回值(只关心落库副作用);这里把条数透出,供编排判断接口是否触顶截断
|
List<ServiceSLTDInhospResDTO> records = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(toInhospReq(req));
|
return records == null ? 0 : records.size();
|
}
|
|
public List<InhospPositionRecord> querySltdInhospPosition(SltdGatherReq req) {
|
return serviceSLTDHealthcareRecordService.queryInhospPosition(toInhospReq(req));
|
}
|
|
public int gatherIcd10() {
|
return iIcd10Service.queryAddIcd10();
|
}
|
|
/**
|
* 契约 DTO → 内部 VO 的<b>逐字段</b>搬运(契约 DTO 刻意只保留编排真正会设置的字段)。
|
*/
|
private ServiceSLTDInhospReqVO toInhospReq(SltdGatherReq req) {
|
ServiceSLTDInhospReqVO reqVO = new ServiceSLTDInhospReqVO();
|
reqVO.setOrgId(req.getOrgId());
|
reqVO.setCampusId(req.getCampusId());
|
reqVO.setEncounterTimeStart(req.getEncounterTimeStart());
|
reqVO.setEncounterTimeEnd(req.getEncounterTimeEnd());
|
reqVO.setStartHeadTime(req.getStartHeadTime());
|
reqVO.setStartTailTime(req.getStartTailTime());
|
reqVO.setPreOutHospitalHeadDate(req.getPreOutHospitalHeadDate());
|
reqVO.setPreOutHospitalTailDate(req.getPreOutHospitalTailDate());
|
reqVO.setStatusList(req.getStatusList());
|
reqVO.setHealthcareRecordTypeList(req.getHealthcareRecordTypeList());
|
reqVO.setHealthcareRecordNo(req.getHealthcareRecordNo());
|
return reqVO;
|
}
|
}
|