Compare commits

...

7 Commits

Author SHA1 Message Date
zhangye 9bfaba9471 Merge branch 'dock' 4 days ago
zhangye 68eaa841a4 修改视图同步 4 days ago
zhangye bdaea31f6a 修改视图同步 4 days ago
zhangye a48c286d50 修改回调报告单页面 4 days ago
zhangye 886760bfe6 Merge branch 'master-dev' 4 days ago
lzp 219b210213 合并后端 5 days ago
lzp 41949ad14b 修改量表层级太高,导致点击下一步会选择量表 5 days ago
  1. 2
      ruisi_java/ruisi-cc-common/src/main/java/com/ccsens/common/enums/DataSourceType.java
  2. 9
      ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/config/DruidConfig.java
  3. 304
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/DockVo.java
  4. 64
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/dao/OracleViewDao.java
  5. 18
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java
  6. 192
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java
  7. 165
      ruisi_java/ruisi-system/src/main/resources/mapper/system/OracleViewDao.xml
  8. 2
      ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml
  9. 4
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java
  10. 98
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalViwe.java
  11. 10
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/PmsPatientServiceImpl.java
  12. 11
      ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml
  13. 7
      ruisi_java/ruisi-web-client/src/main/resources/application-prod.yml
  14. 185
      web_admin/adminapi/index.html
  15. BIN
      web_admin/adminapi/index.html.gz
  16. 1
      web_admin/adminapi/static/css/chunk-45de7f2e.97ad933e.css
  17. BIN
      web_admin/adminapi/static/css/chunk-45de7f2e.97ad933e.css.gz
  18. 1
      web_admin/adminapi/static/js/chunk-45de7f2e.0d4aeed0.js
  19. BIN
      web_admin/adminapi/static/js/chunk-45de7f2e.0d4aeed0.js.gz
  20. 10
      web_client/src/views/Patient/chooseSetMeal/index.vue
  21. 22
      web_client/src/views/history/components/scaleInfor.vue
  22. 23
      web_client/src/views/history/components/scaleInforCopy.vue
  23. 4
      web_client/vue.config.js

2
ruisi_java/ruisi-cc-common/src/main/java/com/ccsens/common/enums/DataSourceType.java

@ -19,5 +19,5 @@ public enum DataSourceType {
/**
* 柳铁
*/
LTSZXYY
ORACLE
}

9
ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/config/DruidConfig.java

@ -53,12 +53,21 @@ public class DruidConfig {
return druidProperties.dataSource(dataSource);
}
@Bean
@ConfigurationProperties("spring.datasource.druid.oracle")
@ConditionalOnProperty(prefix = "spring.datasource.druid.oracle", name = "enabled", havingValue = "true")
public DataSource oracleDataSource(DruidProperties druidProperties) {
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}
@Bean(name = "dynamicDataSource")
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource) {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
setDataSource(targetDataSources, DataSourceType.ORACLE.name(), "oracleDataSource"); // 添加这一行
return new DynamicDataSource(masterDataSource, targetDataSources);
}

304
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/DockVo.java

@ -0,0 +1,304 @@
package com.ccsens.system.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author zy
* @date 2026/3/11 9:06
*/
@Data
public class DockVo {
/**
* 部门信息
*/
@Data
@ApiModel("部门信息-DeptInfo")
public static class DeptInfo {
@ApiModelProperty(value = "科室名称", required = true)
private String deptName;
@ApiModelProperty(value = "科室编码", required = true)
private String deptCode;
@ApiModelProperty(value = "更新时间(视图内此数据的创建/更新时间)", required = true)
private Date updateTime;
}
/**
* 员工信息
*/
@Data
@ApiModel("员工信息-EmplInfo")
public static class EmplInfo {
@ApiModelProperty(value = "姓名", required = true)
private String emplName;
@ApiModelProperty(value = "工号或者账号", required = true)
private String emplCode;
@ApiModelProperty(value = "医生或者护士身份判断标识(0医生;1护士)", required = true)
private String emplType;
@ApiModelProperty(value = "所属科室编码", required = true)
private String deptCode;
@ApiModelProperty(value = "功能权限(0:评估师;1:总评估师;空:默认是评估师)")
private String rolePower;
@ApiModelProperty(value = "数据权限(空:所在科室;ALL:所有科室;A,B,C,D:指定科室编码)")
private String dataPower;
@ApiModelProperty(value = "更新时间(视图内此数据的创建/更新时间)", required = true)
private Date updateTime;
}
/**
* 患者基本信息
*/
@Data
@ApiModel("患者基本信息-PatientBasicInfo")
public static class PatientBasicInfo {
@ApiModelProperty(value = "姓名", required = true)
private String name;
@ApiModelProperty(value = "患者编号(院内唯一标识)", required = true)
private String patientNo;
@ApiModelProperty(value = "证件号码", required = true)
private String idCard;
@ApiModelProperty(value = "联系电话", required = true)
private String phone;
@ApiModelProperty(value = "性别(0女、1男)")
private String sex;
@ApiModelProperty(value = "出生日期")
private Date birthday;
@ApiModelProperty(value = "受教育程度(0文盲、1小学、2初中、3高中/技校/中专、4大学/专科及以上)", required = true)
private String educationalStatus;
@ApiModelProperty(value = "职业类型(1农林牧渔水利生产人员 2教师 3医务工作者 4专业技术人员 5生产、运输设备操作人员 6商业、服务业人员 7国家机关、事业单位、企业负责人 8办事人员和有关人员 9军人 10媒体、文体类工作人员 11在校学生 12未就业 13家务 14其他)")
private String career;
@ApiModelProperty(value = "婚姻状况(0已婚、1未婚、2离婚、3丧偶、4未知)")
private String maritalStatus;
@ApiModelProperty(value = "民族(中文,例如:汉族)")
private String nation;
@ApiModelProperty(value = "籍贯(中文,例如:山西省太原市)")
private String nativePlace;
@ApiModelProperty(value = "现住址")
private String address;
@ApiModelProperty(value = "居住状态(0独居、1夫妻同住、2多代加入同住、3养老院、4其他)")
private String dwellingState;
@ApiModelProperty(value = "联系人姓名")
private String contactName;
@ApiModelProperty(value = "联系人电话")
private String contactMobile;
@ApiModelProperty(value = "与联系人关系")
private String contactRelation;
@ApiModelProperty(value = "ABO血型")
private String aboBloodType;
@ApiModelProperty(value = "Rh血型")
private String rhBloodType;
@ApiModelProperty(value = "信仰")
private String belief;
@ApiModelProperty(value = "爱好")
private String hobby;
@ApiModelProperty(value = "更新时间(视图内此数据的创建/更新时间)", required = true)
private Date updateTime;
}
/**
* 患者就诊信息
*/
@Data
@ApiModel("患者就诊信息-PatientVisitInfo")
public static class PatientVisitInfo {
@ApiModelProperty(value = "就诊流水号", required = true)
private String visitNo;
@ApiModelProperty(value = "患者编号", required = true)
private String patientNo;
@ApiModelProperty(value = "证件号码", required = true)
private String idCard;
@ApiModelProperty(value = "就诊类型(0门诊 1住院)", required = true)
private String visitType;
@ApiModelProperty(value = "年龄")
private Integer age;
@ApiModelProperty(value = "就诊/住院科室")
private String department;
@ApiModelProperty(value = "就诊/主治医师")
private String doctor;
@ApiModelProperty(value = "就诊/入院日期")
private Date admissionDate;
@ApiModelProperty(value = "住院次数")
private Integer admissionCount;
@ApiModelProperty(value = "床位号")
private String bedNumber;
@ApiModelProperty(value = "出院日期")
private Date dischargeDate;
@ApiModelProperty(value = "入院途径")
private String admissionMethod;
@ApiModelProperty(value = "离院方式")
private String dischargeMethod;
@ApiModelProperty(value = "身高(单位:厘米)")
private BigDecimal height;
@ApiModelProperty(value = "体重(单位:千克)")
private BigDecimal weight;
@ApiModelProperty(value = "T值")
private BigDecimal tz;
@ApiModelProperty(value = "体温(单位:摄氏度)")
private BigDecimal temperature;
@ApiModelProperty(value = "收缩压")
private Integer bloodPressureShrink;
@ApiModelProperty(value = "舒张压")
private Integer bloodPressureDiastole;
@ApiModelProperty(value = "脉搏")
private Integer pulse;
@ApiModelProperty(value = "肌酐")
private BigDecimal creatinine;
@ApiModelProperty(value = "血氧饱和度")
private BigDecimal oxygenSaturation;
@ApiModelProperty(value = "白蛋白")
private BigDecimal albumin;
@ApiModelProperty(value = "总蛋白")
private BigDecimal totalProtein;
@ApiModelProperty(value = "维生素D3测定")
private BigDecimal vitaminD3;
@ApiModelProperty(value = "凝血酶原时间")
private BigDecimal hematocrit;
@ApiModelProperty(value = "D-二聚体")
private BigDecimal dimer;
@ApiModelProperty(value = "是否吸烟(0=否,1=是)")
private Byte smokingHistory;
@ApiModelProperty(value = "吸烟年限")
private Integer smokingYear;
@ApiModelProperty(value = "是否戒烟(0=否,1=是)")
private Byte smokingQuit;
@ApiModelProperty(value = "戒烟年限")
private Integer smokingQuitYear;
@ApiModelProperty(value = "是否饮酒(0=否,1=是)")
private Byte drinkHistory;
@ApiModelProperty(value = "饮酒年限")
private Integer drinkYear;
@ApiModelProperty(value = "是否戒酒(0=否,1=是)")
private Byte drinkQuit;
@ApiModelProperty(value = "戒酒年限")
private Integer drinkQuitYear;
@ApiModelProperty(value = "是否过敏(0=否,1=是)")
private Byte hasAllergy;
@ApiModelProperty(value = "过敏药")
private String allergyDrug;
@ApiModelProperty(value = "更新时间(视图内此数据的创建/更新时间)", required = true)
private Date updateTime;
}
/**
* 诊断信息
*/
@Data
@ApiModel("诊断信息-DiagnosisInfo")
public static class DiagnosisInfo {
@ApiModelProperty(value = "门诊/住院号(关联就诊信息内的就诊号)", required = true)
private String visitNo;
@ApiModelProperty(value = "诊断类型")
private String diagnosisType;
@ApiModelProperty(value = "是否主要诊断(0=否,1=是)")
private Byte isMainDiagnosis;
@ApiModelProperty(value = "诊断名称")
private String diagnosisName;
@ApiModelProperty(value = "诊断编码")
private String diagnosisCode;
@ApiModelProperty(value = "诊断日期")
private Date diagnosisDate;
@ApiModelProperty(value = "更新时间(视图内此数据的创建/更新时间)", required = true)
private Date updateTime;
}
/**
* 用药信息
*/
@Data
@ApiModel("用药信息-MedicationInfo")
public static class MedicationInfo {
@ApiModelProperty(value = "门诊/住院号(关联就诊信息内的就诊号)", required = true)
private String visitNo;
@ApiModelProperty(value = "药物名称")
private String drugName;
@ApiModelProperty(value = "剂量")
private BigDecimal dose;
@ApiModelProperty(value = "单位")
private String unit;
@ApiModelProperty(value = "频率")
private String frequency;
@ApiModelProperty(value = "更新时间(视图内此数据的创建/更新时间)", required = true)
private Date updateTime;
}
}

64
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/dao/OracleViewDao.java

@ -0,0 +1,64 @@
package com.ccsens.system.persist.dao;
import com.ccsens.system.domain.vo.DockVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @author zy
* @date 2026/3/10 18:13
*/
public interface OracleViewDao {
/**
* 查询部门信息视图
* @param startTime 开始时间
* @param endTime 结束时间
* @return 部门信息列表
*/
List<DockVo.DeptInfo> getDeptView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/**
* 查询员工信息视图
* @param startTime 开始时间
* @param endTime 结束时间
* @return 员工信息列表
*/
List<DockVo.EmplInfo> getEmplView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/**
* 查询患者基本信息视图
* @param startTime 开始时间
* @param endTime 结束时间
* @return 患者基本信息列表
*/
List<DockVo.PatientBasicInfo> getPatientBasicView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/**
* 查询患者就诊信息视图
* @param startTime 开始时间
* @param endTime 结束时间
* @return 患者就诊信息列表
*/
List<DockVo.PatientVisitInfo> getPatientVisitView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/**
* 查询诊断信息视图
* @param startTime 开始时间
* @param endTime 结束时间
* @return 诊断信息列表
*/
List<DockVo.DiagnosisInfo> getDiagnosisView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/**
* 查询用药信息视图
* @param startTime 开始时间
* @param endTime 结束时间
* @return 用药信息列表
*/
List<DockVo.MedicationInfo> getMedicationView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
}

18
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java

@ -3,6 +3,7 @@ package com.ccsens.system.service;
import com.ccsens.common.core.domain.entity.SysDept;
import com.ccsens.common.core.domain.entity.SysUser;
import com.ccsens.system.domain.dto.DockDto;
import com.ccsens.system.domain.vo.DockVo;
import java.util.Date;
import java.util.List;
@ -33,4 +34,21 @@ public interface DockService {
List<SysUser> syncUmsUserSlave();
void syncUmsUserMaster(List<SysUser> sysUsers);
List<DockVo.DeptInfo> getDeptView();
void syncDeptView(List<DockVo.DeptInfo> sysDepts);
List<DockVo.EmplInfo> getEmplView();
void syncEmplView(List<DockVo.EmplInfo> sysEmpls);
List<DockVo.PatientBasicInfo> getPatientBasicView();
void syncPatientBasicView(List<DockVo.PatientBasicInfo> sysPatients);
List<DockVo.PatientVisitInfo> getPatientVisitView();
void syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits);
List<DockVo.DiagnosisInfo> getDiagnosisView();
void syncDiagnosisView(List<DockVo.DiagnosisInfo> sysDiagnosis);
List<DockVo.MedicationInfo> getMedicationView();
void syncMedicationView(List<DockVo.MedicationInfo> sysMedications);
}

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

@ -22,7 +22,9 @@ import com.ccsens.common.utils.StringUtils;
import com.ccsens.system.domain.SysUserRole;
import com.ccsens.system.domain.dto.DockDto;
import com.ccsens.system.domain.po.*;
import com.ccsens.system.domain.vo.DockVo;
import com.ccsens.system.persist.dao.DockDao;
import com.ccsens.system.persist.dao.OracleViewDao;
import com.ccsens.system.persist.mapper.*;
import com.ccsens.system.service.DmsDataValueService;
import com.ccsens.system.service.DockService;
@ -83,6 +85,8 @@ public class DockServiceImpl implements DockService {
private SysUserRoleMapper userRoleMapper;
@Resource
private SysRoleMapper sysRoleMapper;
@Resource
private OracleViewDao oracleViewDao;
@Value("${hospitalId:}")
@ -336,6 +340,8 @@ public class DockServiceImpl implements DockService {
}
@Override
public List<SysUser> syncUmsUserSlave() {
List<SysUser> returnUsers = new ArrayList<>();
@ -917,4 +923,190 @@ public class DockServiceImpl implements DockService {
}
@Override
public List<DockVo.DeptInfo> getDeptView() {
// 当前时间
Date endTime = new Date();
// 一小时前的时间
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getDeptView(startTime, endTime);
}
@Override
public void syncDeptView(List<DockVo.DeptInfo> sysDepts) {
if(CollUtil.isNotEmpty(sysDepts)){
for (DockVo.DeptInfo sysDept : sysDepts) {
DockDept dockDept = new DockDept();
dockDept.setDeptName(sysDept.getDeptName());
dockDept.setDeptCode(sysDept.getDeptCode());
dockDept.setSync(String.valueOf(0));
dockDeptMapper.insertSelective(dockDept);
}
}
}
@Override
public List<DockVo.EmplInfo> getEmplView() {
Date endTime = new Date();
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getEmplView(startTime, endTime);
}
@Override
public void syncEmplView(List<DockVo.EmplInfo> sysEmpls) {
if(CollUtil.isNotEmpty(sysEmpls)){
for (DockVo.EmplInfo sysEmpl : sysEmpls) {
DockEmpl dockEmpl = new DockEmpl();
dockEmpl.setEmplName(sysEmpl.getEmplName());
dockEmpl.setEmplCode(sysEmpl.getEmplCode());
dockEmpl.setEmplType(sysEmpl.getEmplType());
dockEmpl.setDeptCode(sysEmpl.getDeptCode());
dockEmpl.setRolePower(sysEmpl.getRolePower());
dockEmpl.setDataPower(sysEmpl.getDataPower());
dockEmpl.setSync(String.valueOf(0));
dockEmplMapper.insertSelective(dockEmpl);
}
}
}
@Override
public List<DockVo.PatientBasicInfo> getPatientBasicView() {
Date endTime = new Date();
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getPatientBasicView(startTime, endTime);
}
@Override
public void syncPatientBasicView(List<DockVo.PatientBasicInfo> sysPatients) {
if(CollUtil.isNotEmpty(sysPatients)){
for (DockVo.PatientBasicInfo sysPatient : sysPatients) {
DockPatientBaseInfo dockPatientBase = new DockPatientBaseInfo();
dockPatientBase.setName(sysPatient.getName());
dockPatientBase.setPatientNo(sysPatient.getPatientNo());
dockPatientBase.setIdCard(sysPatient.getIdCard());
dockPatientBase.setPhone(sysPatient.getPhone());
dockPatientBase.setSex(sysPatient.getSex());
dockPatientBase.setBirthday(sysPatient.getBirthday());
dockPatientBase.setEducationalStatus(sysPatient.getEducationalStatus());
dockPatientBase.setCareer(sysPatient.getCareer());
dockPatientBase.setMaritalStatus(sysPatient.getMaritalStatus());
dockPatientBase.setNation(sysPatient.getNation());
dockPatientBase.setNativePlace(sysPatient.getNativePlace());
dockPatientBase.setAddress(sysPatient.getAddress());
dockPatientBase.setDwellingState(sysPatient.getDwellingState());
dockPatientBase.setContactName(sysPatient.getContactName());
dockPatientBase.setContactMobile(sysPatient.getContactMobile());
dockPatientBase.setContactRelation(sysPatient.getContactRelation());
dockPatientBase.setAboBloodType(sysPatient.getAboBloodType());
dockPatientBase.setRhBloodType(sysPatient.getRhBloodType());
dockPatientBase.setBelief(sysPatient.getBelief());
dockPatientBase.setHobby(sysPatient.getHobby());
dockPatientBase.setSync(String.valueOf(0));
dockPatientBaseInfoMapper.insertSelective(dockPatientBase);
}
}
}
@Override
public List<DockVo.PatientVisitInfo> getPatientVisitView() {
Date endTime = new Date();
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getPatientVisitView(startTime, endTime);
}
@Override
public void syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits) {
if(CollUtil.isNotEmpty(sysVisits)){
for (DockVo.PatientVisitInfo sysVisit : sysVisits) {
DockPatientVisitInfo dockPatientVisit = new DockPatientVisitInfo();
dockPatientVisit.setVisitNo(sysVisit.getVisitNo());
dockPatientVisit.setPatientNo(sysVisit.getPatientNo());
dockPatientVisit.setIdCard(sysVisit.getIdCard());
dockPatientVisit.setVisitType(sysVisit.getVisitType());
dockPatientVisit.setAge(sysVisit.getAge());
dockPatientVisit.setDepartment(sysVisit.getDepartment());
dockPatientVisit.setDoctor(sysVisit.getDoctor());
dockPatientVisit.setAdmissionDate(sysVisit.getAdmissionDate());
dockPatientVisit.setAdmissionCount(sysVisit.getAdmissionCount());
dockPatientVisit.setBedNumber(sysVisit.getBedNumber());
dockPatientVisit.setDischargeDate(sysVisit.getDischargeDate());
dockPatientVisit.setAdmissionMethod(sysVisit.getAdmissionMethod());
dockPatientVisit.setDischargeMethod(sysVisit.getDischargeMethod());
dockPatientVisit.setHeight(sysVisit.getHeight());
dockPatientVisit.setWeight(sysVisit.getWeight());
dockPatientVisit.setTz(sysVisit.getTz());
dockPatientVisit.setTemperature(sysVisit.getTemperature());
dockPatientVisit.setBloodPressureShrink(sysVisit.getBloodPressureShrink());
dockPatientVisit.setBloodPressureDiastole(sysVisit.getBloodPressureDiastole());
dockPatientVisit.setPulse(sysVisit.getPulse());
dockPatientVisit.setCreatinine(sysVisit.getCreatinine());
dockPatientVisit.setOxygenSaturation(sysVisit.getOxygenSaturation());
dockPatientVisit.setAlbumin(sysVisit.getAlbumin());
dockPatientVisit.setTotalProtein(sysVisit.getTotalProtein());
dockPatientVisit.setVitaminD3(sysVisit.getVitaminD3());
dockPatientVisit.setHematocrit(sysVisit.getHematocrit());
dockPatientVisit.setDimer(sysVisit.getDimer());
dockPatientVisit.setSmokingHistory(sysVisit.getSmokingHistory());
dockPatientVisit.setSmokingYear(sysVisit.getSmokingYear());
dockPatientVisit.setSmokingQuit(sysVisit.getSmokingQuit());
dockPatientVisit.setSmokingQuitYear(sysVisit.getSmokingQuitYear());
dockPatientVisit.setDrinkHistory(sysVisit.getDrinkHistory());
dockPatientVisit.setDrinkYear(sysVisit.getDrinkYear());
dockPatientVisit.setDrinkQuit(sysVisit.getDrinkQuit());
dockPatientVisit.setDrinkQuitYear(sysVisit.getDrinkQuitYear());
dockPatientVisit.setHasAllergy(sysVisit.getHasAllergy());
dockPatientVisit.setAllergyDrug(sysVisit.getAllergyDrug());
dockPatientVisit.setSync(String.valueOf(0));
dockPatientVisitInfoMapper.insertSelective(dockPatientVisit);
}
}
}
@Override
public List<DockVo.DiagnosisInfo> getDiagnosisView() {
Date endTime = new Date();
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getDiagnosisView(startTime, endTime);
}
@Override
public void syncDiagnosisView(List<DockVo.DiagnosisInfo> sysDiagnosis) {
if(CollUtil.isNotEmpty(sysDiagnosis)){
for (DockVo.DiagnosisInfo sysDiagnosi : sysDiagnosis) {
DockPatientDiagnosis dockDiagnosis = new DockPatientDiagnosis();
dockDiagnosis.setVisitNo(sysDiagnosi.getVisitNo());
dockDiagnosis.setDiagnosisType(sysDiagnosi.getDiagnosisType());
dockDiagnosis.setIsMainDiagnosis(sysDiagnosi.getIsMainDiagnosis());
dockDiagnosis.setDiagnosisName(sysDiagnosi.getDiagnosisName());
dockDiagnosis.setDiagnosisCode(sysDiagnosi.getDiagnosisCode());
dockDiagnosis.setDiagnosisDate(sysDiagnosi.getDiagnosisDate());
dockDiagnosis.setSync(String.valueOf(0));
dockPatientDiagnosisMapper.insertSelective(dockDiagnosis);
}
}
}
@Override
public List<DockVo.MedicationInfo> getMedicationView() {
Date endTime = new Date();
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getMedicationView(startTime, endTime);
}
@Override
public void syncMedicationView(List<DockVo.MedicationInfo> sysMedications) {
if(CollUtil.isNotEmpty(sysMedications)){
for (DockVo.MedicationInfo sysMedication : sysMedications) {
DockPatientMedicationInfo dockMedication = new DockPatientMedicationInfo();
dockMedication.setVisitNo(sysMedication.getVisitNo());
dockMedication.setDrugName(sysMedication.getDrugName());
dockMedication.setDose(sysMedication.getDose());
dockMedication.setUnit(sysMedication.getUnit());
dockMedication.setFrequency(sysMedication.getFrequency());
dockMedication.setSync(String.valueOf(0));
dockPatientMedicationInfoMapper.insertSelective(dockMedication);
}
}
}
}

165
ruisi_java/ruisi-system/src/main/resources/mapper/system/OracleViewDao.xml

@ -0,0 +1,165 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ccsens.system.persist.dao.OracleViewDao">
<!-- 部门信息查询 -->
<select id="getDeptView" resultType="com.ccsens.system.domain.vo.DockVo$DeptInfo">
select
dept_name as deptName,
dept_code as deptCode,
update_time as updateTime
from bs_his.V_LNPG_KSXX
<where>
<if test="startTime != null and endTime != null">
and update_time >= #{startTime}
and update_time &lt;= #{endTime}
</if>
</where>
order by update_time desc
</select>
<!-- 员工信息查询 -->
<select id="getEmplView" resultType="com.ccsens.system.domain.vo.DockVo$EmplInfo">
select
empl_name as emplName,
empl_code as emplCode,
empl_type as emplType,
dept_code as deptCode,
role_power as rolePower,
data_power as dataPower,
update_time as updateTime
from bs_his.V_LNPG_YGXX
<where>
<if test="startTime != null and endTime != null">
and update_time >= #{startTime}
and update_time &lt;= #{endTime}
</if>
</where>
order by update_time desc
</select>
<!-- 患者基本信息查询 -->
<select id="getPatientBasicView" resultType="com.ccsens.system.domain.vo.DockVo$PatientBasicInfo">
select
name,
patient_no as patientNo,
id_card as idCard,
phone,
sex,
birthday,
educational_status as educationalStatus,
career,
marital_status as maritalStatus,
nation,
native_place as nativePlace,
address,
dwelling_state as dwellingState,
contact_name as contactName,
contact_mobile as contactMobile,
contact_relation as contactRelation,
abo_blood_type as aboBloodType,
rh_blood_type as rhBloodType,
belief,
hobby,
update_time as updateTime
from bs_his.V_LNPG_BASICINFORMATION
<where>
<if test="startTime != null and endTime != null">
and update_time >= #{startTime}
and update_time &lt;= #{endTime}
</if>
</where>
order by update_time desc
</select>
<!-- 患者就诊信息查询 -->
<select id="getPatientVisitView" resultType="com.ccsens.system.domain.vo.DockVo$PatientVisitInfo">
select
visit_no as visitNo,
patient_no as patientNo,
id_card as idCard,
visit_type as visitType,
age,
department,
doctor,
admission_date as admissionDate,
admission_count as admissionCount,
bed_number as bedNumber,
discharge_date as dischargeDate,
admission_method as admissionMethod,
discharge_method as dischargeMethod,
height,
weight,
tz,
temperature,
blood_pressure_shrink as bloodPressureShrink,
blood_pressure_diastole as bloodPressureDiastole,
pulse,
creatinine,
oxygen_saturation as oxygenSaturation,
albumin,
total_protein as totalProtein,
vitamin_d3 as vitaminD3,
hematocrit,
dimer,
smoking_history as smokingHistory,
smoking_year as smokingYear,
smoking_quit as smokingQuit,
smoking_quit_year as smokingQuitYear,
drink_history as drinkHistory,
drink_year as drinkYear,
drink_quit as drinkQuit,
drink_quit_year as drinkQuitYear,
has_allergy as hasAllergy,
allergy_drug as allergyDrug,
update_time as updateTime
from bs_his.V_LNPG_HZJZXX
<where>
<if test="startTime != null and endTime != null">
and update_time >= #{startTime}
and update_time &lt;= #{endTime}
</if>
</where>
order by update_time desc
</select>
<!-- 诊断信息查询 -->
<select id="getDiagnosisView" resultType="com.ccsens.system.domain.vo.DockVo$DiagnosisInfo">
select
visit_no as visitNo,
diagnosis_type as diagnosisType,
is_main_diagnosis as isMainDiagnosis,
diagnosis_name as diagnosisName,
diagnosis_code as diagnosisCode,
diagnosis_date as diagnosisDate,
update_time as updateTime
from bs_his.V_LNPG_ZDXX
<where>
<if test="startTime != null and endTime != null">
and update_time >= #{startTime}
and update_time &lt;= #{endTime}
</if>
</where>
order by update_time desc
</select>
<!-- 用药信息查询 -->
<select id="getMedicationView" resultType="com.ccsens.system.domain.vo.DockVo$MedicationInfo">
select
visit_no as visitNo,
drug_name as drugName,
dose,
unit,
frequency,
update_time as updateTime
from bs_his.V_LNPG_YYXX
<where>
<if test="startTime != null and endTime != null">
and update_time >= #{startTime}
and update_time &lt;= #{endTime}
</if>
</where>
order by update_time desc
</select>
</mapper>

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

@ -91,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.post_id, u.title_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_name, d.leader, d1.dept_name as parent_name, d1.dept_id as parent_id,
p.post_name, p.post_code, u.empl_code,
p.post_name, p.post_code, u.empl_code, u.valid_date,
t.title_name, u.skip_check_device, t.title_code
from ums_user u
left join ums_dept d on u.dept_id = d.dept_id

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

@ -30,7 +30,7 @@ public class SyncHospitalData {
}
@DataSource(value = DataSourceType.SLAVE)
@Scheduled(cron = "0 */1 * * * ?")
// @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 = "0 */1 * * * ?")
// @Scheduled(cron = "0 */1 * * * ?")
public void syncUserData() {
try {
List<SysUser> sysUsers = dockService.syncUmsUserSlave();

98
ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalViwe.java

@ -0,0 +1,98 @@
package com.ccsens.client.controller.scheduled;
import com.ccsens.common.annotation.DataSource;
import com.ccsens.common.core.domain.entity.SysDept;
import com.ccsens.common.core.domain.entity.SysUser;
import com.ccsens.common.enums.DataSourceType;
import com.ccsens.system.domain.vo.DockVo;
import com.ccsens.system.service.DockService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* @author zy
* @date 2026/3/10 17:58
*/
@Slf4j
@Component
public class SyncHospitalViwe {
@Resource
private DockService dockService;
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?")
public void getDeptView() {
List<DockVo.DeptInfo> sysDepts = dockService.getDeptView();
syncDeptView(sysDepts);
}
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?")
public void getEmplView() {
List<DockVo.EmplInfo> sysEmpls = dockService.getEmplView();
syncEmplView(sysEmpls);
}
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?")
public void getPatientBasicView() {
List<DockVo.PatientBasicInfo> sysPatients = dockService.getPatientBasicView();
syncPatientBasicView(sysPatients);
}
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?")
public void getPatientVisitView() {
List<DockVo.PatientVisitInfo> sysVisits = dockService.getPatientVisitView();
syncPatientVisitView(sysVisits);
}
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?")
public void getDiagnosisView() {
List<DockVo.DiagnosisInfo> sysDiagnosis = dockService.getDiagnosisView();
syncDiagnosisView(sysDiagnosis);
}
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?")
public void getMedicationView() {
List<DockVo.MedicationInfo> sysMedications = dockService.getMedicationView();
syncMedicationView(sysMedications);
}
@DataSource(value = DataSourceType.SLAVE)
public void syncDeptView(List<DockVo.DeptInfo> sysDepts) {
dockService.syncDeptView(sysDepts);
}
@DataSource(value = DataSourceType.SLAVE)
public void syncEmplView(List<DockVo.EmplInfo> sysEmpls) {
dockService.syncEmplView(sysEmpls);
}
@DataSource(value = DataSourceType.SLAVE)
public void syncPatientBasicView(List<DockVo.PatientBasicInfo> sysPatients) {
dockService.syncPatientBasicView(sysPatients);
}
@DataSource(value = DataSourceType.SLAVE)
public void syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits) {
dockService.syncPatientVisitView(sysVisits);
}
@DataSource(value = DataSourceType.SLAVE)
public void syncDiagnosisView(List<DockVo.DiagnosisInfo> sysDiagnosis) {
dockService.syncDiagnosisView(sysDiagnosis);
}
@DataSource(value = DataSourceType.SLAVE)
public void syncMedicationView(List<DockVo.MedicationInfo> sysMedications) {
dockService.syncMedicationView(sysMedications);
}
}

10
ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/PmsPatientServiceImpl.java

@ -464,7 +464,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService {
//如果是就诊信息(PmsPatientBody)
if ("PmsPatientBody".equals(param.getEditType())) {
if ("PmsPatientBody".equals(param.getEditType()) || "pmsPatientBody".equals(param.getEditType())) {
//删除后新增
PmsPatientBodyExample patientBodyExample = new PmsPatientBodyExample();
patientBodyExample.createCriteria().andOutpatientNoEqualTo(visitNo).andPatientIdEqualTo(patientId)
@ -487,7 +487,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService {
pmsPatientBody.setId(IDGenerator.nextSnowflakeId());
pmsPatientBodyMapper.insertSelective(pmsPatientBody);
// }
} else if ("PmsPatientPersonal".equals(param.getEditType())) {
} else if ("PmsPatientPersonal".equals(param.getEditType()) || "pmsPatientPersonal".equals(param.getEditType())) {
//烟酒史默认是单个信息,直接用jsonObject
//烟酒史
PmsPatientPersonal pmsPatientPersonal = JSONObject.parseObject(jsonObject.toJSONString(), PmsPatientPersonal.class);
@ -511,7 +511,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService {
pmsPatientPersonal.setId(IDGenerator.nextSnowflakeId());
pmsPatientPersonalMapper.insertSelective(pmsPatientPersonal);
// }
} else if ("PmsPatientParentIllness".equals(param.getEditType())) {
} else if ("PmsPatientParentIllness".equals(param.getEditType()) || "pmsPatientParentIllness".equals(param.getEditType())) {
//根据就诊号和患者id删除旧的用药信息(修改删除状态)
PmsPatientParentIllnessExample patientParentIllnessExample = new PmsPatientParentIllnessExample();
patientParentIllnessExample.createCriteria().andVisitNoEqualTo(visitNo).andPatientIdEqualTo(patientId)
@ -528,7 +528,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService {
pmsPatientParentIllnessMapper.insertSelective(pmsPatientParentIllness);
}
}
} else if ("PmsPatientDiagnosis".equals(param.getEditType())) {
} else if ("PmsPatientDiagnosis".equals(param.getEditType()) || "pmsPatientDiagnosis".equals(param.getEditType())) {
//删除旧的诊断信息(修改删除状态)
PmsPatientDiagnosisExample patientDiagnosisExample = new PmsPatientDiagnosisExample();
patientDiagnosisExample.createCriteria().andVisitNoEqualTo(visitNo).andPatientIdEqualTo(patientId)
@ -586,7 +586,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService {
}
@Override
@DataSource(DataSourceType.LTSZXYY)
@DataSource(DataSourceType.SLAVE)
public Long editPatientOtherMsgByHis(PmsPatientDto.EditOtherMsg param) {
return editPatientOtherMsg(param);
}

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

@ -11,18 +11,25 @@ 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:
# 从数据源开关/默认关闭
enabled: true
url: jdbc:mysql://127.0.0.1:3306/ruisi_cga_yf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: q7510327
password: 123456
# driverClassName: oracle.jdbc.driver.OracleDriver
# url: jdbc:oracle:thin:@200.1.8.115:1521:hisdb
# username: interface_lnpg
# password: interface_lnpg
oracle:
# 从数据源开关/默认关闭
enabled: true
driverClassName: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@//192.168.1.5:1521/ORCL
username: USER_LNPGXT
password: Lnpgxt.2026
# 初始连接数
initialSize: 5
# 最小连接池数量

7
ruisi_java/ruisi-web-client/src/main/resources/application-prod.yml

@ -16,6 +16,13 @@ spring:
url: jdbc:mysql://172.28.145.18:23306/ruisi_cga_whszxyjhyy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: xian#2024!!!
oracle:
# 从数据源开关/默认关闭
enabled: true
driverClassName: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@//192.168.1.5:1521/ORCL
username: USER_LNPGXT
password: Lnpgxt.2026
# 初始连接数
initialSize: 5
# 最小连接池数量

185
web_admin/adminapi/index.html

File diff suppressed because one or more lines are too long

BIN
web_admin/adminapi/index.html.gz

Binary file not shown.

1
web_admin/adminapi/static/css/chunk-45de7f2e.97ad933e.css

File diff suppressed because one or more lines are too long

BIN
web_admin/adminapi/static/css/chunk-45de7f2e.97ad933e.css.gz

Binary file not shown.

1
web_admin/adminapi/static/js/chunk-45de7f2e.0d4aeed0.js

File diff suppressed because one or more lines are too long

BIN
web_admin/adminapi/static/js/chunk-45de7f2e.0d4aeed0.js.gz

Binary file not shown.

10
web_client/src/views/Patient/chooseSetMeal/index.vue

@ -934,7 +934,7 @@ export default {
right: 0;
margin: 0 auto;
bottom: 20px;
z-index: 66;
z-index: 9999;
}
.divul {
display: flex;
@ -1041,6 +1041,14 @@ export default {
line-height: 22px;
margin-bottom: 0;
}
.checkbox-group2 h3 {
position: absolute;
top: -14px;
left: 0px;
right: 0px;
height: 58px;
z-index: 8888;
}
.div-scale-box {
// border-top: 1px solid #e1e9f1;
// margin: 0 16px;

22
web_client/src/views/history/components/scaleInfor.vue

@ -19,6 +19,21 @@
<i class="el-icon-document-checked"></i>
保存修改
</div>
<!-- <div
class="div-derive cardRig-but"
style="width: 130px; margin-right: 10px"
@click="handleExport('合并版', true)"
>
<i class="el-icon-upload2"></i>导出合并版
</div>
<div
v-if="!isAPP"
class="div-print cardRig-but"
@click="handlePrinting('合并版')"
style="width: 130px; margin-right: 10px"
>
<i class="el-icon-printer"></i>打印合并版
</div> -->
<div
class="div-derive cardRig-but"
style="width: 130px; margin-right: 10px"
@ -323,10 +338,11 @@ import {
addSign,
doctorExport,
personalExport,
queryReportDetail,
queryReport,
queryReportInfo,
positiveExport,
icdQuery,
reportExportAll,
} from "api/ams";
import {
pasis as pasisConfig,
@ -423,6 +439,8 @@ export default {
res = await personalExport(params);
} else if (_type === "阳性版") {
res = await positiveExport(params);
} else if (_type === "合并版") {
res = await reportExportAll(params);
}
const { code, msg, data } = res;
@ -558,7 +576,7 @@ export default {
const params = {
evaluationId: this.$route.query.evaluationId || this.createId,
};
const res = await queryReportDetail(params);
const res = await queryReport(params);
const { code, msg, data } = res;
if (code === 200) {
this.reportDetail1 = data;

23
web_client/src/views/history/components/scaleInforCopy.vue

@ -17,7 +17,21 @@
<i class="el-icon-document-checked"></i>
保存修改
</div>
<!-- <div
class="div-derive cardRig-but"
style="width: 130px; margin-right: 10px"
@click="handleExport('合并版', true)"
>
<i class="el-icon-upload2"></i>导出合并版
</div>
<div
v-if="!isAPP"
class="div-print cardRig-but"
@click="handlePrinting('合并版')"
style="width: 130px; margin-right: 10px"
>
<i class="el-icon-printer"></i>打印合并版
</div> -->
<div
class="div-derive cardRig-but"
style="width: 130px; margin-right: 10px"
@ -322,9 +336,10 @@ import {
addSign,
doctorExport,
personalExport,
queryReportDetail,
queryReport,
queryReportInfo,
positiveExport,
reportExportAll,
icdQuery,
} from "api/ams";
import {
@ -427,6 +442,8 @@ export default {
res = await personalExport(params);
} else if (_type === "阳性版") {
res = await positiveExport(params);
}else if (_type === "合并版") {
res = await reportExportAll(params);
}
const { code, msg, data } = res;
@ -560,7 +577,7 @@ export default {
const params = {
evaluationId: this.$route.query.evaluationId || this.createId,
};
const res = await queryReportDetail(params);
const res = await queryReport(params);
const { code, msg, data } = res;
if (code === 200) {
this.reportDetail1 = data;

4
web_client/vue.config.js

@ -36,7 +36,9 @@ module.exports = {
proxy: {
[settings.proxyUrl]: {
// target: "https://www.ylinno.com/cga/v2/api/client/",
target: "http://113.45.159.249:59001/cga/v2/api/client/",
// target: "http://113.45.159.249:59001/cga/v2/api/client/",
// target: "http://127.0.0.1:19331",
target: "http://192.168.1.136:19331",
changeOrigin: true,
pathRewrite: {
["^" + settings.proxyUrl]: "",

Loading…
Cancel
Save