Browse Source

hisDataDeal数据引擎-历史数据结构化处理接口:添加指定住院号批量处理数据

huj 4 years ago
parent
commit
23946087bc

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

@@ -12,23 +12,13 @@ import com.diagbot.facade.BasHospitalInfoFacade;
 import com.diagbot.facade.BehospitalInfoFacade;
 import com.diagbot.facade.ModelHospitalFacade;
 import com.diagbot.facade.QcTypeFacade;
-import com.diagbot.service.MedicalRecordService;
 import com.diagbot.service.impl.MedicalRecordServiceImpl;
 import com.diagbot.service.impl.QcAbnormalServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.EncrypDES;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.ReadProperties;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 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.AMedicalRecordContentVO;
-import com.diagbot.vo.data.AMedicalRecordVO;
-import com.diagbot.vo.data.AMrContentVO;
-import com.diagbot.vo.data.HisDataDealVO;
+import com.diagbot.vo.data.*;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -82,18 +72,19 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
      */
     public void executeMrRecord() {
         //String sql="select * from mr_medicalrecords  where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        String sql="select * from mr_medicalrecords  where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
+        String sql = "select * from mr_medicalrecords  where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
         List<MedicalRecord> medicalRecordList = tzDBConn.getMedicalRecord(sql);
         execute(medicalRecordList);
     }
 
     /**
      * 终末质控-通过接口更新病历记录
+     *
      * @param list
      * @return
      */
     public RespDTO<List<AMedicalRecordDTO>> executeMrRecord(List<AMedicalRecordVO> list) {
-        if(list!=null && list.size()>0) {
+        if (list != null && list.size() > 0) {
             //循环验证数据有效性
             for (AMedicalRecordVO aMedicalRecordVO : list) {
                 if ("".equals(aMedicalRecordVO.getRecId())) {
@@ -107,9 +98,9 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
             //装载数据
             List<MedicalRecord> medicalRecordList = Lists.newArrayList();
-            list.stream().forEach(s->{
-                MedicalRecord medicalRecord=new MedicalRecord();
-                BeanUtil.copyProperties(s,medicalRecord);
+            list.stream().forEach(s -> {
+                MedicalRecord medicalRecord = new MedicalRecord();
+                BeanUtil.copyProperties(s, medicalRecord);
                 medicalRecord.setRecDate(DateUtil.parseDateTime(s.getRecDate()));
                 medicalRecordList.add(medicalRecord);
             });
@@ -117,15 +108,18 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
             List<AMedicalRecordDTO> medicalRecordDTOList = BeanUtil.listCopyTo(list, AMedicalRecordDTO.class);
             return RespDTO.onSuc(medicalRecordDTOList);
-        }else{
+        } else {
             return RespDTO.onError("未接收到数据!");
         }
     }
 
-    public boolean hisDataDeal(HisDataDealVO hisDataDealVO){
+    public boolean hisDataDeal(HisDataDealVO hisDataDealVO) {
         QueryWrapper<MedicalRecord> medicalRecordQe = new QueryWrapper<>();
         medicalRecordQe.eq("hospital_id", hisDataDealVO.getHospitalId());
         medicalRecordQe.eq("mode_id", hisDataDealVO.getModeId());
+        if (hisDataDealVO.getBehospitalCodeList().size() > 0) {
+            medicalRecordQe.in("rec_id", hisDataDealVO.getBehospitalCodeList());
+        }
         List<MedicalRecord> medicalRecordList = medicalRecordService.list(medicalRecordQe);
         medicalRecordList.forEach(medicalRecord -> {
             QueryWrapper<MedicalRecordContent> medicalRecordContentQe = new QueryWrapper<>();
@@ -133,7 +127,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
             medicalRecordContentQe.eq("rec_id", medicalRecord.getRecId());
             List<MedicalRecordContent> medicalRecordContentList = aMedicalRecordContentFacade.list(medicalRecordContentQe);
 
-            if (ListUtil.isEmpty(medicalRecordContentList)){
+            if (ListUtil.isEmpty(medicalRecordContentList)) {
                 return;
             }
 
@@ -164,21 +158,22 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
     /**
      * 入参结构拼接-仅支持接口对接的方式
+     *
      * @param aMrContentVO
      */
-    public void splicingParam(AMrContentVO aMrContentVO){
-        QueryVo queryVo=new QueryVo();
-        List<MedrecVo> medreclist= Lists.newArrayList();
+    public void splicingParam(AMrContentVO aMrContentVO) {
+        QueryVo queryVo = new QueryVo();
+        List<MedrecVo> medreclist = Lists.newArrayList();
 
-        List<AColumnContentVO> content=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->{
+            Long modeId = initModeId(s.getHospitalId(), s.getRecTitle());
+            s.getContents().stream().forEach(item -> {
                 //拼接入参用于结构化解析
-                AColumnContentVO aColumnContentVO=new AColumnContentVO();
+                AColumnContentVO aColumnContentVO = new AColumnContentVO();
                 aColumnContentVO.setModeId(modeId);
                 aColumnContentVO.setStandModelName(ModeIdEnum.getName(Integer.parseInt(modeId.toString())));
                 aColumnContentVO.setRecId(s.getRecId());
@@ -188,9 +183,9 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
                 content.add(aColumnContentVO);
             });
-            Map<String, Object> map=new HashMap<String, Object>();
-            map.put("content",content);
-            MedrecVo medrecVo=new MedrecVo();
+            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);
@@ -202,12 +197,13 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
     /**
      * 运行质控-通过接口更新病历记录
+     *
      * @param aMrContentVO
      * @return
      */
     public RespDTO<Map<String, Object>> executeMrRecordIng(AMrContentVO aMrContentVO) {
-        if(aMrContentVO.getRecords()!=null && aMrContentVO.getRecords().size()>0){
-            AMrContentDTO aMrContentDTO=new AMrContentDTO();
+        if (aMrContentVO.getRecords() != null && aMrContentVO.getRecords().size() > 0) {
+            AMrContentDTO aMrContentDTO = new AMrContentDTO();
             //循环验证数据有效性
             for (AMedicalRecordVO aMedicalRecordVO : aMrContentVO.getRecords()) {
                 if ("".equals(aMedicalRecordVO.getRecId())) {
@@ -238,94 +234,95 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
             //评分后返回结构体
             return mrIng(aMrContentVO);
 
-        }else{
+        } else {
             return RespDTO.onError("未接收到数据!");
         }
     }
 
     /**
      * 评分后返回结构体
+     *
      * @param aMrContentVO
      * @return
      */
-    private RespDTO<Map<String, Object>> mrIng(AMrContentVO aMrContentVO){
-        String behospitalCode =aMrContentVO.getRecords().get(0).getBehospitalCode();
-        Long hospitalId=aMrContentVO.getRecords().get(0).getHospitalId();
-        MedicalRecord medicalRecord=new MedicalRecord();
-        BeanUtil.copyProperties(aMrContentVO.getRecords().get(0),medicalRecord);
-        Long modeId=initModeId(medicalRecord);
-        if(aMrContentVO.getDockModeType().equals("0")){
-            Map<String,Object> map=new HashMap<String,Object>();
+    private RespDTO<Map<String, Object>> mrIng(AMrContentVO aMrContentVO) {
+        String behospitalCode = aMrContentVO.getRecords().get(0).getBehospitalCode();
+        Long hospitalId = aMrContentVO.getRecords().get(0).getHospitalId();
+        MedicalRecord medicalRecord = new MedicalRecord();
+        BeanUtil.copyProperties(aMrContentVO.getRecords().get(0), medicalRecord);
+        Long modeId = initModeId(medicalRecord);
+        if (aMrContentVO.getDockModeType().equals("0")) {
+            Map<String, Object> map = new HashMap<String, Object>();
             List<AMedicalRecordDTO> medicalRecordDTOList = BeanUtil.listCopyTo(aMrContentVO.getRecords(), AMedicalRecordDTO.class);
-            map.put("records",medicalRecordDTOList);
+            map.put("records", medicalRecordDTOList);
             return RespDTO.onSuc(map);
-        }else if(aMrContentVO.getDockModeType().equals("1")){
-            if(modeId==0 || modeId==null){
+        } else if (aMrContentVO.getDockModeType().equals("1")) {
+            if (modeId == 0 || modeId == null) {
                 return RespDTO.onError("无对应的文书类型");
             }
             //页面模式
-            String url=readProperties.getProcessQcUrl()+"?behospitalCode="+behospitalCode+"&hospitalId="+hospitalId+"&modeId="+modeId;
-            Map<String,Object> map=new HashMap<String,Object>();
-            map.put("url",url);
+            String url = readProperties.getProcessQcUrl() + "?behospitalCode=" + behospitalCode + "&hospitalId=" + hospitalId + "&modeId=" + modeId;
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("url", url);
             return RespDTO.onSuc(map);
-        }else if(aMrContentVO.getDockModeType().equals("2")){
-            AnalyzeRunVO analyzeRunVO=new AnalyzeRunVO();
+        } else if (aMrContentVO.getDockModeType().equals("2")) {
+            AnalyzeRunVO analyzeRunVO = new AnalyzeRunVO();
             analyzeRunVO.setBehospitalCode(behospitalCode);
             analyzeRunVO.setHospitalId(hospitalId);
             analyzeRunVO.setModeId(modeId);
-            AnalyzeRunDTO analyzeRunDTO=behospitalInfoFacade.analyzeRun(analyzeRunVO);
-            Map<String,Object> map=new HashMap<String,Object>();
-            if(analyzeRunDTO.getMsgDTOList().size()>0){
-                map.put("analyze",analyzeRunDTO.getMsgDTOList());
+            AnalyzeRunDTO analyzeRunDTO = behospitalInfoFacade.analyzeRun(analyzeRunVO);
+            Map<String, Object> map = new HashMap<String, Object>();
+            if (analyzeRunDTO.getMsgDTOList().size() > 0) {
+                map.put("analyze", analyzeRunDTO.getMsgDTOList());
             }
             //接口引擎模式
             return RespDTO.onSuc(map);
-        }else{
-            if(modeId==0 || modeId==null){
+        } else {
+            if (modeId == 0 || modeId == null) {
                 return RespDTO.onError("无对应的文书类型");
             }
             //页面模式
-            String url=readProperties.getProcessQcUrl()+"?behospitalCode="+behospitalCode+"&hospitalId="+hospitalId+"&modeId="+modeId;
+            String url = readProperties.getProcessQcUrl() + "?behospitalCode=" + behospitalCode + "&hospitalId=" + hospitalId + "&modeId=" + modeId;
 
-            AnalyzeRunVO analyzeRunVO=new AnalyzeRunVO();
+            AnalyzeRunVO analyzeRunVO = new AnalyzeRunVO();
             analyzeRunVO.setBehospitalCode(behospitalCode);
             analyzeRunVO.setHospitalId(hospitalId);
             analyzeRunVO.setModeId(modeId);
-            AnalyzeRunDTO analyzeRunDTO=behospitalInfoFacade.analyzeRun(analyzeRunVO);
-            Map<String,Object> map=new HashMap<String,Object>();
-            if(analyzeRunDTO.getMsgDTOList().size()>0){
-                map.put("url",url);
-                map.put("analyze",analyzeRunDTO.getMsgDTOList());
+            AnalyzeRunDTO analyzeRunDTO = behospitalInfoFacade.analyzeRun(analyzeRunVO);
+            Map<String, Object> map = new HashMap<String, Object>();
+            if (analyzeRunDTO.getMsgDTOList().size() > 0) {
+                map.put("url", url);
+                map.put("analyze", analyzeRunDTO.getMsgDTOList());
             }
             return RespDTO.onSuc(map);
         }
     }
 
-    public void execute(List<MedicalRecord> medicalRecordList){
+    public void execute(List<MedicalRecord> medicalRecordList) {
         List<MedicalRecord> addE = Lists.newLinkedList();
         List<MedicalRecord> updateE = Lists.newLinkedList();
-        List<BehospitalInfo> behospitalInfoList=Lists.newLinkedList();
+        List<BehospitalInfo> behospitalInfoList = Lists.newLinkedList();
         List<QcAbnormal> qcAbnormalList = Lists.newLinkedList();
         if (medicalRecordList != null && medicalRecordList.size() > 0) {
             medicalRecordList.stream().forEach(s -> {
                 //初始化mode_id
-                Long modeId=initModeId(s);
-                if(modeId==Long.valueOf("0")){
+                Long modeId = initModeId(s);
+                if (modeId == Long.valueOf("0")) {
                     //新增类型到监测表中
-                    QcAbnormal qcAbnormal=new QcAbnormal();
+                    QcAbnormal qcAbnormal = new QcAbnormal();
                     qcAbnormal.setHospitalId(s.getHospitalId());
                     qcAbnormal.setBehospitalCode(s.getBehospitalCode());
                     qcAbnormal.setType(1);
                     qcAbnormal.setDescription(s.getRecTitle());
                     qcAbnormal.setGmtCreate(new Date());
                     qcAbnormalList.add(qcAbnormal);
-                }else if(modeId==Long.valueOf("1")){
+                } 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){
+                    if (behospitalInfo != null) {
                         //如果病人住院信息存在,更新对应的qc_type_id
-                        Long qcTypeId=initQcTypeId(s);
+                        Long qcTypeId = initQcTypeId(s);
                         behospitalInfo.setQcTypeId(qcTypeId);
                         behospitalInfoList.add(behospitalInfo);
                     }
@@ -345,40 +342,41 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 }
             });
         }
-        if(addE.size()>0){
+        if (addE.size() > 0) {
             medicalRecordService.saveBatch(addE);
         }
-        if(updateE.size()>0){
+        if (updateE.size() > 0) {
             medicalRecordService.updateBatchByKey(updateE);
         }
-        if(qcAbnormalList.size()>0){
+        if (qcAbnormalList.size() > 0) {
             qcAbnormalService.saveBatch(qcAbnormalList);
         }
-        if(behospitalInfoList.size()>0){
+        if (behospitalInfoList.size() > 0) {
             behospitalInfoFacade.updateBatchByKey(behospitalInfoList);
         }
     }
 
     /**
      * 初始化质控类型ID
+     *
      * @param medicalRecord
      * @return
      */
-    private Long initQcTypeId(MedicalRecord medicalRecord){
-        Long qcTypeId=Long.valueOf("0");
-        QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
+    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("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();
+                    .eq("is_deleted", IsDeleteEnum.N));
+            if (qcTypeStand != null) {
+                qcTypeId = qcTypeStand.getId();
             }
         }
         return qcTypeId;
@@ -386,38 +384,40 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
     /**
      * 初始化模型ID
+     *
      * @param medicalRecord
      * @return
      */
-    private Long initModeId(MedicalRecord medicalRecord){
-        Long modeId=Long.valueOf("0");
+    private Long initModeId(MedicalRecord medicalRecord) {
+        Long modeId = Long.valueOf("0");
         QueryWrapper<ModelHospital> wrapper = new QueryWrapper<>();
-        wrapper.eq("hospital_id",medicalRecord.getHospitalId());
-        wrapper.eq("hospital_model_name",medicalRecord.getRecTitle());
-        ModelHospital mode=modelHospitalFacade.getOne(wrapper, false);
-        if(mode!=null){
-            modeId=mode.getStandModelId();
-        }else{
-            modeId=Long.valueOf("0");
+        wrapper.eq("hospital_id", medicalRecord.getHospitalId());
+        wrapper.eq("hospital_model_name", medicalRecord.getRecTitle());
+        ModelHospital mode = modelHospitalFacade.getOne(wrapper, false);
+        if (mode != null) {
+            modeId = mode.getStandModelId();
+        } else {
+            modeId = Long.valueOf("0");
         }
         return modeId;
     }
 
     /**
      * 初始化模型ID
+     *
      * @param medicalRecord
      * @return
      */
-    private Long initModeId(Long hospitalId,String recTitle){
-        Long modeId=Long.valueOf("0");
+    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");
+        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;
     }

+ 3 - 0
src/main/java/com/diagbot/vo/data/HisDataDealVO.java

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotBlank;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -19,4 +20,6 @@ public class HisDataDealVO {
 
     private Date endDate;
 
+    private List<String> behospitalCodeList = new ArrayList<>();
+
 }