同步基础信息修改

main
zhanglb 2 years ago
parent 9ec8703729
commit 2ee02fe4e8

@ -7,4 +7,5 @@ public class SyncBasicDataDto {
private int limit;
}

@ -0,0 +1,144 @@
package com.docus.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class Tbasic {
@ApiModelProperty(value = "病案主键")
@TableId(value = "patient_id", type = IdType.ASSIGN_ID)
private String patientId;
@ApiModelProperty(value = "住院次数")
private Integer admissTimes;
@ApiModelProperty(value = "病案号")
private String inpatientNo;
@ApiModelProperty(value = "住院ID号")
private String admissId;
@ApiModelProperty(value = "患者姓名")
private String name;
@ApiModelProperty(value = "盘号")
private String ph;
@ApiModelProperty(value = "性别")
private String sex;
@ApiModelProperty(value = "年龄_岁")
private Integer age;
@ApiModelProperty(value = "年龄_月")
private Integer ageMonth;
@ApiModelProperty(value = "年龄_天")
private Integer ageDay;
@ApiModelProperty(value = "身份证")
private String idCard;
@ApiModelProperty(value = "手机号码")
private String telphone;
@ApiModelProperty(value = "住院日期")
private Date admissDate;
@ApiModelProperty(value = "住院科室")
private String admissDept;
@ApiModelProperty(value = "住院科室名称")
private String admissDeptName;
@ApiModelProperty(value = "出院日期")
private Date disDate;
@ApiModelProperty(value = "出院科室")
private String disDept;
@ApiModelProperty(value = "出院科室名称")
private String disDeptName;
@ApiModelProperty(value = "实际住院天数")
private Integer admissDays;
@ApiModelProperty(value = "主管医生")
private String attending;
@ApiModelProperty(value = "主管医生名称")
private String attendingName;
@ApiModelProperty(value = "主要诊断编码")
private String mainDiagCode;
@ApiModelProperty(value = "主要诊断名称")
private String mainDiagName;
@ApiModelProperty(value = "主要手术编码")
private String mainOperateCode;
@ApiModelProperty(value = "主要手术名称")
private String mainOperateName;
@ApiModelProperty(value = "是否死亡")
private Integer isDead;
@ApiModelProperty(value = "是否作废(01是)")
private Integer isCancel;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "是否归档 1已归档0未归档")
private Integer isArchive;
@ApiModelProperty(value = "归档时间")
private Date archiveTime;
@ApiModelProperty(value = "文件来源 1:af_archive_detail,2:t_scan_assort")
private Integer fileSource;
@ApiModelProperty(value = "完整性描述")
private String integrityDesc;
private String bColumn1;
private String bColumn2;
private String bColumn3;
private String bColumn4;
private String bColumn5;
private Integer bColumn6;
private Integer bColumn7;
private Integer bColumn8;
private Integer bColumn9;
private Integer bColumn10;
@ApiModelProperty(value = "姓名缩写(内部构成)")
private String nameSpell;
@ApiModelProperty(value = "性别名称")
private String sexName;
@ApiModelProperty(value = "记账号")
private String jzh;
@ApiModelProperty(value = "档案文件存储类型1pdf默认2图片")
private Integer archiveFileStorageType;
}

@ -92,4 +92,7 @@ public class Tpatientvisit implements Serializable {
@TableField("FPHZD")
private String fphzd;
@ApiModelProperty(value = "是否死亡")
@TableField("fbody")
private Integer fbody;
}

@ -3,6 +3,8 @@ package com.docus.demo.mapper.mysql;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.demo.dto.BasicSelectDto;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.Tbasic;
import com.docus.demo.vo.BasicVo;
import org.apache.ibatis.annotations.Param;
@ -17,4 +19,7 @@ public interface BasicMapper {
@Param("dto") BasicSelectDto basicSelectDto);
void insertOrUpdateByid(List<Tbasic> tbasicList);
List<Tbasic> getOldBasicList(List<String> fprnList, SyncBasicDataDto syncBasicDataDto);
}

@ -1,7 +1,9 @@
package com.docus.demo.mapper.sqlserver1;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.sqlserver1.Tdiagnose;
import com.docus.demo.entity.sqlserver1.Toperation;
import com.docus.demo.entity.sqlserver1.Tpatientvisit;
import org.apache.ibatis.annotations.Param;
@ -11,6 +13,11 @@ import java.util.List;
public interface PaintVisitMapper {
List<Tpatientvisit> getTpatientVisitList(@Param("dto") SyncBasicDataDto syncBasicDataDto);
List<Tpatientvisit> getTpatientVisitList(@Param("pageStart") int pageStart,
@Param("pageEnd") int pageEnd,
@Param("dto") SyncBasicDataDto syncBasicDataDto);
List<Toperation> getToperation(@Param("fprns") List<String> fprnList);
List<Tdiagnose> getTdiagnose(@Param("fprns") List<String> fprnList);
}

@ -1,15 +1,23 @@
package com.docus.demo.service;
import cn.hutool.core.util.ObjectUtil;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.entity.Tbasic;
import com.docus.demo.entity.sqlserver1.Tdiagnose;
import com.docus.demo.entity.sqlserver1.Toperation;
import com.docus.demo.entity.sqlserver1.Tpatientvisit;
import com.docus.demo.facade.ISyncBasicDataService;
import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.sqlserver1.PaintVisitMapper;
import com.docus.demo.utils.SnowflakeIdWorker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class SyncBasicDataImpl implements ISyncBasicDataService {
@ -20,19 +28,98 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
private PaintVisitMapper paintVisitMapper;
@Override
public CommonResult<?> syncBasicData(SyncBasicDataDto syncBasicDataDto) {
//根据出院时间查询省厅数据
List<Tpatientvisit> tpatientvisitList = paintVisitMapper.getTpatientVisitList(syncBasicDataDto);
//诊断数据
//页码
int current;
//每页1000条数据
int limit = syncBasicDataDto.getLimit();
List<Tpatientvisit> tpatientvisitList;
for (current = 1; ; current++) {
//根据出院时间查询省厅数据
tpatientvisitList = paintVisitMapper.getTpatientVisitList((current-1)*limit, limit,syncBasicDataDto);
if (null == tpatientvisitList || tpatientvisitList.size() == 0) {
break;
}
List<String> fprnList = tpatientvisitList.stream().map(Tpatientvisit::getFprn).collect(Collectors.toList());
//诊断数据
List<Tdiagnose> tdiagnoses = paintVisitMapper.getTdiagnose(fprnList);
List<Toperation> toperations = paintVisitMapper.getToperation(fprnList);
//数据map转换
List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList,syncBasicDataDto);
List<Tbasic> tbasicList = this.getTbasicList(oldBasicList,tpatientvisitList,tdiagnoses,toperations);
//数据入库
basicMapper.insertOrUpdateByid(tbasicList);
}
return CommonResult.success("同步成功");
}
private List<Tbasic> getTbasicList(List<Tbasic> oldBasicList,List<Tpatientvisit> tpatientvisitList, List<Tdiagnose> tdiagnoses, List<Toperation> toperations) {
//数据map转换
return tpatientvisitList.stream()
.filter(f->{
Tbasic oldBasic = oldBasicList.stream()
.filter(old->ObjectUtil.equal(f.getFprn(),old.getInpatientNo())
&&ObjectUtil.equal(f.getFtimes(),old.getAdmissTimes())
)
.findFirst()
.orElse(null);
return oldBasic ==null;
})
.map(m->{
String fprn = m.getFprn();
Integer ftimes = m.getFtimes();
Tdiagnose tdiagnose = tdiagnoses.stream()
.filter(f-> ObjectUtil.equal(f.getFprn(),fprn)
&&ObjectUtil.equal(f.getFtimes(),ftimes)
&&ObjectUtil.equal(f.getFzdlx(),"1")
)
.findFirst()
.orElse(null);
Toperation toperation = toperations.stream()
.filter(f-> ObjectUtil.equal(f.getFprn(),fprn)
&&ObjectUtil.equal(f.getFtimes(),ftimes)
&&ObjectUtil.equal(f.getFpx(),1L)
)
.findFirst()
.orElse(null);
Tbasic tbasic = new Tbasic();
tbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId()));
tbasic.setAdmissTimes(m.getFtimes());
tbasic.setInpatientNo(m.getFprn());
tbasic.setName(m.getFname());
tbasic.setSex(m.getFsex());
tbasic.setAge(0);
//数据入库
tbasic.setIdCard(m.getFidcard());
tbasic.setTelphone("");
tbasic.setAdmissDate(m.getFrydate());
tbasic.setAdmissDept(m.getFrytykh());
tbasic.setAdmissDeptName(m.getFrydept());
tbasic.setDisDate(m.getFcydate());
tbasic.setDisDept(m.getFcytykh());
tbasic.setDisDeptName(m.getFcydept());
tbasic.setAdmissDays(m.getFdays());
tbasic.setAttending(m.getFzzdoctbh());
tbasic.setAttendingName(m.getFzzdoct());
if (tdiagnose!=null){
tbasic.setMainDiagCode(tdiagnose.getFicdm());
tbasic.setMainDiagName(tdiagnose.getFjbname());
}
if(toperation!=null){
tbasic.setMainOperateCode(toperation.getFopcode());
tbasic.setMainOperateName(toperation.getFop());
}
tbasic.setIsDead(m.getFbody());
tbasic.setCreateTime(new Date());
tbasic.setSexName(m.getFsex());
tbasic.setArchiveFileStorageType(2);
return null;
return tbasic;
}).collect(Collectors.toList());
}
}

@ -3,6 +3,11 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.demo.mapper.mysql.BasicMapper">
<insert id="insertOrUpdateByid">
</insert>
<select id="getBasicVoList" resultType="com.docus.demo.vo.BasicVo">
@ -31,12 +36,15 @@
<if test="dto.startDate !=null and dto.startDate != ''">
AND dis_date &lt;= #{dto.endDate}
</if>
</where>
limit #{pageStart} ,#{pageEnd}
</select>
<select id="getOldBasicList" resultType="com.docus.demo.entity.Tbasic">
</where>
limit #{pageStart} ,#{pageEnd}
</select>
</mapper>

@ -6,7 +6,7 @@
<select id="getTpatientVisitList" resultType="com.docus.demo.entity.sqlserver1.Tpatientvisit">
SELECT * FROM Tpatientvisit
SELECT ROWNUM "NAVICAT_ROWNUM" ,Tpatientvisit.* FROM Tpatientvisit
<where>
<if test="dto.inpatientNoList !=null and dto.inpatientNoList.size() != 0 ">
@ -23,10 +23,30 @@
<if test="dto.startDate !=null and dto.startDate != ''">
AND fcydate &lt;= #{dto.endDate}
</if>
AND ROWNUM &gt;= #{pageStart}
AND ROWNUM &lt;= #{pageEnd}
</where>
</select>
<select id="getToperation" resultType="com.docus.demo.entity.sqlserver1.Toperation">
SELECT * FROM tOperation
where
fprn in
<foreach collection="fprns" item="fprn" separator="," open="(" close=")">
#{fprn}
</foreach>
</select>
<select id="getTdiagnose" resultType="com.docus.demo.entity.sqlserver1.Tdiagnose">
SELECT * FROM tDiagnose
where
fprn in
<foreach collection="fprns" item="fprn" separator="," open="(" close=")">
#{fprn}
</foreach>
</select>
</mapper>
Loading…
Cancel
Save