Browse Source

慢病登记回访优化

hsh 1 year ago
parent
commit
f174698a8e

+ 6 - 1
src/main/java/thyyxxk/webserver/controller/chronicDisease/ChronicDiseaseController.java

@@ -12,7 +12,6 @@ import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.chronicDisease.CrmPatientMi;
 import thyyxxk.webserver.entity.chronicDisease.CrmVisitRecord;
-import thyyxxk.webserver.entity.chronicDisease.CrmVisitRecordVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.service.chronicDisease.ChronicDiseaseService;
 import thyyxxk.webserver.utils.ResultVoUtil;
@@ -96,4 +95,10 @@ public class ChronicDiseaseController {
         return service.saveCrmEmrModel(param);
     }
 
+    @PassToken
+    @GetMapping("/selectBrInfoByCode")
+    public ResultVo<Map<String, Object>> selectBrInfoByCode(@RequestParam("code") String code){
+        return service.selectBrInfoByCode(code);
+    }
+
 }

+ 13 - 0
src/main/java/thyyxxk/webserver/dao/his/chronicDisease/CrmPatientMiDao.java

@@ -29,4 +29,17 @@ public interface CrmPatientMiDao extends BaseMapper<CrmPatientMi> {
     @Delete(" delete from crm_patient_mi where p_id = #{pId} ")
     void deleteCrmPatientMiByPId(@Param("pId") String pId);
 
+    @Select(" select top 1 rtrim(mi.name) as p_name, mi.sex, rtrim(mi.patient_id) as his_mz_no, mi.social_no, mi.age, mi.birth_day as birth_date, " +
+            " rtrim(mi.phone_no) as rel_tel, mi.province_code, mi.city_code, rtrim(mi.detail) as detail_adress, " +
+            " mi.district_code as area_code " +
+            " from mz_patient_mi mi " +
+            " where mi.patient_id = #{code} or mi.social_no = #{code} or mi.tj_no = #{code} or mi.ic_card_no = #{code} ")
+    CrmPatientMi selectCrmPatientMiMzByCode(@Param("code") String code);
+
+    @Select(" select top 1 rtrim(mi.name) as p_name, mi.sex, rtrim(mi.inpatient_no) as his_zy_no, mi.social_no, mi.birth_date as birth_date, " +
+            " rtrim(mi.relation_tel) as rel_tel, mi.province_code, mi.city_code, mi.district_code as area_code, rtrim(mi.relation_district) as detail_adress, " +
+            " rtrim(mi.mz_no) as his_mz_no, rtrim(mi.relation_name) as rel_name " +
+            " from a_patient_mi mi " +
+            " where mi.inpatient_no = #{code} or mi.social_no = #{code} or mi.mz_no = #{code} ")
+    CrmPatientMi selectCrmPatientMiZyByCode(@Param("code") String code);
 }

+ 27 - 3
src/main/java/thyyxxk/webserver/entity/chronicDisease/CrmPatientMi.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
+import thyyxxk.webserver.utils.StringUtil;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -164,7 +165,7 @@ public class CrmPatientMi implements Serializable {
      */
     private String lastType;
     /**
-     * 最近一次医疗时间
+     * 最近一次医疗时间(改为确诊时间)
      */
     private String lastDate;
     /**
@@ -209,7 +210,7 @@ public class CrmPatientMi implements Serializable {
      */
     private String detailAdress;
     /**
-     * 创建时间
+     * 创建时间(建卡时间)
      */
     private String createDate;
     /**
@@ -221,7 +222,7 @@ public class CrmPatientMi implements Serializable {
      */
     private String referPhysician;
     /**
-     * 最近一次随访次数
+     * 最近一次随访次数(改为首次慢病次数)
      */
     private Integer visitTimes;
     /**
@@ -312,5 +313,28 @@ public class CrmPatientMi implements Serializable {
     private String deptCode;
     @TableField(exist = false)
     private String deptName;
+    /**
+     * @Description 慢病类型名称(,隔开)
+     * @Author hsh
+     * @Date 2023/12/19 9:11
+     */
+    @TableField(exist = false)
+    private String chronicDiseaseName;
+
+    /**
+     * @Description 拼接慢病类型名称
+     * @Author hsh
+     * @param chronicDiseaseName 名称
+     * @Date 2023/12/19 10:54
+     */
+    public void setChronicDiseaseName(String chronicDiseaseName){
+        if(StringUtil.notBlank(chronicDiseaseName)){
+            if(StringUtil.isBlank(this.chronicDiseaseName)){
+                this.chronicDiseaseName = chronicDiseaseName + ",";
+            } else {
+                this.chronicDiseaseName += chronicDiseaseName + ",";
+            }
+        }
+    }
 
 }

+ 5 - 0
src/main/java/thyyxxk/webserver/entity/chronicDisease/CrmVisitRecord.java

@@ -113,5 +113,10 @@ public class CrmVisitRecord implements Serializable {
      * 慢病电子模板tree的name
      */
     private String name;
+    /**
+     * 0.模板 2当前 3历史
+     */
+    @TableField(exist = false)
+    private Integer type;
 
 }

+ 69 - 13
src/main/java/thyyxxk/webserver/service/chronicDisease/ChronicDiseaseService.java

@@ -1,6 +1,8 @@
 package thyyxxk.webserver.service.chronicDisease;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -162,11 +164,11 @@ public class ChronicDiseaseService {
 
             // 根据证件号补充基本信息
             CrmVisitRecordVo data = crmEmrDao.selectCrmEmrPatientVoByMzCode(crmMi.getSocialNo());
-            if(null != data){
+            if(null != data && StringUtil.isBlank(crmMi.getHisMzNo())){
                 crmMi.setHisMzNo(data.getHisMzNo());
             }
             data = crmEmrDao.selectCrmEmrPatientVoByZyCode(crmMi.getSocialNo());
-            if(null != data){
+            if(null != data && StringUtil.isBlank(crmMi.getHisZyNo())){
                 crmMi.setHisZyNo(data.getHisZyNo());
             }
 
@@ -224,12 +226,12 @@ public class ChronicDiseaseService {
             crmDictionary.put("getNation", createdDao.getNation());
             // 慢特病类型字典
             crmDictionary.put("getCrmClass", dao.getCrmClass());
-            // 省
-            crmDictionary.put("getProvince", dao.getProvince());
-            // 市
-            crmDictionary.put("getCity", dao.getCity(""));
-            // 区
-            crmDictionary.put("getArea", dao.getArea(""));
+//            // 省
+//            crmDictionary.put("getProvince", dao.getProvince());
+//            // 市
+//            crmDictionary.put("getCity", dao.getCity(""));
+//            // 区
+//            crmDictionary.put("getArea", dao.getArea(""));
             // 证件类型字典
             crmDictionary.put("getPsnCertType", dao.getPsnCertType());
             // 来源途径
@@ -340,10 +342,19 @@ public class ChronicDiseaseService {
         List<CrmVisitRecord> result;
         QueryWrapper<CrmVisitRecord> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("p_id", param.getPId());
-        String strTemplate = "第{}次慢病回访记录";
-        queryWrapper.ne("visit_times", param.getVisitTimes());
-        List<CrmVisitRecord> list = crmEmrDao.selectList(queryWrapper);
-        result = getTree(list, strTemplate);
+        List<CrmVisitRecord> list;
+        if (param.getType() == 2) {
+            if (null != param.getVisitTimes()) {
+                queryWrapper.eq("visit_times", param.getVisitTimes());
+            }
+            list = crmEmrDao.selectList(queryWrapper);
+            return list;
+        } else {
+            String strTemplate = "第{}次慢病回访记录";
+            queryWrapper.ne("visit_times", param.getVisitTimes());
+            list = crmEmrDao.selectList(queryWrapper);
+            result = getTree(list, strTemplate);
+        }
         return result;
     }
 
@@ -391,7 +402,7 @@ public class ChronicDiseaseService {
         // 获取登录人信息
         UserInfo user = redisLikeService.getUserInfoByToken();
         mi.setUserIdCode(user.getCodeRs());
-        mi.setUserName(user.getName());
+        mi.setUserName(user.getName().trim());
         mi.setDeptCode(user.getDeptCode());
         mi.setDeptName(user.getDeptName());
 
@@ -401,6 +412,12 @@ public class ChronicDiseaseService {
         List<CodeName> way = dao.getAdmissWay();
         Optional<CodeName> w = way.stream().filter(codeName -> codeName.getCode().equals(mi.getPType())).findFirst();
         w.ifPresent(codeName -> mi.setPtName(codeName.getName()));
+        List<CodeName> disease = dao.getCrmClass();
+        String[] cd = mi.getChronicDiseaseType().split(",");
+        for(String diseaseType : cd){
+            Optional<CodeName> c = disease.stream().filter(codeName -> codeName.getCode().equals(diseaseType)).findFirst();
+            c.ifPresent(codeName -> mi.setChronicDiseaseName(codeName.getName()));
+        }
 
         return ResultVoUtil.success(mi);
     }
@@ -440,4 +457,43 @@ public class ChronicDiseaseService {
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION,"保存慢病电子病历成功!");
     }
 
+    /**
+     * @Description 根据code查询病人的基本信息
+     * @Author hsh
+     * @param code 关键字
+     * @return CrmPatientMi等
+     * @Date 2023/12/18 9:33
+     */
+    public ResultVo<Map<String, Object>> selectBrInfoByCode(String code){
+        CrmPatientMi mi;
+        mi = cpmDao.selectCrmPatientMiMzByCode(code);
+        CrmPatientMi mi1 = cpmDao.selectCrmPatientMiZyByCode(code);
+        if(null != mi){
+            mi.setPType("1");
+            if(null != mi1){
+                mi.setHisZyNo(mi1.getHisZyNo());
+            }
+        } else {
+            if(null != mi1){
+                mi1.setPType("2");
+                if (mi1.getAge() == null) {
+                    if (mi1.getBirthDate() != null) {
+                        mi1.setAge(String.valueOf(DateUtil.age(DateUtil.parse(mi1.getBirthDate(), "yyyy-MM-dd") , null)));
+                    } else {
+                        mi1.setAge(String.valueOf(DateUtil.age(IdcardUtil.getBirthDate(mi1.getSocialNo()),null)));
+                    }
+                }
+                mi = mi1;
+            }
+        }
+
+        if(null == mi){
+            return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有病人的基本信息");
+        }
+
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("mi", mi);
+        return ResultVoUtil.success(resultMap);
+    }
+
 }