LAPTOP-KB9HII50\70708 11 mēneši atpakaļ
vecāks
revīzija
ab582d223d

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -7997,7 +7997,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            e.printStackTrace();
        }
        rs.put("sex", basePatientDO.getSex());
        rs.put("sex", IdCardUtil.getSex(basePatientDO.getSex(),basePatientDO.getCardType(),basePatientDO.getIdcard()));
        rs.put("provinceCode", basePatientDO.getProvinceCode());
        rs.put("provinceName", basePatientDO.getProvinceName());
        rs.put("cityCode", basePatientDO.getCityCode());

+ 15 - 0
common/common-util/src/main/java/com/yihu/jw/util/common/IdCardUtil.java

@ -168,6 +168,21 @@ public class IdCardUtil {
        }
    }
    //如果性别不是1或者2 根据身份证计算
    public static String getSex(Integer sex,String cardType,String idcard){
        try {
            if("1".equals(sex)||"2".equals(sex)){
                return sex+"";
            }
            if("身份证".equals(cardType)){
                return getSexForIdcard_new(idcard);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return "3";
    }
    /**
     * 根据身份证的号码算出当前身份证持有者的性别
     * 1 男 2 女 3未知

+ 75 - 71
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/health/service/PatientHealthIndexService.java

@ -93,97 +93,101 @@ public class PatientHealthIndexService {
     * @param obj
     */
    public void handlePatientStandarStatus(DevicePatientHealthIndex obj) {
        //连续5次体征值正常,则修改为非预警状态;连续5次异常,修改为预警状态-----START
        String patientCode = obj.getUser();
        //患者信息
        BasePatientDO p = patientDao.findById(patientCode).orElse(null);
        try {
            //连续5次体征值正常,则修改为非预警状态;连续5次异常,修改为预警状态-----START
            String patientCode = obj.getUser();
            //患者信息
            BasePatientDO p = patientDao.findById(patientCode).orElse(null);
        String patientsql = "select group_concat(label_code) disease from wlyy_patient_label " +
                "where patient = '" + p.getId() + "' and label_type = 2 and (label_code = 1 or label_code = 2)  GROUP BY patient";
            String patientsql = "select group_concat(label_code) disease from wlyy_patient_label " +
                    "where patient = '" + p.getId() + "' and label_type = 2 and (label_code = 1 or label_code = 2)  GROUP BY patient";
        String patientdisease = "";
        List<Map<String, Object>> diseases = jdbcTemplate.queryForList(patientsql);
        if (diseases.size() > 0) {
            patientdisease = (String) diseases.get(0).get("disease");
        }
            String patientdisease = "";
            List<Map<String, Object>> diseases = jdbcTemplate.queryForList(patientsql);
            if (diseases.size() > 0) {
                patientdisease = (String) diseases.get(0).get("disease");
            }
        int bloodPressureBbnormalCount = 0;//血压异常次数
        int bloodSuggurBbnormalCount = 0;//血糖异常次数
        int stdbloodPressureBbnormalCount = 0;//血压次数
        int stdbloodSuggurBbnormalCount = 0;//血糖次数
            int bloodPressureBbnormalCount = 0;//血压异常次数
            int bloodSuggurBbnormalCount = 0;//血糖异常次数
            int stdbloodPressureBbnormalCount = 0;//血压次数
            int stdbloodSuggurBbnormalCount = 0;//血糖次数
        List<DevicePatientHealthIndex> bloodPressurepatientHealthIndices = new ArrayList<>();
        List<DevicePatientHealthIndex> bloodSuggurpatientHealthIndices = new ArrayList<>();
            List<DevicePatientHealthIndex> bloodPressurepatientHealthIndices = new ArrayList<>();
            List<DevicePatientHealthIndex> bloodSuggurpatientHealthIndices = new ArrayList<>();
        bloodPressurepatientHealthIndices = patientHealthIndexDao.findByPatientAndTypeByPage(patientCode, 2);
        bloodSuggurpatientHealthIndices = patientHealthIndexDao.findByPatientAndTypeByPage(patientCode, 1);
            bloodPressurepatientHealthIndices = patientHealthIndexDao.findByPatientAndTypeByPage(patientCode, 2);
            bloodSuggurpatientHealthIndices = patientHealthIndexDao.findByPatientAndTypeByPage(patientCode, 1);
        if (!bloodPressurepatientHealthIndices.isEmpty()) {
            stdbloodPressureBbnormalCount = bloodPressurepatientHealthIndices.size();
        }
            if (!bloodPressurepatientHealthIndices.isEmpty()) {
                stdbloodPressureBbnormalCount = bloodPressurepatientHealthIndices.size();
            }
        if (!bloodSuggurpatientHealthIndices.isEmpty()) {
            stdbloodSuggurBbnormalCount = bloodSuggurpatientHealthIndices.size();
        }
            if (!bloodSuggurpatientHealthIndices.isEmpty()) {
                stdbloodSuggurBbnormalCount = bloodSuggurpatientHealthIndices.size();
            }
        for (DevicePatientHealthIndex index1 : bloodPressurepatientHealthIndices) {
            if (index1.getStatus() != null && 1 == index1.getStatus()) {
                bloodPressureBbnormalCount++;
            for (DevicePatientHealthIndex index1 : bloodPressurepatientHealthIndices) {
                if (index1.getStatus() != null && 1 == index1.getStatus()) {
                    bloodPressureBbnormalCount++;
                }
            }
        }
        for (DevicePatientHealthIndex index2 : bloodSuggurpatientHealthIndices) {
            if (index2.getStatus() != null && 1 == index2.getStatus()) {
                bloodSuggurBbnormalCount++;
            for (DevicePatientHealthIndex index2 : bloodSuggurpatientHealthIndices) {
                if (index2.getStatus() != null && 1 == index2.getStatus()) {
                    bloodSuggurBbnormalCount++;
                }
            }
        }
        //连续3次异常,修改用户为预警状态 ||计算血糖或者血压一周内的异常记录数量(超过5次,记为预警状态)
        Date end = new Date();
        Date start = DateUtil.setDateTime(end, -7);
        int errorCount1 = patientHealthIndexDao.getCountByTimeAndStatus(start, end, 1,2, patientCode);
        int errorCount2 = patientHealthIndexDao.getCountByTimeAndStatus(start, end, 1,1, patientCode);
        if (bloodPressureBbnormalCount >= 3 || errorCount1 >= 5) {
            if(p.getStandardStatus()==0){
                p.setStandardStatus(1);
            }else if(p.getStandardStatus()==2){
                p.setStandardStatus(3);
            //连续3次异常,修改用户为预警状态 ||计算血糖或者血压一周内的异常记录数量(超过5次,记为预警状态)
            Date end = new Date();
            Date start = DateUtil.setDateTime(end, -7);
            int errorCount1 = patientHealthIndexDao.getCountByTimeAndStatus(start, end, 1,2, patientCode);
            int errorCount2 = patientHealthIndexDao.getCountByTimeAndStatus(start, end, 1,1, patientCode);
            if (bloodPressureBbnormalCount >= 3 || errorCount1 >= 5) {
                if(p.getStandardStatus()==0){
                    p.setStandardStatus(1);
                }else if(p.getStandardStatus()==2){
                    p.setStandardStatus(3);
                }
            }
        }
        if (bloodSuggurBbnormalCount >= 3 || errorCount2 >= 5) {
            if(p.getStandardStatus()==0){
                p.setStandardStatus(2);
            }else if(p.getStandardStatus()==1){
                p.setStandardStatus(3);
            if (bloodSuggurBbnormalCount >= 3 || errorCount2 >= 5) {
                if(p.getStandardStatus()==0){
                    p.setStandardStatus(2);
                }else if(p.getStandardStatus()==1){
                    p.setStandardStatus(3);
                }
            }
        }
        //连续5次正常,修改用户为非预警状态
        if (StringUtils.isNotBlank(patientdisease)) {
            if ("1".equals(patientdisease)||"3".equals(patientdisease)) {
                if (stdbloodPressureBbnormalCount == 5) {
                    if(p.getStandardStatus()==1){
                        p.setStandardStatus(0);
                    }else if(p.getStandardStatus()==3){
                        p.setStandardStatus(2);
                    }
            //连续5次正常,修改用户为非预警状态
            if (StringUtils.isNotBlank(patientdisease)) {
                if ("1".equals(patientdisease)||"3".equals(patientdisease)) {
                    if (stdbloodPressureBbnormalCount == 5) {
                        if(p.getStandardStatus()==1){
                            p.setStandardStatus(0);
                        }else if(p.getStandardStatus()==3){
                            p.setStandardStatus(2);
                        }
//                    cancalTrackPatientByDoctor(patientCode);
                    }
                }
            }
            if ("2".equals(patientdisease)||"3".equals(patientdisease)) {
                if (stdbloodSuggurBbnormalCount == 5 ) {
                    if(p.getStandardStatus()==2){
                        p.setStandardStatus(0);
                    }else if(p.getStandardStatus()==3){
                        p.setStandardStatus(1);
                if ("2".equals(patientdisease)||"3".equals(patientdisease)) {
                    if (stdbloodSuggurBbnormalCount == 5 ) {
                        if(p.getStandardStatus()==2){
                            p.setStandardStatus(0);
                        }else if(p.getStandardStatus()==3){
                            p.setStandardStatus(1);
                        }
                    }
                }
            }
        } else {
            p.setStandardStatus(0);
            } else {
                p.setStandardStatus(0);
//            cancalTrackPatientByDoctor(patientCode);
            }
            patientDao.save(p);
            //连续5次体征值正常,则修改为非预警状态;连续5次异常,修改为预警状态-----END
        }catch (Exception e){
            e.printStackTrace();
        }
        patientDao.save(p);
        //连续5次体征值正常,则修改为非预警状态;连续5次异常,修改为预警状态-----END
    }
    /**