Browse Source

电力医院修改视图同步和列表权限

hnsdlyy
zhangye 4 days ago
parent
commit
f689dbe4e9
  1. 54
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/dao/OracleViewDao.java
  2. 13
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java
  3. 145
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java
  4. 174
      ruisi_java/ruisi-system/src/main/resources/mapper/system/OracleViewDao.xml
  5. 20
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/PmsController.java
  6. 55
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalViwe.java
  7. 4
      ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml
  8. 23
      ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/PmsPatientDao.xml
  9. 21
      ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml

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

@ -1,5 +1,7 @@
package com.ccsens.system.persist.dao; package com.ccsens.system.persist.dao;
import com.ccsens.common.annotation.DataSource;
import com.ccsens.common.enums.DataSourceType;
import com.ccsens.system.domain.vo.DockVo; import com.ccsens.system.domain.vo.DockVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -13,52 +15,22 @@ import java.util.Map;
*/ */
public interface OracleViewDao { public interface OracleViewDao {
/** @DataSource(value = DataSourceType.ORACLE)
* 查询部门信息视图 List<DockVo.DeptInfo> getDeptView();
* @param startTime 开始时间
* @param endTime 结束时间
* @return 部门信息列表
*/
List<DockVo.DeptInfo> getDeptView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/** @DataSource(value = DataSourceType.ORACLE)
* 查询员工信息视图 List<DockVo.EmplInfo> getEmplView();
* @param startTime 开始时间
* @param endTime 结束时间
* @return 员工信息列表
*/
List<DockVo.EmplInfo> getEmplView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/** @DataSource(value = DataSourceType.ORACLE)
* 查询患者基本信息视图 List<DockVo.PatientBasicInfo> getPatientBasicView(@Param("patientNoList") List<String> patientNoList);
* @param startTime 开始时间
* @param endTime 结束时间
* @return 患者基本信息列表
*/
List<DockVo.PatientBasicInfo> getPatientBasicView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/** @DataSource(value = DataSourceType.ORACLE)
* 查询患者就诊信息视图
* @param startTime 开始时间
* @param endTime 结束时间
* @return 患者就诊信息列表
*/
List<DockVo.PatientVisitInfo> getPatientVisitView(@Param("startTime") Date startTime, @Param("endTime") Date endTime); List<DockVo.PatientVisitInfo> getPatientVisitView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/** @DataSource(value = DataSourceType.ORACLE)
* 查询诊断信息视图 List<DockVo.DiagnosisInfo> getDiagnosisView(@Param("visitNoList") List<String> visitNoList);
* @param startTime 开始时间
* @param endTime 结束时间
* @return 诊断信息列表
*/
List<DockVo.DiagnosisInfo> getDiagnosisView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/** @DataSource(value = DataSourceType.ORACLE)
* 查询用药信息视图 List<DockVo.MedicationInfo> getMedicationView(@Param("visitNoList") List<String> visitNoList);
* @param startTime 开始时间
* @param endTime 结束时间
* @return 用药信息列表
*/
List<DockVo.MedicationInfo> getMedicationView(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
} }

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

@ -7,6 +7,7 @@ import com.ccsens.system.domain.vo.DockVo;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @Author zzc * @Author zzc
@ -40,15 +41,17 @@ public interface DockService {
List<DockVo.EmplInfo> getEmplView(); List<DockVo.EmplInfo> getEmplView();
void syncEmplView(List<DockVo.EmplInfo> sysEmpls); void syncEmplView(List<DockVo.EmplInfo> sysEmpls);
List<DockVo.PatientBasicInfo> getPatientBasicView(); List<DockVo.PatientBasicInfo> getPatientBasicView(List<String> patientNos);
void syncPatientBasicView(List<DockVo.PatientBasicInfo> sysPatients); void syncPatientBasicView(List<DockVo.PatientBasicInfo> sysPatients);
List<DockVo.PatientVisitInfo> getPatientVisitView(); List<DockVo.PatientVisitInfo> getPatientVisitView(Date startTime);
void syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits); List<DockVo.PatientVisitInfo> syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits);
List<DockVo.DiagnosisInfo> getDiagnosisView(); List<DockVo.DiagnosisInfo> getDiagnosisView(List<String> visitNos);
void syncDiagnosisView(List<DockVo.DiagnosisInfo> sysDiagnosis); void syncDiagnosisView(List<DockVo.DiagnosisInfo> sysDiagnosis);
List<DockVo.MedicationInfo> getMedicationView(); List<DockVo.MedicationInfo> getMedicationView(List<String> visitNos);
void syncMedicationView(List<DockVo.MedicationInfo> sysMedications); void syncMedicationView(List<DockVo.MedicationInfo> sysMedications);
Date getPatientVisitLastDate();
} }

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

@ -36,10 +36,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -925,17 +922,20 @@ public class DockServiceImpl implements DockService {
@Override @Override
public List<DockVo.DeptInfo> getDeptView() { public List<DockVo.DeptInfo> getDeptView() {
// 当前时间 return oracleViewDao.getDeptView();
Date endTime = new Date();
// 一小时前的时间
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getDeptView(startTime, endTime);
} }
@Override @Override
public void syncDeptView(List<DockVo.DeptInfo> sysDepts) { public void syncDeptView(List<DockVo.DeptInfo> sysDepts) {
if(CollUtil.isNotEmpty(sysDepts)){ if(CollUtil.isNotEmpty(sysDepts)){
for (DockVo.DeptInfo sysDept : sysDepts) { for (DockVo.DeptInfo sysDept : sysDepts) {
//根据code和名称查询部门是否存在
DockDeptExample example = new DockDeptExample();
example.createCriteria().andDeptCodeEqualTo(sysDept.getDeptCode()).andDeptNameEqualTo(sysDept.getDeptName());
long l = dockDeptMapper.countByExample(example);
if(l>0){
continue;
}
DockDept dockDept = new DockDept(); DockDept dockDept = new DockDept();
dockDept.setDeptName(sysDept.getDeptName()); dockDept.setDeptName(sysDept.getDeptName());
dockDept.setDeptCode(sysDept.getDeptCode()); dockDept.setDeptCode(sysDept.getDeptCode());
@ -947,15 +947,20 @@ public class DockServiceImpl implements DockService {
@Override @Override
public List<DockVo.EmplInfo> getEmplView() { public List<DockVo.EmplInfo> getEmplView() {
Date endTime = new Date(); return oracleViewDao.getEmplView();
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getEmplView(startTime, endTime);
} }
@Override @Override
public void syncEmplView(List<DockVo.EmplInfo> sysEmpls) { public void syncEmplView(List<DockVo.EmplInfo> sysEmpls) {
if(CollUtil.isNotEmpty(sysEmpls)){ if(CollUtil.isNotEmpty(sysEmpls)){
for (DockVo.EmplInfo sysEmpl : sysEmpls) { for (DockVo.EmplInfo sysEmpl : sysEmpls) {
//根据工号查询员工是否存在
DockEmplExample example = new DockEmplExample();
example.createCriteria().andEmplCodeEqualTo(sysEmpl.getEmplCode());
long l = dockEmplMapper.countByExample(example);
if(l>0){
continue;
}
DockEmpl dockEmpl = new DockEmpl(); DockEmpl dockEmpl = new DockEmpl();
dockEmpl.setEmplName(sysEmpl.getEmplName()); dockEmpl.setEmplName(sysEmpl.getEmplName());
dockEmpl.setEmplCode(sysEmpl.getEmplCode()); dockEmpl.setEmplCode(sysEmpl.getEmplCode());
@ -970,54 +975,27 @@ public class DockServiceImpl implements DockService {
} }
@Override @Override
public List<DockVo.PatientBasicInfo> getPatientBasicView() { public List<DockVo.PatientVisitInfo> getPatientVisitView(Date startTime) {
Date endTime = new Date(); if(ObjectUtil.isNull(startTime)){
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000); //如果是空,取一年前的时间
return oracleViewDao.getPatientBasicView(startTime, endTime); startTime = DateUtil.offset(new Date(), DateField.YEAR, -1);
}
@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 endTime = new Date();
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getPatientVisitView(startTime, endTime); return oracleViewDao.getPatientVisitView(startTime, endTime);
} }
@Override @Override
public void syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits) { public List<DockVo.PatientVisitInfo> syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits) {
List<DockVo.PatientVisitInfo> visitList = new ArrayList<>();
if(CollUtil.isNotEmpty(sysVisits)){ if(CollUtil.isNotEmpty(sysVisits)){
for (DockVo.PatientVisitInfo sysVisit : sysVisits) { for (DockVo.PatientVisitInfo sysVisit : sysVisits) {
//根据就诊流水号查询就诊信息是否存在
DockPatientVisitInfoExample example = new DockPatientVisitInfoExample();
example.createCriteria().andVisitNoEqualTo(sysVisit.getVisitNo());
long l = dockPatientVisitInfoMapper.countByExample(example);
if(l>0){
continue;
}
DockPatientVisitInfo dockPatientVisit = new DockPatientVisitInfo(); DockPatientVisitInfo dockPatientVisit = new DockPatientVisitInfo();
dockPatientVisit.setVisitNo(sysVisit.getVisitNo()); dockPatientVisit.setVisitNo(sysVisit.getVisitNo());
dockPatientVisit.setPatientNo(sysVisit.getPatientNo()); dockPatientVisit.setPatientNo(sysVisit.getPatientNo());
@ -1058,15 +1036,53 @@ public class DockServiceImpl implements DockService {
dockPatientVisit.setAllergyDrug(sysVisit.getAllergyDrug()); dockPatientVisit.setAllergyDrug(sysVisit.getAllergyDrug());
dockPatientVisit.setSync(String.valueOf(0)); dockPatientVisit.setSync(String.valueOf(0));
dockPatientVisitInfoMapper.insertSelective(dockPatientVisit); dockPatientVisitInfoMapper.insertSelective(dockPatientVisit);
visitList.add(sysVisit);
} }
} }
return visitList;
} }
@Override @Override
public List<DockVo.DiagnosisInfo> getDiagnosisView() { public List<DockVo.PatientBasicInfo> getPatientBasicView(List<String> patientNos) {
Date endTime = new Date(); return oracleViewDao.getPatientBasicView(patientNos);
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000); }
return oracleViewDao.getDiagnosisView(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.DiagnosisInfo> getDiagnosisView(List<String> visitNos) {
return oracleViewDao.getDiagnosisView(visitNos);
} }
@Override @Override
@ -1087,10 +1103,8 @@ public class DockServiceImpl implements DockService {
} }
@Override @Override
public List<DockVo.MedicationInfo> getMedicationView() { public List<DockVo.MedicationInfo> getMedicationView(List<String> visitNos) {
Date endTime = new Date(); return oracleViewDao.getMedicationView(visitNos);
Date startTime = new Date(System.currentTimeMillis() - 60 * 60 * 1000);
return oracleViewDao.getMedicationView(startTime, endTime);
} }
@Override @Override
@ -1109,4 +1123,15 @@ public class DockServiceImpl implements DockService {
} }
} }
@Override
public Date getPatientVisitLastDate() {
DockPatientVisitInfoExample example = new DockPatientVisitInfoExample();
example.setOrderByClause("admission_date desc limit 1");
List<DockPatientVisitInfo> dockPatientVisitInfos = dockPatientVisitInfoMapper.selectByExample(example);
if(CollUtil.isNotEmpty(dockPatientVisitInfos)){
return dockPatientVisitInfos.get(0).getAdmissionDate();
}
return null;
}
} }

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

@ -6,160 +6,144 @@
<select id="getDeptView" resultType="com.ccsens.system.domain.vo.DockVo$DeptInfo"> <select id="getDeptView" resultType="com.ccsens.system.domain.vo.DockVo$DeptInfo">
select select
dept_name as deptName, dept_name as deptName,
dept_code as deptCode, dept_code as deptCode
update_time as updateTime
from bs_his.V_LNPG_KSXX 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>
<!-- 员工信息查询 --> <!-- 员工信息查询 -->
<select id="getEmplView" resultType="com.ccsens.system.domain.vo.DockVo$EmplInfo"> <select id="getEmplView" resultType="com.ccsens.system.domain.vo.DockVo$EmplInfo">
select select
empl_name as emplName, empl_name as emplName,
empl_code as emplCode, empl_code as emplCode,
empl_type as emplType, empl_type as emplType,
dept_code as deptCode, dept_code as deptCode,
role_power as rolePower, role_power as rolePower,
data_power as dataPower, case
update_time as updateTime when substr(empl_code, 1, 1) = '6' then data_power_bq
else data_power_ks
end as dataPower
from bs_his.V_LNPG_YGXX 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>
<!-- 患者基本信息查询 --> <!-- 患者基本信息查询 -->
<select id="getPatientBasicView" resultType="com.ccsens.system.domain.vo.DockVo$PatientBasicInfo"> <select id="getPatientBasicView" resultType="com.ccsens.system.domain.vo.DockVo$PatientBasicInfo">
select select
name, name,
patient_no as patientNo, patient_no as patientNo,
id_card as idCard, idcard as idCard,
phone, phone,
sex, sex,
birthday, birthday,
educational_status as educationalStatus, educationalstatus as educationalStatus,
career, career,
marital_status as maritalStatus, maritalstatus as maritalStatus,
nation, nation,
native_place as nativePlace, nativeplace as nativePlace,
address, address,
dwelling_state as dwellingState, dwellingstate as dwellingState,
contact_name as contactName, contactname as contactName,
contact_mobile as contactMobile, contactmobile as contactMobile,
contact_relation as contactRelation, contactrelation as contactRelation,
abo_blood_type as aboBloodType, abobloodtype as aboBloodType,
rh_blood_type as rhBloodType, rhbloodtype as rhBloodType,
belief, belief,
hobby, hobby
update_time as updateTime
from bs_his.V_LNPG_BASICINFORMATION from bs_his.V_LNPG_BASICINFORMATION
<where> <where>
<if test="startTime != null and endTime != null"> <if test="patientNoList != null and patientNoList.size() > 0">
and update_time >= #{startTime} patient_no in
and update_time &lt;= #{endTime} <foreach collection="patientNoList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
</where> </where>
order by update_time desc
</select> </select>
<!-- 患者就诊信息查询 --> <!-- 患者就诊信息查询 -->
<select id="getPatientVisitView" resultType="com.ccsens.system.domain.vo.DockVo$PatientVisitInfo"> <select id="getPatientVisitView" resultType="com.ccsens.system.domain.vo.DockVo$PatientVisitInfo">
select select
visit_no as visitNo, visittype as visitType,
visitno as visitNo,
patient_no as patientNo, patient_no as patientNo,
id_card as idCard,
visit_type as visitType,
age, age,
department, department,
doctor, doctor,
admission_date as admissionDate, admissiondate as admissionDate,
admission_count as admissionCount, admissioncount as admissionCount,
bed_number as bedNumber, bednumber as bedNumber,
discharge_date as dischargeDate, dischargedate as dischargeDate,
admission_method as admissionMethod, admissionmethod as admissionMethod,
discharge_method as dischargeMethod, dischargemethod as dischargeMethod,
height, height,
weight, weight,
tz, tz,
temperature, temperature,
blood_pressure_shrink as bloodPressureShrink, bloodpressureshrink as bloodPressureShrink,
blood_pressure_diastole as bloodPressureDiastole, bloodpressurediastole as bloodPressureDiastole,
pulse, pulse,
creatinine, creatinine,
oxygen_saturation as oxygenSaturation, oxygensaturation as oxygenSaturation,
albumin, albumin,
total_protein as totalProtein, totalprotein as totalProtein,
vitamin_d3 as vitaminD3, vitamind3 as vitaminD3,
hematocrit, hematocrit,
dimer, dimer,
smoking_history as smokingHistory, smokinghistory as smokingHistory,
smoking_year as smokingYear, smokingyear as smokingYear,
smoking_quit as smokingQuit, smokingquit as smokingQuit,
smoking_quit_year as smokingQuitYear, smokingquityear as smokingQuitYear,
drink_history as drinkHistory, drinkhistory as drinkHistory,
drink_year as drinkYear, drinkyear as drinkYear,
drink_quit as drinkQuit, drinkquit as drinkQuit,
drink_quit_year as drinkQuitYear, drinkquityear as drinkQuitYear,
has_allergy as hasAllergy, hasallergy as hasAllergy,
allergy_drug as allergyDrug, allergydrug as allergyDrug
update_time as updateTime
from bs_his.V_LNPG_HZJZXX from bs_his.V_LNPG_HZJZXX
<where> <where>
<if test="startTime != null and endTime != null"> <if test="startTime != null and endTime != null">
and update_time >= #{startTime} and admissiondate >= #{startTime}
and update_time &lt;= #{endTime} and admissiondate &lt;= #{endTime}
</if> </if>
</where> </where>
order by update_time desc
</select> </select>
<!-- 诊断信息查询 --> <!-- 诊断信息查询 -->
<select id="getDiagnosisView" resultType="com.ccsens.system.domain.vo.DockVo$DiagnosisInfo"> <select id="getDiagnosisView" resultType="com.ccsens.system.domain.vo.DockVo$DiagnosisInfo">
select select
visit_no as visitNo, visitno as visitNo,
diagnosis_type as diagnosisType, diagnosistype as diagnosisType,
is_main_diagnosis as isMainDiagnosis, ismaindiagnosis as isMainDiagnosis,
diagnosis_name as diagnosisName, diagnosisname as diagnosisName,
diagnosis_code as diagnosisCode, diagnosiscode as diagnosisCode,
diagnosis_date as diagnosisDate, diagnosisdate as diagnosisDate
update_time as updateTime
from bs_his.V_LNPG_ZDXX from bs_his.V_LNPG_ZDXX
<where> <where>
<if test="startTime != null and endTime != null"> <if test="visitNoList != null and visitNoList.size() > 0">
and update_time >= #{startTime} visitno in
and update_time &lt;= #{endTime} <foreach collection="visitNoList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
</where> </where>
order by update_time desc
</select> </select>
<!-- 用药信息查询 --> <!-- 用药信息查询 -->
<select id="getMedicationView" resultType="com.ccsens.system.domain.vo.DockVo$MedicationInfo"> <select id="getMedicationView" resultType="com.ccsens.system.domain.vo.DockVo$MedicationInfo">
select select
visit_no as visitNo, visitno as visitNo,
drug_name as drugName, drugname as drugName,
dose, dose,
unit, unit,
frequency, frequency
update_time as updateTime
from bs_his.V_LNPG_YYXX from bs_his.V_LNPG_YYXX
<where> <where>
<if test="startTime != null and endTime != null"> <if test="visitNoList != null and visitNoList.size() > 0">
and update_time >= #{startTime} visitno in
and update_time &lt;= #{endTime} <foreach collection="visitNoList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
</where> </where>
order by update_time desc
</select> </select>
</mapper> </mapper>

20
ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/PmsController.java

@ -61,16 +61,6 @@ public class PmsController extends BaseController {
@ApiOperation("获取患者信息列表") @ApiOperation("获取患者信息列表")
@PostMapping("/queryList") @PostMapping("/queryList")
public JsonResponse<PageInfo<PmsPatientVo.PatientList>> queryPatientList(@RequestBody @Validated BaseDto<PmsPatientDto.QueryPatient> dto) { public JsonResponse<PageInfo<PmsPatientVo.PatientList>> queryPatientList(@RequestBody @Validated BaseDto<PmsPatientDto.QueryPatient> dto) {
// List<PmsPatientVo.PatientList> list = new ArrayList<>();
// PmsPatientDto.QueryPatient param = dto.getParam();
// if (StrUtil.isNotEmpty(param.getSearchValue()) && param.getSearchValue().length() == 10) {
// //关键字不为空,且长度等于10,先查询院内his信息
// List<PmsPatientVo.PatientList> hisList = ltHisConnectionService.queryHisPatient(param.getSearchValue());
// if (CollUtil.isNotEmpty(hisList)) {
// list.addAll(hisList);
// }
// }
//获取用户的权限 //获取用户的权限
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
@ -86,16 +76,6 @@ public class PmsController extends BaseController {
startPageOvertop(dto); startPageOvertop(dto);
List<PmsPatientVo.PatientList> serverList = patientService.queryPatientList(dto.getParam(), dataScope, loginUser.getUserId(), loginUser.getUsername()); List<PmsPatientVo.PatientList> serverList = patientService.queryPatientList(dto.getParam(), dataScope, loginUser.getUserId(), loginUser.getUsername());
// if (CollUtil.isNotEmpty(serverList)) {
// list.addAll(serverList);
// }
// // 创建一个 TreeSet,通过 Comparator 根据 patientId 去重
// Set<PmsPatientVo.PatientList> uniqueSet = new TreeSet<>(
// Comparator.comparing(PmsPatientVo.PatientList::getPatientId)
// );
// uniqueSet.addAll(list);
// List<PmsPatientVo.PatientList> uniqueList = new ArrayList<>(uniqueSet);
return JsonResponse.ok(new PageInfo<>(serverList)); return JsonResponse.ok(new PageInfo<>(serverList));
} }

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

@ -11,7 +11,11 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @author zy * @author zy
@ -24,45 +28,40 @@ public class SyncHospitalViwe {
@Resource @Resource
private DockService dockService; private DockService dockService;
@DataSource(value = DataSourceType.ORACLE) // @Scheduled(cron = "0 */1 * * * ?")
// @Scheduled(cron = "0 */10 * * * ?")
public void getDeptView() { public void getDeptView() {
List<DockVo.DeptInfo> sysDepts = dockService.getDeptView(); List<DockVo.DeptInfo> sysDepts = dockService.getDeptView();
syncDeptView(sysDepts); syncDeptView(sysDepts);
} }
@DataSource(value = DataSourceType.ORACLE) // @Scheduled(cron = "0 */1 * * * ?")
// @Scheduled(cron = "0 */10 * * * ?")
public void getEmplView() { public void getEmplView() {
List<DockVo.EmplInfo> sysEmpls = dockService.getEmplView(); List<DockVo.EmplInfo> sysEmpls = dockService.getEmplView();
syncEmplView(sysEmpls); syncEmplView(sysEmpls);
} }
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?") // @Scheduled(cron = "0 */1 * * * ?")
public void getPatientBasicView() { public void getPatientBasicView() {
List<DockVo.PatientBasicInfo> sysPatients = dockService.getPatientBasicView(); //先查询当前就诊信息最后的时间
Date startTime = dockService.getPatientVisitLastDate();
//先通过时间查询就诊信息
List<DockVo.PatientVisitInfo> sysVisits = dockService.getPatientVisitView(startTime);
//同步就诊信息
List<DockVo.PatientVisitInfo> visitList = syncPatientVisitView(sysVisits);
//去除所有的患者编号,去重
Set<String> patientNos = visitList.stream().map(DockVo.PatientVisitInfo::getPatientNo).collect(Collectors.toSet());
//取出所有的就诊号,去重
Set<String> visitNos = visitList.stream().map(DockVo.PatientVisitInfo::getVisitNo).collect(Collectors.toSet());
//根据患者编号查基本信息
List<DockVo.PatientBasicInfo> sysPatients = dockService.getPatientBasicView(new ArrayList<>(patientNos));
syncPatientBasicView(sysPatients); syncPatientBasicView(sysPatients);
} //根据就诊号查诊断信息
List<DockVo.DiagnosisInfo> sysDiagnosis = dockService.getDiagnosisView(new ArrayList<>(visitNos));
@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); syncDiagnosisView(sysDiagnosis);
} //根据就诊号查用药信息
List<DockVo.MedicationInfo> sysMedications = dockService.getMedicationView(new ArrayList<>(visitNos));
@DataSource(value = DataSourceType.ORACLE)
// @Scheduled(cron = "0 */10 * * * ?")
public void getMedicationView() {
List<DockVo.MedicationInfo> sysMedications = dockService.getMedicationView();
syncMedicationView(sysMedications); syncMedicationView(sysMedications);
} }
@ -82,8 +81,8 @@ public class SyncHospitalViwe {
} }
@DataSource(value = DataSourceType.SLAVE) @DataSource(value = DataSourceType.SLAVE)
public void syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits) { public List<DockVo.PatientVisitInfo> syncPatientVisitView(List<DockVo.PatientVisitInfo> sysVisits) {
dockService.syncPatientVisitView(sysVisits); return dockService.syncPatientVisitView(sysVisits);
} }
@DataSource(value = DataSourceType.SLAVE) @DataSource(value = DataSourceType.SLAVE)

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

@ -19,10 +19,6 @@ spring:
url: jdbc:mysql://127.0.0.1:3306/ruisi_cga_yf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://127.0.0.1:3306/ruisi_cga_yf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: 123456 password: 123456
# driverClassName: oracle.jdbc.driver.OracleDriver
# url: jdbc:oracle:thin:@200.1.8.115:1521:hisdb
# username: interface_lnpg
# password: interface_lnpg
oracle: oracle:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭
enabled: true enabled: true

23
ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/PmsPatientDao.xml

@ -71,10 +71,25 @@
<if test="idcard != null and idcard != ''"> <if test="idcard != null and idcard != ''">
and (pp.idcard = #{idcard} or pp.idcard = #{idcardEncrypt}) and (pp.idcard = #{idcard} or pp.idcard = #{idcardEncrypt})
</if> </if>
<!-- 权限 总测评师和测评师都是本部门及以下 --> <!-- &lt;!&ndash; 权限 总测评师和测评师都是本部门及以下 &ndash;&gt;-->
and uu.dept_id IN ( SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or FIND_IN_SET(u.dept_id,ancestors)) <!-- and uu.dept_id IN ( SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or FIND_IN_SET(u.dept_id,ancestors))-->
WHERE user_id = #{userId} <!-- WHERE user_id = #{userId}-->
) <!-- )-->
<!--电力医院查看自己关联的部门信息-->
AND (
EXISTS (
SELECT 1 FROM ums_user WHERE user_id = #{userId} AND data_power = 'ALL'
)
OR
(
FIND_IN_SET(uu.dept_id,
(SELECT
CONCAT(dept_id, ',', data_power)
FROM ums_user
WHERE user_id = #{userId})
)
)
)
<!-- <choose>--> <!-- <choose>-->
<!-- &lt;!&ndash; 测评师查看自己的患者 &ndash;&gt;--> <!-- &lt;!&ndash; 测评师查看自己的患者 &ndash;&gt;-->

21
ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml

@ -1204,9 +1204,24 @@ group by ee.id
pp.idcard like CONCAT('%',#{dto.searchValue},'%') pp.idcard like CONCAT('%',#{dto.searchValue},'%')
) )
</if> </if>
<!-- 权限 总测评师和测评师都是本部门及以下 --> <!-- &lt;!&ndash; 权限 总测评师和测评师都是本部门及以下 &ndash;&gt;-->
and uu.dept_id IN ( SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or FIND_IN_SET(u.dept_id,ancestors)) <!-- and uu.dept_id IN ( SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or FIND_IN_SET(u.dept_id,ancestors))-->
WHERE user_id = #{userId} <!-- WHERE user_id = #{userId}-->
<!-- )-->
<!--电力医院查看自己关联的部门信息-->
AND (
EXISTS (
SELECT 1 FROM ums_user WHERE user_id = #{userId} AND data_power = 'ALL'
)
OR
(
FIND_IN_SET(uu.dept_id,
(SELECT
CONCAT(dept_id, ',', data_power)
FROM ums_user
WHERE user_id = #{userId})
)
)
) )
group by ee.id group by ee.id
order by ee.create_time desc order by ee.create_time desc

Loading…
Cancel
Save