Browse Source

恩泽解析修改

rengb 4 years ago
parent
commit
502104bebd

+ 255 - 15
kernel/src/main/java/com/lantone/qc/kernel/analysis/EZAnalysis.java

@@ -5,16 +5,11 @@ import com.google.common.collect.Maps;
 import com.lantone.qc.dbanaly.util.SpecialStorageUtil;
 import com.lantone.qc.kernel.client.CRFServiceClient;
 import com.lantone.qc.kernel.client.SimilarityServiceClient;
-import com.lantone.qc.kernel.structure.ai.AIAnalyze;
-import com.lantone.qc.kernel.util.CatalogueUtil;
-import com.lantone.qc.pub.exception.AIException;
-import com.lantone.qc.pub.exception.CatalogueException;
-import com.lantone.qc.pub.model.InputInfo;
-import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
 import com.lantone.qc.pub.model.vo.EzAnalysisVO;
-import com.lantone.qc.pub.model.vo.QueryVo;
 import com.lantone.qc.pub.res.EzAnalysisDTO;
-import com.lantone.qc.trans.TransDispatch;
+import com.lantone.qc.trans.beilun.util.ez.EzXmlAnalysis;
+import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -38,16 +33,261 @@ public class EZAnalysis {
     @Autowired
     SimilarityServiceClient similarityServiceClient;
 
-    public List<EzAnalysisDTO> anlysis(EzAnalysisVO ezAnalysisVO) {
+    public List<EzAnalysisDTO> anlysis(EzAnalysisVO ezAnalysisVO) throws Exception {
         List<EzAnalysisDTO> details = Lists.newArrayList();
-
-        for(int i=0;i<100;i++){
+        Map<String, String> sourceMap = EzXmlAnalysis.analysisEk(ezAnalysisVO.getDeptName(), ezAnalysisVO.getXml());
+        Map<String, String> structMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
+        BeHospitalizedDoc beHospitalizedDoc = new BeHospitalizedDoc();
+        Map<String, String> keyMaps = getKmaps();
+        kys.forEach(ky -> {
             EzAnalysisDTO ezAnalysisDTO = new EzAnalysisDTO();
-            ezAnalysisDTO.setCode("DE04.10.195.00");
-            ezAnalysisDTO.setModelName("专科情况\n");
-            ezAnalysisDTO.setModelValue("两锁骨上及腹股沟区淋巴结未及肿大,腹膨隆,可见陈旧性手术疤痕,未见胃肠型及蠕动波,全腹无压痛、反跳痛、肌紧张,全腹未触及明显异常包块,肝脾肋下未及,叩诊呈鼓音,移动性浊音(-),听诊肠鸣音约3次/分,音不亢。肛检:距肛7cm以内未及肿块,退出指套无染血。\n");
+            ezAnalysisDTO.setCode(keyMaps.get(ky));
+            ezAnalysisDTO.setModelName(ky);
+            ezAnalysisDTO.setModelValue(structMap.get(ky));
             details.add(ezAnalysisDTO);
-        }
+        });
+
         return details;
     }
+
+    private List<String> keyContrasts = Lists.newArrayList(
+            "体温=体格检查--体温(℃)",
+            "脉搏=体格检查--脉率(次/min)",
+            "呼吸=体格检查--呼吸频率(次/min)",
+            "收缩压=体格检查--收缩压(mmHg)",
+            "舒张压=体格检查--舒张压(mmHg)",
+            "身高=体格检查--身高(cm)",
+            "体重=体格检查--体重(kg)",
+            "一般情况=体格检查--一般状况检查结果",
+            "皮肤黏膜=体格检查--皮肤和黏膜检查结果",
+            "浅表淋巴结=体格检查--全身浅表淋巴结检查结果",
+            "头部及其器官=体格检查--头部及其器官检查结果",
+            "颈部=体格检查--颈部检查结果",
+            "胸部=体格检查--胸部检查结果",
+            "腹部=体格检查--腹部检查结果",
+            "肛门及直肠=体格检查--肛门指诊检查结果描述",
+            "外生殖器=体格检查--外生殖器检查结果",
+            "脊柱=体格检查--脊柱检查结果",
+            "四肢=体格检查--四肢检查结果",
+            "神经系统=体格检查--神经系统检查结果",
+            "专科检查=专科情况",
+            "辅助检查=辅助检查结果",
+            "初步诊断=初步诊断-西医诊断名称",
+            "初步诊断签名日期=初步诊断日期",
+            "修正诊断=修正诊断-西医诊断名称",
+            "修正诊断签名日期=修正诊断日期",
+            "补充诊断=补充诊断名称",
+            "补充诊断签名日期=补充诊断日期",
+            "姓名=患者姓名",
+            "性别=性别代码",
+            "年龄岁=年龄(岁)",
+            "年龄月=年龄(月)",
+            "民族=民族",
+            "婚姻状况=婚姻状况代码",
+            "职业=职业类别代码",
+            "新入院时间=入院日期时间",
+            "病史陈述者=病史陈述者姓名",
+            "主诉=主诉",
+            "现病史=现病史",
+            "预防接种史=预防接种史",
+            "手术史=手术史",
+            "输血史=输血史",
+            "过敏史=过敏史",
+            "个人史=个人史",
+            "婚育史=婚育史",
+            "月经史=月经史",
+            "家族史=家族史"
+    );
+
+    private List<String> kmaps = Lists.newArrayList(
+            "DE01.00.014.00=住院号",
+            "DE08.10.054.00=病区名称",
+            "DE08.10.026.00=科室名称",
+            "DE01.00.019.00=病房号",
+            "DE01.00.026.00=病床号",
+            "DE02.01.039.00=患者姓名",
+            "DE02.01.040.00=性别代码",
+            "DE02.01.026.00=年龄(岁)",
+            "DE02.01.032.00=年龄(月)",
+            "DE02.01.025.00=民族",
+            "DE02.01.018.00=婚姻状况代码",
+            "DE02.01.009.01=地址-省(自治区、直辖市)",
+            "DE02.01.009.02=地址-市(地区、州)",
+            "DE02.01.009.03=地址-县(区)",
+            "DE02.01.009.04=地址-乡(镇、街道办事处)",
+            "DE02.01.009.05=地址-村(街、路、弄等)",
+            "DE02.01.009.06=地址-门牌号码",
+            "DE02.01.052.00=职业类别代码",
+            "DE06.00.092.00=入院日期时间",
+            "DE02.01.039.00=病史陈述者姓名",
+            "DE02.10.024.00=陈述者与患者的关系代码",
+            "DE05.10.143.00=陈述内容可靠标志",
+            "DE04.01.119.00=主诉",
+            "DE02.10.071.00=现病史",
+            "DE05.10.031.00=一般健康状况标志",
+            "DE02.10.026.00=疾病史(含外伤)",
+            "DE05.10.119.00=患者传染性标志",
+            "DE02.10.008.00=传染病史",
+            "DE02.10.101.00=预防接种史",
+            "DE02.10.061.00=手术史",
+            "DE02.10.100.00=输血史",
+            "DE02.10.022.00=过敏史",
+            "DE02.10.097.00=个人史",
+            "DE02.10.098.00=婚育史",
+            "DE02.10.102.00=月经史",
+            "DE02.10.103.00=家族史",
+            "DE04.10.186.00=体格检查--体温(℃)",
+            "DE04.10.118.00=体格检查--脉率(次/min)",
+            "DE04.10.081.00=体格检查--呼吸频率(次/min)",
+            "DE04.10.174.00=体格检查--收缩压(mmHg)",
+            "DE04.10.176.00=体格检查--舒张压(mmHg)",
+            "DE04.10.167.00=体格检查--身高(cm)",
+            "DE04.10.188.00=体格检查--体重(kg)",
+            "DE04.10.219.00=体格检查--一般状况检查结果",
+            "DE04.10.126.00=体格检查--皮肤和黏膜检查结果",
+            "DE04.10.114.00=体格检查--全身浅表淋巴结检查结果",
+            "DE04.10.261.00=体格检查--头部及其器官检查结果",
+            "DE04.10.255.00=体格检查--颈部检查结果",
+            "DE04.10.263.00=体格检查--胸部检查结果",
+            "DE04.10.046.00=体格检查--腹部检查结果",
+            "DE04.10.065.00=体格检查--肛门指诊检查结果描述",
+            "DE04.10.195.00=体格检查--外生殖器检查结果",
+            "DE04.10.093.00=体格检查--脊柱检查结果",
+            "DE04.10.179.00=体格检查--四肢检查结果",
+            "DE05.10.149.00=体格检查--神经系统检查结果",
+            "DE08.10.061.00=专科情况",
+            "DE04.30.009.00=辅助检查结果",
+            "DE02.10.028.00=中医“四诊”观察结果",
+            "DE06.00.300.00=治则治法",
+            "DE05.01.025.00=初步诊断-西医诊断名称",
+            "DE05.01.024.00=初步诊断-西医诊断编码",
+            "DE05.10.172.00=初步诊断-中医病名名称",
+            "DE05.10.130.00=初步诊断-中医病名代码",
+            "DE05.10.172.00=初步诊断-中医证候名称",
+            "DE05.10.130.00=初步诊断-中医证候代码",
+            "DE05.01.058.00=初步诊断日期",
+            "DE05.01.025.00=修正诊断-西医诊断名称",
+            "DE05.01.024.00=修正诊断-西医诊断编码",
+            "DE05.10.172.00=修正诊断-中医病名名称",
+            "DE05.10.130.00=修正诊断-中医病名代码",
+            "DE05.10.172.00=修正诊断-中医证候名称",
+            "DE05.10.130.00=修正诊断-中医证候代码",
+            "DE05.01.058.00=修正诊断日期",
+            "DE05.01.025.00=确定诊断-西医诊断名称",
+            "DE05.01.024.00=确定诊断-西医诊断编码",
+            "DE05.10.172.00=确定诊断-中医病名名称",
+            "DE05.10.130.00=确定诊断-中医病名代码",
+            "DE05.10.172.00=确定诊断-中医证候名称",
+            "DE05.10.130.00=确定诊断-中医证候代码",
+            "DE05.01.058.00=确定诊断日期",
+            "DE05.01.025.00=补充诊断名称",
+            "DE05.01.024.00=补充诊断编码",
+            "DE05.01.058.00=补充诊断日期",
+            "DE05.01.080.00=入院诊断顺位",
+            "DE02.01.039.00=接诊医师签名",
+            "DE02.01.039.00=住院医师签名",
+            "DE02.01.039.00=主治医师签名",
+            "DE02.01.039.00=主任医师签名"
+    );
+
+    private List<String> kys = Lists.newArrayList(
+            "住院号",
+            "病区名称",
+            "科室名称",
+            "病房号",
+            "病床号",
+            "患者姓名",
+            "性别代码",
+            "年龄(岁)",
+            "年龄(月)",
+            "民族",
+            "婚姻状况代码",
+            "地址-省(自治区、直辖市)",
+            "地址-市(地区、州)",
+            "地址-县(区)",
+            "地址-乡(镇、街道办事处)",
+            "地址-村(街、路、弄等)",
+            "地址-门牌号码",
+            "职业类别代码",
+            "入院日期时间",
+            "病史陈述者姓名",
+            "陈述者与患者的关系代码",
+            "陈述内容可靠标志",
+            "主诉",
+            "现病史",
+            "一般健康状况标志",
+            "疾病史(含外伤)",
+            "患者传染性标志",
+            "传染病史",
+            "预防接种史",
+            "手术史",
+            "输血史",
+            "过敏史",
+            "个人史",
+            "婚育史",
+            "月经史",
+            "家族史",
+            "体格检查--体温(℃)",
+            "体格检查--脉率(次/min)",
+            "体格检查--呼吸频率(次/min)",
+            "体格检查--收缩压(mmHg)",
+            "体格检查--舒张压(mmHg)",
+            "体格检查--身高(cm)",
+            "体格检查--体重(kg)",
+            "体格检查--一般状况检查结果",
+            "体格检查--皮肤和黏膜检查结果",
+            "体格检查--全身浅表淋巴结检查结果",
+            "体格检查--头部及其器官检查结果",
+            "体格检查--颈部检查结果",
+            "体格检查--胸部检查结果",
+            "体格检查--腹部检查结果",
+            "体格检查--肛门指诊检查结果描述",
+            "体格检查--外生殖器检查结果",
+            "体格检查--脊柱检查结果",
+            "体格检查--四肢检查结果",
+            "体格检查--神经系统检查结果",
+            "专科情况",
+            "辅助检查结果",
+            "中医“四诊”观察结果",
+            "治则治法",
+            "初步诊断-西医诊断名称",
+            "初步诊断-西医诊断编码",
+            "初步诊断-中医病名名称",
+            "初步诊断-中医病名代码",
+            "初步诊断-中医证候名称",
+            "初步诊断-中医证候代码",
+            "初步诊断日期",
+            "修正诊断-西医诊断名称",
+            "修正诊断-西医诊断编码",
+            "修正诊断-中医病名名称",
+            "修正诊断-中医病名代码",
+            "修正诊断-中医证候名称",
+            "修正诊断-中医证候代码",
+            "修正诊断日期",
+            "确定诊断-西医诊断名称",
+            "确定诊断-西医诊断编码",
+            "确定诊断-中医病名名称",
+            "确定诊断-中医病名代码",
+            "确定诊断-中医证候名称",
+            "确定诊断-中医证候代码",
+            "确定诊断日期",
+            "补充诊断名称",
+            "补充诊断编码",
+            "补充诊断日期",
+            "入院诊断顺位",
+            "接诊医师签名",
+            "住院医师签名",
+            "主治医师签名",
+            "主任医师签名"
+    );
+
+    private Map<String, String> getKmaps() {
+        Map<String, String> map = Maps.newLinkedHashMap();
+        kmaps.forEach(kmap -> {
+            String[] arry = kmap.split("=");
+            map.put(arry[1], arry[0]);
+        });
+        return map;
+    }
+
 }

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/web/controller/EzController.java

@@ -25,7 +25,7 @@ import java.util.List;
 @Slf4j
 @Api(value = "恩泽服务接口")
 @RestController
-@CrossOrigin(origins = "*",maxAge = 3600)
+@CrossOrigin(origins = "*", maxAge = 3600)
 @RequestMapping(value = "ez")
 public class EzController {
 
@@ -34,7 +34,7 @@ public class EzController {
 
     @ApiOperation(value = "恩泽解析接口")
     @PostMapping("jx")
-    public Response<List<EzAnalysisDTO>> ezAnalysis(@RequestBody EzAnalysisVO ezAnalysisVO) {
+    public Response<List<EzAnalysisDTO>> ezAnalysis(@RequestBody EzAnalysisVO ezAnalysisVO) throws Exception {
         Response response = new Response();
         response.setData(ezAnalysis.anlysis(ezAnalysisVO));
         return response;

+ 13 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/ez/EzXmlAnalysis.java

@@ -126,6 +126,19 @@ public class EzXmlAnalysis {
             ((List<Element>) jbxxNode.selectNodes("fieldelem")).forEach(i -> {
                 elementInsertMap(i, map);
             });
+            String age = map.get("年龄");
+            String ageYear = "";
+            String ageMon = "";
+            if (StringUtil.isNotBlank(age)) {
+                ageYear = age;
+                if (age.indexOf("岁") > -1) {
+                    ageYear = age;
+                } else if (age.indexOf("月") > -1) {
+                    ageMon = age;
+                }
+            }
+            map.put("年龄岁", ageYear);
+            map.put("年龄月", ageMon);
             rootElement.remove(jbxxNode);
         }
     }