|
|
|
@ -6,6 +6,7 @@ import cn.hutool.core.date.DateField; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import cn.hutool.core.util.IdUtil; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import cn.hutool.extra.pinyin.PinyinUtil; |
|
|
|
import com.ccsens.common.annotation.DataSource; |
|
|
|
import com.ccsens.common.constant.ErrorConstant; |
|
|
|
@ -430,6 +431,10 @@ public class DockServiceImpl implements DockService { |
|
|
|
|
|
|
|
|
|
|
|
private void syncPmsPatient() { |
|
|
|
//查找医院下第一个总测评师
|
|
|
|
List<SysUser> sysUserList = sysUserMapper.getZcpsByHospitalId(hospitalId); |
|
|
|
|
|
|
|
|
|
|
|
DockPatientBaseInfoExample dockPatientBaseInfoExample = new DockPatientBaseInfoExample(); |
|
|
|
dockPatientBaseInfoExample.createCriteria().andSyncEqualTo("0").andDelFlagEqualTo((byte) 0); |
|
|
|
List<DockPatientBaseInfo> dockPatientBaseInfos = dockPatientBaseInfoMapper.selectByExample(dockPatientBaseInfoExample); |
|
|
|
@ -443,18 +448,22 @@ public class DockServiceImpl implements DockService { |
|
|
|
//根据患者患者唯一编号查询业务表内患者信息
|
|
|
|
PmsPatient pmsPatient; |
|
|
|
PmsPatientExample pmsPatientExample = new PmsPatientExample(); |
|
|
|
pmsPatientExample.createCriteria().andIdcardEqualTo(dockPatientBaseInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); |
|
|
|
pmsPatientExample.createCriteria().andPatientNoEqualTo(dockPatientBaseInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); |
|
|
|
List<PmsPatient> pmsPatients = pmsPatientMapper.selectByExample(pmsPatientExample); |
|
|
|
if (CollUtil.isNotEmpty(pmsPatients)) { |
|
|
|
//存在就更新
|
|
|
|
pmsPatient = pmsPatients.get(0); |
|
|
|
disposePmsPatient(dockPatientBaseInfo, pmsPatient); |
|
|
|
pmsPatient.setHospitalId(hospitalId); |
|
|
|
pmsPatient.setUserId(CollUtil.isEmpty(sysUserList) ? null : sysUserList.get(0).getUserId()); |
|
|
|
pmsPatientMapper.updateByPrimaryKeySelective(pmsPatient); |
|
|
|
} else { |
|
|
|
//不存在则插入
|
|
|
|
pmsPatient = new PmsPatient(); |
|
|
|
pmsPatient.setId(IdUtil.getSnowflake().nextId()); |
|
|
|
disposePmsPatient(dockPatientBaseInfo, pmsPatient); |
|
|
|
pmsPatient.setHospitalId(hospitalId); |
|
|
|
pmsPatient.setUserId(CollUtil.isEmpty(sysUserList) ? null : sysUserList.get(0).getUserId()); |
|
|
|
pmsPatientMapper.insertSelective(pmsPatient); |
|
|
|
} |
|
|
|
//修改同步表数据的状态
|
|
|
|
@ -480,21 +489,52 @@ public class DockServiceImpl implements DockService { |
|
|
|
} |
|
|
|
|
|
|
|
private PmsPatientBody savePatientBady(DockPatientVisitInfo dockPatientVisitInfo) { |
|
|
|
//根据医生和部门信息查找业务表内对应的医生账号和部门id
|
|
|
|
String doctorName = ""; |
|
|
|
Long deptId = null; |
|
|
|
//医生用户名
|
|
|
|
String doctor = dockPatientVisitInfo.getDoctor(); |
|
|
|
if (StrUtil.isNotEmpty(doctor)) { |
|
|
|
String[] split = doctor.split("/"); |
|
|
|
if (split.length > 1) { |
|
|
|
SysUser sysUser = new SysUser(); |
|
|
|
sysUser.setEmplCode(split[1]); |
|
|
|
List<SysUser> sysUsers = sysUserMapper.selectUserList(sysUser); |
|
|
|
if (CollUtil.isNotEmpty(sysUsers)) { |
|
|
|
doctorName = sysUsers.get(0).getUserName(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//部门id
|
|
|
|
if (StrUtil.isNotEmpty(dockPatientVisitInfo.getDepartment())) { |
|
|
|
SysDept sysDept = new SysDept(); |
|
|
|
sysDept.setDeptName(dockPatientVisitInfo.getDepartment()); |
|
|
|
List<SysDept> sysDepts = sysDeptMapper.selectDeptList(sysDept); |
|
|
|
if (CollUtil.isNotEmpty(sysDepts)) { |
|
|
|
deptId = sysDepts.get(0).getDeptId(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//根据患者唯一编号查找业务表内患者信息
|
|
|
|
PmsPatient pmsPatient; |
|
|
|
PmsPatientExample pmsPatientExample = new PmsPatientExample(); |
|
|
|
pmsPatientExample.createCriteria().andIdcardEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); |
|
|
|
pmsPatientExample.createCriteria().andPatientNoEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); |
|
|
|
List<PmsPatient> pmsPatients = pmsPatientMapper.selectByExample(pmsPatientExample); |
|
|
|
if (CollUtil.isEmpty(pmsPatients)) { |
|
|
|
//根据患者唯一编号查找同步表的患者信息
|
|
|
|
DockPatientBaseInfoExample dockPatientBaseInfoExample = new DockPatientBaseInfoExample(); |
|
|
|
dockPatientBaseInfoExample.createCriteria().andIdCardEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); |
|
|
|
dockPatientBaseInfoExample.createCriteria().andPatientNoEqualTo(dockPatientVisitInfo.getPatientNo()).andDelFlagEqualTo((byte) 0); |
|
|
|
List<DockPatientBaseInfo> dockPatientBaseInfos = dockPatientBaseInfoMapper.selectByExample(dockPatientBaseInfoExample); |
|
|
|
if (CollUtil.isNotEmpty(dockPatientBaseInfos)) { |
|
|
|
//存在则更新
|
|
|
|
pmsPatient = new PmsPatient(); |
|
|
|
pmsPatient.setId(IdUtil.getSnowflake().nextId()); |
|
|
|
disposePmsPatient(dockPatientBaseInfos.get(0), pmsPatient); |
|
|
|
//更新患者所属的部门和创建者信息,暂不考虑其他,每次都更新
|
|
|
|
pmsPatient.setHospitalId(ObjectUtil.isNull(deptId) ? hospitalId : deptId); |
|
|
|
if (StrUtil.isNotEmpty(doctorName)) { |
|
|
|
pmsPatient.setCreateBy(doctorName); |
|
|
|
} |
|
|
|
pmsPatientMapper.insertSelective(pmsPatient); |
|
|
|
} else { |
|
|
|
//不存在表示患者确实不存在,直接跳过这个就诊信息
|
|
|
|
@ -502,6 +542,12 @@ public class DockServiceImpl implements DockService { |
|
|
|
} |
|
|
|
} else { |
|
|
|
pmsPatient = pmsPatients.get(0); |
|
|
|
//更新患者所属的部门和创建者信息,暂不考虑其他,每次都更新
|
|
|
|
pmsPatient.setHospitalId(ObjectUtil.isNull(deptId) ? hospitalId : deptId); |
|
|
|
if (StrUtil.isNotEmpty(doctorName)) { |
|
|
|
pmsPatient.setCreateBy(doctorName); |
|
|
|
} |
|
|
|
pmsPatientMapper.updateByPrimaryKeySelective(pmsPatient); |
|
|
|
} |
|
|
|
//根据就诊流水号查询业务表内患者就诊信息
|
|
|
|
PmsPatientBody pmsPatientBody; |
|
|
|
@ -568,7 +614,7 @@ public class DockServiceImpl implements DockService { |
|
|
|
pmsPatientDiagnosis.setPatientId(pmsPatientBody.getPatientId()); |
|
|
|
pmsPatientDiagnosis.setVisitNo(dockPatientDiagnosis.getVisitNo()); |
|
|
|
pmsPatientDiagnosis.setDiagnosisType(dockPatientDiagnosis.getDiagnosisType()); |
|
|
|
pmsPatientDiagnosis.setIsMainDiagnosis(dockPatientDiagnosis.getIsMainDiagnosis().toString()); |
|
|
|
pmsPatientDiagnosis.setIsMainDiagnosis(ObjectUtil.isNull(dockPatientDiagnosis.getIsMainDiagnosis()) ? "0" : dockPatientDiagnosis.getIsMainDiagnosis().toString()); |
|
|
|
pmsPatientDiagnosis.setDiagnosisCode(dockPatientDiagnosis.getDiagnosisCode()); |
|
|
|
pmsPatientDiagnosis.setDiagnosisName(dockPatientDiagnosis.getDiagnosisName()); |
|
|
|
pmsPatientDiagnosis.setDiagnosisDate(DateUtil.format(dockPatientDiagnosis.getDiagnosisDate(), "yyyy-MM-dd HH:mm:ss")); |
|
|
|
@ -623,7 +669,7 @@ public class DockServiceImpl implements DockService { |
|
|
|
pmsPatientParentIllness.setPatientId(pmsPatientBody.getPatientId()); |
|
|
|
pmsPatientParentIllness.setVisitNo(dockPatientMedicationInfo.getVisitNo()); |
|
|
|
pmsPatientParentIllness.setDrugName(dockPatientMedicationInfo.getDrugName()); |
|
|
|
pmsPatientParentIllness.setDose(dockPatientMedicationInfo.getDose().toString()); |
|
|
|
pmsPatientParentIllness.setDose(ObjectUtil.isNull(dockPatientMedicationInfo.getDose()) ? "" : dockPatientMedicationInfo.getDose().toString()); |
|
|
|
pmsPatientParentIllness.setUnit(dockPatientMedicationInfo.getUnit()); |
|
|
|
pmsPatientParentIllness.setFrequency(dockPatientMedicationInfo.getFrequency()); |
|
|
|
pmsPatientParentIllnessMapper.insertSelective(pmsPatientParentIllness); |
|
|
|
@ -678,6 +724,7 @@ public class DockServiceImpl implements DockService { |
|
|
|
// 证件信息
|
|
|
|
pmsPatient.setIdcard(dockPatientBaseInfo.getIdCard()); |
|
|
|
pmsPatient.setPhone(dockPatientBaseInfo.getPhone()); |
|
|
|
pmsPatient.setMobile(dockPatientBaseInfo.getPhone()); |
|
|
|
|
|
|
|
// 性别转换:将"男"/"女"转换为 0/1
|
|
|
|
String sex = dockPatientBaseInfo.getSex(); |
|
|
|
|