|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|