hzp 8 سال پیش
والد
کامیت
e95a44c7cd

+ 133 - 30
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/record/EhrService.java

@ -41,7 +41,7 @@ public class EhrService extends BaseService {
    private List<String> containTables(String profileId)
    {
        List<String>  re = new ArrayList<>();
        String params = "{\"profile_id\":\""+profileId+"\"}";
        String params = "{\"q\":\"profile_id:"+profileId+"\"}";
        String response = HttpClientUtil.get(ehrBaseUrl + "resources/query/sub_data?queryParams="+URLEncoder.encode(params), "UTF-8");
        JSONObject obj = new JSONObject(response);
        if(obj.has("detailModelList") && obj.getInt("totalCount")>0)
@ -303,26 +303,6 @@ public class EhrService extends BaseService {
    }
    /**
     * 检验报告单
     */
    public List<Map<String,String>> laboratory(String idcard) {
        List<Map<String,String>> list = null;
        try {
            String url = ehrUrl + idcard + "/laboratory?demographic_id=" + idcard;
            String response = HttpClientUtil.get(url, "UTF-8");
            Map<String, Object> map = objectMapper.readValue(response, Map.class);
            list = (List<Map<String,String>>)map.get("detailModelList");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return list;
    }
    /**
     * 用药记录
     */
@ -338,25 +318,26 @@ public class EhrService extends BaseService {
     */
    public String getHealthData(String strSSID,String strEvent,String strCatalog,String strSerial)
    {
        System.out.print("ssid:"+strSSID+",rowkey:"+strSerial+",catalog:"+strCatalog+"\r\n");
        String re = "";
        try {
            /******************************** 主表数据 ********************************************************/
            if (strCatalog.equals("0101")) {     //门诊基本诊疗信息
                return get0101(strSSID,strSerial);
                re =  get0101(strSSID,strSerial);
            }
            else if (strCatalog.equals("0201")) {   //住院诊疗基本信息
                return get0201(strSSID,strSerial);
                re = get0201(strSSID,strSerial);
            }
            /******************************** 细表数据 ********************************************************/
            else if (strCatalog.equals("0102")) {   //门诊费用明细
                re = get0102(strSSID,strSerial);
            }
            else if (strCatalog.equals("0131")) {   //门诊检查报告单
                return getExamination(strSSID,strSerial,"0131");
                re = getExamination(strSSID,strSerial,"0131");
            }
            else if (strCatalog.equals("0121")) {   //门诊检验报告单
                return get0201(strSSID,strSerial);
                re = getLaboratory(strSSID,strSerial,"0121");
            }
            else if (strCatalog.equals("0141")) {   //门诊用药记录
@ -383,10 +364,11 @@ public class EhrService extends BaseService {
            }
            else if (strCatalog.equals("0221")) {   //住院检验报告
                re = getLaboratory(strSSID,strSerial,"0221");
            }
            else if (strCatalog.equals("0231")) {   //住院检查报告
                return getExamination(strSSID,strSerial,"0131");
                re = getExamination(strSSID,strSerial,"0231");
            }
            else if (strCatalog.equals("0241")) {   //住院用药记录
@ -398,6 +380,7 @@ public class EhrService extends BaseService {
            ex.printStackTrace();
        }
        System.out.print(re);
        return re;
    }
@ -437,9 +420,9 @@ public class EhrService extends BaseService {
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject item = array.getJSONObject(i);
                        diagnosisString += "<item>\n" +
                                "            <icd code=\"诊断icd10(字典STD_ICD)\" codeSystem=\"ICD-10\">疾病诊断名称</icd>\n" +
                                "            <result code=\"" + item.optString("EHR_000110") + "\" codeSystem=\"CV5501.11\">诊疗结果</result>\n" +
                                "            <prop code=\"" + item.optString("EHR_000111") + "\" codeSystem=\"STD_DIAGNOSIS_PROP\">诊断性质</prop>\n" +
                                "            <icd code=\""+item.optString("EHR_000109") +"\" codeSystem=\"ICD-10\">"+item.optString("EHR_000109_VALUE") +"</icd>\n" +
                                "            <result code=\"" + item.optString("EHR_000110") + "\" codeSystem=\"CV5501.11\">"+item.optString("EHR_000110_VALUE")+"</result>\n" +
                                "            <prop code=\"" + item.optString("EHR_000107") + "\" codeSystem=\"STD_DIAGNOSIS_PROP\">"+item.optString("EHR_000107") +"</prop>\n" +
                                "</item>\n";
                    }
                }
@ -847,4 +830,124 @@ public class EhrService extends BaseService {
        return re;
    }
    //门诊费用明细
    public String get0102(String ssid,String profileId)
    {
        //事件主要信息
        JSONObject info = getEventBaseInfo(profileId);
        if(info!=null) {
            //住院症状
            String symptomUrl = ehrUrl + URLEncoder.encode("{demographic_id}")+"/hospitalized/symptom?profile_id=" + profileId;
            String symptomResponse = HttpClientUtil.get(symptomUrl, "UTF-8");
            JSONObject symptomObj = new JSONObject(symptomResponse);
            String symptomString = "";
            if (symptomObj.getBoolean("successFlg") && symptomObj.getInt("totalCount") > 0) {
                JSONArray array = symptomObj.getJSONArray("detailModelList");
                if (array != null && array.length() > 0) {
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject item = array.getJSONObject(i);
                        symptomString += "<item code=\"" + item.optString("EHR_000301") + "\" codeSystem=\"CV5101.27\">" + item.optString("EHR_000302") + "</item>\n";
                    }
                }
            }
            //住院诊断
            String diagnosisUrl = ehrUrl + URLEncoder.encode("{demographic_id}")+"/hospitalized/diagnosis?profile_id=" + profileId;
            String diagnosisResponse = HttpClientUtil.get(diagnosisUrl, "UTF-8");
            JSONObject diagnosisObj = new JSONObject(diagnosisResponse);
            String diagnosisString = "";
            if (diagnosisObj.getBoolean("successFlg") && diagnosisObj.getInt("totalCount") > 0) {
                JSONArray array = diagnosisObj.getJSONArray("detailModelList");
                if (array != null && array.length() > 0) {
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject item = array.getJSONObject(i);
                        diagnosisString +="<item>\n" +
                                "      <icd code=\""+item.optString("EHR_000293")+"\" codeSystem=\"ICD-10\">"+item.optString("EHR_000295")+"</icd>\n" +
                                "</item>\n";
                    }
                }
            }
            String re = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                    "<ClinicalDocument>\n" +
                    "  <version code=\"2.0.0.1\" date=\"2011-06-01\">根据卫生部标准第2次修订</version>\n" +
                    "  <ehr code=\"0201\" codeSystem=\"STD_EHR\">住院诊疗基本信息</ehr>\n" +
                    "  <title>住院诊疗基本信息</title>\n" +
                    "  <org code=\""+info.optString("org_code") +"\" codeSystem=\"STD_HEALTH_ORG\">"+info.optString("org_name") +"</org>\n" +
                    "  <id extension=\"" + profileId + "\" eventno=\"" + info.optString("event_no") + "\"></id>\n" +
                    "  <effectiveTime value=\"" + info.optString("create_date") + "\"/>\n" +
                    "  <recordTarget>\n" +
                    "    <patient>\n" +
                    "      <id extension=\""+ssid+"\"></id>\n" +
                    "      <name>"+info.optString("EHR_000004")+"</name>\n" +
                    "      <sex code=\"" + info.optString("EHR_000019") + "\" codeSystem=\"GB/T2261.1-2003\">" + info.optString("EHR_000019_VALUE") + "</sex>\n" +
                    "      <birthDate>" + info.optString("EHR_000007") + "</birthDate>\n" +
                    "      <marriage code=\"" + info.optString("EHR_000014") + "\" codeSystem=\"GB/T 2261.2-2003\">" + info.optString("EHR_000014_VALUE") + "</marriage>\n" +
                    "    </patient>\n" +
                    "  </recordTarget>\n" +
                    "  <component>\n" +
                    "    <section>\n" +
                    "      <code code=\"common\" codeSystem=\"\" displayName=\"住院诊疗基本信息\"/>\n" +
                    "      <entry>\n" +
                    "        <residence>\n" +
                    "          <serial>"+info.optString("EHR_000234") +"</serial>\n" +
                    "          <code>"+info.optString("EHR_000236")+"</code>\n" +
                    "        </residence>\n" +
                    "        <sec>\n" +
                    "          <type code=\"【保险类别(字典STD_SEC_TYPE)】\" codeSystem=\"STD_SEC_TYPE\">【保险类别名称】</type>\n" +
                    "          <value>"+info.optString("EHR_000232")+"</value>\n" +
                    "        </sec>\n" +
                    "        <in>\n" +
                    "          <time>"+info.optString("EHR_000230")+"</time>\n" +
                    "          <dept code=\""+info.optString("EHR_000228")+"\" codeSystem=\"GB/T 17538-1998\">"+info.optString("EHR_000229")+"</dept>\n" +
                    "          <bed>"+info.optString("EHR_000227")+"</bed>\n" +
                    "        </in>\n" +
                    "        <move>\n" +
                    //EHR转诊业务有问题
                    /*"          <item>\n" +
                    "            <time>转科时间</time>\n" +
                    "            <dept code=\"转科科室代码(字典STD_DEPT)\" codeSystem=\"GB/T 17538-1998\">转科后科室名称</dept>\n" +
                    "            <bed>转科后床号</bed>\n" +
                    "          </item>\n" +*/
                    "        </move>\n" +
                    "        <out>\n" +
                    "          <time>"+info.optString("EHR_000224")+"</time>\n" +
                    "          <dept code=\""+info.optString("EHR_000222")+"\" codeSystem=\"GB/T 17538-1998\">"+info.optString("EHR_000223")+"</dept>\n" +
                    "          <bed>"+info.optString("EHR_000221")+"</bed>\n" +
                    "        </out>\n" +
                    "        <onsetTime>"+info.optString("EHR_000230")+"</onsetTime>\n" +
                    "        <diagnosisDate>"+info.optString("EHR_000230")+"</diagnosisDate>\n" +
                    "        <cause code=\""+info.optString("EHR_000237")+"\" codeSystem=\"CV5401.04\">"+info.optString("EHR_000237_VALUE")+"</cause>\n" +
                    "       <symptom>\n" +
                    symptomString +
                    "        </symptom>\n" +
                    "        <illStatus code=\""+info.optString("EHR_000239")+"\" codeSystem=\"CV5502.18\">"+info.optString("EHR_000239_VALUE")+"</illStatus>\n" +
                    "        <infectiousStatus code=\""+info.optString("EHR_000238")+"\" codeSystem=\"STD_JUDGE\">"+info.optString("EHR_000238_VALUE")+"</infectiousStatus>\n" +
                    "        <inDiagnosis>\n" +
                    diagnosisString+
                    "        </inDiagnosis>\n" +
                    "        <outDiagnosis>\n" +
                    "          <item>\n" +
                    "            <icd code=\""+info.optString("EHR_000158")+"\" codeSystem=\"ICD-10\">"+info.optString("EHR_000159")+"</icd>\n" +
                    "            <result code=\""+info.optString("EHR_000166")+"\" codeSystem=\"CV5501.11\">"+info.optString("EHR_000166_VALUE")+"</result>\n" +
                    "            <prop code=\"【诊断性质代码(字典STD_DIAGNOSIS_PROP)】\" codeSystem=\"STD_DIAGNOSIS_PROP\">【诊断性质名称】</prop>\n" +
                    "          </item>\n" +
                    "        </outDiagnosis>\n" +
                    "        <deathTime>"+info.optString("EHR_000255")+"</deathTime>\n" +
                    "        <causeOfDeath code=\""+info.optString("EHR_000258")+"\" codeSystem=\"ICD-10\">"+info.optString("EHR_000258_VALUE")+"</causeOfDeath>\n" +
                    "      </entry>\n" +
                    "    </section>\n" +
                    "  </component>\n" +
                    "</ClinicalDocument>";
            return re;
        }
        else{
            return "";
        }
    }
}

+ 1 - 1
patient-co-wlyy/src/main/resources/system.properties

@ -203,7 +203,7 @@ guahao_url = http://www.xmsmjk.com/UrpNetService/ReservationNet.asmx
guahao_namespace = http://www.zysoft.com.cn/
#EHRµµ°¸·þÎñµØÖ·
ehr_used = false
ehr_used = true
ehr_services = http://localhost:9009/api/v1.0/
ehr_services_base = http://localhost:10220/api/v1.0/