|
@ -7,28 +7,23 @@ import com.yihu.jw.entity.hospital.mapping.HospitalDeptMappingDO;
|
|
|
import com.yihu.jw.hospital.mapping.dao.HospitalDeptMappingDao;
|
|
|
import com.yihu.jw.hospital.prescription.service.entrance.util.ConvertUtil;
|
|
|
import com.yihu.jw.hospital.prescription.service.entrance.util.MqSdkUtil;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.WlyyHisPrescriptionVO;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionDiagnosisVO;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
|
|
|
import com.yihu.jw.restmodel.web.ListEnvelop;
|
|
|
import com.yihu.jw.hospital.prescription.service.entrance.util.WebserviceUtil;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.*;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import net.sf.json.JSON;
|
|
|
import net.sf.json.JSONArray;
|
|
|
import net.sf.json.xml.XMLSerializer;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.core.io.ClassPathResource;
|
|
|
import org.springframework.core.io.Resource;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import javax.transaction.Transactional;
|
|
|
import java.io.BufferedReader;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.InputStreamReader;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
@ -114,22 +109,29 @@ public class EntranceService {
|
|
|
if(demoFlag){
|
|
|
resp=getJosnFileResullt(fid);
|
|
|
}else{
|
|
|
JSONObject msg=new JSONObject();
|
|
|
msg.put("endNum","20000");
|
|
|
msg.put("Msg", new net.sf.json.JSONArray() );
|
|
|
JSONObject query=new JSONObject();
|
|
|
query.put("@compy","=");
|
|
|
query.put("@item","CARD_NO");
|
|
|
query.put("@splice","and");
|
|
|
query.put("@value",cardNo);
|
|
|
msg.put("query",query);
|
|
|
msg.put("startNum",1);
|
|
|
List<String> stringList=new ArrayList<>();
|
|
|
stringList.add(cardNo);
|
|
|
//获取消息
|
|
|
resp = MqSdkUtil.putReqAndGetResp(msg.toString(), fid, "1",stringList);
|
|
|
//解析
|
|
|
resp= MqSdkUtil.xml2jsonObject(resp);
|
|
|
//先调用银医通获取下载余额到his,再查询his中卡余额
|
|
|
net.sf.json.JSONObject jsonObject= callYYTServerService(cardNo);
|
|
|
if(null!=jsonObject && "1".equals(jsonObject.get("code").toString())){
|
|
|
JSONObject msg=new JSONObject();
|
|
|
msg.put("endNum","20000");
|
|
|
msg.put("Msg", new net.sf.json.JSONArray() );
|
|
|
JSONObject query=new JSONObject();
|
|
|
query.put("@compy","=");
|
|
|
query.put("@item","CARD_NO");
|
|
|
query.put("@splice","and");
|
|
|
query.put("@value",cardNo);
|
|
|
msg.put("query",query);
|
|
|
msg.put("startNum",1);
|
|
|
List<String> stringList=new ArrayList<>();
|
|
|
stringList.add(cardNo);
|
|
|
//获取消息
|
|
|
resp = MqSdkUtil.putReqAndGetResp(msg.toString(), fid, "1",stringList);
|
|
|
//解析
|
|
|
resp= MqSdkUtil.xml2jsonObject(resp);
|
|
|
}else {
|
|
|
return jsonObject;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return ConvertUtil.convertObjectEnvelopByString(resp);
|
|
|
}
|
|
@ -376,8 +378,8 @@ public class EntranceService {
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONArray BS30025(String PAT_NO,String admNo,String registerSn,String startTime,String endTime,boolean demoFlag) throws Exception {
|
|
|
String fid=BS30025;
|
|
|
public List<WlyyOutpatientVO> BS30025(String PAT_NO,String admNo,String registerSn,String startTime,String endTime,boolean demoFlag) throws Exception {
|
|
|
String fid = BS30025;
|
|
|
String resp = "";
|
|
|
if (demoFlag) {
|
|
|
resp = getJosnFileResullt(fid);
|
|
@ -409,7 +411,39 @@ public class EntranceService {
|
|
|
resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid);
|
|
|
resp = MqSdkUtil.xml2jsonArrayRootRow(resp);
|
|
|
}
|
|
|
return ConvertUtil.convertListEnvelopInRow(resp);
|
|
|
JSONArray jsonArray = ConvertUtil.convertListEnvelopInRow(resp);
|
|
|
List<WlyyOutpatientVO> wlyyOutpatientVOS = new ArrayList<>();
|
|
|
WlyyOutpatientVO wlyyOutpatientVO;
|
|
|
for (Object object : jsonArray) {
|
|
|
net.sf.json.JSONObject jsonObjectMgsInfo = (net.sf.json.JSONObject) object;
|
|
|
if (null != jsonObjectMgsInfo) {
|
|
|
wlyyOutpatientVO = new WlyyOutpatientVO();
|
|
|
wlyyOutpatientVO.setAdmNo(null == jsonObjectMgsInfo.get("ADM_NO") ? "" : jsonObjectMgsInfo.get("ADM_NO") + "");
|
|
|
wlyyOutpatientVO.setRegisterNo(null == jsonObjectMgsInfo.get("REGISTER_SN") ? "" : jsonObjectMgsInfo.get("REGISTER_SN") + "");
|
|
|
wlyyOutpatientVO.setDept(null == jsonObjectMgsInfo.get("ADM_SPEC") ? "" : jsonObjectMgsInfo.get("ADM_SPEC") + "");
|
|
|
wlyyOutpatientVO.setDeptName(null == jsonObjectMgsInfo.get("ADM_SPEC_NAME") ? "" : jsonObjectMgsInfo.get("ADM_SPEC_NAME") + "");
|
|
|
|
|
|
wlyyOutpatientVO.setPatient(null == jsonObjectMgsInfo.get("PAT_NO") ? "" : jsonObjectMgsInfo.get("PAT_NO") + "");
|
|
|
wlyyOutpatientVO.setPatientName(null == jsonObjectMgsInfo.get("PAT_NAME") ? "" : jsonObjectMgsInfo.get("PAT_NAME") + "");
|
|
|
|
|
|
wlyyOutpatientVO.setDoctor(null == jsonObjectMgsInfo.get("CON_DOC") ? "" : jsonObjectMgsInfo.get("CON_DOC") + "");
|
|
|
wlyyOutpatientVO.setDoctorName(null == jsonObjectMgsInfo.get("CON_DOC_NAME") ? "" : jsonObjectMgsInfo.get("CON_DOC_NAME") + "");
|
|
|
|
|
|
wlyyOutpatientVO.setIdcard(null == jsonObjectMgsInfo.get("social_no") ? "" : jsonObjectMgsInfo.get("social_no") + "");
|
|
|
wlyyOutpatientVO.setMjz(null == jsonObjectMgsInfo.get("MJZ") ? "" : jsonObjectMgsInfo.get("MJZ") + "");
|
|
|
String icds = null == jsonObjectMgsInfo.get("icd_name") ? "" : jsonObjectMgsInfo.get("icd_name") + "";
|
|
|
String[] icdcodeAndName = icds.split("&");
|
|
|
wlyyOutpatientVO.setIcd10(icdcodeAndName.length > 1 ? icdcodeAndName[1].toString() : "");
|
|
|
wlyyOutpatientVO.setIcd10Name(icdcodeAndName.length > 0 ? icdcodeAndName[0].toString() : "");
|
|
|
String admDate = null == jsonObjectMgsInfo.get("ADM_NO") ? "" : jsonObjectMgsInfo.get("ADM_NO") + "";
|
|
|
String conDate = null == jsonObjectMgsInfo.get("ADM_NO") ? "" : jsonObjectMgsInfo.get("ADM_NO") + "";
|
|
|
wlyyOutpatientVO.setAdmDate(DateUtil.strToDate(admDate, DateUtil.YYYY_MM_DD_HH_MM_SS_));
|
|
|
wlyyOutpatientVO.setConDate(DateUtil.strToDate(conDate, DateUtil.YYYY_MM_DD_HH_MM_SS_));
|
|
|
wlyyOutpatientVOS.add(wlyyOutpatientVO);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
return wlyyOutpatientVOS;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -819,4 +853,127 @@ public class EntranceService {
|
|
|
return resp;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 银医通下载
|
|
|
* @param cardNo 待查询的卡号
|
|
|
**/
|
|
|
public net.sf.json.JSONObject callYYTServerService(String cardNo) throws Exception {
|
|
|
String re = "";
|
|
|
net.sf.json.JSONObject jsonObject=new net.sf.json.JSONObject();
|
|
|
String action = "CallYYTServerService";
|
|
|
String info_xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
|
|
|
"<root><ip>172.16.50.40</ip><port>5516</port></root>";
|
|
|
String reqmsg_xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
|
|
|
"<root><sick_id>" + cardNo + "</sick_id><cus_card_no>" + cardNo + "</cus_card_no>" +
|
|
|
"<req_type>2001</req_type><trade_type>2001</trade_type><req_oper>8644</req_oper><req_term>192001019019</req_term><win_no>6</win_no></root>";
|
|
|
Map<String, String> params = new HashMap<>();
|
|
|
params.put("ServerInfo", info_xml);
|
|
|
params.put("RegMsg", reqmsg_xml);
|
|
|
String urlString = "http://172.16.50.40:80/ZyXmyytRequestService/ZyXmyytRequestServiceWs.dll?Handler=ZyXmyytRequestServiceWsService";
|
|
|
String namespace = "zysoft";
|
|
|
re = WebserviceUtil.post(urlString, namespace, action, params);
|
|
|
XMLSerializer xmlSerializer = new XMLSerializer();
|
|
|
JSON json = xmlSerializer.read(re);
|
|
|
Object errorCode = ((net.sf.json.JSONObject) json).get("error_code");
|
|
|
if ("ok".equals(errorCode)) {
|
|
|
JSON json2 = xmlSerializer.read(((net.sf.json.JSONObject) json).get("response").toString());
|
|
|
System.out.println("银医通下载response:" + json2.toString(1));
|
|
|
jsonObject.element("code","1");
|
|
|
jsonObject.element("obj",json);
|
|
|
} else {
|
|
|
Object errorMsg = ((net.sf.json.JSONObject) json).get("error_msg");
|
|
|
jsonObject.element("code","-1");
|
|
|
jsonObject.element("obj","银医通下载失败," +errorMsg);
|
|
|
//{"error_type":"0","error_code":"10002","error_msg":"卡号无效"}
|
|
|
}
|
|
|
if (StringUtils.isEmpty(re)) {
|
|
|
throw new Exception("返回为空!");
|
|
|
} else {
|
|
|
if (re.startsWith("error")) {
|
|
|
throw new Exception(re);
|
|
|
}
|
|
|
}
|
|
|
return jsonObject;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 患者门诊就诊记录
|
|
|
* 按照患者唯一号、科室、医生、获取当前时间往前24小时的挂号记录。获取最新一条判断是否有效(医保当天有效,自费24小时有效)
|
|
|
* 若是自费,则有效
|
|
|
* 若是医保,判断日期是否和当前时间同一天,否则无效
|
|
|
* @param patNo 居民唯一号 必传参数
|
|
|
* @param dept 挂号科室 必传参数
|
|
|
* @param doctor 挂号医生 必传参数
|
|
|
* @return true 已挂号 ,false 未挂号
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public boolean guahao(String patNo,String dept,String doctor,boolean demoFlag) throws Exception {
|
|
|
String fid = BS30025;
|
|
|
StringBuffer sbs = new StringBuffer();
|
|
|
String resp;
|
|
|
if (demoFlag) {
|
|
|
resp = getJosnFileResullt(fid);
|
|
|
} else {
|
|
|
//AccessControl :用户、密码、服务id
|
|
|
sbs.append("<ESBEntry><AccessControl><Fid>" + fid + "</Fid><UserName>JKZL</UserName><Password>123456</Password></AccessControl>");
|
|
|
//MessageHeader :固定值 消费方系统编号 S60,提供方系统编号 S01
|
|
|
sbs.append("<MessageHeader><Fid>" + fid + "</Fid><MsgDate>" + DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS) + "</MsgDate><SourceSysCode>S60</SourceSysCode><TargetSysCode>S01</TargetSysCode></MessageHeader>");
|
|
|
//查询信息拼接
|
|
|
sbs.append("<MsgInfo><onceFlag>1</onceFlag><startNum>1</startNum><endNum>50000</endNum><Msg/>");
|
|
|
if (StringUtils.isNotBlank(patNo)) {
|
|
|
sbs.append("<query compy=\"=\" item=\"PAT_NO\" splice=\"and\" value=\"'" + patNo + "'\"/>");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dept)) {
|
|
|
sbs.append("<query compy=\"=\" item=\"ADM_SPEC\" splice=\"and\" value=\"'" + dept + "'\"/>");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(doctor)) {
|
|
|
sbs.append("<query compy=\"=\" item=\"CON_DOC\" splice=\"and\" value=\"'" + doctor + "'\"/>");
|
|
|
}
|
|
|
//获取当前时间 查询当前时间往前推24小时是否有挂号 (医保当天有效,自费24小时有效)
|
|
|
String now = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD_HH_MM_SS);
|
|
|
String preday = DateUtil.dateToStr(DateUtil.getPreDays(DateUtil.getNowDate(), -1), DateUtil.YYYY_MM_DD_HH_MM_SS);
|
|
|
if (StringUtils.isNotBlank(preday)) {
|
|
|
sbs.append("<query compy=\">\" item=\"ADM_DAT\" splice=\"and\" value=\"'" + preday + "'\"/>");
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(now)) {
|
|
|
sbs.append("<query compy=\"<\" item=\"ADM_DAT\" splice=\"and\" value=\"'" + now + "'\"/>");
|
|
|
}
|
|
|
sbs.append("<order item=\"ADM_DAT\" sort=\"desc\"/>");
|
|
|
//查询信息结束
|
|
|
sbs.append("</MsgInfo></ESBEntry>");
|
|
|
resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid);
|
|
|
resp = MqSdkUtil.xml2jsonArrayRootRow(resp);
|
|
|
|
|
|
}
|
|
|
//解析返回结果
|
|
|
net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(resp);
|
|
|
if (null != jsonObject.get("MsgInfo")) {
|
|
|
net.sf.json.JSONArray jsonArray = (net.sf.json.JSONArray) jsonObject.get("MsgInfo");
|
|
|
//获取第一条
|
|
|
net.sf.json.JSONObject object = (net.sf.json.JSONObject) jsonArray.get(0);
|
|
|
if(null!=object){
|
|
|
object = (net.sf.json.JSONObject) object.get("row");
|
|
|
}
|
|
|
String ybFlag=null != object.get("yb_flag")?object.get("yb_flag").toString():"";
|
|
|
//市医保,1;省医保,2;自费,3,其他医保,99)
|
|
|
if ("2".equals(ybFlag)) {
|
|
|
return true;
|
|
|
}
|
|
|
if (("1".equals(ybFlag) || "3".equals(ybFlag))) {
|
|
|
String admDateStr = object.get("ADM_DAT")+"";
|
|
|
//挂号时间
|
|
|
Date admDate = DateUtil.strToDate(admDateStr + "", DateUtil.YYYY_MM_DD_);
|
|
|
SimpleDateFormat format = new SimpleDateFormat(DateUtil.YYYY_MM_DD_);
|
|
|
//获取当前时间
|
|
|
String dateString = format.format(new Date());
|
|
|
Date nowDate = DateUtil.strToDate(dateString, DateUtil.YYYY_MM_DD_);
|
|
|
if (0 == nowDate.compareTo(admDate)) {
|
|
|
return true;
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
}
|