Quellcode durchsuchen

调用 drg 分组器

DESKTOP-0GD05B0\Administrator vor 2 Jahren
Ursprung
Commit
bff62a4216

+ 5 - 6
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/EmrPatientDao.java

@@ -2,6 +2,7 @@ package thyyxxk.webserver.dao.his.zhuyuanyisheng;
 
 import org.apache.ibatis.annotations.*;
 import org.springframework.web.bind.annotation.RequestParam;
+import thyyxxk.webserver.entity.drg.AuxiliaryFillingOfDiagnosis;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataElement;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataExtract;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
@@ -125,16 +126,14 @@ public interface EmrPatientDao {
     List<String> getDocumentIdByPatietn(String patNo, int times, String categoryCode);
 
 
-    @Select("select name, " +
-            "       dis_date                                                                                  as cysj, " +
-            "       sex                                                                                       as xb, " +
-            "       (select birth_date from a_patient_mi b where b.inpatient_no = a.inpatient_no)             as birth_date, " +
+    @Select("select rtrim(name) as xm,dis_date as cysj,sex as xb," +
+            "       (select DATEDIFF(yy, birth_date, GETDATE()) from a_patient_mi b where b.inpatient_no = a.inpatient_no)    as nl, " +
             "       (select sum(charge_fee) " +
             "        from zy_detail_charge c " +
             "        where c.inpatient_no = a.inpatient_no " +
             "          and c.admiss_times = a.admiss_times " +
-            "          and ledger_sn = #{ledgerSn})                                                                     as zfy, " +
-            "       datediff(day, admiss_date, isnull(dis_date, getdate()))                                   as sjzyts, " +
+            "          and ledger_sn = #{ledgerSn}) as zfy, " +
+            "       datediff(day, admiss_date, isnull(dis_date, getdate())) as sjzyts, " +
             "       ''                                                                                        as rybq, " +
             "       ''                                                                                        as rytj, " +
             "       ''                                                                                        as lyfs, " +

+ 284 - 0
src/main/java/thyyxxk/webserver/entity/drg/AuxiliaryFillingOfDiagnosis.java

@@ -0,0 +1,284 @@
+package thyyxxk.webserver.entity.drg;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AuxiliaryFillingOfDiagnosis {
+
+    /**
+     * 就诊ID
+     * 说明 就诊ID,病人唯一标识。用来关联诊断、手术等数据
+     */
+    @JSONField(name = "visit_id")
+    private String visitId;
+
+    /**
+     * 入院日期
+     * 用来计算年龄的
+     */
+    private Date admissDate;
+
+    /**
+     * 姓名
+     * 说明
+     */
+    @JSONField(name = "xm")
+    private String xm;
+
+    /**
+     * 病案号
+     * 说明
+     */
+    @JSONField(name = "bah")
+    private String bah;
+
+    /**
+     * 出院时间
+     * 说明 格式为:yyyy-mm-dd
+     */
+    @JSONField(name = "cysj")
+    private String cysj;
+
+    /**
+     * 性别
+     * 说明 按照5.1填写
+     */
+    @JSONField(name = "xb")
+    private String xb;
+
+    /**
+     * 年龄
+     * 说明 岁:整数
+     */
+    @JSONField(name = "nl")
+    private String nl;
+
+    /**
+     * 总费用
+     * 说明 保留两位小数
+     */
+    @JSONField(name = "zfy")
+    private String zfy;
+
+    /**
+     * 实际住院天数
+     * 说明 天:整数
+     */
+    @JSONField(name = "sjzyts")
+    private String sjzyts;
+
+    /**
+     * 入院病情
+     * 说明 按照5.10填写
+     */
+    @JSONField(name = "rybq")
+    private String rybq;
+
+    /**
+     * 入院途径
+     * 说明 按照5.8填写
+     */
+    @JSONField(name = "rytj")
+    private String rytj;
+
+    /**
+     * 离院方式
+     * 说明 按照5.18填写
+     */
+    @JSONField(name = "lyfs")
+    private String lyfs;
+
+    /**
+     * 病人险种
+     * 说明 310:城职;390:城居(非城职的其他险种都可以传390);0:无险种传空或者0。
+     */
+    @JSONField(name = "insur_type_id")
+    private String insurTypeId;
+
+    /**
+     * 新生儿出生体重(克)
+     * 说明 年龄不满一岁必传
+     */
+    @JSONField(name = "xsecstz")
+    private String xsecstz;
+
+    /**
+     * 新生儿入院体重(克)
+     * 说明 年龄不满一岁必传
+     */
+    @JSONField(name = "xserytz")
+    private String xserytz;
+
+    /**
+     * 不足一周岁年龄(天)
+     * 说明 年龄不满一岁必传
+     */
+    @JSONField(name = "bzyzsnl")
+    private String bzyzsnl;
+
+    /**
+     * 主要诊断名称
+     * 说明
+     */
+    @JSONField(name = "zyzd")
+    private String zyzd;
+
+    /**
+     * 主要诊断代码
+     * 说明 代码:疾病分类代码(国临2.0)
+     */
+    @JSONField(name = "jbdm")
+    private String jbdm;
+
+    /**
+     * 其他诊断(1)
+     * 说明 代码:疾病分类代码
+     */
+    @JSONField(name = "jbdm1")
+    private String jbdm1;
+
+    /**
+     * 其他诊断(2)
+     * 说明
+     */
+    @JSONField(name = "jbdm2")
+    private String jbdm2;
+
+    /**
+     * 其他诊断(3)
+     * 说明
+     */
+    @JSONField(name = "jbdm3")
+    private String jbdm3;
+
+    /**
+     * 其他诊断(4)
+     * 说明
+     */
+    @JSONField(name = "jbdm4")
+    private String jbdm4;
+
+    /**
+     * 其他诊断(5)
+     * 说明
+     */
+    @JSONField(name = "jbdm5")
+    private String jbdm5;
+
+    /**
+     * 其他诊断(6)
+     * 说明
+     */
+    @JSONField(name = "jbdm6")
+    private String jbdm6;
+
+    /**
+     * 其他诊断(7)
+     * 说明
+     */
+    @JSONField(name = "jbdm7")
+    private String jbdm7;
+
+    /**
+     * 其他诊断(8)
+     * 说明
+     */
+    @JSONField(name = "jbdm8")
+    private String jbdm8;
+
+    /**
+     * 其他诊断(9)
+     * 说明
+     */
+    @JSONField(name = "jbdm9")
+    private String jbdm9;
+
+    /**
+     * 其他诊断(10)
+     * 说明
+     */
+    @JSONField(name = "jbdm10")
+    private String jbdm10;
+
+    /**
+     * 其他诊断(11)
+     * 说明
+     */
+    @JSONField(name = "jbdm11")
+    private String jbdm11;
+
+    /**
+     * 其他诊断(12)
+     * 说明
+     */
+    @JSONField(name = "jbdm12")
+    private String jbdm12;
+
+    /**
+     * 其他诊断(13)
+     * 说明
+     */
+    @JSONField(name = "jbdm13")
+    private String jbdm13;
+
+    /**
+     * 其他诊断(14)
+     * 说明
+     */
+    @JSONField(name = "jbdm14")
+    private String jbdm14;
+
+    /**
+     * 其他诊断(15)
+     * 说明
+     */
+    @JSONField(name = "jbdm15")
+    private String jbdm15;
+
+    /**
+     * 主要手术
+     * 说明
+     */
+    @JSONField(name = "ssjczbm1")
+    private String ssjczbm1;
+
+    /**
+     * 主要手术名称
+     * 说明
+     */
+    @JSONField(name = "ssjczmc1")
+    private String ssjczmc1;
+
+    /**
+     * 其他手术(1)
+     * 说明
+     */
+    @JSONField(name = "ssjczbm2")
+    private String ssjczbm2;
+
+    /**
+     * 其他手术(2)
+     * 说明
+     */
+    @JSONField(name = "ssjczbm3")
+    private String ssjczbm3;
+
+    /**
+     * 其他手术(3)
+     * 说明
+     */
+    @JSONField(name = "ssjczbm4")
+    private String ssjczbm4;
+
+    /**
+     * 其他手术(4)
+     * 说明
+     */
+    @JSONField(name = "ssjczbm5")
+    private String ssjczbm5;
+
+
+}

+ 54 - 13
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/EmrServer.java

@@ -3,26 +3,29 @@ package thyyxxk.webserver.service.zhuyuanyisheng;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.google.gson.JsonObject;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.EmrType;
 import thyyxxk.webserver.dao.his.zhuyuanyisheng.EmrPatientDao;
 import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.drg.AuxiliaryFillingOfDiagnosis;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataElement;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataExtract;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
 import thyyxxk.webserver.service.PublicServer;
 import thyyxxk.webserver.service.externalhttp.emr.EmrEditor;
-import thyyxxk.webserver.utils.ListUtil;
-import thyyxxk.webserver.utils.ResultVoUtil;
-import thyyxxk.webserver.utils.TokenUtil;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import thyyxxk.webserver.utils.*;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -289,15 +292,53 @@ public class EmrServer {
 
 
     public ResultVo<String> getDrgIntelligentGrouping(String patNo, Integer times) {
+        // 获取诊断
         JSONArray diagnosis = getEmrData(patNo, times, EmrType.DIAGNOSIS);
+        // 获取手术
+        JSONArray operation = getEmrData(patNo, times, EmrType.OPERATION);
         int ledgerSn = publicServer.getLedgerSn(patNo, times);
-        Map<String, String> map = dao.drgPatientInfo(patNo, times, ledgerSn);
-        log.info("患者数据:{}", JSON.toJSON(map));
+        // 获取患者数据
+        Map<String, String> mapData = dao.drgPatientInfo(patNo, times, ledgerSn);
+
+        mapData.put("visit_id", patNo + "_" + times + "_" + ledgerSn);
+        mapData.put("bah", patNo + "_" + times);
+        for (int i = 0; i < diagnosis.size(); i++) {
+            JSONObject item = diagnosis.getJSONObject(i);
+            if (i == 0) {
+                mapData.put("jbdm", item.getString("code"));
+                mapData.put("zyzd", item.getString("name"));
+            } else {
+                mapData.put("jbdm" + i, item.getString("code"));
+            }
+        }
+        Map<String, JSONObject> surgicalSequencing = new TreeMap<>();
+        for (int i = 0; i < operation.size(); i++) {
+            JSONObject item = operation.getJSONObject(i);
+            String key = DateUtil.formatDatetime(item.getJSONObject("手术日期").getDate("value"));
+            surgicalSequencing.put(key, item);
+        }
+        int operationIndex = 1;
+        for (Map.Entry<String, JSONObject> o : surgicalSequencing.entrySet()) {
+            JSONObject item = o.getValue();
+            JSONArray list = item.getJSONObject("手术名称").getJSONArray("value");
+            for (int i = 0; i < list.size(); i++) {
+                JSONObject valueList = list.getJSONObject(i);
+                mapData.put("ssjczbm" + operationIndex, valueList.getString("code"));
+                if (operationIndex == 1) {
+                    mapData.put("ssjczmc" + operationIndex, valueList.getString("name"));
+                }
+                operationIndex++;
+            }
+        }
 
-        log.info("诊断数据:{}", JSON.toJSONString(diagnosis));
+        AuxiliaryFillingOfDiagnosis data = EntityCopy.Copy(mapData, AuxiliaryFillingOfDiagnosis.class);
+
+        String url = "http://172.16.32.126:8080/drg_web/localHelp/drg_dagns/list.action";
+        RestTemplate template = new RestTemplate();
+        String res = template.postForObject(url, JSON.parseObject(JSON.toJSONString(data, SerializerFeature.WriteNullStringAsEmpty)), String.class);
+        log.info("返回数据:{}", res);
+        log.info("数据:{}", JSON.toJSONString(data));
 
-        JSONArray operation = getEmrData(patNo, times, EmrType.OPERATION);
-        log.info("手术数据:{}", JSON.toJSONString(operation));
         return ResultVoUtil.success();
     }