|
@ -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 "";
|
|
|
}
|
|
|
}
|
|
|
}
|