소스 검색

恢复电子病历

DESKTOP-0GD05B0\Administrator 2 년 전
부모
커밋
049827d4f1

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

@@ -7,6 +7,7 @@ import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
+import thyyxxk.webserver.service.PublicServer;
 import thyyxxk.webserver.service.zhuyuanyisheng.EmrServer;
 
 import java.util.List;
@@ -91,5 +92,15 @@ public class EmrController {
         return server.getAllWards();
     }
 
+    @GetMapping("/getDeleteMedicalRecord")
+    public ResultVo<List<EmrPatientData>> getDeleteMedicalRecord(@RequestParam("patNo") String patNo) {
+        return server.getDeleteMedicalRecord(patNo);
+    }
+
+    @GetMapping("/resumeMedicalRecords")
+    public ResultVo<String> resumeMedicalRecords(@RequestParam("documentId") String documentId) {
+        return server.resumeMedicalRecords(documentId);
+    }
+
 
 }

+ 48 - 0
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/EmrPatientDao.java

@@ -166,4 +166,52 @@ public interface EmrPatientDao {
     @Select("select data_element from emr_data_element where pat_no = #{patNo} and times = #{times}")
     Map<String, String> selectEmrDataElement(String patNo, Integer times);
 
+    @Select("select admiss_times from zy_actpatient where inpatient_no = #{patNo} ")
+    Integer getAdmissTimes(String patNo);
+
+    @Select("select id, " +
+            "       pat_no, " +
+            "       times, " +
+            "       emr_document_id, " +
+            "       emr_category_code, " +
+            "       del_flag, " +
+            "       emr_name, " +
+            "       name, " +
+            "       create_id," +
+            "       create_name = (select name from a_employee_mi where a_employee_mi.code = create_id), " +
+            "       create_date, " +
+            "       modify_id, " +
+            "       modify_date, " +
+            "       submit " +
+            "from emr_patient_data " +
+            "where pat_no = #{patNo} " +
+            "  and times = #{times}" +
+            "  and create_id = #{createId} " +
+            "  and del_flag = 1")
+    List<EmrPatientData> selectEmrDeteles(String patNo, Integer times, String createId);
+
+
+    @Select("select id, " +
+            "       pat_no, " +
+            "       times, " +
+            "       emr_document_id, " +
+            "       emr_category_code, " +
+            "       del_flag, " +
+            "       emr_name, " +
+            "       name, " +
+            "       create_id, " +
+            "       create_date, " +
+            "       modify_id, " +
+            "       modify_date, " +
+            "       submit " +
+            "from emr_patient_data " +
+            "where emr_document_id = #{documentId} ")
+    EmrPatientData selectemPatientDataOne(String documentId);
+
+    @Update("update emr_patient_data " +
+            "set del_flag = 0 " +
+            "where id = #{id} ")
+    void updateDeleteFlag(Integer id);
+
+
 }

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

@@ -73,6 +73,7 @@ public class EmrPatientData implements Serializable {
      * 创建人
      */
     private String createId;
+    private String createName;
 
     /**
      * 创建时间

+ 1 - 2
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/yizhuluru/XinZhenYzActOrder.java

@@ -249,8 +249,7 @@ public class XinZhenYzActOrder {
     private String serial;
     private String serialName;
     /**
-     * 药房 序号 这个是算出来的 早上 8:00:00 - 19:59:59 点 为 73
-     * 晚上 8 点 到次日 8 点为 71
+     * 药房 序号
      */
     private String groupNo;
     private String groupNoName;

+ 1 - 1
src/main/java/thyyxxk/webserver/service/LoginService.java

@@ -80,7 +80,7 @@ public class LoginService {
 
     public ResultVo<List<CodeName>> getWards() {
         String code = TokenUtil.getTokenUserId();
-        if (publicServer.needRule(2, 8, 47)) {
+        if (publicServer.needRule(2, 8, 52)) {
             return ResultVoUtil.success(dao.getAllWards());
         } else {
             return ResultVoUtil.success(dao.getUserWards(code));

+ 5 - 2
src/main/java/thyyxxk/webserver/service/externalhttp/emr/EmrEditor.java

@@ -2,8 +2,7 @@ package thyyxxk.webserver.service.externalhttp.emr;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.dtflys.forest.annotation.Get;
-import com.dtflys.forest.annotation.Query;
+import com.dtflys.forest.annotation.*;
 
 
 public interface EmrEditor {
@@ -17,4 +16,8 @@ public interface EmrEditor {
     @Get("http://172.16.32.125:8001/emr/runtime/api/v1/document/docs/data/${id}?keyType=business")
     JSONObject getEditorJsonDataByDocumentId(@Query("id") String id);
 
+
+    @Put("http://172.16.32.125:8001/emr/runtime/api/v1/document/{id}")
+    JSONObject resumeMedicalRecords(@Var("id") String id, @JSONBody("valid") int valid);
+
 }

+ 38 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/EmrServer.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.client.RestTemplate;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.EmrType;
@@ -369,4 +370,41 @@ public class EmrServer {
         return ResultVoUtil.success(loginDao.getAllWards());
     }
 
+
+    /**
+     * 获取患者已经被删除的病历
+     *
+     * @param patNo 住院号
+     * @return 返回
+     */
+    public ResultVo<List<EmrPatientData>> getDeleteMedicalRecord(String patNo) {
+        Integer times = dao.getAdmissTimes(patNo);
+        if (times == null) {
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "出院患者无法恢复病历,如果要恢复请先召回在院。");
+        }
+        return ResultVoUtil.success(dao.selectEmrDeteles(patNo, times, TokenUtil.getTokenUserId()));
+    }
+
+
+    /**
+     * 恢复电子病历
+     *
+     * @param documentId 电子病历文档
+     * @return 返回提示
+     */
+    public ResultVo<String> resumeMedicalRecords(String documentId) {
+        EmrPatientData data = dao.selectemPatientDataOne(documentId);
+        if (data.getDelFlag() == 0) {
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "病历已经被恢复了请勿重复点击");
+        }
+        Integer times = dao.getAdmissTimes(data.getPatNo());
+        if (times == null) {
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "出院患者无法恢复病历,如果要恢复请先召回在院。");
+        }
+        JSONObject json = emr.resumeMedicalRecords(documentId, 1);
+        dao.updateDeleteFlag(data.getId());
+        log.info("恢复:{}", json);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
+    }
+
 }