xiaochan 2 роки тому
батько
коміт
a86f52328c

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

@@ -31,7 +31,7 @@ public class EmrController {
     }
 
     @GetMapping("/getPatientDataTree")
-    public ResultVo<List<EmrPatientData>> getPatientDataTree(@RequestParam("patNo") String patNo,
+    public ResultVo<List<JSONObject>> getPatientDataTree(@RequestParam("patNo") String patNo,
                                                              @RequestParam("times") Integer times) {
         return server.getPatientDataTree(patNo, times);
     }

+ 15 - 4
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/EmrPatientDao.java

@@ -29,12 +29,12 @@ public interface EmrPatientDao {
             "       modify_date, " +
             "       name," +
             "       submit," +
-            "       sort " +
+            "       parent " +
             "from emr_patient_data " +
             "where pat_no = #{patNo} " +
             "  and times = #{times}" +
             "  and del_flag = 0 " +
-            "  order by sort ")
+            "  order by id ")
     List<EmrPatientData> getPatientData(@Param("patNo") String patNo,
                                         @Param("times") Integer times);
 
@@ -44,8 +44,10 @@ public interface EmrPatientDao {
             "where  emr_document_id = #{docmentId} ")
     Integer whetherThereIsAMedicalRecord(@Param("docmentId") String docmentId);
 
-    @Insert("insert into emr_patient_data (pat_no, times, emr_document_id, emr_category_code, emr_name,create_id,name) " +
-            "values (#{patNo},#{times},#{emrDocumentId},#{emrCategoryCode},#{emrName},#{createId},#{name})")
+    @Insert("insert into emr_patient_data (pat_no, times, emr_document_id," +
+            " emr_category_code, emr_name,create_id,name,parent) " +
+            "values (#{patNo},#{times},#{emrDocumentId}," +
+            "#{emrCategoryCode},#{emrName},#{createId},#{name},#{parent})")
     void emrInsertForTheFirstTime(EmrPatientData param);
 
     @Update("update emr_patient_data " +
@@ -351,4 +353,13 @@ public interface EmrPatientDao {
     ZyZkList getMaxTransferDateByPatNo(String patNo,
                                        Integer times);
 
+    @Update("update emr_patient_data " +
+            "set parent = #{parent} " +
+            "where id = #{id} ")
+    void 更新节点(String parent, Integer id);
+
+
+    @Select("select * from emr_patient_data")
+    List<EmrPatientData> 查询历史数据();
+
 }

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

@@ -110,4 +110,10 @@ public class EmrPatientData implements Serializable {
      */
     private JSONObject documentData;
 
+    private String parent;
+
+    public String getType() {
+        return "category";
+    }
+
 }

+ 49 - 0
src/main/java/thyyxxk/webserver/scheduled/EmrTask.java

@@ -0,0 +1,49 @@
+package thyyxxk.webserver.scheduled;
+
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import thyyxxk.webserver.service.externalhttp.emr.EmrEditor;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Component
+public class EmrTask {
+
+    @Value("${execute-scheduled}")
+    private Boolean executeScheduled;
+
+    private final EmrEditor emr;
+
+    public EmrTask(EmrEditor emr) {
+        this.emr = emr;
+    }
+
+    @Scheduled(cron = "0 30 23 * * ?")
+    public void historyDelete() {
+        if (executeScheduled) {
+            emr.historyDelete(7);
+            log.info("删除电子病历历史记录 --> {} ", "asd");
+        }
+    }
+
+    //    @PostConstruct
+    public void test() {
+        JSONObject js = emr.historyDelete(30);
+        log.info("删除30天的电子病历-> {}", js);
+    }
+
+
+
+
+}

+ 3 - 0
src/main/java/thyyxxk/webserver/service/externalhttp/emr/EmrEditor.java

@@ -59,4 +59,7 @@ public interface EmrEditor {
     @Get("/category/list/dept?code={deptCode}")
     JSONArray getDeptList(@Var("deptCode") String deptCode);
 
+    @Get("/document/history/destory/{countDay}")
+    JSONObject historyDelete(@Var("countDay") Integer countDay);
+
 }

+ 78 - 5
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/emr/EmrServer.java

@@ -3,11 +3,11 @@ package thyyxxk.webserver.service.zhuyuanyisheng.emr;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
@@ -34,7 +34,6 @@ import thyyxxk.webserver.websocket.WebSocketServer;
 import javax.annotation.PostConstruct;
 import javax.websocket.Session;
 import java.util.*;
-import java.util.stream.Collectors;
 
 
 @Service
@@ -46,6 +45,9 @@ public class EmrServer {
     private final PublicServer publicServer;
     private final LoginDao loginDao;
     private final RedisLikeService redisLikeService;
+    private static final Map<String, JSONObject> TEMPLATE_DATA = new LinkedHashMap<>();
+    private static final Map<String, String> GROUP_MAP = new HashMap<>();
+    private final String HOSPITAL_WIDE_FOLDER = "3b1655a006ff11edbc820dada413ba28";
 
     public EmrServer(EmrPatientDao dao, EmrEditor emr, PublicServer publicServer, LoginDao loginDao, RedisLikeService redisLikeService) {
         this.dao = dao;
@@ -62,10 +64,42 @@ public class EmrServer {
      * @param times 住院次数
      * @return 数据
      */
-    public ResultVo<List<EmrPatientData>> getPatientDataTree(String patNo, Integer times) {
-        return ResultVoUtil.success(dao.getPatientData(patNo, times));
+    public ResultVo<List<JSONObject>> getPatientDataTree(String patNo, Integer times) {
+        Map<String, JSONObject> temp = JSON.parseObject(JSON.toJSONString(TEMPLATE_DATA),
+                new TypeReference<LinkedHashMap<String, JSONObject>>() {
+                });
+
+        List<EmrPatientData> list = dao.getPatientData(patNo, times);
+        List<JSONObject> tree = new ArrayList<>(list.size());
+
+        if (ListUtil.isBlank(list)) {
+            return ResultVoUtil.success(tree);
+        }
+
+        if (TEMPLATE_DATA.isEmpty()) {
+            tree();
+        }
+
+        list.forEach(item -> {
+            JSONObject js = temp.get(item.getParent());
+
+            if (js == null) {
+                js = temp.get(HOSPITAL_WIDE_FOLDER);
+            }
+
+            if (js.getJSONArray("children") == null) {
+                js.put("children", new ArrayList<>());
+            }
+
+            js.getJSONArray("children").add(item);
+
+        });
+
+        tree.addAll(temp.values());
+        return ResultVoUtil.success(tree);
     }
 
+
     public ResultVo<Map<String, List<JSONObject>>> getEmrTree(String type) {
         Map<String, List<JSONObject>> map = new HashMap<>(Capacity.TWO);
         if ("all".equals(type)) {
@@ -217,6 +251,7 @@ public class EmrServer {
         if (isUpdated) {
             dao.updateCreatedTemplate(param);
         } else {
+            param.setParent(GROUP_MAP.get(param.getEmrCategoryCode()));
             dao.emrInsertForTheFirstTime(param);
         }
         return ResultVoUtil.success(extractedData);
@@ -433,7 +468,13 @@ public class EmrServer {
 
         for (int i = 0; i < operation.size(); i++) {
             JSONObject item = operation.getJSONObject(i);
-            JSONArray list = item.getJSONObject("手术名称").getJSONArray("value");
+            JSONArray list = null;
+            try {
+                list = item.getJSONObject("手术名称").getJSONArray("value");
+            } catch (Exception e) {
+                continue;
+            }
+
             if (list == null) {
                 continue;
             }
@@ -752,4 +793,36 @@ public class EmrServer {
         return ResultVoUtil.success();
     }
 
+
+    @PostConstruct
+    public void tree() {
+        JSONArray data = emr.getEmrTree();
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject item = data.getJSONObject(i);
+
+            if (item.getString("_id").equals(HOSPITAL_WIDE_FOLDER)) {
+                item.put("name", "其他病历");
+            }
+
+            if ("group-category".equals(item.getString("type"))) {
+                TEMPLATE_DATA.put(item.getString("_id"), item);
+            }
+
+            GROUP_MAP.put(item.getString("code"), item.getString("parent"));
+        }
+        log.info("获取所有的父节点:{}", JSON.toJSONString(TEMPLATE_DATA));
+//        重置父级节点(groupMap);
+    }
+
+    private void 重置父级节点() {
+        List<EmrPatientData> patData = dao.查询历史数据();
+        patData.forEach(item -> {
+            if (GROUP_MAP.containsKey(item.getEmrCategoryCode())) {
+                String value = GROUP_MAP.get(item.getEmrCategoryCode());
+                dao.更新节点(value, item.getId());
+            }
+        });
+    }
+
+
 }