|
@@ -1,18 +1,28 @@
|
|
|
package com.diagbot.facade.data;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.diagbot.dto.OutputInfo;
|
|
|
import com.diagbot.dto.Response;
|
|
|
-import com.diagbot.entity.MedicalRecord;
|
|
|
+import com.diagbot.entity.MedAdmissionNote;
|
|
|
+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.util.DateUtil;
|
|
|
+import com.diagbot.util.MapUtil;
|
|
|
import com.diagbot.vo.MedrecVo;
|
|
|
import com.diagbot.vo.QueryVo;
|
|
|
+import com.diagbot.vo.data.AColumnContentVO;
|
|
|
+import com.diagbot.vo.data.AMedAdmissionNoteVO;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -30,11 +40,15 @@ public class ColumnFacade extends ColumnServiceImpl {
|
|
|
@Autowired
|
|
|
private AMedFirstRecordFacade aMedFirstRecordFacade;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BasHospitalInfoFacade basHospitalInfoFacade;
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 解析
|
|
|
* @param modeId
|
|
|
*/
|
|
|
- public void analyseRec(String hospitalId, Long modeId, MedicalRecord medicalRecord){
|
|
|
+ public void analyseRec(String hospitalId, Long modeId, List<AColumnContentVO> aColumnContentVO){
|
|
|
try {
|
|
|
String modelName= ModeIdEnum.getName(Integer.parseInt(modeId.toString()));
|
|
|
QueryVo queryVo=new QueryVo();
|
|
@@ -42,32 +56,102 @@ public class ColumnFacade extends ColumnServiceImpl {
|
|
|
MedrecVo medrecVo=new MedrecVo();
|
|
|
medrecVo.setTitle(modelName);
|
|
|
Map<String, Object> map=new HashMap<String, Object>();
|
|
|
- map.put("content",medicalRecord);
|
|
|
+ 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);
|
|
|
- if(resp!=null && resp.getData()!=null && resp.getData().getPageData().size()>0){
|
|
|
- Map<String,Object> pageData=resp.getData().getPageData();
|
|
|
-
|
|
|
+ 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("入院记录".equals(modelName)){
|
|
|
+ medAdmissionNoteData(entityMap,Long.valueOf(hospitalId));
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- String voName=ModeIdFacadeEnum.getName(Integer.parseInt(modeId.toString()));
|
|
|
- MedFirstRecord
|
|
|
-
|
|
|
- aMedFirstRecordFacade.save();
|
|
|
- */
|
|
|
-
|
|
|
log.info(modelName+"---- 解析完成!");
|
|
|
}catch (Exception e){
|
|
|
log.error(e.getMessage(),e);
|
|
|
}
|
|
|
|
|
|
+ }
|
|
|
+
|
|
|
+ //入院记录
|
|
|
+ private void medAdmissionNoteData(Map<String, Object> entityMap,Long hospitalId){
|
|
|
+ try {
|
|
|
+ AMedAdmissionNoteVO medAdmissionNoteVO=(AMedAdmissionNoteVO)MapUtil.mapToObject(entityMap, AMedAdmissionNoteVO.class);
|
|
|
+ MedAdmissionNote medAdmissionNote=new MedAdmissionNote();
|
|
|
+ BeanUtils.copyProperties(medAdmissionNoteVO,medAdmissionNote);
|
|
|
+ medAdmissionNote.setHospitalId(hospitalId);//医院编码
|
|
|
+
|
|
|
+ medAdmissionNote.setAuditDate(DateUtil.parseDateTime(medAdmissionNoteVO.getAuditDate()));//审核时间
|
|
|
+ medAdmissionNote.setRecDate(DateUtil.parseDateTime(medAdmissionNoteVO.getRecDate()));//记录时间
|
|
|
+ medAdmissionNote.setBehospitalDate(DateUtil.parseDateTime(medAdmissionNoteVO.getBehospitalDate()));//入院日期
|
|
|
+ medAdmissionNote.setBirthday(DateUtil.parseDate(medAdmissionNoteVO.getBirthday()));//出生日期
|
|
|
+ medAdmissionNote.setRecordDate(DateUtil.parseDateTime(medAdmissionNoteVO.getRecordDate()));//病历日期
|
|
|
+
|
|
|
+ //判断数据库中是否存在,不存在insert
|
|
|
+ if(aMedAdmissionNoteFacade.isExist(medAdmissionNote)){
|
|
|
+ medAdmissionNote.setGmtCreate(new Date());//记录创建时间
|
|
|
+ aMedAdmissionNoteFacade.save(medAdmissionNote);
|
|
|
+ }else{
|
|
|
+ medAdmissionNote.setGmtModified(new Date());//记录修改时间
|
|
|
+ aMedAdmissionNoteFacade.update(medAdmissionNote,new QueryWrapper<MedAdmissionNote>()
|
|
|
+ .eq("rec_id", medAdmissionNote.getRecId())
|
|
|
+ .eq("hospital_id", medAdmissionNote.getHospitalId())
|
|
|
+ .eq("behospital_code", medAdmissionNote.getBehospitalCode()));
|
|
|
+ }
|
|
|
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error(e.getMessage(),e);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
}
|