| 
					
				 | 
			
			
				@ -2,6 +2,9 @@ package com.yihu.ehr.crawler.service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.JsonNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.crawler.dao.CrawlerDatasetDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.crawler.dao.CrawlerFlowDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.crawler.dao.CrawlerFlowHeadDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.crawler.model.adapter.AdapterDataSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.crawler.model.config.SysConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.crawler.model.flow.CrawlerDataSetModel; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -35,6 +38,7 @@ public class CrawlerFlowManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Boolean adapterFlg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private List<Patient> patientList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public CrawlerFlowManager() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        adapterFlg = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        dispatch = DataCollectDispatcher.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -181,53 +185,66 @@ public class CrawlerFlowManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Boolean getDataForPrepare() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!adapterFlg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             * 获取适配数据集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            adapterDataSetMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            AdapterSchemeVersionService adapterSchemeVersionService = SpringBeanUtil.getService(AdapterSchemeVersionService.BEAN_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            AdapterSchemeVersionModel adapterSchemeVersionModel = adapterSchemeVersionService.getEhrAdapterVersionLasted(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (adapterSchemeVersionModel == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<CrawlerDataSetModel> crawlerDataSetModelList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<Integer> datasetIdList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (CrawlerDataSetModel crawlerDataSetModel : crawlerDataSetModelList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                datasetIdList.add(crawlerDataSetModel.getDatasetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String version = adapterSchemeVersionModel.getVersion(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            AdapterVersion adapterVersion = new AdapterVersion(version); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            AdapterDatasetService adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<AdapterDatasetModel> adapterDataSetModelList = adapterDatasetService.getListByAdapterDatasetIdList(adapterVersion, datasetIdList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (AdapterDatasetModel adapterDatasetModel : adapterDataSetModelList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                adapterDataSetMap.put(adapterDatasetModel.getStdDatasetCode(), new AdapterDataSet(adapterDatasetModel, adapterVersion)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             * 获取采集流程表头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            crawlerFlowHeadModelList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<CrawlerFlowModel> crawlerFlowModelList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            crawlerFlowDatasetMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            crawlerFlowMetadataMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (CrawlerFlowModel crawlerFlowModel : crawlerFlowModelList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<CrawlerFlowModel> datasetList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<CrawlerFlowModel> metadataList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String inputDatasetCode = crawlerFlowModel.getInputDatasetCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String datasetCode = crawlerFlowModel.getDatasetCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (StringUtil.isEmpty(inputDatasetCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 * 获取EHR最新发布版本 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                adapterDataSetMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                AdapterSchemeVersionService adapterSchemeVersionService = SpringBeanUtil.getService(AdapterSchemeVersionService.BEAN_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                AdapterSchemeVersionModel adapterSchemeVersionModel = adapterSchemeVersionService.getEhrAdapterVersionLasted(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (adapterSchemeVersionModel == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (crawlerFlowDatasetMap.containsKey(inputDatasetCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    datasetList = crawlerFlowDatasetMap.get(inputDatasetCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 * 获取该版本下数据集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                CrawlerDatasetDao crawlerDatasetDao = SpringBeanUtil.getService(CrawlerDatasetDao.BEAN_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<CrawlerDataSetModel> crawlerDataSetModelList = crawlerDatasetDao.getCrawlerDatasetList(adapterSchemeVersionModel.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (CollectionUtil.isEmpty(crawlerDataSetModelList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<Integer> datasetIdList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (CrawlerDataSetModel crawlerDataSetModel : crawlerDataSetModelList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    datasetIdList.add(crawlerDataSetModel.getDatasetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                datasetList.add(crawlerFlowModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                crawlerFlowMetadataMap.put(datasetCode, datasetList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (crawlerFlowDatasetMap.containsKey(datasetCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    metadataList = crawlerFlowDatasetMap.get(datasetCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String version = adapterSchemeVersionModel.getVersion(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                AdapterVersion adapterVersion = new AdapterVersion(version); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                AdapterDatasetService adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<AdapterDatasetModel> adapterDataSetModelList = adapterDatasetService.getListByAdapterDatasetIdList(adapterVersion, datasetIdList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (AdapterDatasetModel adapterDatasetModel : adapterDataSetModelList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    adapterDataSetMap.put(adapterDatasetModel.getStdDatasetCode(), new AdapterDataSet(adapterDatasetModel, adapterVersion)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 * 获取采集流程表头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                CrawlerFlowHeadDao crawlerFlowHeadDao = SpringBeanUtil.getService(CrawlerFlowHeadDao.BEAN_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                CrawlerFlowDao crawlerFlowDao = SpringBeanUtil.getService(CrawlerFlowDao.BEAN_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                crawlerFlowHeadModelList = crawlerFlowHeadDao.getCrawlerFlowHeadList(adapterSchemeVersionModel.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<CrawlerFlowModel> crawlerFlowModelList = crawlerFlowDao.getCrawlerFlowList(adapterSchemeVersionModel.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                crawlerFlowDatasetMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                crawlerFlowMetadataMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (CrawlerFlowModel crawlerFlowModel : crawlerFlowModelList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    List<CrawlerFlowModel> datasetList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    List<CrawlerFlowModel> metadataList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String inputDatasetCode = crawlerFlowModel.getInputDatasetCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String datasetCode = crawlerFlowModel.getDatasetCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (StringUtil.isEmpty(inputDatasetCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (crawlerFlowDatasetMap.containsKey(inputDatasetCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        datasetList = crawlerFlowDatasetMap.get(inputDatasetCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    datasetList.add(crawlerFlowModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    crawlerFlowMetadataMap.put(datasetCode, datasetList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (crawlerFlowDatasetMap.containsKey(datasetCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        metadataList = crawlerFlowDatasetMap.get(datasetCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    metadataList.add(crawlerFlowModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    crawlerFlowDatasetMap.put(datasetCode, metadataList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                metadataList.add(crawlerFlowModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                crawlerFlowDatasetMap.put(datasetCode, metadataList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 |