فهرست منبع

采集逻辑性能调优

lingfeng 9 سال پیش
والد
کامیت
94a0a6b249

+ 1 - 1
Hos-resource/src/main/java/com/yihu/ehr/crawler/format/DataSetTransformer.java

@ -139,7 +139,7 @@ public class DataSetTransformer implements IDataTransformer{
        if (adapterDictDataType == DictDataType.VALUE) {
            ehrData = adapterDict.getAdapterValueToCodeMap().get(esbData);
        } else if (adapterDictDataType == DictDataType.CODE) {
            ehrData = adapterDict.getAdapterCodeToValueMap().get(esbData);
            ehrData = adapterDict.getAdapterCodeToCodeMap().get(esbData);
        }
        if (StringUtil.isEmpty(ehrData)) {
            return Constants.EMPTY;

+ 1 - 13
Hos-resource/src/main/java/com/yihu/ehr/crawler/model/adapter/AdapterDataSet.java

@ -7,14 +7,11 @@ import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.adapter.AdapterMetadataService;
import com.yihu.ehr.standard.service.adapter.AdapterSchemeService;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import com.yihu.ehr.standard.service.standard.StdMetadataService;
import net.sf.json.JSONObject;
import org.hibernate.criterion.Restrictions;
import java.util.*;
@ -49,23 +46,14 @@ public class AdapterDataSet {
            condition.put("column", "adapter_metadata_code");
            JSONObject jsonpObject = JSONObject.fromObject(condition);
            AdapterMetadataService metadataService = SpringBeanUtil.getService(AdapterMetadataService.BEAN_ID);
            AdapterSchemeService schemeService = SpringBeanUtil.getService(AdapterSchemeService.BEAN_ID);
            List<AdapterMetadataModel> adapterMetaDataModelList = metadataService.getAdapterMetadataNotNullList(adapterVersion, adapterDatasetModel.getStdDatasetId(), jsonpObject.toString());
            String stdVersion = schemeService.getEntity(AdapterSchemeModel.class, adapterDatasetModel.getSchemeId()).getStdVersion();
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            List<Integer> stdMetaDataIdList = new ArrayList<>();
            if (!CollectionUtil.isEmpty(adapterMetaDataModelList)) {
                for (AdapterMetadataModel adapterMetadataModel : adapterMetaDataModelList) {
                    stdMetaDataIdList.add(adapterMetadataModel.getStdMetadataId());
                }
                List<StdMetaDataModel> stdMetaDataModelList = metadataService.getListByIdList(StdMetaDataModel.class, standardVersion.getMetaDataTableName(), "id", stdMetaDataIdList);
                Map<Integer, StdMetaDataModel> stdMetaDataModelMap = new HashMap<>();
                for (StdMetaDataModel stdMetaDataModel : stdMetaDataModelList) {
                    stdMetaDataModelMap.put(stdMetaDataModel.getId(), stdMetaDataModel);
                }
                for (AdapterMetadataModel adapterMetadataModel : adapterMetaDataModelList) {
                    StdMetaDataModel stdMetaDataModel = stdMetaDataModelMap.get(adapterMetadataModel.getStdMetadataId());
                    AdapterMetaData adapterMetaData = new AdapterMetaData(adapterMetadataModel, adapterVersion, entryMap, stdMetaDataModel);
                    AdapterMetaData adapterMetaData = new AdapterMetaData(adapterMetadataModel, adapterVersion, entryMap);
                    adapterMetaDataList.add(adapterMetaData);
                    adapterMetaDataMap.put(adapterMetadataModel.getStdMetadataCode().toUpperCase(), adapterMetaData);
                }

+ 5 - 37
Hos-resource/src/main/java/com/yihu/ehr/crawler/model/adapter/AdapterDict.java

@ -1,17 +1,9 @@
package com.yihu.ehr.crawler.model.adapter;
import com.yihu.ehr.crawler.format.AdapterBase;
import com.yihu.ehr.crawler.service.standard.StdDict;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.springutil.SpringBeanUtil;
import com.yihu.ehr.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
import com.yihu.ehr.standard.service.adapter.AdapterDictEntryService;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import net.sf.json.JSONObject;
import java.util.HashMap;
import java.util.List;
@ -25,33 +17,22 @@ import java.util.Map;
public class AdapterDict extends AdapterBase {
    private AdapterDictModel adapterDictModel;
    private AdapterVersion adapterVersion;
    private AdapterDictModel adapterDictT;
    private Map<String, String> adapterValueToCodeMap;
    private Map<String, String> adapterCodeToValueMap;
    private Map<String, String> stdCodeToValueMap;
    private Map<String, String> stdValueToCodeMap;
    private Map<String, String> adapterCodeToCodeMap;
    public AdapterDict(AdapterDictModel adapterDictModel, AdapterVersion adapterVersion, Map<Integer, List<AdapterDictEntryModel>> entryMap) {
        this.adapterDictModel = adapterDictModel;
        this.adapterDictT = adapterDictModel;
        prepareData(entryMap);
    }
    public Boolean isValidAdapterDict() {
        return adapterDictT != null;
    }
    public void prepareData(Map<Integer, List<AdapterDictEntryModel>> entryMap) {
        adapterValueToCodeMap = new HashMap<>();
        adapterCodeToValueMap = new HashMap<>();
        stdCodeToValueMap = new HashMap<>();
        stdValueToCodeMap = new HashMap<>();
        adapterCodeToCodeMap = new HashMap<>();
        List<AdapterDictEntryModel> adapterDictEntryModelList = entryMap.get(adapterDictModel.getStdDictId());
        for (AdapterDictEntryModel adapterDictEntryModel : adapterDictEntryModelList) {
            adapterValueToCodeMap.put(adapterDictEntryModel.getStdEntryValue(), adapterDictEntryModel.getAdapterEntryCode());
            adapterCodeToValueMap.put(adapterDictEntryModel.getStdEntryCode(), adapterDictEntryModel.getAdapterEntryValue());
            stdCodeToValueMap.put(adapterDictEntryModel.getStdEntryCode(), adapterDictEntryModel.getStdEntryValue());
            stdValueToCodeMap.put(adapterDictEntryModel.getStdEntryValue(), adapterDictEntryModel.getStdEntryCode());
            adapterCodeToCodeMap.put(adapterDictEntryModel.getStdEntryCode(), adapterDictEntryModel.getAdapterEntryCode());
        }
    }
@ -59,20 +40,7 @@ public class AdapterDict extends AdapterBase {
        return adapterValueToCodeMap;
    }
    public Map<String, String> getAdapterCodeToValueMap() {
        return adapterCodeToValueMap;
    }
    public Map<String, String> getStdCodeToValueMap() {
        return stdCodeToValueMap;
    public Map<String, String> getAdapterCodeToCodeMap() {
        return adapterCodeToCodeMap;
    }
    public Map<String, String> getStdValueToCodeMap() {
        return stdValueToCodeMap;
    }
//    public StdDict getStdDict(){
//        StdDictionaryModel stdDictT = getStdDictService().getAdapterDictByCode(adapterVersion.getVersion(), adapterDictT.getStdDictCode());
//        return new StdDict(stdDictT);
//    }
}

+ 5 - 12
Hos-resource/src/main/java/com/yihu/ehr/crawler/model/adapter/AdapterMetaData.java

@ -1,8 +1,7 @@
package com.yihu.ehr.crawler.model.adapter;
import com.yihu.ehr.crawler.model.transform.DictDataType;
import com.yihu.ehr.crawler.service.standard.StdMetaData;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.crawler.model.standard.StdMetaData;
import com.yihu.ehr.framework.util.operator.NumberUtil;
import com.yihu.ehr.framework.util.springutil.SpringBeanUtil;
import com.yihu.ehr.standard.model.adapter.AdapterDictEntryModel;
@ -10,11 +9,8 @@ import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.adapter.AdapterDictService;
import com.yihu.ehr.standard.service.adapter.AdapterMetadataService;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import com.yihu.ehr.standard.service.standard.StdMetadataService;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@ -28,12 +24,10 @@ public class AdapterMetaData {
    private AdapterMetadataModel adapterMetadataModel;
    private AdapterDict adapterDict;
    private AdapterVersion adapterVersion;
    private StdMetaData stdMetaData;
    public AdapterMetaData(AdapterMetadataModel adapterMetadataModel, AdapterVersion adapterVersion, Map<Integer, List<AdapterDictEntryModel>> entryMap, StdMetaDataModel stdMetaDataModel) {
    public AdapterMetaData(AdapterMetadataModel adapterMetadataModel, AdapterVersion adapterVersion, Map<Integer, List<AdapterDictEntryModel>> entryMap) {
        this.adapterMetadataModel = adapterMetadataModel;
        this.adapterVersion = adapterVersion;
        this.stdMetaData = new StdMetaData(stdMetaDataModel);
        prepareData(entryMap);
    }
@ -44,6 +38,9 @@ public class AdapterMetaData {
    public void prepareData(Map<Integer, List<AdapterDictEntryModel>> entryMap) {
        if (!NumberUtil.isZero(adapterMetadataModel.getStdDictId())) {
            AdapterDictService adapterDictService = SpringBeanUtil.getService(AdapterDictService.BEAN_ID);
            /**
             * 默认适配字典的id与数据元的标准id一致
             */
            AdapterDictModel adapterDictModel = (AdapterDictModel) adapterDictService.get(AdapterDictModel.class, adapterVersion.getDictTableName(), adapterMetadataModel.getStdDictId());
            if (adapterDictModel != null) {
                adapterDict = new AdapterDict(adapterDictModel, adapterVersion, entryMap);
@ -55,10 +52,6 @@ public class AdapterMetaData {
        return adapterDict;
    }
    public StdMetaData getStdMetaData() {
        return stdMetaData;
    }
    public DictDataType getAdapterDictDataType() {
        Integer orgDictDataType = adapterMetadataModel.getAdapterDataType();
        if (orgDictDataType == null){

+ 1 - 1
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/standard/StdDict.java

@ -1,4 +1,4 @@
package com.yihu.ehr.crawler.service.standard;
package com.yihu.ehr.crawler.model.standard;
import com.yihu.ehr.crawler.format.AdapterBase;

+ 1 - 2
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/standard/StdMetaData.java

@ -1,8 +1,7 @@
package com.yihu.ehr.crawler.service.standard;
package com.yihu.ehr.crawler.model.standard;
import com.yihu.ehr.crawler.format.AdapterBase;
import com.yihu.ehr.crawler.model.transform.DictDataType;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import static com.yihu.ehr.crawler.model.transform.MetaDataType.S2;
import static com.yihu.ehr.crawler.model.transform.MetaDataType.S3;

+ 1 - 2
Hos-resource/src/main/java/com/yihu/ehr/crawler/model/transform/MetaDataVerify.java

@ -1,7 +1,6 @@
package com.yihu.ehr.crawler.model.transform;
import com.yihu.ehr.crawler.service.standard.StdMetaData;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.crawler.model.standard.StdMetaData;
/**
 * @author Airhead

+ 4 - 6
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/CrawlerFlowManager.java

@ -117,21 +117,19 @@ public class CrawlerFlowManager {
                 */
                String datasetCode = crawlerFlowHeadModel.getDatasetCode();
                AdapterDataSet adapterDataSet = adapterDataSetMap.get(datasetCode);
                String data = dispatch.fecthData(patient, adapterDataSet);
                JsonNode data = dispatch.fecthData(patient, adapterDataSet);
                if (StringUtil.isEmpty(data)) {
                    continue;
                }
                ObjectMapper objectMapper = new ObjectMapper();
                JsonNode jsonObject = objectMapper.readTree(data);
                dataMap.put(datasetCode, jsonObject);
                dataMap.put(datasetCode, data);
                /**
                 * 根据采集流程递归查询
                 */
                getDataByCrawlerFlow(datasetCode, patient, dataMap);
                if (SysConfig.getInstance().getRegisterDataSet().equals(adapterDataSet.getAdapterDataSetT().getStdDatasetCode())) {
                    if (!StringUtil.isEmpty(jsonObject.get("data")) && !StringUtil.isEmpty(jsonObject.get("data").get(0))) {
                        if (!StringUtil.isEmpty(jsonObject.get("data").get(0).get(SysConfig.getInstance().getRegisterIdCardNo()))) {
                    if (!StringUtil.isEmpty(data.get("data")) && !StringUtil.isEmpty(data.get("data").get(0))) {
                        if (!StringUtil.isEmpty(data.get("data").get(0).get(SysConfig.getInstance().getRegisterIdCardNo()))) {
                            //register
                            dispatch.register(patient, data);
                        }

+ 3 - 6
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/CrawlerManager.java

@ -102,14 +102,11 @@ public class CrawlerManager {
                /**
                 * 获取数据
                 */
                logger.info("获取病人档案数据");
                AdapterDataSet adapterDataSet = adapterDataSetMap.get(key);
                String data = dispatch.fecthData(patient, adapterDataSet);
                if (StringUtil.isEmpty(data)) {
                JsonNode jsonObject = dispatch.fecthData(patient, adapterDataSet);
                if (StringUtil.isEmpty(jsonObject)) {
                    continue;
                }
                ObjectMapper objectMapper = new ObjectMapper();
                JsonNode jsonObject = objectMapper.readTree(data);
                dataSetMap.put(adapterDataSet.getAdapterDataSetT().getStdDatasetCode(), adapterDataSet);
                dataMap.put(key, jsonObject);
                /**
@ -119,7 +116,7 @@ public class CrawlerManager {
                    if (!StringUtil.isEmpty(jsonObject.get("data")) && !StringUtil.isEmpty(jsonObject.get("data").get(0))) {
                        if (!StringUtil.isEmpty(jsonObject.get("data").get(0).get(SysConfig.getInstance().getRegisterIdCardNo()))) {
                            logger.info("注册病人");
                            dispatch.register(patient, data);
                            dispatch.register(patient, jsonObject);
                        }
                    }
                }

+ 4 - 4
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/DataCollectDispatcher.java

@ -223,7 +223,7 @@ public class DataCollectDispatcher {
     * @param adapterDataSet
     * @return
     */
    public String fecthData(Patient patient, AdapterDataSet adapterDataSet) {
    public JsonNode fecthData(Patient patient, AdapterDataSet adapterDataSet) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            List<EhrCondition> queryParams = new ArrayList<>();
@ -245,7 +245,7 @@ public class DataCollectDispatcher {
            if (!patientId && !eventNo) {
                logger.error("采集病人数据集至少需要一项病人标识.数据集名:" + adapterDataSet.getAdapterDataSetT().getStdDatasetCode());
                return Constants.EMPTY;
                return null;
            }
            ObjectNode paramsNode = mapper.createObjectNode();
@ -278,7 +278,7 @@ public class DataCollectDispatcher {
                } else {
                    jsonObject.put("reUploadFlg", patient.getReUploadFlg());
                }
                return jsonObject.toString();
                return jsonObject;
            } else {
                return null;
            }
@ -310,7 +310,7 @@ public class DataCollectDispatcher {
        return result;
    }
    public Boolean register(Patient patient, String data) {
    public Boolean register(Patient patient, JsonNode data) {
        return EsbHttp.register(patient, data, token);
    }

+ 1 - 1
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/EsbHttp.java

@ -260,7 +260,7 @@ public class EsbHttp {
    /**
     * 注册病人
     */
    public static Boolean register(Patient patient, String data, String token) {
    public static Boolean register(Patient patient, JsonNode data, String token) {
        try {
            JSONObject json = new JSONObject(data);
            String colName = SysConfig.registerIdCardNo;

+ 0 - 50
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/adapter/AdapterDict.java

@ -1,50 +0,0 @@
package com.yihu.ehr.crawler.service.adapter;
import com.yihu.ehr.crawler.format.AdapterBase;
import com.yihu.ehr.crawler.service.standard.StdDict;
import com.yihu.ehr.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
/**
 * @author Air
 * @version 1.0
 * @created 2015.08.11 11:31
 */
public class AdapterDict extends AdapterBase {
    public static final String INVALID_ADAPTER_DICT = "";   //"Invalid Adapter";
    private AdapterDictModel adapterDictT;
    public AdapterDict(AdapterDictModel adapterDictT) {
        this.adapterDictT = adapterDictT;
    }
    public Boolean isValidAdapterDict() {
        return adapterDictT != null;
    }
    /**
     * @param orgItemCode
     */
    public String getStdDictItemCode(String version,String orgItemCode) {
        AdapterDictEntryModel adapterDictItemT = getAdapterDictEntryService().getAdapterDictItemBydictCode(version,adapterDictT, orgItemCode);
        if (adapterDictItemT == null) {
            return new String(INVALID_ADAPTER_DICT);
        }
        return adapterDictItemT.getStdEntryCode();
    }
    public String getStdDictItemValue(String version,String orgItemValue) {
        AdapterDictEntryModel adapterDictItemT = getAdapterDictEntryService().getAdapterDictItemBydictValue(version, adapterDictT, orgItemValue);
        if (adapterDictItemT == null) {
            return new String(INVALID_ADAPTER_DICT);
        }
        return adapterDictItemT.getStdEntryValue();
    }
    public StdDict getStdDict(){
        StdDictionaryModel stdDictT = getStdDictService().getAdapterDictByCode(adapterVersion.getVersion(), adapterDictT.getStdDictCode());
        return new StdDict(stdDictT);
    }
}