Browse Source

Merge branch 'dock'

master-admin
zhangye 2 weeks ago
parent
commit
c3d06fbc20
  1. 6
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/RmsDto.java
  2. 19
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java
  3. 2
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java
  4. 57
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java
  5. 16
      ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml
  6. 14
      ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/controller/ReportPdfController.java
  7. 4
      ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java
  8. 2
      ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/IRmsService.java
  9. 20
      ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java
  10. 2
      ruisi_java/ruisi-web-admin/src/main/resources/application-stage.yml
  11. 48
      ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml
  12. 6
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java
  13. 2
      ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml

6
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/RmsDto.java

@ -256,10 +256,10 @@ public class RmsDto {
@ApiModel("导出历史报告单-DTO")
@Data
public static class ReportPDF{
@ApiModelProperty("患者的就诊流水号")
@ApiModelProperty("患者唯一标识")
private String patientNo;
@ApiModelProperty("医护人员工号")
private String emplCode;
@ApiModelProperty("就诊流水号")
private String visitNo;
}
}

19
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java

@ -1148,4 +1148,23 @@ public class RmsVo {
private Integer optionNum;
}
@ApiModel("导出历史报告单(对接)-VO")
@Data
public static class ReportPDF{
@ApiModelProperty("患者名称")
private String patientName;
@ApiModelProperty("性别")
private Byte sex;
@ApiModelProperty("年龄")
private int Age;
@ApiModelProperty("就诊号")
private String visitNo;
@ApiModelProperty("评估人")
private String assessor;
@ApiModelProperty("评估时间")
private String assessTime;
@ApiModelProperty("报告单文件路径")
private String url;
}
}

2
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java

@ -152,4 +152,6 @@ public interface SysUserMapper {
* @return
*/
List<SysUser> selectUserByRoleKey(@Param("roleKey") String roleKey);
List<SysUser> getZcpsByHospitalId(@Param("hospitalId")Long hospitalId);
}

57
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java

@ -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();

16
ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -229,8 +229,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and u.del_flag = 0
and r.del_flag = 0
</select>
<select id="getZcpsByHospitalId" resultType="com.ccsens.common.core.domain.entity.SysUser">
SELECT
distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.sex, u.avatar, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.update_by, u.update_time, u.remark
,r.role_id,r.role_key
FROM
ums_user u
JOIN ums_user_role ur ON u.user_id = ur.user_id
join ums_role r on ur.role_id = r.role_id
WHERE
r.role_key = 'yy_zcps'
and u.del_flag = 0
and r.del_flag = 0
and u.dept_id = #{hospitalId}
</select>
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into ums_user(
<if test="userId != null and userId != 0">user_id,</if>
<if test="deptId != null and deptId != 0">dept_id,</if>

14
ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/controller/ReportPdfController.java

@ -2,13 +2,17 @@ package com.ccsens.admin.controller;
import com.ccsens.admin.service.IRmsService;
import com.ccsens.common.annotation.Anonymous;
import com.ccsens.common.core.domain.BaseDto;
import com.ccsens.common.core.domain.JsonResponse;
import com.ccsens.system.domain.dto.PmsPatientDto;
import com.ccsens.system.domain.dto.RmsDto;
import com.ccsens.system.domain.vo.RmsVo;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -16,6 +20,9 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import static com.github.pagehelper.page.PageMethod.startPage;
/**
* @author zy
@ -32,9 +39,10 @@ public class ReportPdfController {
@Anonymous
@ApiOperation(value = "通过就诊号查询患者的评估报告单",notes = "")
@PostMapping(value="/reportPDF")
public JsonResponse<String> generate(@RequestBody @ApiParam @Valid RmsDto.ReportPDF dto){
public JsonResponse<PageInfo<RmsVo.ReportPDF>> generate(@RequestBody @Validated BaseDto<RmsDto.ReportPDF> dto){
log.info("通过就诊号查询患者的评估报告单:{}", dto);
String url = rmsService.viewReportPDF(dto);
return JsonResponse.ok(url);
startPage(dto);
List<RmsVo.ReportPDF> list = rmsService.viewReportPDF(dto.getParam());
return JsonResponse.ok(new PageInfo<>(list));
}
}

4
ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java

@ -88,4 +88,8 @@ public interface RmsDao {
* @return
*/
List<AmsVo.QuestionRecordDto> queryRecord(@Param("evaluationId")Long evaluationId, @Param("questionId")Long questionId);
List<RmsVo.ReportPDF> viewReportPdfByVisitNo(@Param("visitNo")String visitNo);
List<RmsVo.ReportPDF> viewReportPdfByPatientNo(@Param("patientNo")String patientNo);
}

2
ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/IRmsService.java

@ -38,7 +38,7 @@ public interface IRmsService {
Workbook exportAnalyse(List<Long> ids);
String viewReportPDF(RmsDto.ReportPDF dto);
List<RmsVo.ReportPDF> viewReportPDF(RmsDto.ReportPDF dto);
}

20
ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java

@ -930,22 +930,12 @@ public class RmsServiceImpl implements IRmsService {
}
@Override
public String viewReportPDF(RmsDto.ReportPDF dto) {
if(StrUtil.isBlank(dto.getPatientNo())){
throw new ServiceException("患者就诊号不能为空");
public List<RmsVo.ReportPDF> viewReportPDF(RmsDto.ReportPDF dto) {
if(StrUtil.isNotBlank(dto.getVisitNo())){
return rmsDao.viewReportPdfByVisitNo(dto.getVisitNo());
}else{
return rmsDao.viewReportPdfByPatientNo(dto.getPatientNo());
}
//根据就诊流水号查询患者的
RmsReport report;
RmsReportExample example = new RmsReportExample();
example.createCriteria().andVisitNoEqualTo(dto.getPatientNo()).andDelFlagEqualTo((byte) 0);
List<RmsReport> reports = rmsReportMapper.selectByExample(example);
if (CollectionUtil.isNotEmpty(reports)) {
report = reports.get(0);
if(ObjectUtil.isNotNull(report)){
return report.getUrl();
}
}
return null;
}
private void dealMMSEScored(List<RmsVo.Analyse> analyses) {

2
ruisi_java/ruisi-web-admin/src/main/resources/application-stage.yml

@ -88,7 +88,7 @@ app:
# 资源访问路径前缀 示例(/profile)
profileUrl: /profile
# 资源存储路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profilePath: /home/ruisiCga/server/profile
profilePath: D:/Projects/ruisi_cga/server/profile/
# 分布式ID-WorkID
workerId: 1
# 分布式ID-DataCenterID

48
ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml

@ -1183,4 +1183,52 @@
</where>
order by r.sort
</select>
<select id="viewReportPdfByVisitNo" resultType="com.ccsens.system.domain.vo.RmsVo$ReportPDF">
SELECT
p.name as patientName,
p.sex,
r.patient_age as age,
b.outpatient_no as visitNo,
u.nick_name as assessor,
FROM_UNIXTIME(r.report_time /1000, '%Y-%m-%d') as assessTime,
r.url
FROM
rms_report r
LEFT JOIN pms_patient_body b on b.outpatient_no = r.visit_no
LEFT JOIN pms_patient p on b.patient_id = p.id
LEFT JOIN ems_evaluation e on r.evaluation_id = e.id and e.del_flag = 0
LEFT JOIN ums_user u on e.tester_id = u.user_id
WHERE
r.del_flag = 0
and p.del_flag = 0
and r.visit_no = #{visitNo}
GROUP BY r.id
</select>
<select id="viewReportPdfByPatientNo" resultType="com.ccsens.system.domain.vo.RmsVo$ReportPDF">
SELECT
p.name as patientName,
p.sex,
r.patient_age as age,
r.visit_no as visitNo,
u.nick_name as assessor,
FROM_UNIXTIME(r.report_time /1000, '%Y-%m-%d') as assessTime,
r.url
FROM
rms_report r
LEFT JOIN pms_patient_body b on b.outpatient_no = r.visit_no
LEFT JOIN pms_patient p on b.patient_id = p.id
LEFT JOIN ems_evaluation e on r.evaluation_id = e.id and e.del_flag = 0
LEFT JOIN ums_user u on e.tester_id = u.user_id
WHERE
r.del_flag = 0
and p.del_flag = 0
and p.patient_no = #{patientNo}
GROUP BY r.id
</select>
</mapper>

6
ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java

@ -24,13 +24,13 @@ public class SyncHospitalData {
private DockService dockService;
@DataSource(value = DataSourceType.SLAVE)
@Scheduled(cron = "0 */2 * * * ?")
@Scheduled(cron = "0 */1 * * * ?")
public void syncHospitalData() {
dockService.syncHospitalData();
}
@DataSource(value = DataSourceType.SLAVE)
@Scheduled(cron = "*/30 * * * * ?")
@Scheduled(cron = "0 */1 * * * ?")
public void syncDeptData() {
try {
List<SysDept> sysDepts = dockService.syncUmsDeptSlave();
@ -48,7 +48,7 @@ public class SyncHospitalData {
@DataSource(value = DataSourceType.SLAVE)
@Scheduled(cron = "*/30 * * * * ?")
@Scheduled(cron = "0 */1 * * * ?")
public void syncUserData() {
try {
List<SysUser> sysUsers = dockService.syncUmsUserSlave();

2
ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml

@ -11,7 +11,7 @@ spring:
# password: po3OynBO[M3579p6L7)o
url: jdbc:mysql://127.0.0.1:3306/ruisi_cga?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: q7510327
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭

Loading…
Cancel
Save