瀏覽代碼

新增慢病检索

hsh 1 年之前
父節點
當前提交
a21b0d74db

+ 7 - 0
src/main/java/thyyxxk/webserver/controller/chronicDisease/ChronicDiseaseController.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
 import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.chronicDisease.CrmPatientMi;
+import thyyxxk.webserver.entity.chronicDisease.CrmPatientVo;
 import thyyxxk.webserver.entity.chronicDisease.CrmVisitRecord;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.service.chronicDisease.ChronicDiseaseService;
@@ -101,4 +102,10 @@ public class ChronicDiseaseController {
         return service.selectBrInfoByCode(code);
     }
 
+    @PassToken
+    @PostMapping("/selectChronicDisease")
+    public ResultVo<List<CrmPatientMi>> selectChronicDisease(@RequestBody CrmPatientVo vo){
+        return service.selectChronicDisease(vo);
+    }
+
 }

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

@@ -5,6 +5,9 @@ import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import thyyxxk.webserver.entity.chronicDisease.CrmPatientMi;
+import thyyxxk.webserver.entity.chronicDisease.CrmPatientVo;
+
+import java.util.List;
 
 public interface CrmPatientMiDao extends BaseMapper<CrmPatientMi> {
 
@@ -44,4 +47,28 @@ public interface CrmPatientMiDao extends BaseMapper<CrmPatientMi> {
             " 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);
+
+    @Select("<script> " +
+            " select mi.*, tz.height, tz.weight, tz.temperature, tz.respiratory_rate, tz.heart_rate, " +
+            " tz.blood_sugar, tz.blood_pressure_high, tz.blood_pressure_low, tz.blood_oxygen, rtrim(f.name) as userName, " +
+            " rtrim(p.name) as referPhysicianName " +
+            " from crm_patient_mi mi" +
+            " left join crm_patient_tzxx tz on (mi.p_id = tz.p_id collate Chinese_PRC_BIN) and mi.visit_times = tz.visit_times " +
+            " left join a_employee_mi p on mi.refer_physician = p.code collate Chinese_PRC_BIN " +
+            " left join a_employee_mi f on mi.creat_id = f.code collate Chinese_PRC_BIN " +
+            " where (mi.social_no like '%${keyCode}%' or mi.his_mz_no like '%${keyCode}%' " +
+            " or mi.his_zy_no like '%${keyCode}%' or mi.p_name like '%${keyCode}%')" +
+            "<if test=\"startTime != null and startTime != '' \">" +
+            " and mi.create_date &gt;= #{startTime}  " +
+            "</if>" +
+            "<if test=\"endTime != null and endTime != '' \">" +
+            " and mi.create_date &lt;= #{endTime}  " +
+            "</if>" +
+            "<if test=\"diseaseType != null and diseaseType != '' \">" +
+            " and chronic_disease_type like '%${diseaseType}%'  " +
+            "</if>" +
+            " order by mi.create_date " +
+            "</script> ")
+    List<CrmPatientMi> selectChronicDisease(CrmPatientVo vo);
+
 }

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/yp/YpZdManuFactoryDao.java

@@ -73,6 +73,6 @@ public interface YpZdManuFactoryDao extends BaseMapper<YpZdManuFactory> {
     int deleteYpManuFactoryByCode(@Param("code") String code);
 
     @Update(" update yp_zd_manufactory set del_flag = '1' where code = #{code} ")
-    int updateYpManuFactoryByCode(@Param("code") String code);
+    int updateYpManuFactoryDelFlagByCode(@Param("code") String code);
 
 }

+ 28 - 2
src/main/java/thyyxxk/webserver/entity/chronicDisease/CrmPatientMi.java

@@ -17,7 +17,7 @@ import java.util.List;
  * @Author Administrator
  * @Date 2023/11/23 15:15
  * @Version 1.0
- * @Description 慢病基本信息
+ * @Description 慢病基本信息
  **/
 @Data
 @TableName(value = "crm_patient_mi")
@@ -196,7 +196,7 @@ public class CrmPatientMi implements Serializable {
      */
     private String certificateType;
     /**
-     * 慢病类型
+     * 慢病类型
      */
     private String chronicDiseaseType;
     /**
@@ -339,4 +339,30 @@ public class CrmPatientMi implements Serializable {
         }
     }
 
+    /**
+     * 血压拼接(收缩压/舒张压)
+     */
+    @TableField(exist = false)
+    private String bloodPressure;
+    /**
+     * 省名称
+     */
+    @TableField(exist = false)
+    private String provinceName;
+    /**
+     * 市名称
+     */
+    @TableField(exist = false)
+    private String cityName;
+    /**
+     * 区名称
+     */
+    @TableField(exist = false)
+    private String areaName;
+    /**
+     * 距下次随访日期天数
+     */
+    @TableField(exist = false)
+    private long days;
+
 }

+ 20 - 0
src/main/java/thyyxxk/webserver/entity/chronicDisease/CrmPatientVo.java

@@ -0,0 +1,20 @@
+package thyyxxk.webserver.entity.chronicDisease;
+
+import lombok.Data;
+
+/**
+ * @ClassName CrmPatientVo
+ * @Author hsh
+ * @Date 2024/1/12 9:16
+ * @Version 1.0
+ * @Description 慢病查询实体类
+ **/
+@Data
+public class CrmPatientVo {
+
+    private String startTime;
+    private String endTime;
+    private String keyCode;
+    private String diseaseType;
+
+}

+ 93 - 5
src/main/java/thyyxxk/webserver/service/chronicDisease/ChronicDiseaseService.java

@@ -21,6 +21,7 @@ import thyyxxk.webserver.dao.his.inpatient.casefrontsheet.SheetCreatedDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.chronicDisease.CrmPatientMi;
 import thyyxxk.webserver.entity.chronicDisease.CrmPatientTzxx;
+import thyyxxk.webserver.entity.chronicDisease.CrmPatientVo;
 import thyyxxk.webserver.entity.chronicDisease.CrmVisitRecord;
 import thyyxxk.webserver.entity.chronicDisease.CrmVisitRecordVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
@@ -426,11 +427,7 @@ public class ChronicDiseaseService {
         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()));
-        }
+        callDiseaseTypeName(disease, mi);
 
         return ResultVoUtil.success(mi);
     }
@@ -509,4 +506,95 @@ public class ChronicDiseaseService {
         return ResultVoUtil.success(resultMap);
     }
 
+    /**
+     * @Description 根据关键字查询慢病首次登记信息
+     * @Author hsh
+     * @param vo 查询条件
+     * @return CrmPatientMi 慢病首次登记信息
+     * @Date 2024/1/10 16:19
+     */
+    public ResultVo<List<CrmPatientMi>> selectChronicDisease(CrmPatientVo vo){
+        List<CrmPatientMi> miList = cpmDao.selectChronicDisease(vo);
+        callCrmPatientMiFormat(miList);
+        return ResultVoUtil.success(miList);
+    }
+
+    /**
+     * @Description 格式化慢病首次登记信息
+     * @Author hsh
+     * @param miList 慢病首次登记信息
+     * @Date 2024/1/10 16:20
+     */
+    private void callCrmPatientMiFormat(List<CrmPatientMi> miList) {
+        if(null != miList && !miList.isEmpty()){
+            List<CodeName> sex = createdDao.getSexCode();
+            List<CodeName> way = dao.getAdmissWay();
+            List<CodeName> disease = dao.getCrmClass();
+            // 省
+            List<CodeName> pr = dao.getProvince();
+            // 市
+            List<CodeName> ct = dao.getCity("");
+            // 区
+            List<CodeName> ar = dao.getArea("");
+            for(CrmPatientMi mi : miList){
+                Optional<CodeName> s = sex.stream().filter(codeName -> codeName.getCode().equals(mi.getSex())).findFirst();
+                s.ifPresent(codeName -> mi.setSexValue(codeName.getName()));
+                Optional<CodeName> w = way.stream().filter(codeName -> codeName.getCode().equals(mi.getPType())).findFirst();
+                w.ifPresent(codeName -> mi.setPtName(codeName.getName()));
+                Optional<CodeName> p = pr.stream().filter(codeName -> codeName.getCode().equals(mi.getProvinceCode())).findFirst();
+                p.ifPresent(codeName -> mi.setProvinceName(codeName.getName()));
+                Optional<CodeName> c = ct.stream().filter(codeName -> codeName.getCode().equals(mi.getCityCode())).findFirst();
+                c.ifPresent(codeName -> mi.setCityName(codeName.getName()));
+                Optional<CodeName> a = ar.stream().filter(codeName -> codeName.getCode().equals(mi.getAreaCode())).findFirst();
+                a.ifPresent(codeName -> mi.setAreaName(codeName.getName()));
+                callDiseaseTypeName(disease, mi);
+
+                // 时间优化
+                if(StringUtil.notBlank(mi.getLastDate())) {
+                    mi.setLastDate(DateUtil.format(DateUtil.parseDate(mi.getLastDate()), "yyyy-MM-dd"));
+                }
+                if(StringUtil.notBlank(mi.getBirthDate())){
+                    mi.setBirthDate(DateUtil.format(DateUtil.parseDate(mi.getBirthDate()), "yyyy-MM-dd"));
+                }
+                if(StringUtil.notBlank(mi.getVisitDate())) {
+                    mi.setVisitDate(DateUtil.format(DateUtil.parseDate(mi.getVisitDate()), "yyyy-MM-dd"));
+                }
+                // 血压拼接
+                mi.setBloodPressure((mi.getBloodPressureLow() == null ? "--" : mi.getBloodPressureLow() + "")
+                        + "/" + (mi.getBloodPressureHigh() == null ? "--" : mi.getBloodPressureHigh() + ""));
+                // 计算距离下次随访时间天数
+                if(StringUtil.notBlank(mi.getVisitDate())){
+                    // 判断两个日期相差的天数
+                    /*
+                     * 最后一个参数isReset: false 表示不包含时分秒的计算
+                     * 比如:2016-02-01 23:59:59和2016-02-02 00:00:00相差一秒
+                     * 如果isReset为{@code false}相差天数为0。
+                     * 如果isReset为{@code true}相差天数将被计算为1
+                     */
+                    long days = DateUtil.betweenDay(DateUtil.parseDate(mi.getVisitDate()), new Date(), false);
+                    if(DateUtil.date().before(DateUtil.parseDate(mi.getVisitDate()))){
+                        mi.setDays(days);
+                    } else {
+                        mi.setDays(-days);
+                    }
+                }
+
+            }
+        }
+
+    }
+
+    /**
+     * 格式化慢病类型
+     */
+    private void callDiseaseTypeName(List<CodeName> disease, CrmPatientMi mi) {
+        if(StringUtil.notBlank(mi.getChronicDiseaseType())){
+            String[] dType = mi.getChronicDiseaseType().split(",");
+            for(String diseaseType : dType){
+                Optional<CodeName> c = disease.stream().filter(codeName -> codeName.getCode().equals(diseaseType)).findFirst();
+                c.ifPresent(codeName -> mi.setChronicDiseaseName(codeName.getName()));
+            }
+        }
+    }
+
 }