|
@ -5,7 +5,9 @@ import com.yihu.ehr.profile.core.ResourceCore;
|
|
|
import com.yihu.ehr.solr.SolrUtil;
|
|
|
import com.yihu.ehr.util.datetime.DateUtil;
|
|
|
import com.yihu.ehr.util.rest.Envelop;
|
|
|
import com.yihu.quota.controller.QuotaReportController;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.solr.common.SolrDocument;
|
|
|
import org.apache.solr.common.SolrDocumentList;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@ -13,6 +15,10 @@ import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @Author: zhengwei
|
|
|
* @Date: 2018/9/19 20:35
|
|
@ -26,7 +32,8 @@ public class MedicalInsuranceService {
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
@Autowired
|
|
|
private ObjectMapper objectMapper;
|
|
|
|
|
|
@Autowired
|
|
|
private QuotaReportController quotaReportController;
|
|
|
/**
|
|
|
* 超高费用
|
|
|
* @param month
|
|
@ -46,28 +53,50 @@ public class MedicalInsuranceService {
|
|
|
String start = month+"-01T00:00:00Z";
|
|
|
String end = DateUtil.getLastDate(month+"-01","yyyy-MM-dd","yyyy-MM-dd")+"T23:59:59Z";
|
|
|
String[] subfields = new String[3];
|
|
|
if("0".equals(eventType)){
|
|
|
fee=3000;
|
|
|
String endDate = DateUtil.getLastDateOfLashMonth(month+"-01","yyyy-MM-dd","yyyy-MM-dd");
|
|
|
String lastmonth=endDate.substring(0,7);//上月
|
|
|
String startDate=lastmonth+"-01";
|
|
|
String filters = "quotaDate >='"+startDate+"' and quotaDate <='"+endDate+"'";
|
|
|
if("0".equals(eventType)){//门诊
|
|
|
//获取门诊次均费用
|
|
|
List<Map<String, Object>> ls= quotaReportController.getQuotaReportTwoDimensionalTable("HC_07_1001",filters,"month","");
|
|
|
for(Map<String, Object> map:ls){
|
|
|
if(lastmonth.equals(map.get("month"))){
|
|
|
fee=Double.parseDouble(map.get("HC_07_1001")+"")*5;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
sb.append("EHR_000045:[").append(fee).append(" TO *]").append(" AND event_date:[")
|
|
|
.append(start).append(" TO ").append(end).append("]");
|
|
|
subfields[0]="EHR_000045";
|
|
|
subfields[1]="EHR_000109_VALUE";
|
|
|
subfields[2]="profile_id";
|
|
|
}else{
|
|
|
fee=20000;
|
|
|
}else{//住院
|
|
|
//获取住院次均费用
|
|
|
List<Map<String, Object>> ls= quotaReportController.getQuotaReportTwoDimensionalTable("HC_07_1002",filters,"month","");
|
|
|
for(Map<String, Object> map:ls){
|
|
|
if(lastmonth.equals(map.get("month"))){
|
|
|
fee=Double.parseDouble(map.get("HC_07_1002")+"")*5;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
sb.append("EHR_000175:[").append(fee).append(" TO *]").append(" AND event_date:[")
|
|
|
.append(start).append(" TO ").append(end).append("]");
|
|
|
subfields[0]="EHR_000175";
|
|
|
subfields[1]="EHR_000293_VALUE";
|
|
|
subfields[2]="profile_id";
|
|
|
}
|
|
|
if(StringUtils.isNotEmpty(hosLevel)||StringUtils.isNotEmpty(hosHierarchy)){
|
|
|
String orgCode=getOrgCode(hosLevel,hosHierarchy);
|
|
|
sb.append(" AND org_code:(").append(orgCode).append(")");
|
|
|
}
|
|
|
String[] fields = {"rowkey","patient_name","patient_age","patient_sex","demographic_id","EHR_001211","event_date"};
|
|
|
SolrDocumentList sublist = solrUtil.query(ResourceCore.SubTable,q,sb.toString(),null,(page-1)*size,size,subfields);
|
|
|
if(sublist!=null && sublist.getNumFound()>0){
|
|
|
for (SolrDocument doc : sublist){
|
|
|
if("0".equals(eventType)){
|
|
|
doc.put("fee",doc.getFieldValue("EHR_000045"));
|
|
|
doc.put("diagnosis",doc.getFieldValue("EHR_000109_VALUE"));
|
|
|
doc.put("fee",doc.getFieldValue("EHR_000045"));//门诊费用
|
|
|
doc.put("diagnosis",doc.getFieldValue("EHR_000109_VALUE"));//门诊诊断
|
|
|
}else{
|
|
|
doc.put("fee",doc.getFieldValue("EHR_000175"));
|
|
|
doc.put("diagnosis",doc.getFieldValue("EHR_000293_VALUE"));
|
|
@ -91,4 +120,24 @@ public class MedicalInsuranceService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
private String getOrgCode(String hosLevel, String hosHierarchy){
|
|
|
String orgCode="";
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
sql.append("select org_code from organizations where org_type='Hospital' ");
|
|
|
if(StringUtils.isNotEmpty(hosLevel)){
|
|
|
sql.append(" and level_id ="+hosLevel);
|
|
|
}
|
|
|
if(StringUtils.isNotEmpty(hosHierarchy)){
|
|
|
sql.append(" and hos_hierarchy ="+hosHierarchy);
|
|
|
}
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql.toString());
|
|
|
if(!list.isEmpty()){
|
|
|
for(Map<String, Object> map:list){
|
|
|
orgCode+=map.get("ORG_CODE")+" ";
|
|
|
}
|
|
|
orgCode=orgCode.substring(0,orgCode.length()-1);
|
|
|
}
|
|
|
return orgCode;
|
|
|
}
|
|
|
|
|
|
}
|