Browse Source

电子病历

DESKTOP-0GD05B0\Administrator 2 years ago
parent
commit
6d1aa6adc3

+ 0 - 11
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/EmrController.java

@@ -26,12 +26,6 @@ public class EmrController {
         return server.getPatientData(patNo, times);
     }
 
-    @GetMapping("/existCourseRecord")
-    public ResultVo<Boolean> existCourseRecord(@RequestParam("patNo") String patNo,
-                                               @RequestParam("times") Integer times) {
-        return server.existCourseRecord(patNo, times);
-    }
-
     @PostMapping("/insertEmrData")
     public ResultVo<String> insertEmrData(@RequestBody @Validated EmrPatientData param) {
         return server.insertEmrData(param);
@@ -47,11 +41,6 @@ public class EmrController {
         return server.queryWhetherThePatientHasASpecifiedMedicalRecord(param);
     }
 
-    @PostMapping("/extractDataElement")
-    public ResultVo<String> extractDataElement(@RequestBody EmrDataElement param) {
-        return server.extractDataElement(param);
-    }
-
     @PassToken
     @GetMapping("/hotSearchSorting")
     public void hotSearchSorting(@RequestParam("userCode") String userCode,

+ 1 - 8
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/EmrPatientDao.java

@@ -30,14 +30,7 @@ public interface EmrPatientDao {
     List<EmrPatientData> getPatientData(@Param("patNo") String patNo,
                                         @Param("times") Integer times);
 
-    @Select("select count(1) " +
-            "from emr_patient_data " +
-            "where pat_no = #{patNo} " +
-            "  and times = #{times}" +
-            "  and emr_category_code = 'bingchengjiluzhuanyong'" +
-            "  and del_flag = 0   ")
-    Integer isThereARecordOfTheCourseOfTheDisease(@Param("patNo") String patNo,
-                                                  @Param("times") Integer times);
+
 
     @Select("select count(1)\n" +
             "from emr_patient_data\n" +

+ 1 - 0
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/emr/EmrPatientData.java

@@ -93,4 +93,5 @@ public class EmrPatientData implements Serializable {
      */
     private List<EmrPatientData> children;
 
+    private String emrDataElement;
 }

+ 4 - 3
src/main/java/thyyxxk/webserver/service/dictionary/EmrDataMaintenanceServer.java

@@ -78,11 +78,9 @@ public class EmrDataMaintenanceServer {
             // 永远添加 住院号和住院次数
             sqlData.put("inpatient_no", emr.getPatNo());
             sqlData.put("admiss_times", emr.getTimes());
-
             Map<String, List<Map<String, Object>>> groupingMap = new HashMap<>();
             Map<String, Object> extraMap = new HashMap<>();
             List<String> groupKeys = new ArrayList<>();
-
             for (Map.Entry<String, Object> dbitem : sqlData.entrySet()) {
                 Object value = dbitem.getValue();
                 String key = dbitem.getKey();
@@ -108,6 +106,9 @@ public class EmrDataMaintenanceServer {
             return ResultVoUtil.success(JSON.parseObject(JSON.toJSONStringWithDateFormat(sqlData, DateUtil.DEFAULT_PATTERN)));
         } else {
             List<Map<String, Object>> listMap = dao.testSqlList(sql);
+            for (Map<String, Object> item : listMap) {
+                log.info("数据:{}", item);
+            }
             if (ListUtil.isBlank(listMap)) {
                 return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "sql没问题,但是没得数据。");
             }
@@ -155,7 +156,7 @@ public class EmrDataMaintenanceServer {
             ResultVo<JSONObject> resultVo = testSql(item);
             if (resultVo.getCode() == ExceptionEnum.SUCCESS.getCode()) {
                 if (null != resultVo.getData()) {
-                    obj = EntityCopy.jsonMerge(resultVo.getData(), obj);
+                    obj.putAll(resultVo.getData());
                 }
             }
         }

+ 48 - 39
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/EmrServer.java

@@ -43,9 +43,7 @@ public class EmrServer {
 
         List<EmrPatientData> data = new ArrayList<>();
 
-        Map<String, List<EmrPatientData>> map = dao.getPatientData(patNo, times).stream().collect(
-                Collectors.groupingBy(EmrPatientData::getEmrCategoryCode)
-        );
+        Map<String, List<EmrPatientData>> map = dao.getPatientData(patNo, times).stream().collect(Collectors.groupingBy(EmrPatientData::getEmrCategoryCode));
 
         for (Map.Entry<String, List<EmrPatientData>> key : map.entrySet()) {
             if (key.getValue().size() == 1) {
@@ -65,12 +63,52 @@ public class EmrServer {
                 data.add(item);
             }
         }
-
         return ResultVoUtil.success(data);
     }
 
-    public ResultVo<Boolean> existCourseRecord(String patNo, Integer times) {
-        return ResultVoUtil.success(dao.isThereARecordOfTheCourseOfTheDisease(patNo, times) > 0);
+    class ExtractData extends Thread {
+        private final EmrPatientData param;
+
+        public ExtractData(EmrPatientData param) {
+            this.param = param;
+        }
+
+        @Override
+        public void run() {
+            log.info("开始提取数据:{}", JSON.toJSONString(param));
+            extractDataElement(param);
+        }
+
+    }
+
+    public void extractDataElement(EmrPatientData param) {
+        EmrDataExtract 需要提取的数据源 = dao.extractDataSource(param.getEmrCategoryCode());
+        if (需要提取的数据源 == null) {
+            return;
+        }
+
+        List<String> strings = JSON.parseArray(需要提取的数据源.getDataExtract(), String.class);
+        JSONObject elementData = JSONObject.parseObject(param.getEmrDataElement());
+        Map<String, Object> extractedData = new HashMap<>(strings.size());
+        for (String el : strings) {
+            if (elementData.containsKey(el)) {
+                JSONObject item = (JSONObject) elementData.get(el);
+                Object value = item.get("value");
+                if (value != null) {
+                    extractedData.put(el, value);
+                }
+            }
+        }
+        EmrDataElement emrDataElement = dao.obtainPatientSOriginalData(param.getPatNo(), param.getTimes());
+        if (emrDataElement == null) {
+            dao.insertDataSource(param.getPatNo(), param.getTimes(), JSON.toJSONString(extractedData));
+        } else {
+            JSONObject jsonObject = JSONObject.parseObject(emrDataElement.getDataElement());
+            log.info("患者原来的数据:{}", jsonObject);
+            jsonObject.putAll(extractedData);
+            dao.updatePatientDataSource(param.getPatNo(), param.getTimes(), JSON.toJSONString(jsonObject));
+        }
+        log.info("提取到的数据:{}", JSON.toJSONString(extractedData));
     }
 
     /**
@@ -81,13 +119,14 @@ public class EmrServer {
      */
     public ResultVo<String> insertEmrData(EmrPatientData param) {
         param.setCreateId(TokenUtil.getTokenUserId());
-        if (dao.whetherThereIsAMedicalRecord(param.getPatNo(), param.getTimes(), param.getEmrDocumentId()).equals(1)) {
+        boolean isUpdated = dao.whetherThereIsAMedicalRecord(param.getPatNo(), param.getTimes(), param.getEmrDocumentId()).equals(1);
+        if (isUpdated) {
             dao.updateCreatedTemplate(param);
-            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "保存成功,已覆盖原数据。");
         } else {
             dao.emrInsertForTheFirstTime(param);
-            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "保存到本院成功");
         }
+        new ExtractData(param).start();
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, isUpdated ? "保存成功,已覆盖原数据。" : "保存到本院成功");
     }
 
     /**
@@ -112,36 +151,6 @@ public class EmrServer {
         return ResultVoUtil.success(dao.queryWhetherThePatientHasASpecifiedMedicalRecord(param.getPatNo(), param.getTimes(), param.getEmrCategoryCode()) == 1);
     }
 
-    public ResultVo<String> extractDataElement(EmrDataElement param) {
-        EmrDataExtract 需要提取的数据源 = dao.extractDataSource(param.getCategoryCode());
-        if (需要提取的数据源 == null) {
-            return ResultVoUtil.success();
-        }
-        List<String> strings = JSON.parseArray(需要提取的数据源.getDataExtract(), String.class);
-        JSONObject elementData = JSONObject.parseObject(param.getDataElement());
-        Map<String, Object> extractedData = new HashMap<>(strings.size());
-        for (String el : strings) {
-            if (elementData.containsKey(el)) {
-                JSONObject item = (JSONObject) elementData.get(el);
-                Object value = item.get("value");
-                if (value != null) {
-                    extractedData.put(el, value);
-                }
-            }
-        }
-        EmrDataElement emrDataElement = dao.obtainPatientSOriginalData(param.getPatNo(), param.getTimes());
-        if (emrDataElement == null) {
-            log.info("提取到的数据:{}", JSON.toJSONString(extractedData));
-            dao.insertDataSource(param.getPatNo(), param.getTimes(), JSON.toJSONString(extractedData));
-        } else {
-            JSONObject jsonObject = JSONObject.parseObject(emrDataElement.getDataElement());
-            jsonObject.putAll(extractedData);
-            dao.updatePatientDataSource(param.getPatNo(), param.getTimes(), JSON.toJSONString(jsonObject));
-            log.info("患者原来的数据:{}", jsonObject);
-        }
-
-        return ResultVoUtil.success();
-    }
 
     @DS("his")
     public void hotSearchSorting(String userCode, String code, String tableName) {