Browse Source

处方保存接口和作废接口

wangjun 4 years ago
parent
commit
630b3899a7

+ 261 - 61
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java

@ -115,6 +115,8 @@ public class XzzxEntranceService{
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private PrescriptionCheckDao prescriptionCheckDao;
@ -131,8 +133,8 @@ public class XzzxEntranceService{
    public static String checkInfosUrl="http://192.168.102.243:8040/service/api/check.do?tag=1";
    //保存天际处方接口地址
    public static String saveTianJiPrescription = "http://192.168.102.243:8040/service/api/checkFromXmlToJson.do?tag=2";
    //作废处方地址
    public static String deleteTianJiPrescription = "http://10.1.3.105:8221/drugs/@code@?source=dcdt_web&show_navbar=true";
    public String getSelectUrl(){
        List<WlyyHospitalSysDictDO> list =  wlyyHospitalSysDictDao.findByDictName("xzzxWebSelectService");
@ -1342,7 +1344,7 @@ public class XzzxEntranceService{
    /*
     *合理用药审核接口入参
     */
    public String checkPrescriptionInfoParam(JSONObject patientAndDoctor,List<WlyyPrescriptionInfoDO> infos){
    public String checkPrescriptionInfoParam(JSONObject patientAndDoctor,List<WlyyPrescriptionInfoDO> infos,boolean isDelete){
        String checkDoctor="<Doctor POSITION=\""+patientAndDoctor.getString("POSITION")+
                "\" NAME=\""+patientAndDoctor.getString("DOCTOR_NAME")+
                "\" DEPT_CODE=\""+patientAndDoctor.getString("DEPT_CODE")+
@ -1357,30 +1359,35 @@ public class XzzxEntranceService{
        String checkDiagnosises = "<Diagnosises DIAGNOSISES=\""+patientAndDoctor.getString("diagnosises")+"\" >\n" +
                "</Diagnosises>\n";
        StringBuffer stringBuffer = new StringBuffer();
        for (WlyyPrescriptionInfoDO wlyyPrescriptionInfoDO:infos){
            int i = 1;
            stringBuffer.append("<Advice REPEAT=\"1\" DRUG_LO_NAME=\""+wlyyPrescriptionInfoDO.getDrugName()+
                    "\" DRUG_LO_ID=\""+wlyyPrescriptionInfoDO.getHisCode()+
                    "\" ADMINISTRATION=\""+wlyyPrescriptionInfoDO.getSupplyName()+
                    "\" DOSAGE=\""+wlyyPrescriptionInfoDO.getDosage()+
                    "\" DOSAGE_UNIT=\""+wlyyPrescriptionInfoDO.getUnitName()+
                    "\" FREQ_COUNT=\""+wlyyPrescriptionInfoDO.getUsageCode()+
                    "\" FREQ_INTERVAL=\"\" FREQ_INTERVAL_UNIT=\"\" START_DAY=\""+patientAndDoctor.getString("CREATE_DATE")+"\" END_DAY=\"\" DEPT_CODE=\""+patientAndDoctor.getString("DEPT_CODE")+
                    "\" DOCTOR_NAME=\""+patientAndDoctor.getString("DOCTOR_NAME")+
                    "\" ORDER_NO=\""+i+
                    "\" ORDER_SUB_NO=\""+1+"\" AUTHORITY_LEVELS=\"\" ALERT_LEVELS=\"\" TITLE=\""+patientAndDoctor.getString("POSITION") +
                    "\" GROUP_ID=\""+wlyyPrescriptionInfoDO.getFrequency()+"\" USER_ID=\""+patientAndDoctor.getString("doctorId")+
                    "\" PRES_ID=\""+patientAndDoctor.getString("PATIENT_PRES_ID")+
                    "\" PRES_DATE=\""+patientAndDoctor.getString("CREATE_DATE")+
                    "\" PRES_SEQ_ID=\""+patientAndDoctor.getString("PATIENT_PRES_ID")+
                    "\" PK_ORDER_NO=\"\" COURSE=\""+wlyyPrescriptionInfoDO.getDays()+
                    "\" PKG_COUNT=\""+wlyyPrescriptionInfoDO.getPackQuantity()+
                    "\" PKG_UNIT=\""+wlyyPrescriptionInfoDO.getPackUnitName()+"\" BAK_01=\"\" BAK_02=\"\" BAK_03=\""+wlyyPrescriptionInfoDO.getUnitName()+
                    "\" BAK_04=\""+wlyyPrescriptionInfoDO.getSpecification()+
                    "\" BAK_05=\""+wlyyPrescriptionInfoDO.getDrugPlace()+"\"  />");
            i++;
        }
        String checkInfos = "<Advices>"+stringBuffer.toString()+"</Advices>";
        if(null!=infos&&infos.size()>0){
            for (WlyyPrescriptionInfoDO wlyyPrescriptionInfoDO:infos){
                int i = 1;
                stringBuffer.append("<Advice REPEAT=\"1\" DRUG_LO_NAME=\""+wlyyPrescriptionInfoDO.getDrugName()+
                        "\" DRUG_LO_ID=\""+wlyyPrescriptionInfoDO.getHisCode()+
                        "\" ADMINISTRATION=\""+wlyyPrescriptionInfoDO.getSupplyName()+
                        "\" DOSAGE=\""+wlyyPrescriptionInfoDO.getDosage()+
                        "\" DOSAGE_UNIT=\""+wlyyPrescriptionInfoDO.getUnitName()+
                        "\" FREQ_COUNT=\""+wlyyPrescriptionInfoDO.getUsageCode()+
                        "\" FREQ_INTERVAL=\"\" FREQ_INTERVAL_UNIT=\"\" START_DAY=\""+patientAndDoctor.getString("CREATE_DATE")+"\" END_DAY=\"\" DEPT_CODE=\""+patientAndDoctor.getString("DEPT_CODE")+
                        "\" DOCTOR_NAME=\""+patientAndDoctor.getString("DOCTOR_NAME")+
                        "\" ORDER_NO=\""+i+
                        "\" ORDER_SUB_NO=\""+1+"\" AUTHORITY_LEVELS=\"\" ALERT_LEVELS=\"\" TITLE=\""+patientAndDoctor.getString("POSITION") +
                        "\" GROUP_ID=\""+wlyyPrescriptionInfoDO.getFrequency()+"\" USER_ID=\""+patientAndDoctor.getString("doctorId")+
                        "\" PRES_ID=\""+patientAndDoctor.getString("PATIENT_PRES_ID")+
                        "\" PRES_DATE=\""+patientAndDoctor.getString("CREATE_DATE")+
                        "\" PRES_SEQ_ID=\""+patientAndDoctor.getString("PATIENT_PRES_ID")+
                        "\" PK_ORDER_NO=\"\" COURSE=\""+wlyyPrescriptionInfoDO.getDays()+
                        "\" PKG_COUNT=\""+wlyyPrescriptionInfoDO.getPackQuantity()+
                        "\" PKG_UNIT=\""+wlyyPrescriptionInfoDO.getPackUnitName()+"\" BAK_01=\"\" BAK_02=\"\" BAK_03=\""+wlyyPrescriptionInfoDO.getUnitName()+
                        "\" BAK_04=\""+wlyyPrescriptionInfoDO.getSpecification()+
                        "\" BAK_05=\""+wlyyPrescriptionInfoDO.getDrugPlace()+"\"  />");
                i++;
            }
        }
        String checkInfos = "<Advices></Advices>";
        if (!isDelete){
            checkInfos= "<Advices>"+stringBuffer.toString()+"</Advices>";
        }
        String postBody = "<CheckInput TAG=\"2\" INPATIENT=\"否\">"+checkDoctor+checkPatient+checkDiagnosises+checkInfos+"</CheckInput>";
        return postBody;
    }
@ -1388,7 +1395,7 @@ public class XzzxEntranceService{
     *合理用药审核接口
     */
    public String checkPrescription(JSONObject patientAndDoctor,List<WlyyPrescriptionInfoDO> infos) throws Exception{
        String postBody = checkPrescriptionInfoParam(patientAndDoctor,infos);
        String postBody = checkPrescriptionInfoParam(patientAndDoctor,infos,false);
        logger.info("发送的报文参数:"+postBody);
        String res =  httpClientUtil.sendPost(checkInfosUrl,postBody);
        logger.info("返回的报文参数:"+res);
@ -1400,6 +1407,38 @@ public class XzzxEntranceService{
        wlyyHttpLogDO.setName("checkPrescriptionInEntrance");
        return  res;
    }
    /*
     *合理用药保存接口
     */
    public String saveCheckPrescription(JSONObject patientAndDoctor,List<WlyyPrescriptionInfoDO> infos) throws Exception{
        String postBody = checkPrescriptionInfoParam(patientAndDoctor,infos,false);
        logger.info("保存处方的报文参数:"+postBody);
        String res =  httpClientUtil.sendPost(saveTianJiPrescription,postBody);
        logger.info("保存处方的报文参数:"+res);
        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
        wlyyHttpLogDO.setDoctor(patientAndDoctor.getString("doctorId"));
        wlyyHttpLogDO.setCreateTime(new Date());
        wlyyHttpLogDO.setRequest(postBody);
        wlyyHttpLogDO.setResponse(res);
        wlyyHttpLogDO.setName("checkPrescriptionInEntrance");
        return  res;
    }
    /*
     *合理用药作废接口
     */
    public String deleteCheckPrescription(JSONObject patientAndDoctor,List<WlyyPrescriptionInfoDO> infos) throws Exception{
        String postBody = checkPrescriptionInfoParam(patientAndDoctor,infos,true);
        logger.info("作废的报文参数:"+postBody);
        String res =  httpClientUtil.sendPost(deleteTianJiPrescription,postBody);
        logger.info("作废的报文参数:"+res);
        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
        wlyyHttpLogDO.setDoctor(patientAndDoctor.getString("doctorId"));
        wlyyHttpLogDO.setCreateTime(new Date());
        wlyyHttpLogDO.setRequest(postBody);
        wlyyHttpLogDO.setResponse(res);
        wlyyHttpLogDO.setName("checkPrescriptionInEntrance");
        return  res;
    }
    public List<Map<String,Object>> transXmlCommen(String xml){
        Document doc = null;
        List<Map<String,Object>> returnMap= new ArrayList<>();
@ -2876,45 +2915,24 @@ public Map checkSyncHis(String IoFlag,String PayCardNo,String NullahNumber,Strin
    }
    //组装审药参数并发送到entrance
    public String checkInputInfo(String prescriptionId,String payType,String doctor,String patient,List<WlyyPrescriptionDiagnosisDO> diagnosisDOS,List<WlyyPrescriptionInfoDO> infos) throws Exception{
        JSONObject jsonObject = new JSONObject();
        JSONObject jsonObject = initEntranceParam(payType,doctor,patient,diagnosisDOS);
        String tjPrescriptionId = "";
        WlyyPrescriptionCheckDO wlyyPrescriptionCheckDO;
        //如果重新审核药品 一定要把返回的orderNo的值拿到赋值到prescriptionId里
        if (StringUtils.isNotEmpty(prescriptionId)){
            tjPrescriptionId = prescriptionId;
            wlyyPrescriptionCheckDO = prescriptionCheckDao.findOne(tjPrescriptionId);
        }else {
            wlyyPrescriptionCheckDO = new WlyyPrescriptionCheckDO();
            tjPrescriptionId = UUID.randomUUID().toString();
            wlyyPrescriptionCheckDO.setId(tjPrescriptionId);
        }
        //先查询处方获得支付方式
        DoctorMappingDO doctorMappingDO = doctorMappingDao.findByDoctor(doctor);
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
        jsonObject.put("DOCTOR_NAME", baseDoctorDO.getName());
        jsonObject.put("DEPT_CODE", baseDoctorDO.getVisitDept());
        jsonObject.put("DEPT_NAME", baseDoctorDO.getVisitDeptName());
        if (null != doctorMappingDO && null != baseDoctorDO) {
            jsonObject.put("DOCTOR_ID", doctorMappingDO.getMappingCode());
            jsonObject.put("POSITION", baseDoctorDO.getJobTitleName());
        }
        PatientMappingDO patientMappingDO = patientMappingDao.findByPatient(patient);
        BasePatientDO basePatientDO = patientDao.findById(patient);
        jsonObject.put("PATIENT_NAME", basePatientDO.getName());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        if (null != patientMappingDO && null != basePatientDO) {
            jsonObject.put("PATIENT_ID", patientMappingDO.getMappingCode());
            jsonObject.put("GENDER", basePatientDO.getSex()==1?"男":"女");
            jsonObject.put("BIRTH", sdf.format(basePatientDO.getBirthday()));
        }
        wlyyPrescriptionCheckDO.setCreateUser(doctor);
        wlyyPrescriptionCheckDO.setCreateUserName(null==jsonObject.get("DOCTOR_NAME")?"":jsonObject.get("DOCTOR_NAME").toString());
        wlyyPrescriptionCheckDO.setDept(null==jsonObject.get("DEPT_CODE")?"":jsonObject.get("DEPT_CODE").toString());
        wlyyPrescriptionCheckDO.setDeptName(null==jsonObject.get("DEPT_NAME")?"":jsonObject.get("DEPT_NAME").toString());
        if (null!=infos&&infos.size()>0) {
            jsonObject.put("PATIENT_PRES_ID", tjPrescriptionId);
            jsonObject.put("FEE_TYPE", "1".equalsIgnoreCase(payType) ? "医保" : "自费");
            jsonObject.put("CREATE_DATE", sdf.format(new Date()));
            //组装诊断参数
            if (null != diagnosisDOS && diagnosisDOS.size() > 0) {
                List diagnosises = new ArrayList();
                for (WlyyPrescriptionDiagnosisDO wlyyPrescriptionDiagnosisDO : diagnosisDOS) {
                    diagnosises.add(wlyyPrescriptionDiagnosisDO.getName());
                }
                jsonObject.put("diagnosises", StringUtils.strip(diagnosises.toString(),"[]"));
            }
            String response = "";
            String returnJson = "";
            JSONArray array = new JSONArray();
@ -2936,10 +2954,27 @@ public Map checkSyncHis(String IoFlag,String PayCardNo,String NullahNumber,Strin
                System.out.println("obj:"+obj);
                if (StringUtils.isNotBlank(obj)) {
                    List<Map<String,Object>> returnList = transXmlCommen(obj);
                    for (Map<String,Object> saveMap:returnList){
                        if (null!=saveMap.get("checkInfoMapList")){
                            String  checkInfo = saveMap.get("checkInfoMapList").toString();
                             JSONArray jsonArray=JSONArray.parseArray(checkInfo);
                             for(int i=0;i<jsonArray.size();i++){
                                 JSONObject jsonObject1 = JSONObject.parseObject(jsonArray.get(i).toString());
                                 //存在强制阻断即认为处方审核未通过不允许保存处方
                                 if(null!=jsonObject1.get("WARNING_LEVEL")&&"强制阻断".equalsIgnoreCase(jsonObject1.get("WARNING_LEVEL").toString())){
                                     wlyyPrescriptionCheckDO.setStatus(1);
                                     break;
                                 }
                             }
                        }else {
                            wlyyPrescriptionCheckDO.setStatus(2);
                        }
                    }
                    Map<String,Object> checkIdMap = new HashMap<>();
                    checkIdMap.put("prescriptionOnly",tjPrescriptionId);
                    returnList.add(checkIdMap);
                    returnJson = JSONArray.toJSONString(returnList);
                    wlyyPrescriptionCheckDO.setReason(returnJson);
                    logger.info("返回到互联网医院的解析后的结果:"+returnJson);
                    wlyyHttpLogDO.setDoctor(doctor);
                    wlyyHttpLogDO.setCreateTime(new Date());
@ -2948,6 +2983,7 @@ public Map checkSyncHis(String IoFlag,String PayCardNo,String NullahNumber,Strin
                    wlyyHttpLogDO.setName("checkPrescription");
                } else {
                    returnJson = "审方返回接口为空请检查参数是否正确";
                    wlyyPrescriptionCheckDO.setStatus(1);
                    logger.info(returnJson);
                    wlyyHttpLogDO.setCode("error");
                    wlyyHttpLogDO.setDoctor(doctor);
@ -2958,6 +2994,7 @@ public Map checkSyncHis(String IoFlag,String PayCardNo,String NullahNumber,Strin
                }
            } else {
                returnJson = "entranceUrl接口调用失败";
                wlyyPrescriptionCheckDO.setStatus(1);
                wlyyHttpLogDO.setCode("error");
                wlyyHttpLogDO.setDoctor(doctor);
                wlyyHttpLogDO.setCreateTime(new Date());
@ -2966,13 +3003,176 @@ public Map checkSyncHis(String IoFlag,String PayCardNo,String NullahNumber,Strin
                wlyyHttpLogDO.setName("checkPrescription");
            }
            wlyyHttpLogDao.save(wlyyHttpLogDO);
            wlyyPrescriptionCheckDO.setStatus(1);
            prescriptionCheckDao.save(wlyyPrescriptionCheckDO);
            wlyyPrescriptionCheckDO.setReason(returnJson);
            return returnJson;
        }else {
            return "药品信息为空";
        }
    }
    //组装审药参数并发送到entrance保存处方
    public String saveCheckInputInfo(String prescriptionId,String payType,String doctor,String patient,List<WlyyPrescriptionDiagnosisDO> diagnosisDOS,List<WlyyPrescriptionInfoDO> infos) throws Exception{
        JSONObject jsonObject = initEntranceParam(payType,doctor,patient,diagnosisDOS);
        String tjPrescriptionId = "";
        WlyyPrescriptionCheckDO wlyyPrescriptionCheckDO = new WlyyPrescriptionCheckDO();
        //如果重新审核药品 一定要把返回的orderNo的值拿到赋值到prescriptionId里
        if (StringUtils.isNotEmpty(prescriptionId)) {
            tjPrescriptionId = prescriptionId;
            wlyyPrescriptionCheckDO = prescriptionCheckDao.findOne(prescriptionId);
        }
        if (null!=infos&&infos.size()>0) {
            String response = "";
            String returnJson = "";
            JSONArray array = new JSONArray();
            for (WlyyPrescriptionInfoDO infoDO:infos){
                array.add(infoDO);
            }
            String url = entranceUrl + "saveCheckPrescription";
            Map<String,String> map = new HashedMap();
            map.put("infos",array.toJSONString());
            map.put("patientAndDoctor",jsonObject.toString());
            response = httpClientUtil.httpPost(url, map);
            logger.info("请求saveCheckPrescription参数:"+map.toString());
            logger.info("saveCheckPrescription返回结果:" + response);
            JSONObject object = JSONObject.parseObject(response);
            WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
            if (object.getInteger("status") == 200) {
                wlyyHttpLogDO.setCode("200");
                String obj = object.getString("obj");
                System.out.println("obj:"+obj);
                if (StringUtils.isNotBlank(obj)) {
                    List<Map<String,Object>> returnList = transXmlCommen(obj);
                    returnJson = JSONArray.toJSONString(returnList);
                    wlyyPrescriptionCheckDO.setStatus(9);
                    logger.info("返回到互联网医院的解析后的结果:"+returnJson);
                    wlyyHttpLogDO.setDoctor(doctor);
                    wlyyHttpLogDO.setCreateTime(new Date());
                    wlyyHttpLogDO.setRequest(infos + jsonObject.toString());
                    wlyyHttpLogDO.setResponse(returnJson);
                    wlyyHttpLogDO.setName("saveCheckPrescription");
                } else {
                    returnJson = "保存成功";
                    wlyyPrescriptionCheckDO.setStatus(10);
                    logger.info(returnJson);
                    wlyyHttpLogDO.setCode("success");
                    wlyyHttpLogDO.setDoctor(doctor);
                    wlyyHttpLogDO.setCreateTime(new Date());
                    wlyyHttpLogDO.setRequest(infos + jsonObject.toString());
                    wlyyHttpLogDO.setResponse(returnJson);
                    wlyyHttpLogDO.setName("saveCheckPrescription");
                }
            } else {
                returnJson = "entranceUrl接口调用失败";
                wlyyHttpLogDO.setCode("error");
                wlyyHttpLogDO.setDoctor(doctor);
                wlyyHttpLogDO.setCreateTime(new Date());
                wlyyHttpLogDO.setRequest(infos + jsonObject.toString());
                wlyyHttpLogDO.setResponse(returnJson);
                wlyyHttpLogDO.setName("saveCheckPrescription");
            }
            wlyyHttpLogDao.save(wlyyHttpLogDO);
            return returnJson;
        }else {
            return "药品信息为空";
        }
    }
    //作废处方
    public String deleteCheckInputInfo(String prescriptionId,String payType,String doctor,String patient,List<WlyyPrescriptionDiagnosisDO> diagnosisDOS) throws Exception{
        JSONObject jsonObject = initEntranceParam(payType,doctor,patient,diagnosisDOS);
        String tjPrescriptionId = "";
        WlyyPrescriptionCheckDO wlyyPrescriptionCheckDO = new WlyyPrescriptionCheckDO();
        //如果重新审核药品 一定要把返回的orderNo的值拿到赋值到prescriptionId里
        if (StringUtils.isNotEmpty(prescriptionId)){
            tjPrescriptionId = prescriptionId;
            wlyyPrescriptionCheckDO = prescriptionCheckDao.findOne(tjPrescriptionId);
        }
        String response = "";
        String returnJson = "";
        String url = entranceUrl + "deleteCheckPrescription";
        Map<String,String> map = new HashedMap();
        map.put("infos","");
        map.put("patientAndDoctor",jsonObject.toString());
        response = httpClientUtil.httpPost(url, map);
        logger.info("请求deleteCheckPrescription参数:"+map.toString());
        logger.info("deleteCheckPrescription返回结果:" + response);
        JSONObject object = JSONObject.parseObject(response);
        WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
        if (object.getInteger("status") == 200) {
            wlyyHttpLogDO.setCode("200");
            String obj = object.getString("obj");
            System.out.println("obj:"+obj);
            if (StringUtils.isNotBlank(obj)) {
                List<Map<String,Object>> returnList = transXmlCommen(obj);
                wlyyPrescriptionCheckDO.setStatus(11);
                returnJson = JSONArray.toJSONString(returnList);
                logger.info("返回到互联网医院的解析后的结果:"+returnJson);
                wlyyHttpLogDO.setDoctor(doctor);
                wlyyHttpLogDO.setCreateTime(new Date());
                wlyyHttpLogDO.setRequest(map.toString());
                wlyyHttpLogDO.setResponse(returnJson);
                wlyyHttpLogDO.setName("saveCheckPrescription");
            } else {
                returnJson = "删除成功";
                logger.info(returnJson);
                wlyyPrescriptionCheckDO.setStatus(12);
                wlyyHttpLogDO.setCode("删除成功");
                wlyyHttpLogDO.setDoctor(doctor);
                wlyyHttpLogDO.setCreateTime(new Date());
                wlyyHttpLogDO.setRequest(map.toString());
                wlyyHttpLogDO.setResponse(returnJson);
                wlyyHttpLogDO.setName("deleteCheckPrescription");
            }
        } else {
            returnJson = "entranceUrl接口调用失败";
            wlyyPrescriptionCheckDO.setStatus(11);
            wlyyHttpLogDO.setCode("error");
            wlyyHttpLogDO.setDoctor(doctor);
            wlyyHttpLogDO.setCreateTime(new Date());
            wlyyHttpLogDO.setRequest(map.toString());
            wlyyHttpLogDO.setResponse(returnJson);
            wlyyHttpLogDO.setName("deleteCheckPrescription");
        }
        wlyyHttpLogDao.save(wlyyHttpLogDO);
        prescriptionCheckDao.save(wlyyPrescriptionCheckDO);
        wlyyPrescriptionCheckDO.setReason(returnJson);
        return returnJson;
    }
    //初始化医患和诊断参数
    public JSONObject initEntranceParam(String payType,String doctor,String patient,List<WlyyPrescriptionDiagnosisDO> diagnosisDOS){
        JSONObject jsonObject = new JSONObject();
        //先查询处方获得支付方式
        DoctorMappingDO doctorMappingDO = doctorMappingDao.findByDoctor(doctor);
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
        if (null != doctorMappingDO && null != baseDoctorDO) {
            jsonObject.put("DOCTOR_ID", doctorMappingDO.getMappingCode());
            jsonObject.put("POSITION", baseDoctorDO.getJobTitleName());
            jsonObject.put("DOCTOR_NAME", baseDoctorDO.getName());
            jsonObject.put("DEPT_CODE", baseDoctorDO.getVisitDept());
            jsonObject.put("DEPT_NAME", baseDoctorDO.getVisitDeptName());
        }
        PatientMappingDO patientMappingDO = patientMappingDao.findByPatient(patient);
        BasePatientDO basePatientDO = patientDao.findById(patient);
        jsonObject.put("PATIENT_NAME", basePatientDO.getName());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        if (null != patientMappingDO && null != basePatientDO) {
            jsonObject.put("PATIENT_ID", patientMappingDO.getMappingCode());
            jsonObject.put("GENDER", basePatientDO.getSex()==1?"男":"女");
            jsonObject.put("BIRTH", sdf.format(basePatientDO.getBirthday()));
        }
        jsonObject.put("FEE_TYPE", "1".equalsIgnoreCase(payType) ? "医保" : "自费");
        jsonObject.put("CREATE_DATE", sdf.format(new Date()));
        //组装诊断参数
        if (null != diagnosisDOS && diagnosisDOS.size() > 0) {
            List diagnosises = new ArrayList();
            for (WlyyPrescriptionDiagnosisDO wlyyPrescriptionDiagnosisDO : diagnosisDOS) {
                diagnosises.add(wlyyPrescriptionDiagnosisDO.getName());
            }
            jsonObject.put("diagnosises", StringUtils.strip(diagnosises.toString(),"[]"));
        }
        return jsonObject;
    }

+ 4 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -404,6 +404,10 @@ public class BaseHospitalRequestMapping {
        public static final String xzzxSelectLisApply = "/xzzxSelectLisApply";
        //合理用药审核接口
        public static final String xzzxCheckInfo = "/xzzxCheckInfo";
        //审药通过后保存接口
        public static final String xzzxSaveCheckInfo = "/xzzxSaveCheckInfo";
        //作废处方接口
        public static final String xzzxDeleteCheckInfo = "/xzzxDeleteCheckInfo";
        public static final String findDictByName = "/findDictByName";
        public static final String getJcmb="/getJcmb";

+ 45 - 1
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/XzzxCotroller.java

@ -16,9 +16,11 @@ import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.utils.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -451,7 +453,7 @@ public class XzzxCotroller extends EnvelopRestEndpoint {
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.saveInspectToHospital(IoFlag,PayCardNo,NullahNumber,ApplyDept,ApplyDoctor,wlyyInspectionS));
    }
    /**
     * 获取检验单据信息
     * 合理用药审核接口
     * @return
     * @throws Exception
     */
@ -470,4 +472,46 @@ public class XzzxCotroller extends EnvelopRestEndpoint {
        JSONObject jsonObject = JSONObject.parseObject(patientAndDoctor);
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.checkPrescription(jsonObject,wlyyPrescriptionInfoDOS));
    }
    /**
     * 合理用药保存接口
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/saveCheckPrescription")
    @ApiOperation(value = "合理用药保存接口", notes = "合理用药保存接口")
    public ObjEnvelop saveCheckPrescription(@ApiParam(name = "infos", value = "药品信息", required = false)
                                        @RequestParam(value = "infos",required = false)String infos,
                                        @ApiParam(name = "patientAndDoctor", value = "医患信息", required = false)
                                        @RequestParam(value = "patientAndDoctor",required = false) String patientAndDoctor)throws Exception{
        JSONArray jsonArray = JSONArray.parseArray(infos);
        List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS = new ArrayList<>();
        for (int i=0;i<jsonArray.size();i++){
            WlyyPrescriptionInfoDO wlyyPrescriptionInfo = toEntity(jsonArray.get(i).toString(),WlyyPrescriptionInfoDO.class);
            wlyyPrescriptionInfoDOS.add(wlyyPrescriptionInfo);
        }
        JSONObject jsonObject = JSONObject.parseObject(patientAndDoctor);
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.saveCheckPrescription(jsonObject,wlyyPrescriptionInfoDOS));
    }
    /**
     * 合理用药作废接口
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/deleteCheckPrescription")
    @ApiOperation(value = "合理用药作废接口", notes = "合理用药作废接口")
    public ObjEnvelop deleteCheckPrescription(@ApiParam(name = "infos", value = "药品信息", required = false)
                                            @RequestParam(value = "infos",required = false)String infos,
                                            @ApiParam(name = "patientAndDoctor", value = "医患信息", required = false)
                                            @RequestParam(value = "patientAndDoctor",required = false) String patientAndDoctor)throws Exception{
        List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS = new ArrayList<>();
        if (StringUtils.isNotBlank(infos)){
            JSONArray jsonArray = JSONArray.parseArray(infos);
            for (int i=0;i<jsonArray.size();i++){
                WlyyPrescriptionInfoDO wlyyPrescriptionInfo = toEntity(jsonArray.get(i).toString(),WlyyPrescriptionInfoDO.class);
                wlyyPrescriptionInfoDOS.add(wlyyPrescriptionInfo);
            }
        }
        JSONObject jsonObject = JSONObject.parseObject(patientAndDoctor);
        return ObjEnvelop.getSuccess("ok",xzzxEntranceService.deleteCheckPrescription(jsonObject,wlyyPrescriptionInfoDOS));
    }
}

+ 50 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java

@ -2118,4 +2118,54 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
        }
        return success(xzzxEntranceService.checkInputInfo(prescriptionOnly,payType,doctor,patient,wlyyPrescriptionDiagnosisDOS,wlyyPrescriptionInfoDOS));
    }
    @PostMapping(value = BaseHospitalRequestMapping.Prescription.xzzxSaveCheckInfo)
    @ApiOperation(value = "合理用药审核通过后保存接口")
    public Envelop xzzxSaveCheckInfo(
            @ApiParam(name = "prescriptionOnly", value = "处方唯一标识")
            @RequestParam(value = "prescriptionOnly",defaultValue = "") String prescriptionOnly,
            @ApiParam(name = "payType", value = "付款方式0自费;1医保")
            @RequestParam(value = "payType",defaultValue = "") String payType,
            @ApiParam(name = "doctor", value = "医生id")
            @RequestParam(value = "doctor",defaultValue = "") String doctor,
            @ApiParam(name = "patient", value = "病人id")
            @RequestParam(value = "patient",defaultValue = "") String patient,
            @ApiParam(name = "diagnosisDOS", value = "诊断json")
            @RequestParam(value = "diagnosisDOS",defaultValue = "") String diagnosisDOS,
            @ApiParam(name = "infos", value = "药品json")
            @RequestParam(value = "infos",defaultValue = "") String infos) throws Exception {
        JSONArray druginfos = JSONArray.parseArray(infos);
        List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS = new ArrayList<>();
        for (int i=0;i<druginfos.size();i++){
            WlyyPrescriptionInfoDO wlyyPrescriptionInfo = toEntity(druginfos.get(i).toString(),WlyyPrescriptionInfoDO.class);
            wlyyPrescriptionInfoDOS.add(wlyyPrescriptionInfo);
        }
        JSONArray diagnosis = JSONArray.parseArray(diagnosisDOS);
        List<WlyyPrescriptionDiagnosisDO> wlyyPrescriptionDiagnosisDOS = new ArrayList<>();
        for (int i=0;i<diagnosis.size();i++){
            WlyyPrescriptionDiagnosisDO wlyyPrescriptionDiagnosisDO = toEntity(diagnosis.get(i).toString(),WlyyPrescriptionDiagnosisDO.class);
            wlyyPrescriptionDiagnosisDOS.add(wlyyPrescriptionDiagnosisDO);
        }
        return success(xzzxEntranceService.saveCheckInputInfo(prescriptionOnly,payType,doctor,patient,wlyyPrescriptionDiagnosisDOS,wlyyPrescriptionInfoDOS));
    }
    @PostMapping(value = BaseHospitalRequestMapping.Prescription.xzzxDeleteCheckInfo)
    @ApiOperation(value = "合理用药作废处方接口")
    public Envelop deleteCheckInputInfo(
            @ApiParam(name = "prescriptionOnly", value = "处方唯一标识")
            @RequestParam(value = "prescriptionOnly",defaultValue = "") String prescriptionOnly,
            @ApiParam(name = "payType", value = "付款方式0自费;1医保")
            @RequestParam(value = "payType",defaultValue = "") String payType,
            @ApiParam(name = "doctor", value = "医生id")
            @RequestParam(value = "doctor",defaultValue = "") String doctor,
            @ApiParam(name = "patient", value = "病人id")
            @RequestParam(value = "patient",defaultValue = "") String patient,
            @ApiParam(name = "diagnosisDOS", value = "诊断json")
            @RequestParam(value = "diagnosisDOS",defaultValue = "") String diagnosisDOS) throws Exception {
        JSONArray diagnosis = JSONArray.parseArray(diagnosisDOS);
        List<WlyyPrescriptionDiagnosisDO> wlyyPrescriptionDiagnosisDOS = new ArrayList<>();
        for (int i=0;i<diagnosis.size();i++){
            WlyyPrescriptionDiagnosisDO wlyyPrescriptionDiagnosisDO = toEntity(diagnosis.get(i).toString(),WlyyPrescriptionDiagnosisDO.class);
            wlyyPrescriptionDiagnosisDOS.add(wlyyPrescriptionDiagnosisDO);
        }
        return success(xzzxEntranceService.deleteCheckInputInfo(prescriptionOnly,payType,doctor,patient,wlyyPrescriptionDiagnosisDOS));
    }
}

+ 39 - 2
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/analysis/AnalysisService.java

@ -3,11 +3,14 @@ package com.yihu.jw.hospital.service.analysis;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.im.dao.ConsultTeamDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -22,6 +25,14 @@ public class AnalysisService {
    private OutpatientDao outpatientDao;
    @Autowired
    private ConsultTeamDao consultTeamDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Value("${wechat.id}")
    private String wxId;
    @Value("${wechat.flag}")
    private boolean flag;
    /**
     * 分析总览数据查询
@ -32,7 +43,7 @@ public class AnalysisService {
     * @throws Exception
     */
    public Object queryAnalysis(String doctor,String startTime,String endTime)throws Exception{
        Map<String, Integer> map = new HashMap<>();
        Map<String, Object> map = new HashMap<>();
        Date start = DateUtil.strToDate(startTime, "yyyy-MM-dd HH:mm:ss");
        Date end = DateUtil.strToDate(endTime, "yyyy-MM-dd HH:mm:ss");
        //在线复诊
@ -41,10 +52,36 @@ public class AnalysisService {
        Integer xtNum = outpatientDao.countByTime("2",doctor,start,end);
        //专家咨询
        Integer imNum = consultTeamDao.countByTime(1,doctor,start,end);
        String sqlCountFee = "select t.drug_fee as \"drugFee\"," +
                " t.inspect_fee as \"inspectFee\" , " +
                " t.reg_fee as \"regFee\"  from wlyy_outpatient o " +
                " left join wlyy_prescription t on o.id = t.outpatient_id where o.status != -1" +
                " and t.status = 30 ";
        sqlCountFee+= " and o.doctor = '"+doctor+"'";
        if("xm_ykyy_wx".equals(wxId)){
            if (flag){
                sqlCountFee+=" and t.create_time > '" + startTime + " ' and t.create_time<'" + endTime + " '";
            }else {
                sqlCountFee+=" and t.create_time > to_date('" + startTime + " ', 'yyyy-mm-dd hh24:mi:ss') and t.create_time< to_date('" + endTime + " ','yyyy-mm-dd hh24:mi:ss')";
            }
        }else{
            sqlCountFee+=" and t.create_time > '" + startTime + " ' and t.create_time<'" + endTime + " '";
        }
        double totalFee =0.00;
        List<Map<String,Object>> mapList = hibenateUtils.createSQLQuery(sqlCountFee);
        if (null!=mapList&&mapList.size()>0){
            for (Map<String,Object> feemap:mapList){
                String regFee = null==feemap.get("regFee")?"0":feemap.get("regFee").toString();
                String inspectFee =  null==feemap.get("inspectFee")?"0":feemap.get("inspectFee").toString();
                String drugFee =  null==feemap.get("drugFee")?"0":feemap.get("drugFee").toString();
                double singleTotal = Double.parseDouble(regFee)+Double.parseDouble(inspectFee)+Double.parseDouble(drugFee);
                totalFee=totalFee+singleTotal;
            }
        }
        map.put("fzNum",fzNum);
        map.put("xtNum",xtNum);
        map.put("imNum",imNum);
        map.put("srNum",totalFee);
        return map;
    }