lighter 9 mesiacov pred
rodič
commit
f7c71858cf

+ 43 - 0
src/main/java/thyyxxk/webserver/controller/dictionary/MedicalTechnologyController.java

@@ -0,0 +1,43 @@
+package thyyxxk.webserver.controller.dictionary;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.dictionary.medicaltechnology.MedicalTechnologyItem;
+import thyyxxk.webserver.entity.dictionary.medicaltechnology.QueryRequest;
+import thyyxxk.webserver.service.dictionary.MedicalTechnologyService;
+import thyyxxk.webserver.utils.ResultVoUtil;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/medicalTechnologyCatalog")
+public class MedicalTechnologyController {
+    private final MedicalTechnologyService service;
+
+    @Autowired
+    public MedicalTechnologyController(MedicalTechnologyService service) {
+        this.service = service;
+    }
+
+    @GetMapping("/getDeptSelections")
+    ResultVo<List<CodeName>> getDeptSelections() {
+        return ResultVoUtil.success(service.getDeptSelections());
+    }
+
+    @PostMapping("/queryQualifiedItems")
+    public ResultVo<List<MedicalTechnologyItem>> queryQualifiedItems(@RequestBody QueryRequest request) {
+        return ResultVoUtil.success(service.queryQualifiedItems(request));
+    }
+
+    @PostMapping("/saveTechnologyCatalogue")
+    public ResultVo<String> saveTechnologyCatalogue(@RequestBody MedicalTechnologyItem body) {
+        return ResultVoUtil.success(service.saveTechnologyCatalogue(body));
+    }
+
+    @PostMapping("/updateDelFlag")
+    public ResultVo<String> updateDelFlag(@RequestBody MedicalTechnologyItem body) {
+        return ResultVoUtil.success(service.updateDelFlag(body));
+    }
+}

+ 34 - 0
src/main/java/thyyxxk/webserver/dao/his/dictionary/MedicalTechnologyDao.java

@@ -0,0 +1,34 @@
+package thyyxxk.webserver.dao.his.dictionary;
+
+import org.apache.ibatis.annotations.*;
+import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.dictionary.medicaltechnology.Category;
+import thyyxxk.webserver.entity.dictionary.medicaltechnology.MedicalTechnologyItem;
+import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.ZdIcd9Cm3;
+
+import java.util.List;
+
+@Mapper
+public interface MedicalTechnologyDao {
+    @Select("select code,name from zd_unit_code where code not like '3%' " +
+            "and code not like '8%' and class_code in (1,2) and del_flag=0")
+    List<CodeName> getDeptSelections();
+
+    @Select("select * from medical_technology_catalog where category=#{category} ${statement}")
+    List<MedicalTechnologyItem> queryQualifiedItems(String deptCode, Category category, String statement);
+
+    @Select("select op_scale,op_type from zd_icd9_cm3 where code=#{code}")
+    ZdIcd9Cm3 selectZdIcd9Cm3(String code);
+
+    @Insert("insert into medical_technology_catalog " +
+            "(code,name,dept_code,dept_name,level,type,op_code,op_date,category) " +
+            "values (#{code},#{name},#{deptCode},#{deptName},#{level},#{type},#{opCode},#{opDate},#{category})")
+    void insertOne(MedicalTechnologyItem item);
+
+    @Delete("delete from medical_technology_catalog where code=#{code} and dept_code=#{deptCode}")
+    void deleteOne(String code, String deptCode);
+
+    @Update("update medical_technology_catalog set del_flag=#{delFlag},op_code=#{opCode}, " +
+            "op_date=#{opDate} where code=#{code} and dept_code=#{deptCode}")
+    void updateDelFlag(MedicalTechnologyItem item);
+}

+ 8 - 8
src/main/java/thyyxxk/webserver/dao/his/inpatient/DictionaryDao.java

@@ -14,34 +14,34 @@ public interface DictionaryDao {
 
     @Select("SELECT RTRIM(code) AS code,rtrim(name) name from a_employee_mi WHERE " +
             "isnull(del_flag,0)!=1 and ${method} LIKE #{content} collate Chinese_PRC_CI_AS")
-    List<CodeName> searchPhysician(@Param("method") String method, @Param("content") String content);
+    List<CodeName> searchPhysician(String method, String content);
 
     @Select("select diagnosis_code as code,diagnosis_name as name from t_si_dl_dss_dns " +
             "where del_flag=0 and ${method} LIKE #{content} collate Chinese_PRC_CI_AS order by weight desc")
-    List<CodeName> searchDiagnose(@Param("method") String method, @Param("content") String content);
+    List<CodeName> searchDiagnose(String method, String content);
 
     @Update("update zd_icd_code_new set weight=(weight+1) where yb_code=#{code}")
-    void increaseWeight(@Param("code") String code);
+    void increaseWeight(String code);
 
     @Select("select distinct new_code as code,new_name as name from ${tableName} where new_name like #{content} collate Chinese_PRC_CI_AS")
-    List<CodeName> selectSlwSpcDiag(@Param("content") String content, @Param("tableName") String tableName);
+    List<CodeName> selectSlwSpcDiag(String content, @Param("tableName") String tableName);
 
     @Select("select * from ${table}")
     List<SpecialDiag> selectAllSpecialDiags(@Param("table") String table);
 
     @Select("select code,name from t_zd_injury_icd where ${method} like #{content} collate Chinese_PRC_CI_AS")
-    List<CodeName> selectInjurydiag(@Param("method") String method, @Param("content") String content);
+    List<CodeName> selectInjurydiag(String method, String content);
 
     @Select("select rtrim(new_code) as code, rtrim(new_name) as name from si_icd_employees_maternity_hospitalization " +
             "where ${method} like #{content} collate Chinese_PRC_CI_AS")
-    List<CodeName> selectMatnDiagForFrontSheet(@Param("method") String method, @Param("content") String content);
+    List<CodeName> selectMatnDiagForFrontSheet(String method, String content);
 
     @Select("select rtrim(new_code) as code, rtrim(new_name) as name from si_hospitalization_single_disease " +
             "where ${method} like #{content} collate Chinese_PRC_CI_AS")
-    List<CodeName> selectSpcDssDiagForFrontSheet(@Param("method") String method, @Param("content") String content);
+    List<CodeName> selectSpcDssDiagForFrontSheet(String method, String content);
 
     @Select("select code, name from t_zd_injury_disease where ${method} like #{content} collate Chinese_PRC_CI_AS")
-    List<CodeName> selectInjuryDssDiagForFrontSheet(@Param("method") String method, @Param("content") String content);
+    List<CodeName> selectInjuryDssDiagForFrontSheet(String method, String content);
 
     @Select("select med_type from t_si_pat_info with(nolock ) where pat_no=#{patNo} and times=#{times} " +
             "and mdtrt_id is not null order by ledger_sn desc")

+ 11 - 6
src/main/java/thyyxxk/webserver/dao/his/search/SearchDao.java

@@ -6,27 +6,32 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 
+import java.util.List;
+
 
 @Mapper
 public interface SearchDao {
     @Select("select rtrim(code) as code,rtrim(name) as name,rtrim(yb_code) as ybCode, " +
             "deptName=(select rtrim(d.name) from zd_unit_code d where d.code=dept_code) " +
             "from a_employee_mi where isnull(del_flag,0)!=1 and ${method} like #{content}")
-    IPage<CodeName> searchPhysician(IPage<CodeName> iPage, @Param("method") String method, @Param("content") String content);
+    IPage<CodeName> searchPhysician(IPage<CodeName> iPage, String method, String content);
 
     @Select("select distinct rtrim(yb_code) as code, rtrim(yb_name) as name from zd_icd_code_new where ${method} like #{content} and del_flag=0")
-    IPage<CodeName> searchSiDiagnose(IPage<CodeName> iPage, @Param("method") String method, @Param("content") String content);
+    IPage<CodeName> searchSiDiagnose(IPage<CodeName> iPage, String method, String content);
 
     @Select("select rtrim(yb_code) as code, rtrim(yb_name) as name from zd_icd9_cm3 where ${method} like #{content} and del_flag=0")
-    IPage<CodeName> searchSurgeries(IPage<CodeName> iPage, @Param("method") String method, @Param("content") String content);
+    IPage<CodeName> searchSurgeries(IPage<CodeName> iPage, String method, String content);
 
     @Select("select distinct rtrim(code) as code, rtrim(name) as name from zd_icd_code_new where ${method} like #{content} and del_flag=0")
-    IPage<CodeName> searchIcd10Diagnose(IPage<CodeName> iPage, @Param("method") String method, @Param("content") String content);
+    IPage<CodeName> searchIcd10Diagnose(IPage<CodeName> iPage, String method, String content);
 
     @Select("select distinct new_code as code,new_name as name from ${tableName} where new_name like #{content}")
-    IPage<CodeName> selectSlwSpcDiag(IPage<CodeName> iPage, @Param("content") String content, @Param("tableName") String tableName);
+    IPage<CodeName> selectSlwSpcDiag(IPage<CodeName> iPage, String content, String tableName);
 
     @Select("select distinct code,name from t_zd_injury_icd where ${method} like #{content}")
-    IPage<CodeName> searchInjurydiag(IPage<CodeName> iPage, @Param("method") String method, @Param("content") String content);
+    IPage<CodeName> searchInjurydiag(IPage<CodeName> iPage, String method, String content);
 
+    @Select("SELECT RTRIM(code) as code,rtrim(name) name from ${table} where " +
+            "isnull(del_flag,0)!=1 and ${method} like #{content}")
+    IPage<CodeName> searchMedicalTechnology(IPage<CodeName> iPage, String method, String content, String table);
 }

+ 5 - 0
src/main/java/thyyxxk/webserver/entity/dictionary/medicaltechnology/Category.java

@@ -0,0 +1,5 @@
+package thyyxxk.webserver.entity.dictionary.medicaltechnology;
+
+public enum Category {
+    SSCZ,SFXM,JY,JC
+}

+ 19 - 0
src/main/java/thyyxxk/webserver/entity/dictionary/medicaltechnology/MedicalTechnologyItem.java

@@ -0,0 +1,19 @@
+package thyyxxk.webserver.entity.dictionary.medicaltechnology;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class MedicalTechnologyItem {
+    private String code;
+    private String name;
+    private String deptCode;
+    private String deptName;
+    private String level;
+    private String type;
+    private String opCode;
+    private Date opDate;
+    private Integer delFlag;
+    private Category category;
+}

+ 11 - 0
src/main/java/thyyxxk/webserver/entity/dictionary/medicaltechnology/QueryRequest.java

@@ -0,0 +1,11 @@
+package thyyxxk.webserver.entity.dictionary.medicaltechnology;
+
+import lombok.Data;
+
+@Data
+public class QueryRequest {
+    private String deptCode;
+    private Category category;
+    private String itemCode;
+    private String itemName;
+}

+ 0 - 2
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/shoushu/ZdIcd9Cm3.java

@@ -18,8 +18,6 @@ public class ZdIcd9Cm3 {
         return code;
     }
 
-    private String 附加编码;
-
     private String name;
 
     private Integer opType;

+ 66 - 0
src/main/java/thyyxxk/webserver/service/dictionary/MedicalTechnologyService.java

@@ -0,0 +1,66 @@
+package thyyxxk.webserver.service.dictionary;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import thyyxxk.webserver.dao.his.dictionary.MedicalTechnologyDao;
+import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.dictionary.medicaltechnology.Category;
+import thyyxxk.webserver.entity.dictionary.medicaltechnology.MedicalTechnologyItem;
+import thyyxxk.webserver.entity.dictionary.medicaltechnology.QueryRequest;
+import thyyxxk.webserver.entity.zhuyuanyisheng.shoushu.ZdIcd9Cm3;
+import thyyxxk.webserver.service.redislike.RedisLikeService;
+import thyyxxk.webserver.utils.StringUtil;
+import thyyxxk.webserver.utils.TokenUtil;
+
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class MedicalTechnologyService {
+    private final MedicalTechnologyDao dao;
+    private final RedisLikeService redis;
+
+    @Autowired
+    public MedicalTechnologyService(MedicalTechnologyDao dao, RedisLikeService redis) {
+        this.dao = dao;
+        this.redis = redis;
+    }
+
+    public List<CodeName> getDeptSelections() {
+        return dao.getDeptSelections();
+    }
+
+    public List<MedicalTechnologyItem> queryQualifiedItems(QueryRequest request) {
+        String statement = "";
+        if (StringUtil.notBlank(request.getItemCode())) {
+            statement += " and code='" + request.getItemCode() + "'";
+        }
+        if (StringUtil.notBlank(request.getDeptCode())) {
+            statement += " and dept_code='" + request.getDeptCode() + "'";
+        }
+        return dao.queryQualifiedItems(request.getDeptCode(), request.getCategory(), statement);
+    }
+
+    public String saveTechnologyCatalogue(MedicalTechnologyItem body) {
+        body.setOpCode(TokenUtil.getInstance().getTokenUserId());
+        body.setOpDate(new Date());
+        body.setDeptName(redis.getDeptName(body.getDeptCode()));
+        body.setDelFlag(0);
+        if (body.getCategory() == Category.SSCZ) {
+            ZdIcd9Cm3 cm3 = dao.selectZdIcd9Cm3(body.getCode());
+            body.setLevel(String.valueOf(null == cm3.getOpScale() ? "" : cm3.getOpScale()));
+            body.setType(String.valueOf(null == cm3.getOpType() ? "" : cm3.getOpType()));
+        }
+        dao.deleteOne(body.getCode(), body.getDeptCode());
+        dao.insertOne(body);
+        return "操作成功。";
+    }
+
+    public String updateDelFlag(MedicalTechnologyItem body) {
+        body.setDelFlag(body.getDelFlag() == 0 ? 1 : 0);
+        body.setOpCode(TokenUtil.getInstance().getTokenUserId());
+        body.setOpDate(new Date());
+        dao.updateDelFlag(body);
+        return "操作成功。";
+    }
+}

+ 29 - 42
src/main/java/thyyxxk/webserver/service/search/SearchService.java

@@ -44,6 +44,18 @@ public class SearchService {
             case "injurydiag":
                 iPage = deepinInjuryDiag(params.getMethod(), params.getContent(), iPage);
                 break;
+            case "SSCZ":
+                iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "zd_icd9_cm3", iPage);
+                break;
+            case "SFXM":
+                iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "zd_charge_item", iPage);
+                break;
+            case "JY":
+                iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "jy_zd_item", iPage);
+                break;
+            case "JC":
+                iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "jc_zd_item", iPage);
+                break;
         }
         if (iPage.getTotal() > 0) {
             Map<String, Object> map = new HashMap<>();
@@ -56,21 +68,16 @@ public class SearchService {
 
     private IPage<CodeName> deepinPhysician(String method, String content, IPage<CodeName> iPage) {
         content = '%' + content.toUpperCase() + '%';
-        String column;
-        switch (method) {
-            case "alpha":
-                column = "py_code";
-                break;
-            case "code":
-                column = "code";
-                break;
-            default:
-                column = "name";
-                break;
-        }
+        String column = filterCommonColumn(method);
         return dao.searchPhysician(iPage, column, content);
     }
 
+    private IPage<CodeName> deepinMedicalTechnology(String method, String content, String table, IPage<CodeName> iPage) {
+        content = '%' + content.toUpperCase() + '%';
+        String column = filterCommonColumn(method);
+        return dao.searchMedicalTechnology(iPage, column, content, table);
+    }
+
     private IPage<CodeName> deepinSiDiag(String method, String content, IPage<CodeName> iPage) {
         content = '%' + content.toUpperCase() + '%';
         String column;
@@ -89,33 +96,13 @@ public class SearchService {
 
     private IPage<CodeName> deepinSurgery(String method, String content, IPage<CodeName> iPage) {
         content = '%' + content.toUpperCase() + '%';
-        String column;
-        switch (method) {
-            case "alpha":
-                column = "py_code";
-                break;
-            case "code":
-                column = "code";
-                break;
-            default:
-                column = "name";
-        }
+        String column = filterCommonColumn(method);
         return dao.searchSurgeries(iPage, column, content);
     }
 
     private IPage<CodeName> deepinIcd10Diag(String method, String content, IPage<CodeName> iPage) {
         content = '%' + content.toUpperCase() + '%';
-        String column;
-        switch (method) {
-            case "alpha":
-                column = "py_code";
-                break;
-            case "code":
-                column = "code";
-                break;
-            default:
-                column = "name";
-        }
+        String column = filterCommonColumn(method);
         return dao.searchIcd10Diagnose(iPage, column, content);
     }
 
@@ -131,18 +118,18 @@ public class SearchService {
 
     private IPage<CodeName> deepinInjuryDiag(String method, String content, IPage<CodeName> iPage) {
         content = '%' + content.toUpperCase() + '%';
-        String column;
+        String column = filterCommonColumn(method);
+        return dao.searchInjurydiag(iPage, column, content);
+    }
+
+    private String filterCommonColumn(String method) {
         switch (method) {
             case "alpha":
-                column = "py_code";
-                break;
+                return "py_code";
             case "code":
-                column = "code";
-                break;
+                return "code";
             default:
-                column = "name";
-                break;
+                return "name";
         }
-        return dao.searchInjurydiag(iPage, column, content);
     }
 }