fix: 厦门中医院,异地导入数据排查

lianzhong-receive
wyb 5 months ago
parent 73d716593d
commit 56f6a984a1

@ -229,4 +229,20 @@ public class SyncBasicDataController {
return CommonResult.failed("筛选异常!"); return CommonResult.failed("筛选异常!");
} }
} }
@ApiOperation("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充,被选择的改为未归档状态")
@GetMapping("/xmzyyYidi/choose")
public CommonResult<?> xmzyyYidiChoose(){
log.info("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充");
try {
syncBasicDataService.xmzyyYidiChoose();
log.info("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充,已完成!");
return CommonResult.success("筛选完成!");
} catch (Exception ex) {
log.error("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充,出现异常!" + ex.getMessage(), ex);
return CommonResult.failed("筛选异常!");
}
}
} }

@ -19,4 +19,6 @@ public interface ISyncBasicDataService {
void choose(); void choose();
void choose(List<String> inpatientNos); void choose(List<String> inpatientNos);
void xmzyyYidiChoose();
} }

@ -50,4 +50,10 @@ public interface BasicMapper {
List<Tbasic> getTbasicByInpatientNo(@Param("inpatientNo") String inpatientNo); List<Tbasic> getTbasicByInpatientNo(@Param("inpatientNo") String inpatientNo);
List<String> getInpatientNos(); List<String> getInpatientNos();
List<String> getInpatientNosBySource(@Param("fileSource") int source);
int fillMissingFields(@Param("basic") Tbasic yidiBasic);
int updateNotArchive(@Param("patientId")String patientId);
} }

@ -183,6 +183,54 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
} }
} }
@Override
public void xmzyyYidiChoose() {
final int yidiSource=4;
List<String> yidiInpatientNos = basicMapper.getInpatientNosBySource(yidiSource);
for (String inpatientNo : yidiInpatientNos) {
xmzyyYidiChoose(inpatientNo);
}
}
/**
*
*/
public void xmzyyYidiChoose(String yidiInpatientNo) {
List<Tbasic> basicList = basicMapper.getTbasicByInpatientNo(yidiInpatientNo);
if (basicList.size() <= 1) {
return;
}
final Integer yidiSource = 4;
List<Tbasic> yidiBasics = basicList.stream().filter(p -> yidiSource.equals(p.getFileSource())).collect(Collectors.toList());
if(CollUtil.isEmpty(yidiBasics)){
return;
}
for (Tbasic yidiBasic : yidiBasics) {
List<Tbasic> collect = basicList.stream().filter(p -> {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return !yidiSource.equals(p.getFileSource())
&& sdf.format(yidiBasic.getDisDate()).equals(sdf.format(p.getDisDate()))
&& yidiBasic.getName().equals(p.getName())
&& StrUtil.isNotBlank(p.getDisDept())
&& StrUtil.isNotBlank(p.getSex());
}).collect(Collectors.toList());
if(CollUtil.isNotEmpty(collect)){
Tbasic chooseBasic = collect.get(0);
yidiBasic.setSex(chooseBasic.getSex());
yidiBasic.setSexName(chooseBasic.getSexName());
yidiBasic.setAdmissDate(chooseBasic.getAdmissDate());
yidiBasic.setAdmissDept(chooseBasic.getAdmissDept());
yidiBasic.setAdmissDeptName(chooseBasic.getAdmissDeptName());
yidiBasic.setDisDept(chooseBasic.getDisDept());
yidiBasic.setDisDeptName(chooseBasic.getDisDeptName());
basicMapper.fillMissingFields(yidiBasic);
basicMapper.updateNotArchive(chooseBasic.getPatientId());
}
}
}
/** /**
* *
* / +10 * / +10

@ -6,30 +6,30 @@
<insert id="insertOrUpdateByid"> <insert id="insertOrUpdateByid">
insert into docus_medicalrecord.t_basic insert into docus_medicalrecord.t_basic
(patient_id,admiss_times,inpatient_no,admiss_id, (patient_id,admiss_times,inpatient_no,admiss_id,
name,sex,age,id_card, name,sex,age,id_card,
admiss_date,admiss_dept,admiss_dept_name,dis_date, admiss_date,admiss_dept,admiss_dept_name,dis_date,
dis_dept,dis_dept_name,main_diag_code,main_diag_name, dis_dept,dis_dept_name,main_diag_code,main_diag_name,
main_operate_code,main_operate_name,create_time,is_archive, main_operate_code,main_operate_name,create_time,is_archive,
file_source,b_column5,b_column8,archive_file_storage_type, file_source,b_column5,b_column8,archive_file_storage_type,
scan_upload_state scan_upload_state
) )
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.patientId},#{item.admissTimes},#{item.inpatientNo},#{item.admissId}, (#{item.patientId},#{item.admissTimes},#{item.inpatientNo},#{item.admissId},
#{item.name},#{item.sex},#{item.age},#{item.idCard}, #{item.name},#{item.sex},#{item.age},#{item.idCard},
#{item.admissDate},#{item.admissDept},#{item.admissDeptName},#{item.disDate}, #{item.admissDate},#{item.admissDept},#{item.admissDeptName},#{item.disDate},
#{item.disDept},#{item.disDeptName},#{item.mainDiagCode},#{item.mainDiagName}, #{item.disDept},#{item.disDeptName},#{item.mainDiagCode},#{item.mainDiagName},
#{item.mainOperateCode},#{item.mainOperateName},#{item.createTime},#{item.isArchive}, #{item.mainOperateCode},#{item.mainOperateName},#{item.createTime},#{item.isArchive},
#{item.fileSource},#{item.bColumn5},#{item.bColumn8},#{item.archiveFileStorageType}, #{item.fileSource},#{item.bColumn5},#{item.bColumn8},#{item.archiveFileStorageType},
#{item.scanUploadState} #{item.scanUploadState}
) )
</foreach> </foreach>
ON DUPLICATE KEY UPDATE id_card = VALUES(id_card) ON DUPLICATE KEY UPDATE id_card = VALUES(id_card)
,admiss_dept = VALUES(admiss_dept) ,admiss_dept = VALUES(admiss_dept)
,admiss_dept_name = VALUES(admiss_dept_name) ,admiss_dept_name = VALUES(admiss_dept_name)
,dis_dept = VALUES(dis_dept) ,dis_dept = VALUES(dis_dept)
,dis_dept_name = VALUES(dis_dept_name) ,dis_dept_name = VALUES(dis_dept_name)
,is_archive = VALUES(is_archive); ,is_archive = VALUES(is_archive);
</insert> </insert>
<insert id="insertOrUpdateTbasicSub"> <insert id="insertOrUpdateTbasicSub">
@ -66,19 +66,42 @@
</insert> </insert>
<update id="updateScanStatus"> <update id="updateScanStatus">
update docus_medicalrecord.t_basic update docus_medicalrecord.t_basic
set scan_source = 1 , set scan_source = 1,
scan_upload_state = 3 scan_upload_state = 3
WHERE patient_id = #{pid} WHERE patient_id = #{pid}
</update> </update>
<update id="updateScanBasicCorrect"> <update id="updateScanBasicCorrect">
update docus_medicalrecord.t_basic set patient_id=#{newPatId} ,ph=#{ph} where patient_id=#{oldPatId} update docus_medicalrecord.t_basic
set patient_id=#{newPatId},
ph=#{ph}
where patient_id = #{oldPatId}
</update>
<update id="fillMissingFields">
update docus_medicalrecord.t_basic
set sex=#{basic.sex},
sex_name=#{basic.sexName},
admiss_date=#{basic.admissDate},
admiss_dept=#{basic.admissDept},
admiss_dept_name=#{basic.admissDeptName},
dis_dept=#{basic.disDept},
dis_dept_name=#{basic.disDeptName}
where patient_id = #{basic.patientId}
</update>
<update id="updateNotArchive">
update docus_medicalrecord.t_basic
set is_archive = 0
where patient_id = #{patientId}
</update> </update>
<delete id="delTbasicByAdmissId"> <delete id="delTbasicByAdmissId">
delete from docus_medicalrecord.t_basic where admiss_id=#{admissId} delete
from docus_medicalrecord.t_basic
where admiss_id = #{admissId}
</delete> </delete>
<delete id="delTbasicSub"> <delete id="delTbasicSub">
delete from docus_medicalrecord.t_basic_sub where patient_id=#{patientId} delete
from docus_medicalrecord.t_basic_sub
where patient_id = #{patientId}
</delete> </delete>
<delete id="delTbasic"> <delete id="delTbasic">
delete from docus_medicalrecord.t_basic delete from docus_medicalrecord.t_basic
@ -197,26 +220,35 @@
where patient_id = #{patientId} where patient_id = #{patientId}
</select> </select>
<select id="getTbasicByInpatientNo" resultType="com.docus.demo.entity.Tbasic"> <select id="getTbasicByInpatientNo" resultType="com.docus.demo.entity.Tbasic">
SELECT SELECT patient_id,
patient_id, admiss_times,
admiss_times, inpatient_no,
inpatient_no, admiss_date,
admiss_date, `name`,
`name`, dis_date,
dis_date, admiss_dept,
ph admiss_dept_name,
FROM dis_dept,
docus_medicalrecord.t_basic dis_dept_name,
where sex,
inpatient_no = #{inpatientNo} sex_name,
file_source,
ph
FROM docus_medicalrecord.t_basic
where inpatient_no = #{inpatientNo}
</select> </select>
<select id="getInpatientNos" resultType="java.lang.String"> <select id="getInpatientNos" resultType="java.lang.String">
SELECT SELECT inpatient_no
inpatient_no FROM docus_medicalrecord.t_basic
FROM
docus_medicalrecord.t_basic
group by inpatient_no group by inpatient_no
</select> </select>
<select id="getInpatientNosBySource" resultType="java.lang.String">
SELECT inpatient_no
FROM docus_medicalrecord.t_basic
where file_source = #{fileSource}
group by inpatient_no
</select>
</mapper> </mapper>
Loading…
Cancel
Save