浏览代码

增加解析相关代码

liuqq 4 年之前
父节点
当前提交
837f0a06b0

+ 14 - 0
src/main/java/com/diagbot/entity/QcType.java

@@ -34,6 +34,11 @@ public class QcType implements Serializable {
      */
     private String name;
 
+    /**
+     * 默认模版是否开启(0-否 1-是)
+     */
+    private Long defaultModule;
+
     /**
      * 备注
      */
@@ -136,12 +141,21 @@ public class QcType implements Serializable {
         this.modifier = modifier;
     }
 
+    public Long getDefaultModule() {
+        return defaultModule;
+    }
+
+    public void setDefaultModule(Long defaultModule) {
+        this.defaultModule = defaultModule;
+    }
+
     @Override
     public String toString() {
         return "QcType{" +
                 "id=" + id +
                 ", hospitalId=" + hospitalId +
                 ", name=" + name +
+                ", defaultModule=" + defaultModule +
                 ", remark=" + remark +
                 ", isDeleted=" + isDeleted +
                 ", gmtCreate=" + gmtCreate +

+ 11 - 21
src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java

@@ -148,29 +148,19 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 .eq("is_deleted",IsDeleteEnum.N), false);
         if(medicalRecord!=null){
             QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
-                    .eq("name",medicalRecord.getRecTitle())
-                    .eq("hospital_id", s.getHospitalId())
-                    .eq("is_deleted",IsDeleteEnum.N), false);
-            if(qcType!=null){
+                    .eq("name", medicalRecord.getRecTitle())
+                    .eq("hospital_id", medicalRecord.getHospitalId())
+                    .eq("is_deleted",IsDeleteEnum.N));
+            if(qcType!=null && qcType.getDefaultModule()==0){
                 qcTypeId=qcType.getId();
             }else{
-                //新增类型到qc_type表中
-                QcType qctype=new QcType();
-                qctype.setHospitalId(s.getHospitalId());
-                qctype.setName(medicalRecord.getRecTitle());
-                qctype.setGmtCreate(new Date());
-
-                Long id=qcTypeFacade.saveT(qctype);
-                qcTypeId=id;
-
-                //新增类型到监测表中
-                QcAbnormal qcAbnormal=new QcAbnormal();
-                qcAbnormal.setHospitalId(s.getHospitalId());
-                qcAbnormal.setBehospitalCode(s.getBehospitalCode());
-                qcAbnormal.setType(2);
-                qcAbnormal.setDescription(medicalRecord.getRecTitle());
-                qcAbnormal.setGmtCreate(new Date());
-                qcAbnormalFacade.getBaseMapper().insert(qcAbnormal);
+                QcType qcTypeStand=qcTypeFacade.getOne(new QueryWrapper<QcType>()
+                        .eq("default_module", 1)
+                        .eq("hospital_id", medicalRecord.getHospitalId())
+                        .eq("is_deleted",IsDeleteEnum.N));
+                if(qcTypeStand!=null){
+                    qcTypeId=qcTypeStand.getId();
+                }
             }
         }
         return qcTypeId;

+ 0 - 2
src/main/java/com/diagbot/facade/data/AMedAdmissionNoteFacade.java

@@ -62,11 +62,9 @@ public class AMedAdmissionNoteFacade extends MedAdmissionNoteServiceImpl {
                         .eq("hospital_id", medAdmissionNote.getHospitalId())
                         .eq("behospital_code", medAdmissionNote.getBehospitalCode()));
             }
-
         }catch (Exception e){
             log.error(e.getMessage(),e);
         }
-
     }
 
     public Boolean isExist(MedAdmissionNote medAdmissionNote){

+ 94 - 27
src/main/java/com/diagbot/facade/data/AMedicalRecordFacade.java

@@ -7,6 +7,8 @@ import com.diagbot.dto.data.AMedicalRecordDTO;
 import com.diagbot.dto.data.AMrContentDTO;
 import com.diagbot.entity.*;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.ModeIdEnum;
+import com.diagbot.facade.BasHospitalInfoFacade;
 import com.diagbot.facade.BehospitalInfoFacade;
 import com.diagbot.facade.ModelHospitalFacade;
 import com.diagbot.facade.QcTypeFacade;
@@ -17,6 +19,9 @@ import com.diagbot.util.DateUtil;
 import com.diagbot.util.ReadProperties;
 import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.AnalyzeRunVO;
+import com.diagbot.vo.MedrecVo;
+import com.diagbot.vo.QueryVo;
+import com.diagbot.vo.data.AColumnContentVO;
 import com.diagbot.vo.data.AMedicalRecordVO;
 import com.diagbot.vo.data.AMrContentVO;
 import com.google.common.collect.Lists;
@@ -58,6 +63,9 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
     @Autowired
     private ReadProperties readProperties;
 
+    @Autowired
+    private BasHospitalInfoFacade basHospitalInfoFacade;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -105,6 +113,44 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
         }
     }
 
+    /**
+     * 入参结构拼接-仅支持接口对接的方式
+     * @param aMrContentVO
+     */
+    public void splicingParam(AMrContentVO aMrContentVO){
+        QueryVo queryVo=new QueryVo();
+        List<MedrecVo> medreclist= Lists.newArrayList();
+
+        List<AColumnContentVO> content=Lists.newArrayList();
+        aMrContentVO.getRecords().stream().forEach(s -> {
+            queryVo.setHospitalId(s.getHospitalId().toString());
+            queryVo.setCid(basHospitalInfoFacade.getHosCode(s.getHospitalId()));
+
+            Long modeId=initModeId(s.getHospitalId(),s.getRecTitle());
+            s.getContents().stream().forEach(item->{
+                //拼接入参用于结构化解析
+                AColumnContentVO aColumnContentVO=new AColumnContentVO();
+                aColumnContentVO.setModeId(modeId);
+                aColumnContentVO.setStandModelName(ModeIdEnum.getName(Integer.parseInt(modeId.toString())));
+                aColumnContentVO.setRecId(s.getRecId());
+                aColumnContentVO.setRecTypeId(s.getRecTypeId());
+                aColumnContentVO.setRecTitle(s.getRecTitle());
+                aColumnContentVO.setXmlText(item.getXmlText());
+
+                content.add(aColumnContentVO);
+            });
+            Map<String, Object> map=new HashMap<String, Object>();
+            map.put("content",content);
+            MedrecVo medrecVo=new MedrecVo();
+            medrecVo.setTitle(ModeIdEnum.getName(Integer.parseInt(modeId.toString())));
+            medrecVo.setContent(map);
+            medreclist.add(medrecVo);
+        });
+        queryVo.setMedrec(medreclist);
+
+        columnFacade.analyseRec(queryVo);
+    }
+
     /**
      * 运行质控-通过接口更新病历记录
      * @param aMrContentVO
@@ -137,6 +183,9 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 aMedicalRecordContentFacade.executeMrRecordContent(s.getContents());
             });
 
+            //数据解析
+            splicingParam(aMrContentVO);
+
             //评分后返回结构体
             return mrIng(aMrContentVO);
 
@@ -222,38 +271,13 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                     qcAbnormal.setGmtCreate(new Date());
                     qcAbnormalList.add(qcAbnormal);
                 }else if(modeId==Long.valueOf("1")){
-
                     BehospitalInfo behospitalInfo = behospitalInfoFacade.getOne(new QueryWrapper<BehospitalInfo>()
                             .eq("behospital_code", s.getBehospitalCode())
                             .eq("hospital_id", s.getHospitalId()), false);
                     if(behospitalInfo!=null){
                         //如果病人住院信息存在,更新对应的qc_type_id
-                        Long qcTypeId=Long.valueOf("0");
-                        QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
-                                .eq("name",s.getRecTitle())
-                                .eq("hospital_id", s.getHospitalId())
-                                .eq("is_deleted",IsDeleteEnum.N), false);
-                        if(qcType!=null){
-                            behospitalInfo.setQcTypeId(qcType.getId());
-                        }else{
-                            //新增类型到qc_type表中
-                            QcType qctype=new QcType();
-                            qctype.setHospitalId(s.getHospitalId());
-                            qctype.setName(s.getRecTitle());
-                            qctype.setGmtCreate(new Date());
-
-                            Long id=qcTypeFacade.saveT(qctype);
-                            behospitalInfo.setQcTypeId(id);
-
-                            //新增类型到监测表中
-                            QcAbnormal qcAbnormal=new QcAbnormal();
-                            qcAbnormal.setHospitalId(s.getHospitalId());
-                            qcAbnormal.setBehospitalCode(s.getBehospitalCode());
-                            qcAbnormal.setType(2);
-                            qcAbnormal.setDescription(s.getRecTitle());
-                            qcAbnormal.setGmtCreate(new Date());
-                            qcAbnormalList.add(qcAbnormal);
-                        }
+                        Long qcTypeId=initQcTypeId(s);
+                        behospitalInfo.setQcTypeId(qcTypeId);
                         behospitalInfoList.add(behospitalInfo);
                     }
                 }
@@ -286,6 +310,30 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
         }
     }
 
+    /**
+     * 初始化质控类型ID
+     * @param medicalRecord
+     * @return
+     */
+    private Long initQcTypeId(MedicalRecord medicalRecord){
+        Long qcTypeId=Long.valueOf("0");
+        QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
+                .eq("name", medicalRecord.getRecTitle())
+                .eq("hospital_id", medicalRecord.getHospitalId())
+                .eq("is_deleted",IsDeleteEnum.N));
+        if(qcType!=null && qcType.getDefaultModule()==0){
+            qcTypeId=qcType.getId();
+        }else{
+            QcType qcTypeStand=qcTypeFacade.getOne(new QueryWrapper<QcType>()
+                    .eq("default_module", 1)
+                    .eq("hospital_id", medicalRecord.getHospitalId())
+                    .eq("is_deleted",IsDeleteEnum.N));
+            if(qcTypeStand!=null){
+                qcTypeId=qcTypeStand.getId();
+            }
+        }
+        return qcTypeId;
+    }
 
     /**
      * 初始化模型ID
@@ -306,4 +354,23 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
         return modeId;
     }
 
+    /**
+     * 初始化模型ID
+     * @param medicalRecord
+     * @return
+     */
+    private Long initModeId(Long hospitalId,String recTitle){
+        Long modeId=Long.valueOf("0");
+        QueryWrapper<ModelHospital> wrapper = new QueryWrapper<>();
+        wrapper.eq("hospital_id",hospitalId);
+        wrapper.eq("hospital_model_name",recTitle);
+        ModelHospital mode=modelHospitalFacade.getOne(wrapper, false);
+        if(mode!=null){
+            modeId=mode.getStandModelId();
+        }else{
+            modeId=Long.valueOf("0");
+        }
+        return modeId;
+    }
+
 }

+ 16 - 69
src/main/java/com/diagbot/facade/data/ColumnFacade.java

@@ -1,17 +1,12 @@
 package com.diagbot.facade.data;
 
-import com.alibaba.fastjson.JSON;
 import com.diagbot.dto.OutputInfo;
 import com.diagbot.dto.Response;
 import com.diagbot.enums.CacheKeyEnum;
-import com.diagbot.enums.ModeIdEnum;
 import com.diagbot.facade.BasHospitalInfoFacade;
 import com.diagbot.facade.QcClientFacade;
 import com.diagbot.service.impl.ColumnServiceImpl;
-import com.diagbot.vo.MedrecVo;
 import com.diagbot.vo.QueryVo;
-import com.diagbot.vo.data.AColumnContentVO;
-import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -30,74 +25,26 @@ public class ColumnFacade extends ColumnServiceImpl {
 
     /**
      * 解析
-     * @param modeId
+     * @param queryVo
      */
-    public void analyseRec(String hospitalId, Long modeId, List<AColumnContentVO> aColumnContentVO){
+    public void analyseRec(QueryVo queryVo){
         try {
-            String modelName= ModeIdEnum.getName(Integer.parseInt(modeId.toString()));
-            QueryVo queryVo=new QueryVo();
-            List<MedrecVo> list= Lists.newArrayList();
-            MedrecVo medrecVo=new MedrecVo();
-            medrecVo.setTitle(modelName);
-            Map<String, Object> map=new HashMap<String, Object>();
-            List content=Lists.newArrayList();
-            aColumnContentVO.stream().forEach(s->{
-                content.add(s);
-            });
-
-            map.put("content",content);
-            medrecVo.setContent(map);
-
-            list.add(medrecVo);
-            queryVo.setHospitalId(hospitalId);
-            queryVo.setCid(basHospitalInfoFacade.getHosCode(Long.valueOf(hospitalId)));
-            queryVo.setMedrec(list);
-
             Response<OutputInfo> resp=qcClientFacade.analyseField(queryVo);
-            String paramIn= JSON.toJSONString(queryVo);
-            String paramOut="{" +
-                    "        \"result\": {}," +
-                    "        \"pageData\": {" +
-                    "            \"入院记录\": [" +
-                    "                {" +
-                    "                    \"职业\": \"农民 \"," +
-                    "                    \"联系人\": \"儿子 13958306196\"," +
-                    "                    \"联系地址\": \"浙江省宁波市北仑区 \"," +
-                    "                    \"出院诊断\": \"前列腺癌\"," +
-                    "                    \"出院时间\": \"2020-06-07 13:01\"," +
-                    "                    \"主诉\": \"发现前列腺癌4年余,要求内分泌治疗\"," +
-                    "                    \"入院诊断\": \"前列腺癌\"," +
-                    "                    \"出生地\": \"浙江省宁波市北仑区\"," +
-                    "                    \"辅助检查\": \"年月日本院暂缺\"," +
-                    "                    \"婚姻\": \"已婚\"," +
-                    "                    \"其他\": \"无\"," +
-                    "                    \"入院情况\": \"发现前列腺癌4年余,要求内分泌治疗\"," +
-                    "                    \"专科检查\": \"双肾区未及肿块,无压痛,双肾区无叩击痛,双侧输尿管走行区无压痛,膀胱未及充盈,未及肿块,区域淋巴结未及肿大。生殖器发育正常,尿道外口无红肿及脓血性分泌物,双侧睾丸附睾及精索未见异常。肛诊前列腺:5.5×5.0cm大小,质硬,无压痛,表面光滑,中央沟消失,边界清楚,未及明显结节,指套无红染。\"," +
-                    "                    \"诊疗经过\": \"1、泌尿外科护理常规,普食,II级护理,2.完善相关检查,如血常规、肝肾功能、血PSA等检查,排外全身疾病及禁忌后予康士德联合戈舍瑞林行内分泌,并给予唑来磷酸针抗骨转移治疗。\"," +
-                    "                    \"民族\": \"汉族\"," +
-                    "                    \"病史陈述者\": \"患者本人及亲属\"," +
-                    "                    \"入院日期\": \"2020-06-07\"," +
-                    "                    \"联系电话\": \"13958306196\"," +
-                    "                    \"mode_id\": \"369\"," +
-                    "                    \"出生日期\": \"1932-04-04\"," +
-                    "                    \"出院情况\": \"患者下腹部及腰部酸痛,无发热、畏寒,无胸闷、气促,无恶心、呕吐等不适,查体无殊。\"," +
-                    "                    \"出院医嘱\": \"1.注意事项:多饮水,多休息;定期复查,28天返院复查并行内分泌治疗。联系电话:联系电话2.随访计划:28天返院复查并行内分泌治疗3.出院带药:!(10mg)盐酸羟考酮缓释片(奥施康(/10mg*10片)/1片 一日2次 口服。\"" +
-                    "                }" +
-                    "            ]" +
-                    "        }" +
-                    "    }";
-            Map<String, Map<String, Object>> paramOutMap=(Map<String, Map<String, Object>>)JSON.parse(paramOut);
-            List<Map<String,Object>> listMap =(List<Map<String,Object>>)paramOutMap.get("pageData").get(modelName);
-            Map<String, Object> entityMap=new HashMap<String, Object>();
-            Map<String, String> columnMap=this.getColumn(CacheKeyEnum.getName(modelName));
-            listMap.forEach(s->{
-                columnMap.forEach((key, value) -> {
-                    entityMap.put(value,s.get(key));
+            if(resp.getData()!=null && resp.getData().getPageData()!=null){
+                Map<String, Object> pageData=resp.getData().getPageData();
+                pageData.forEach((key,value)->{
+                    List<Map<String, Object>> listMap=(List<Map<String,Object>>)resp.getData().getPageData().get(CacheKeyEnum.getName(key));
+                    Map<String, String> columnMap=this.getColumn(CacheKeyEnum.getName(key));
+                    Map<String, Object> entityMap=new HashMap<String, Object>();
+                    listMap.forEach(s->{
+                        columnMap.forEach((k, v) -> {
+                            entityMap.put(v,s.get(k));
+                        });
+                    });
+                    //数据解析
+                    analysisData(CacheKeyEnum.getName(key),entityMap,Long.valueOf(queryVo.getHospitalId()));
                 });
-            });
-            //数据解析
-            analysisData(modelName,entityMap,Long.valueOf(hospitalId));
-
+            }
         }catch (Exception e){
             log.error(e.getMessage(),e);
         }

+ 2 - 1
src/main/java/com/diagbot/web/DataController.java

@@ -148,6 +148,7 @@ public class DataController {
         return aMedCrisisFacade.executeMedCrisis(list);
     }
 
+    /*
     @ApiOperation(value = "数据引擎-列字段名和注释")
     @PostMapping("/getColumnZhAndCh")
     @SysLogger("getColumnZhAndCh")
@@ -163,5 +164,5 @@ public class DataController {
     public RespDTO analyseRec(@RequestBody AColumnVO aColumnVO){
         columnFacade.analyseRec(aColumnVO.getHospitalId(),aColumnVO.getModeId(),aColumnVO.getContent());
         return RespDTO.onSuc(true);
-    }
+    }*/
 }

+ 1 - 0
src/main/resources/mapper/QcTypeMapper.xml

@@ -7,6 +7,7 @@
         <id column="id" property="id" />
         <result column="hospital_id" property="hospitalId" />
         <result column="name" property="name" />
+        <result column="default_module" property="defaultModule" />
         <result column="remark" property="remark" />
         <result column="is_deleted" property="isDeleted" />
         <result column="gmt_create" property="gmtCreate" />