浏览代码

调用采集接口调试+新增采集逻辑表

lingfeng 9 年之前
父节点
当前提交
2af80fa650

+ 6 - 4
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/httpclient/HttpClientUtil.java

@ -146,7 +146,7 @@ public class HttpClientUtil {
     * @return
     */
    public static HttpResponse postFile(String url,
                                    File file, List<NameValuePair> formParams,SSLConnectionSocketFactory ssl, String username, String password) {
                                    File file, List<NameValuePair> formParams,SSLConnectionSocketFactory ssl, String username, String password, Map<String,Object> header) {
        HttpResponse re = new HttpResponse();
        CloseableHttpResponse response = null;
        CloseableHttpClient httpClient = getCloseableHttpClient(ssl);
@ -158,7 +158,11 @@ public class HttpClientUtil {
                    setAuthenticationEnabled(true).build();
            //创建httppost请求
            HttpPost httpPost = new HttpPost(url);
            if(header!=null) {
                for (String key : header.keySet()) {
                    httpPost.addHeader(key, header.get(key).toString());
                }
            }
            httpPost.setConfig(requestConfig);
            //新建文件对象并且设置文件
            FileBody bin = new FileBody(file);
@ -262,13 +266,11 @@ public class HttpClientUtil {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(postEntity);
        CloseableHttpResponse response = null;
        HttpEntity entity = null;
        try {
            response = httpClient.execute(httpPost);
            entity = response.getEntity();
            HttpResponse res = new HttpResponse(response.getStatusLine().getStatusCode(), EntityUtils.toString(entity));
            return res;

+ 8 - 9
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/httpclient/HttpHelper.java

@ -139,27 +139,26 @@ public class HttpHelper {
    {
        return HttpClientUtil.request("POST",url,params,header,ssl,user,password);
    }
    public static HttpResponse postFile(String url, List<NameValuePair> formParams, String filePath)
    public static HttpResponse postFile(String url, List<NameValuePair> formParams, String filePath, Map<String,Object> header)
    {
        File file = new File(filePath);
        if(url.startsWith("https"))
        {
            return HttpClientUtil.postFile(url, file, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword);
            return HttpClientUtil.postFile(url, file, formParams, defaultSSL, defaultHttpUser, defaultHttpPassword, header);
        }
        else{
        //默认http不走ssl和用户密码
        return HttpClientUtil.postFile(url, file, formParams, null,defaultHttpUser,defaultHttpPassword);
    }
        return HttpClientUtil.postFile(url, file, formParams, null, defaultHttpUser, defaultHttpPassword, header);
        }
    }
    public static HttpResponse postFile(String url, List<NameValuePair> formParams, File file)
    public static HttpResponse postFile(String url, List<NameValuePair> formParams, File file, Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return HttpClientUtil.postFile(url, file, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword);
        if(url.startsWith("https")) {
            return HttpClientUtil.postFile(url, file, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword, header);
        }
        else{
            //默认http不走ssl和用户密码
            return HttpClientUtil.postFile(url, file, formParams, null,defaultHttpUser,defaultHttpPassword);
            return HttpClientUtil.postFile(url, file, formParams, null,defaultHttpUser,defaultHttpPassword, header);
        }
    }
    /************************** Put方法 ******************************************/

+ 12 - 0
Hos-resource/src/main/java/com/yihu/ehr/crawler/controller/CrawlerController.java

@ -7,6 +7,8 @@ import com.yihu.ehr.framework.util.operator.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONObject;
import org.junit.Test;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@ -41,4 +43,14 @@ public class CrawlerController {
            return Result.error("参数转换病人实体失败");
        }
    }
    @Test
    public void crawlerTest() {
        Patient patient = new Patient();
        patient.setPatientId("1004192");
        patient.setEventNo("999999");
        patient.setOrgCode("1");
        JSONObject jsonObject = JSONObject.fromObject(patient);
        CrawlerManager.getInstance().collectProcess(patient);
    }
}

+ 63 - 0
Hos-resource/src/main/java/com/yihu/ehr/crawler/model/flow/CrawlerFlowHeadModel.java

@ -0,0 +1,63 @@
package com.yihu.ehr.crawler.model.flow;
import com.yihu.ehr.framework.model.Result;
import java.io.Serializable;
/**
 * 标准基本信息
 *
 * @created Airhead 2015/12/23.
 */
public class CrawlerFlowHeadModel extends Result implements Serializable {
    private Integer schemeVersionId;
    private String datasetCode;
    private String datasetName;
    private String metadataCode;
    private String identityCode;
    public Integer getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Integer schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
    public String getDatasetCode() {
        return datasetCode;
    }
    public void setDatasetCode(String datasetCode) {
        this.datasetCode = datasetCode;
    }
    public String getDatasetName() {
        return datasetName;
    }
    public void setDatasetName(String datasetName) {
        this.datasetName = datasetName;
    }
    public String getMetadataCode() {
        return metadataCode;
    }
    public void setMetadataCode(String metadataCode) {
        this.metadataCode = metadataCode;
    }
    public String getIdentityCode() {
        return identityCode;
    }
    public void setIdentityCode(String identityCode) {
        this.identityCode = identityCode;
    }
}

+ 83 - 0
Hos-resource/src/main/java/com/yihu/ehr/crawler/model/flow/CrawlerFlowModel.java

@ -0,0 +1,83 @@
package com.yihu.ehr.crawler.model.flow;
import com.yihu.ehr.framework.model.Result;
import java.io.Serializable;
/**
 * 标准基本信息
 *
 * @created Airhead 2015/12/23.
 */
public class CrawlerFlowModel extends Result implements Serializable {
    private Integer schemeVersionId;
    private String datasetCode;
    private String metadataCode;
    private String inputDatasetCode;
    private String inputMetadataCode;
    private String inputMetadataCode2;
    private String inputDefaultValue;
    public Integer getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Integer schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
    public String getDatasetCode() {
        return datasetCode;
    }
    public void setDatasetCode(String datasetCode) {
        this.datasetCode = datasetCode;
    }
    public String getMetadataCode() {
        return metadataCode;
    }
    public void setMetadataCode(String metadataCode) {
        this.metadataCode = metadataCode;
    }
    public String getInputDatasetCode() {
        return inputDatasetCode;
    }
    public void setInputDatasetCode(String inputDatasetCode) {
        this.inputDatasetCode = inputDatasetCode;
    }
    public String getInputMetadataCode() {
        return inputMetadataCode;
    }
    public void setInputMetadataCode(String inputMetadataCode) {
        this.inputMetadataCode = inputMetadataCode;
    }
    public String getInputMetadataCode2() {
        return inputMetadataCode2;
    }
    public void setInputMetadataCode2(String inputMetadataCode2) {
        this.inputMetadataCode2 = inputMetadataCode2;
    }
    public String getInputDefaultValue() {
        return inputDefaultValue;
    }
    public void setInputDefaultValue(String inputDefaultValue) {
        this.inputDefaultValue = inputDefaultValue;
    }
}

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

@ -72,7 +72,7 @@ public class CrawlerManager {
    public String collectProcess(Patient patient) {
        SysConfig.getInstance().setOrgCode(patient.getOrgCode());
        String message = Constants.EMPTY;
        String message;
        if (!getAdapterDataSetList()) {
            message = "适配数据尚未准备";
            LogService.getLogger().error(message);
@ -83,13 +83,14 @@ public class CrawlerManager {
        try {
            Map<String, AdapterDataSet> dataSetMap = new HashMap<>();
            List<JsonNode> dataList = new ArrayList<>();
            //采集、注册
            //getToken
            if (!dispatch.getToken()) {
                message = "token获取失败";
                LogService.getLogger().error(message);
                return message;
            }
            for (AdapterDataSet adapterDataSet : adapterDataSetList) {
                //collectData
                String data = dispatch.fecthData(patient, adapterDataSet);
                if (StringUtil.isEmpty(data)) {
                    continue;
@ -101,6 +102,7 @@ public class CrawlerManager {
                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()))) {
                            //register
                            dispatch.register(patient, data);
                        }
                    }

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

@ -178,8 +178,9 @@ public class DataCollectDispatcher {
//            formParams.add(new BasicNameValuePair("secret", secret));
            formParams.add(new BasicNameValuePair("api", "collectionData"));
            formParams.add(new BasicNameValuePair("param", mapper.writeValueAsString(paramsNode)));
            //调用资源服务网关
            String rootStr = EsbHttp.getFecthData(formParams);
            JsonNode resultNode = mapper.readValue(rootStr, JsonNode.class);
            JsonNode result = resultNode.path("detailModelList");
            JsonNode data = matchAdapterData(result, adapterDataSet);

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

@ -7,6 +7,7 @@ import com.yihu.ehr.crawler.model.adapter.AdapterDataSet;
import com.yihu.ehr.crawler.model.config.SysConfig;
import com.yihu.ehr.crawler.model.patient.Patient;
import com.yihu.ehr.crawler.model.transform.EhrCondition;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.util.encrypt.MD5;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.framework.util.httpclient.HttpHelper;
@ -152,25 +153,25 @@ public class EsbHttp {
            HttpResponse response = HttpClientUtil.postForm(HttpHelper.httpGateway, formParams);
            if (response == null || response.getStatusCode() != 200) {
                LogService.getLogger().info("获取病人数据错误,请求HTTP错误,请检查配置或HTTP是否可用.");
                return "";
                return Constants.EMPTY;
            }
            ObjectMapper mapper = new ObjectMapper();
            JsonNode responseNode = mapper.readValue(response.getBody(), JsonNode.class);
            String code = responseNode.path("responseCode").asText();
            if (StringUtil.isEmpty(code) || !code.equals("10000")) {
                LogService.getLogger().info("获取病人数据错误,请求HTTP错误,请检查集成平台网关是否可用.");
                return "";
                return Constants.EMPTY;
            }
            String rootStr = responseNode.path("responseResult").asText();
            if ("".equals(rootStr)) {
            if (Constants.EMPTY.equals(rootStr)) {
                LogService.getLogger().info("获取病人数据错误,集成平台获取病人数据失败.");
                return "";
                return Constants.EMPTY;
            }
            return rootStr;
        } catch (Exception e) {
            LogService.getLogger().error("获取病人数据失败.", e);
            return "";
            return Constants.EMPTY;
        }
    }
        /**
@ -183,11 +184,13 @@ public class EsbHttp {
                return SysConfig.getInstance().getPublicKey();
            }
            String orgCode = SysConfig.getInstance().getOrgCode();
            Map<String, Object> header = new HashMap<>();
            header.put("Authorization", "Basic " + HttpHelper.clientKey);
            Map<String, Object> paramMap = new HashMap<>();
            paramMap.put("org_code", orgCode);
            paramMap.put("token", token);
            String publicKeyMethod = HttpHelper.defaultHttpUrl + "/organizations/"+orgCode+"/key";
            HttpResponse response = HttpHelper.get(publicKeyMethod, paramMap);
            HttpResponse response = HttpHelper.get(publicKeyMethod, paramMap, header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                JSONObject json = new JSONObject(response.getBody());
                if(json.has("publicKey"))
@ -224,10 +227,12 @@ public class EsbHttp {
        try {
            String token = getToken();
            String versionMethod = HttpHelper.defaultHttpUrl + "/adaptions/org_plan/version";
            Map<String, Object> header = new HashMap<>();
            header.put("Authorization", "Basic " + HttpHelper.clientKey);
            Map<String, Object> params = new HashMap<>();
            params.put("org_code", orgCode);
            params.put("token", token);
            HttpResponse response = HttpHelper.get(versionMethod, params);
            HttpResponse response = HttpHelper.get(versionMethod, params, header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                return response.getBody();
            }
@ -257,8 +262,9 @@ public class EsbHttp {
        try {
            JSONObject json = new JSONObject(data);
            String colName = SysConfig.registerIdCardNo;
            if(json!=null && json.has("data"))
            {
            Map<String, Object> header = new HashMap<>();
            header.put("Authorization", "Basic " + HttpHelper.clientKey);
            if(json!=null && json.has("data")) {
                JSONObject p = (JSONObject)json.getJSONArray("data").get(0);
                if(!p.has(colName) || p.get(colName).equals(null) || p.getString(colName).length()==0)
                {
@ -276,7 +282,7 @@ public class EsbHttp {
                    paramMap.put("demographic_id", idCord);
                    paramMap.put("json", data);
                    paramMap.put("token", token);
                    HttpResponse response = HttpHelper.post(registerMethod, paramMap);
                    HttpResponse response = HttpHelper.post(registerMethod, paramMap, header);
                    if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                        LogService.getLogger().info("注册病人信息成功。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
@ -318,7 +324,9 @@ public class EsbHttp {
            formParams.add(new BasicNameValuePair("package_crypto", encryptPwd));
            formParams.add(new BasicNameValuePair("org_code", SysConfig.getInstance().getOrgCode()));
            formParams.add(new BasicNameValuePair("token", token));
            HttpResponse response = HttpHelper.postFile(uploadMethod, formParams, file.getAbsolutePath());
            Map<String, Object> header = new HashMap<>();
            header.put("Authorization", "Basic " + HttpHelper.clientKey);
            HttpResponse response = HttpHelper.postFile(uploadMethod, formParams, file.getAbsolutePath(), header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                LogService.getLogger().info("上传病人档案成功,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
@ -354,7 +362,9 @@ public class EsbHttp {
            params.put("version_code", remoteVersion);
            params.put("org_code", orgCode);
            params.put("token", token);
            HttpResponse response = HttpHelper.get(downLoadMethod, params);
            Map<String, Object> header = new HashMap<>();
            header.put("Authorization", "Basic " + HttpHelper.clientKey);
            HttpResponse response = HttpHelper.get(downLoadMethod, params, header);
            return response;
        } catch (Exception e) {
            LogService.getLogger().info("下载标准包异常:");

+ 24 - 0
Hos-resource/src/main/resources/hbm/resource/CrawlerFlow.hbm.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.yihu.ehr.crawler.model.flow.CrawlerFlowModel" table="crawler_flow">
        <composite-id>
            <key-property name="schemeVersionId" column="scheme_version_id"/>
            <key-property name="datasetCode" column="dataset_code"/>
            <key-property name="metadataCode" column="metadata_code"/>
        </composite-id>
        <property name="inputDatasetCode">
            <column name="input_dataset_code"/>
        </property>
        <property name="inputMetadataCode">
            <column name="input_metadata_code"/>
        </property>
        <property name="inputMetadataCode2">
            <column name="input_metadata_code2"/>
        </property>
        <property name="inputDefaultValue">
            <column name="input_default_value"/>
        </property>
    </class>
</hibernate-mapping>

+ 20 - 0
Hos-resource/src/main/resources/hbm/resource/CrawlerFlowHead.hbm.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.yihu.ehr.crawler.model.flow.CrawlerFlowHeadModel" table="crawler_flow_head">
        <composite-id>
            <key-property name="schemeVersionId" column="scheme_version_id"/>
            <key-property name="datasetCode" column="dataset_code"/>
        </composite-id>
        <property name="datasetName">
            <column name="dataset_name"/>
        </property>
        <property name="metadataCode">
            <column name="metadata_code"/>
        </property>
        <property name="identityCode">
            <column name="identity_code"/>
        </property>
    </class>
</hibernate-mapping>