|
@@ -104,17 +104,26 @@ public class BlockLossManagementFacade {
|
|
|
*/
|
|
|
public Boolean dataCompare(DataCompareVO dataCompareVO) {
|
|
|
Boolean flag = false;
|
|
|
+ Long hospitalId = null;
|
|
|
+ Long principleId = null;
|
|
|
+ //定时任务SysUserUtils取不到医院,操作人
|
|
|
+ if (dataCompareVO.getHospitalId() == null) {
|
|
|
+ hospitalId = SysUserUtils.getCurrentHospitalId();
|
|
|
+ principleId = SysUserUtils.getCurrentPrincipleId();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//====1.获取已丢失状态记录,去数据库中对比判断是否补录
|
|
|
List<BlocklossResult> lossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
|
|
|
.select("id,behospital_code,rec_id,loss_type,loss_way")
|
|
|
- .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
|
|
|
+ .eq(hospitalId != null, "hospital_id", hospitalId)
|
|
|
.eq("status", LossStatusEnum.IS_LOSS.getKey())
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey()));
|
|
|
Map<String, List<BlocklossResult>> lossResultMap = null;
|
|
|
if (ListUtil.isNotEmpty(lossResults)) {
|
|
|
lossResultMap = EntityUtil.makeEntityListMap(lossResults, "lossType");
|
|
|
//更新以缺失数据的状态
|
|
|
- flag = upBlockLossStatus(lossResultMap);
|
|
|
+ flag = upBlockLossStatus(lossResultMap, hospitalId, principleId);
|
|
|
}
|
|
|
|
|
|
//====2.某时间的数据对比
|
|
@@ -155,7 +164,7 @@ public class BlockLossManagementFacade {
|
|
|
.ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "gmt_create", dataCompareVO.getStartDate())
|
|
|
.le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "gmt_create", dataCompareVO.getEndDate())
|
|
|
.eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode())
|
|
|
- .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
|
|
|
+ .eq(hospitalId != null, "hospital_id", hospitalId)
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey()))
|
|
|
.stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
|
|
|
//病案首页数据
|
|
@@ -166,13 +175,13 @@ public class BlockLossManagementFacade {
|
|
|
dataBaseHomePageIds = homePageFacade.list(new QueryWrapper<HomePage>()
|
|
|
.select("home_page_id")
|
|
|
.in("behospital_code", dataBaseBehospitalCodes)
|
|
|
- .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
|
|
|
+ .eq(hospitalId != null, "hospital_id", hospitalId)
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey()))
|
|
|
.stream().map(HomePage::getHomePageId).collect(Collectors.toList());
|
|
|
dataBaseRecIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
|
|
|
.select("rec_id")
|
|
|
.in("behospital_code", dataBaseBehospitalCodes)
|
|
|
- .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
|
|
|
+ .eq(hospitalId != null, "hospital_id", hospitalId)
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey()))
|
|
|
.stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
|
|
|
}
|
|
@@ -238,11 +247,11 @@ public class BlockLossManagementFacade {
|
|
|
//外部丢失数据集合
|
|
|
List<BlocklossResult> outInserts = new ArrayList<>();
|
|
|
//文书数据对比
|
|
|
- compareHisWithLog(recs, recLogs, LossTypeEnum.REC_LOSS.getKey(), outInserts, outLossRecs, hisMedicalRecordMap);
|
|
|
+ compareHisWithLog(recs, recLogs, LossTypeEnum.REC_LOSS.getKey(), outInserts, outLossRecs, hisMedicalRecordMap, hospitalId, principleId);
|
|
|
//病案首页数据对比
|
|
|
- compareHisWithLog(medicalRecords, homePageLogs, LossTypeEnum.HOMEPAGE_LOSS.getKey(), outInserts, outLossHomepages, hisMedicalRecordMap);
|
|
|
+ compareHisWithLog(medicalRecords, homePageLogs, LossTypeEnum.HOMEPAGE_LOSS.getKey(), outInserts, outLossHomepages, hisMedicalRecordMap, hospitalId, principleId);
|
|
|
//病历数据对比
|
|
|
- compareHisWithLog(medicalRecords, behospitalCodeLogs, LossTypeEnum.CODE_LOSS.getKey(), outInserts, outLossCodes, hisMedicalRecordMap);
|
|
|
+ compareHisWithLog(medicalRecords, behospitalCodeLogs, LossTypeEnum.CODE_LOSS.getKey(), outInserts, outLossCodes, hisMedicalRecordMap, hospitalId, principleId);
|
|
|
|
|
|
flag = blocklossResultServiceImpl.saveBatch(outInserts);
|
|
|
}
|
|
@@ -251,13 +260,13 @@ public class BlockLossManagementFacade {
|
|
|
//内部丢失数据集合
|
|
|
List<BlocklossResult> inInserts = new ArrayList<>();
|
|
|
if (ListUtil.isNotEmpty(recLogs)) {
|
|
|
- compareLogWithLocal(recLogs, dataBaseRecIds, LossTypeEnum.REC_LOSS.getKey(), inInserts, inLossRecs, hisMedicalRecordMap);
|
|
|
+ compareLogWithLocal(recLogs, dataBaseRecIds, LossTypeEnum.REC_LOSS.getKey(), inInserts, inLossRecs, hisMedicalRecordMap, hospitalId, principleId);
|
|
|
}
|
|
|
if (ListUtil.isNotEmpty(homePageLogs)) {
|
|
|
- compareLogWithLocal(homePageLogs, dataBaseHomePageIds, LossTypeEnum.HOMEPAGE_LOSS.getKey(), inInserts, inLossHomepages, hisMedicalRecordMap);
|
|
|
+ compareLogWithLocal(homePageLogs, dataBaseHomePageIds, LossTypeEnum.HOMEPAGE_LOSS.getKey(), inInserts, inLossHomepages, hisMedicalRecordMap, hospitalId, principleId);
|
|
|
}
|
|
|
if (ListUtil.isNotEmpty(behospitalCodeLogs)) {
|
|
|
- compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, LossTypeEnum.CODE_LOSS.getKey(), inInserts, inLossCodes, hisMedicalRecordMap);
|
|
|
+ compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, LossTypeEnum.CODE_LOSS.getKey(), inInserts, inLossCodes, hisMedicalRecordMap, hospitalId, principleId);
|
|
|
}
|
|
|
if (ListUtil.isNotEmpty(inInserts)) {
|
|
|
flag = blocklossResultServiceImpl.saveBatch(inInserts);
|
|
@@ -290,11 +299,13 @@ public class BlockLossManagementFacade {
|
|
|
* @param inInserts 内部丢失插入集合
|
|
|
* @param havingLossIds 已经插入的id集合
|
|
|
* @param hisMedicalRecordMap his病历数据map(key-住院序号:value-人的his数据)
|
|
|
+ * @param hospitalId 医院id
|
|
|
+ * @param principleId 操作人id
|
|
|
* @Return void
|
|
|
*/
|
|
|
private void compareLogWithLocal(List<GetOperationLogDTO> logs, List<String> dataBases, String type,
|
|
|
List<BlocklossResult> inInserts, List<String> havingLossIds,
|
|
|
- Map<String, HisMedicalRecordDTO> hisMedicalRecordMap) {
|
|
|
+ Map<String, HisMedicalRecordDTO> hisMedicalRecordMap, Long hospitalId, Long principleId) {
|
|
|
switch (type) {
|
|
|
case "0":
|
|
|
//文书丢失
|
|
@@ -312,7 +323,7 @@ public class BlockLossManagementFacade {
|
|
|
blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(rec.getBehospitalCode()).getBehospitalDate());
|
|
|
}
|
|
|
//拼装病历数据块丢失明细其他信息
|
|
|
- assembleOtherBlocklossResult(blocklossResult);
|
|
|
+ assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
|
|
|
inInserts.add(blocklossResult);
|
|
|
}
|
|
|
}
|
|
@@ -342,7 +353,7 @@ public class BlockLossManagementFacade {
|
|
|
blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(recMap.get(recId).getBehospitalCode()).getBehospitalDate());
|
|
|
}
|
|
|
//拼装病历数据块丢失明细其他信息
|
|
|
- assembleOtherBlocklossResult(blocklossResult);
|
|
|
+ assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
|
|
|
inInserts.add(blocklossResult);
|
|
|
}
|
|
|
});
|
|
@@ -365,7 +376,7 @@ public class BlockLossManagementFacade {
|
|
|
blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(homePages.getBehospitalCode()).getBehospitalDate());
|
|
|
}
|
|
|
//拼装病历数据块丢失明细其他信息
|
|
|
- assembleOtherBlocklossResult(blocklossResult);
|
|
|
+ assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
|
|
|
inInserts.add(blocklossResult);
|
|
|
}
|
|
|
}
|
|
@@ -385,7 +396,7 @@ public class BlockLossManagementFacade {
|
|
|
blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(beHehospitalInfo.getBehospitalCode()).getBehospitalDate());
|
|
|
}
|
|
|
//拼装病历数据块丢失明细其他信息
|
|
|
- assembleOtherBlocklossResult(blocklossResult);
|
|
|
+ assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
|
|
|
inInserts.add(blocklossResult);
|
|
|
}
|
|
|
}
|
|
@@ -403,7 +414,7 @@ public class BlockLossManagementFacade {
|
|
|
* @param lossResultMap
|
|
|
* @Return void
|
|
|
*/
|
|
|
- private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap) {
|
|
|
+ private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap, Long hospitalId, Long principleId) {
|
|
|
AtomicReference<Boolean> flag = new AtomicReference<>(false);
|
|
|
lossResultMap.keySet().stream().forEach(lossType -> {
|
|
|
//0:文书丢失 1:病案首页丢失 2:患者信息丢失
|
|
@@ -411,7 +422,7 @@ public class BlockLossManagementFacade {
|
|
|
case "0":
|
|
|
//文书丢失
|
|
|
List<String> redIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
|
|
|
- .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
|
|
|
+ .eq("hospital_id", hospitalId != null ? hospitalId : 0)
|
|
|
.in("rec_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
|
|
|
.in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey()))
|
|
@@ -422,18 +433,18 @@ public class BlockLossManagementFacade {
|
|
|
.set("solve_time", DateUtil.now())
|
|
|
.set("gmt_modified", DateUtil.now())
|
|
|
.set("status", LossStatusEnum.NOT_LOSS.getKey())
|
|
|
- .set("modifier", SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0")
|
|
|
+ .set("modifier", principleId != null ? principleId + "" : "0")
|
|
|
.eq("status", LossStatusEnum.IS_LOSS.getKey())
|
|
|
.eq("loss_type", lossType)
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
|
|
|
+ .eq("hospital_id", hospitalId != null ? hospitalId : 0)
|
|
|
.in("rec_id", redIds)));
|
|
|
}
|
|
|
break;
|
|
|
case "1":
|
|
|
//病案首页丢失
|
|
|
List<String> homePages = homePageFacade.list(new QueryWrapper<HomePage>()
|
|
|
- .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
|
|
|
+ .eq("hospital_id", hospitalId != null ? hospitalId : 0)
|
|
|
.in("home_page_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
|
|
|
.in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey()))
|
|
@@ -445,10 +456,10 @@ public class BlockLossManagementFacade {
|
|
|
.set("solve_time", DateUtil.now())
|
|
|
.set("gmt_modified", DateUtil.now())
|
|
|
.set("status", LossStatusEnum.NOT_LOSS.getKey())
|
|
|
- .set("modifier", SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0")
|
|
|
+ .set("modifier", principleId != null ? principleId + "" : "0")
|
|
|
.eq("status", LossStatusEnum.IS_LOSS.getKey())
|
|
|
.eq("loss_type", lossType)
|
|
|
- .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
|
|
|
+ .eq("hospital_id", hospitalId != null ? hospitalId : 0)
|
|
|
.in("rec_id", homePages)
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())));
|
|
|
}
|
|
@@ -456,7 +467,7 @@ public class BlockLossManagementFacade {
|
|
|
case "2":
|
|
|
//患者信息丢失
|
|
|
List<String> behospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
|
|
|
- .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
|
|
|
+ .eq("hospital_id", hospitalId != null ? hospitalId : 0)
|
|
|
.in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey()))
|
|
|
.stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
|
|
@@ -466,11 +477,11 @@ public class BlockLossManagementFacade {
|
|
|
.set("solve_time", DateUtil.now())
|
|
|
.set("gmt_modified", DateUtil.now())
|
|
|
.set("status", LossStatusEnum.NOT_LOSS.getKey())
|
|
|
- .set("modifier", SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0")
|
|
|
+ .set("modifier", principleId != null ? principleId + "" : "0")
|
|
|
.eq("status", LossStatusEnum.IS_LOSS.getKey())
|
|
|
.eq("loss_type", lossType)
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
|
|
|
+ .eq("hospital_id", hospitalId != null ? hospitalId : 0)
|
|
|
.in("behospital_code", behospitalCodes)));
|
|
|
}
|
|
|
break;
|
|
@@ -488,11 +499,13 @@ public class BlockLossManagementFacade {
|
|
|
* @param outInserts 外部丢失插入集合
|
|
|
* @param havingLossIds 已经插入的id集合
|
|
|
* @param hisMedicalRecordMap his病历数据map(key-住院序号:value-人的his数据)
|
|
|
+ * @param hospitalId 医院id
|
|
|
+ * @param principleId 操作人id
|
|
|
* @Return void
|
|
|
*/
|
|
|
private void compareHisWithLog(List<GetOperationLogDTO> medicalRecords, List<GetOperationLogDTO> logs,
|
|
|
String type, List<BlocklossResult> outInserts, List<String> havingLossIds,
|
|
|
- Map<String, HisMedicalRecordDTO> hisMedicalRecordMap) {
|
|
|
+ Map<String, HisMedicalRecordDTO> hisMedicalRecordMap, Long hospitalId, Long principleId) {
|
|
|
//his数据为空直接返回
|
|
|
if (ListUtil.isEmpty(medicalRecords)) {
|
|
|
return;
|
|
@@ -514,7 +527,7 @@ public class BlockLossManagementFacade {
|
|
|
blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
|
|
|
blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
|
|
|
//拼装病历数据块丢失明细其他信息
|
|
|
- assembleOtherBlocklossResult(blocklossResult);
|
|
|
+ assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
|
|
|
outInserts.add(blocklossResult);
|
|
|
}
|
|
|
}
|
|
@@ -535,7 +548,7 @@ public class BlockLossManagementFacade {
|
|
|
blocklossResult.setLossType(LossTypeEnum.HOMEPAGE_LOSS.getKey());
|
|
|
blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
|
|
|
//拼装病历数据块丢失明细其他信息
|
|
|
- assembleOtherBlocklossResult(blocklossResult);
|
|
|
+ assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
|
|
|
outInserts.add(blocklossResult);
|
|
|
}
|
|
|
}
|
|
@@ -553,7 +566,7 @@ public class BlockLossManagementFacade {
|
|
|
blocklossResult.setLossType(LossTypeEnum.CODE_LOSS.getKey());
|
|
|
blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
|
|
|
//拼装病历数据块丢失明细其他信息
|
|
|
- assembleOtherBlocklossResult(blocklossResult);
|
|
|
+ assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
|
|
|
outInserts.add(blocklossResult);
|
|
|
}
|
|
|
}
|
|
@@ -568,13 +581,15 @@ public class BlockLossManagementFacade {
|
|
|
* 拼装病历数据块丢失明细其他信息
|
|
|
*
|
|
|
* @param blocklossResult
|
|
|
+ * @param hospitalId
|
|
|
+ * @param principleId
|
|
|
* @Return void
|
|
|
*/
|
|
|
- private void assembleOtherBlocklossResult(BlocklossResult blocklossResult) {
|
|
|
+ private void assembleOtherBlocklossResult(BlocklossResult blocklossResult, Long hospitalId, Long principleId) {
|
|
|
blocklossResult.setStatus(LossStatusEnum.IS_LOSS.getKey());
|
|
|
- blocklossResult.setHospitalId(SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0);
|
|
|
+ blocklossResult.setHospitalId(hospitalId != null ? hospitalId : 0);
|
|
|
blocklossResult.setGmtCreate(DateUtil.now());
|
|
|
- blocklossResult.setCreator(SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0");
|
|
|
+ blocklossResult.setCreator(principleId != null ? principleId + "" : "0");
|
|
|
blocklossResult.setGmtModified(DateUtil.now());
|
|
|
}
|
|
|
|