You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					939 lines
				
				38 KiB
			
		
		
			
		
	
	
					939 lines
				
				38 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								package com.ynxbd.common.dao.his;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import cn.hutool.core.date.DateTime;
							 | 
						||
| 
								 | 
							
								import com.alibaba.fastjson.JSONArray;
							 | 
						||
| 
								 | 
							
								import com.alibaba.fastjson.JSONObject;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.bean.Dept;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.bean.Doctor;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.bean.enums.MerchantEnum;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.bean.pay.Register;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.dao.RegisterDao;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.helper.common.*;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.helper.his.HisEnum;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.helper.his.HisHelper;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.result.JsonResult;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.wx.config.WeChatConfig;
							 | 
						||
| 
								 | 
							
								import lombok.extern.slf4j.Slf4j;
							 | 
						||
| 
								 | 
							
								import org.apache.commons.lang3.ObjectUtils;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import java.math.BigDecimal;
							 | 
						||
| 
								 | 
							
								import java.util.*;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * His挂号调用
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @Author wsq
							 | 
						||
| 
								 | 
							
								 * @Date 2020/10/30 11:59
							 | 
						||
| 
								 | 
							
								 * @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								@Slf4j
							 | 
						||
| 
								 | 
							
								public class HisRegisterDao {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [预约挂号]获取医生列表
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param deptCode 科室代码
							 | 
						||
| 
								 | 
							
								     * @return 医生列表
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Doctor> getRegReserveDoctorList(String deptCode, String regDate) {
							 | 
						||
| 
								 | 
							
								        log.info("[预约挂号]查询HIS医生列表");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<Doctor> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        if (regDate == null) {
							 | 
						||
| 
								 | 
							
								            log.info("[预约挂号]获取医生列表失败 regDate 为空");
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", deptCode);
							 | 
						||
| 
								 | 
							
								        params.put("DoctCode", "");
							 | 
						||
| 
								 | 
							
								        params.put("ReservationDate", regDate);
							 | 
						||
| 
								 | 
							
								        params.put("AllowResevationFlag", "1");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation_Doct, params);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (!jsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<Doctor> doctorList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String deptName = jsonResult.getDataMapString("DeptName");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JSONArray jsonArray = jsonResult.getJsonArray("Doctor");
							 | 
						||
| 
								 | 
							
								        Doctor doctorItem;
							 | 
						||
| 
								 | 
							
								        JSONObject node;
							 | 
						||
| 
								 | 
							
								        Register regItem;
							 | 
						||
| 
								 | 
							
								        BigDecimal regFee, clinicFee;
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								            node = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            doctorItem = new Doctor();
							 | 
						||
| 
								 | 
							
								            doctorItem.setDeptCode(deptCode);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            doctorItem.setDeptName(deptName);
							 | 
						||
| 
								 | 
							
								            doctorItem.setDoctCode(node.getString("DoctCode"));
							 | 
						||
| 
								 | 
							
								            doctorItem.setDoctName(node.getString("DoctName"));
							 | 
						||
| 
								 | 
							
								            doctorItem.setTitle(node.getString("Title")); //
							 | 
						||
| 
								 | 
							
								            doctorItem.setTitleCode(node.getString("TitleCode")); //
							 | 
						||
| 
								 | 
							
								            doctorItem.setIsExpert(node.getInteger("IsExpertRegistion")); // 是否是专家
							 | 
						||
| 
								 | 
							
								            doctorItem.setDescription(node.getString("Spec")); // 特长
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // 号源
							 | 
						||
| 
								 | 
							
								            regItem = new Register();
							 | 
						||
| 
								 | 
							
								            regItem.setClinicCode(node.getString("ClinicCode")); //
							 | 
						||
| 
								 | 
							
								            regItem.setClinicName(node.getString("ClinicName")); //
							 | 
						||
| 
								 | 
							
								            regItem.setTid(node.getString("TID")); //
							 | 
						||
| 
								 | 
							
								            regItem.setTName(node.getString("TID")); //
							 | 
						||
| 
								 | 
							
								            regItem.setSourceCount(node.getInteger("TotalCount")); // 总号源数量
							 | 
						||
| 
								 | 
							
								            regItem.setRemainCount(node.getInteger("RemainCount")); // 剩余号源数
							 | 
						||
| 
								 | 
							
								            regItem.setAllowReg(node.getInteger("AllowRegist")); //
							 | 
						||
| 
								 | 
							
								            regItem.setRegDate(node.getString("ReservationDate"));
							 | 
						||
| 
								 | 
							
								            regItem.setAddress(node.getString("Address"));
							 | 
						||
| 
								 | 
							
								            // 金额
							 | 
						||
| 
								 | 
							
								            regFee = node.getBigDecimal("RegFee");
							 | 
						||
| 
								 | 
							
								            clinicFee = node.getBigDecimal("ClinicFee");
							 | 
						||
| 
								 | 
							
								            if (regFee == null) {
							 | 
						||
| 
								 | 
							
								                regFee = BigDecimal.ZERO;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if (clinicFee == null) {
							 | 
						||
| 
								 | 
							
								                clinicFee = BigDecimal.ZERO;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            regItem.setRegFee(regFee);
							 | 
						||
| 
								 | 
							
								            regItem.setClinicFee(clinicFee);
							 | 
						||
| 
								 | 
							
								            regItem.setPayMoney(regFee.add(clinicFee));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            doctorItem.setRegister(regItem);
							 | 
						||
| 
								 | 
							
								            doctorList.add(doctorItem);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String appId = WeChatConfig.APP_ID;
							 | 
						||
| 
								 | 
							
								        if ("wx14ea983bce19d64c".equals(appId)) { // 富民晚班不能预约
							 | 
						||
| 
								 | 
							
								            Register register;
							 | 
						||
| 
								 | 
							
								            for (Doctor doctor : doctorList) {
							 | 
						||
| 
								 | 
							
								                register = doctor.getRegister();
							 | 
						||
| 
								 | 
							
								                if (register != null) {
							 | 
						||
| 
								 | 
							
								                    String tid = register.getTid();
							 | 
						||
| 
								 | 
							
								                    if (tid != null && !tid.trim().contains("晚班")) {
							 | 
						||
| 
								 | 
							
								                        resultList.add(doctor);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            resultList = doctorList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return resultList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [现场挂号]获取现场挂号医生列表
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param deptCode     科室代码
							 | 
						||
| 
								 | 
							
								     * @param timeInterval 挂号时段显示
							 | 
						||
| 
								 | 
							
								     * @return 医生列表
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Doctor> getRegTodayDoctorList(String deptCode, String timeInterval) {
							 | 
						||
| 
								 | 
							
								        log.info("[现场挂号]查询HIS医生列表 deptCode={}", deptCode);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", deptCode);
							 | 
						||
| 
								 | 
							
								        params.put("DoctCode", "");
							 | 
						||
| 
								 | 
							
								        params.put("AllowRegistFlag", "1"); // 只返回有号源的医生
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Doct, params);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<Doctor> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        if (!jsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<Doctor> doctorList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        String deptName = jsonResult.getDataMapString("DeptName");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JSONArray jsonArray = jsonResult.getJsonArray("Doctor");
							 | 
						||
| 
								 | 
							
								        Doctor doctorItem;
							 | 
						||
| 
								 | 
							
								        JSONObject node;
							 | 
						||
| 
								 | 
							
								        Register regItem;
							 | 
						||
| 
								 | 
							
								        BigDecimal regFee, clinicFee;
							 | 
						||
| 
								 | 
							
								        String today = DateHelper.getCurDate();
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								            node = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            doctorItem = new Doctor();
							 | 
						||
| 
								 | 
							
								            doctorItem.setDeptCode(deptCode);
							 | 
						||
| 
								 | 
							
								            doctorItem.setDeptName(deptName);
							 | 
						||
| 
								 | 
							
								            doctorItem.setDoctCode(node.getString("DoctCode"));
							 | 
						||
| 
								 | 
							
								            doctorItem.setDoctName(node.getString("DoctName"));
							 | 
						||
| 
								 | 
							
								            doctorItem.setTitle(node.getString("Title")); //
							 | 
						||
| 
								 | 
							
								            doctorItem.setTitleCode(node.getString("TitleCode")); //
							 | 
						||
| 
								 | 
							
								            doctorItem.setIsExpert(node.getInteger("IsExpertRegistion")); // 是否是专家
							 | 
						||
| 
								 | 
							
								            doctorItem.setDescription(node.getString("Spec")); // 特长
							 | 
						||
| 
								 | 
							
								            // 号源
							 | 
						||
| 
								 | 
							
								            regItem = new Register();
							 | 
						||
| 
								 | 
							
								            regItem.setClinicCode(node.getString("ClinicCode")); //
							 | 
						||
| 
								 | 
							
								            regItem.setClinicName(node.getString("ClinicName")); //
							 | 
						||
| 
								 | 
							
								            regItem.setTid(node.getString("TID")); // 时段id
							 | 
						||
| 
								 | 
							
								            regItem.setTName(node.getString("TID")); // 时段名
							 | 
						||
| 
								 | 
							
								            regItem.setSourceCount(node.getInteger("TotalCount")); // 总号源数量
							 | 
						||
| 
								 | 
							
								            regItem.setRemainCount(node.getInteger("RemainCount")); // 剩余号源数
							 | 
						||
| 
								 | 
							
								            regItem.setAllowReg(node.getInteger("AllowReservation")); //
							 | 
						||
| 
								 | 
							
								            regItem.setAddress(node.getString("Address"));
							 | 
						||
| 
								 | 
							
								            regItem.setRegDate(today); // 今天
							 | 
						||
| 
								 | 
							
								            // 金额
							 | 
						||
| 
								 | 
							
								            regFee = node.getBigDecimal("RegFee");
							 | 
						||
| 
								 | 
							
								            clinicFee = node.getBigDecimal("ClinicFee");
							 | 
						||
| 
								 | 
							
								            if (regFee == null) {
							 | 
						||
| 
								 | 
							
								                regFee = BigDecimal.ZERO;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if (clinicFee == null) {
							 | 
						||
| 
								 | 
							
								                clinicFee = BigDecimal.ZERO;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            regItem.setRegFee(regFee);
							 | 
						||
| 
								 | 
							
								            regItem.setClinicFee(clinicFee);
							 | 
						||
| 
								 | 
							
								            regItem.setPayMoney(regFee.add(clinicFee));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            doctorItem.setRegister(regItem);
							 | 
						||
| 
								 | 
							
								            doctorList.add(doctorItem);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // 丽江古城区 "08:00:00", "11:59:00" | "12:00:00", "13:54:00" | "13:55:00", "17:30:00"
							 | 
						||
| 
								 | 
							
								        // 芒市 "08:00:00", "11:45:00" | "11:46:00", "14:31:00" | "14:30:00", "17:30:00"
							 | 
						||
| 
								 | 
							
								        // 蒙自市 07:40:00", "11:30:00 | "11:31:00", "13:44:00" | "13:45:00", "17:30:00"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String defaultTimeInterval = "{\"am\":{\"begTime\":\"08:00\",\"endTime\":\"12:00\"},\"pm\":{\"begTime\":\"14:00\",\"endTime\":\"17:30\"},\"noon\":{\"begTime\":\"12:01\",\"endTime\":\"13:59\"}}";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (ObjectUtils.isEmpty(timeInterval)) {
							 | 
						||
| 
								 | 
							
								            timeInterval = defaultTimeInterval;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JSONObject jsonObj = JsonHelper.parseObject(timeInterval);
							 | 
						||
| 
								 | 
							
								        if (jsonObj == null) {
							 | 
						||
| 
								 | 
							
								            jsonObj = JsonHelper.parseObject(defaultTimeInterval);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        JSONObject am = jsonObj.getJSONObject("am"); // 早上
							 | 
						||
| 
								 | 
							
								        JSONObject pm = jsonObj.getJSONObject("pm"); // 下午
							 | 
						||
| 
								 | 
							
								        JSONObject noon = jsonObj.getJSONObject("noon"); // 中午
							 | 
						||
| 
								 | 
							
								        JSONObject night = jsonObj.getJSONObject("night"); // 晚上
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // 早上
							 | 
						||
| 
								 | 
							
								        if (am == null) {
							 | 
						||
| 
								 | 
							
								            am = JsonHelper.parseObject("{ begTime: '08:00', endTime: '12:00' }");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        String amBegTime = DateHelper.timeToHms(am.getString("begTime"), "08:00:00");
							 | 
						||
| 
								 | 
							
								        String amEndTime = DateHelper.timeToHms(am.getString("endTime"), "12:00:00");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // 下午
							 | 
						||
| 
								 | 
							
								        if (pm == null) {
							 | 
						||
| 
								 | 
							
								            pm = JsonHelper.parseObject("{ begTime: '14:01', endTime: '17:00' }");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        String pmBegTime = DateHelper.timeToHms(pm.getString("begTime"), "14:01:00");
							 | 
						||
| 
								 | 
							
								        String pmEndTime = DateHelper.timeToHms(pm.getString("endTime"), "17:30:00");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // 中午
							 | 
						||
| 
								 | 
							
								        if (noon == null) {
							 | 
						||
| 
								 | 
							
								            noon = JsonHelper.parseObject("{ begTime: '12:01', endTime: '14:00' }");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        String noonBegTime = DateHelper.timeToHms(noon.getString("begTime"), "12:01:00");
							 | 
						||
| 
								 | 
							
								        String noonEndTime = DateHelper.timeToHms(noon.getString("endTime"), "14:00:00");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String nightBegTime = null;
							 | 
						||
| 
								 | 
							
								        String nightEndTime = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // 中午
							 | 
						||
| 
								 | 
							
								        if (night != null) {
							 | 
						||
| 
								 | 
							
								            nightBegTime = DateHelper.timeToHms(night.getString("begTime"), null);
							 | 
						||
| 
								 | 
							
								            nightEndTime = DateHelper.timeToHms(night.getString("endTime"), null);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        log.info("[挂号]时段参数 早上:{}-{}, 下午:{}-{}, 中午:{}-{}", amBegTime, amEndTime, pmBegTime, pmEndTime, noonBegTime, noonEndTime);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        int key;
							 | 
						||
| 
								 | 
							
								        if (DateHelper.inTimeRangeH_m_s(amBegTime, amEndTime)) { // 上午
							 | 
						||
| 
								 | 
							
								            key = 1;
							 | 
						||
| 
								 | 
							
								        } else if (DateHelper.inTimeRangeH_m_s(noonBegTime, noonEndTime)) { // 中午
							 | 
						||
| 
								 | 
							
								            key = 2;
							 | 
						||
| 
								 | 
							
								        } else if (DateHelper.inTimeRangeH_m_s(pmBegTime, pmEndTime)) { // 下午
							 | 
						||
| 
								 | 
							
								            key = 3;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            key = 4;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // 晚班
							 | 
						||
| 
								 | 
							
								        boolean isNight = night != null && nightBegTime != null && nightEndTime != null && DateHelper.inTimeRangeH_m_s(nightBegTime, nightEndTime);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        log.info("【现场挂号】时段{{}}", key);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Register register;
							 | 
						||
| 
								 | 
							
								        for (Doctor doctor : doctorList) {
							 | 
						||
| 
								 | 
							
								            register = doctor.getRegister();
							 | 
						||
| 
								 | 
							
								            if (register == null) {
							 | 
						||
| 
								 | 
							
								                continue;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            String tid = register.getTid();
							 | 
						||
| 
								 | 
							
								            tid = tid == null ? "" : tid.trim();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (tid.contains("全天")) {
							 | 
						||
| 
								 | 
							
								                resultList.add(doctor);
							 | 
						||
| 
								 | 
							
								            } else if (key == 1 && (tid.contains("上午") || tid.contains("上午及下午") || (isNight && (tid.contains("晚班") || tid.contains("晚上"))))) {
							 | 
						||
| 
								 | 
							
								                resultList.add(doctor);
							 | 
						||
| 
								 | 
							
								            } else if (key == 2 && tid.contains("中午") || (isNight && (tid.contains("晚班") || tid.contains("晚上")))) {
							 | 
						||
| 
								 | 
							
								                resultList.add(doctor);
							 | 
						||
| 
								 | 
							
								            } else if (key == 3 && (tid.contains("下午") || tid.contains("上午及下午") || (isNight && (tid.contains("晚班") || tid.contains("晚上"))))) {
							 | 
						||
| 
								 | 
							
								                resultList.add(doctor);
							 | 
						||
| 
								 | 
							
								            } else if (key == 4 && (tid.contains("晚班") || tid.contains("晚上"))) {
							 | 
						||
| 
								 | 
							
								                if (night == null || nightBegTime == null || nightEndTime == null) {
							 | 
						||
| 
								 | 
							
								                    resultList.add(doctor);
							 | 
						||
| 
								 | 
							
								                } else {
							 | 
						||
| 
								 | 
							
								                    if (DateHelper.inTimeRangeH_m_s(nightBegTime, nightEndTime)) {
							 | 
						||
| 
								 | 
							
								                        resultList.add(doctor);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return resultList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [预约挂号]获取科室列表
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return 预约科室列表
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Dept> getRegResDeptList() {
							 | 
						||
| 
								 | 
							
								        log.info("[预约挂号]查询HIS科室列表");
							 | 
						||
| 
								 | 
							
								        List<Dept> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", ""); // 空为所有
							 | 
						||
| 
								 | 
							
								        params.put("ReservationDate", ""); // 空为近7天
							 | 
						||
| 
								 | 
							
								        JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation_Dept, params);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (!jsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<Dept> deptList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        JSONArray jsonArray = jsonResult.getJsonArray("Dept");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        RegisterDao registerDao = new RegisterDao();
							 | 
						||
| 
								 | 
							
								        List<Dept> wxDeptList = registerDao.selectDeptList();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String subDeptJson;
							 | 
						||
| 
								 | 
							
								        List<Dept> subDeptList;
							 | 
						||
| 
								 | 
							
								        String subDeptName, subDeptCode;
							 | 
						||
| 
								 | 
							
								        JSONObject subDeptItem;
							 | 
						||
| 
								 | 
							
								        Dept subDept;
							 | 
						||
| 
								 | 
							
								        Dept dept;
							 | 
						||
| 
								 | 
							
								        JSONObject nodeItem;
							 | 
						||
| 
								 | 
							
								        String address, deptCode, deptName, hospitalAreaName;
							 | 
						||
| 
								 | 
							
								        JSONObject subDeptData;
							 | 
						||
| 
								 | 
							
								        JSONArray dataItems;
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								            nodeItem = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            deptCode = nodeItem.getString("Code");
							 | 
						||
| 
								 | 
							
								            deptName = nodeItem.getString("Name");
							 | 
						||
| 
								 | 
							
								            address = nodeItem.getString("Address");
							 | 
						||
| 
								 | 
							
								            hospitalAreaName = nodeItem.getString("HospitalAreaName");
							 | 
						||
| 
								 | 
							
								            // 科室过滤
							 | 
						||
| 
								 | 
							
								            dept = registerDao.deptFilter(wxDeptList, deptCode, deptName, address, hospitalAreaName);
							 | 
						||
| 
								 | 
							
								            if (dept != null) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                subDeptJson = nodeItem.getString("Code_YZKStr");
							 | 
						||
| 
								 | 
							
								                if (!ObjectUtils.isEmpty(subDeptJson)) {
							 | 
						||
| 
								 | 
							
								                    subDeptData = JsonHelper.parseObject(subDeptJson);
							 | 
						||
| 
								 | 
							
								                    dataItems = subDeptData.getJSONArray("Data");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    subDeptList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								                    for (int j = 0; j < dataItems.size(); j++) {
							 | 
						||
| 
								 | 
							
								                        subDeptItem = dataItems.getJSONObject(j);
							 | 
						||
| 
								 | 
							
								                        subDeptName = subDeptItem.getString("Name");
							 | 
						||
| 
								 | 
							
								                        subDeptCode = subDeptItem.getString("Code");
							 | 
						||
| 
								 | 
							
								                        subDept = new Dept();
							 | 
						||
| 
								 | 
							
								                        subDept.setDeptName(subDeptName);
							 | 
						||
| 
								 | 
							
								                        subDept.setDeptCode(subDeptCode);
							 | 
						||
| 
								 | 
							
								                        subDeptList.add(subDept);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                    dept.setChildren(subDeptList);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                deptList.add(dept);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return deptList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [现场挂号]获取科室列表
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param hasSourcesFlag 有号源标识 { 1:仅返回有号源科室; 0:有无号源科室都返回(默认值)}
							 | 
						||
| 
								 | 
							
								     * @return 科室列表
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Dept> getRegTodayDeptList(String hasSourcesFlag) {
							 | 
						||
| 
								 | 
							
								        if (ObjectUtils.isEmpty(hasSourcesFlag)) {
							 | 
						||
| 
								 | 
							
								            hasSourcesFlag = "1";
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (!"0".equals(hasSourcesFlag) && !"1".equals(hasSourcesFlag)) {
							 | 
						||
| 
								 | 
							
								            hasSourcesFlag = "1";
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        log.info("[现场挂号]查询HIS科室列表");
							 | 
						||
| 
								 | 
							
								        List<Dept> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", ""); // 空为所有
							 | 
						||
| 
								 | 
							
								        params.put("HasSourcesFlag", hasSourcesFlag); // 1:仅返回有号源科室; 0:有无号源科室都返回(默认值)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Dept, params);
							 | 
						||
| 
								 | 
							
								        if (!jsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<Dept> deptList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        JSONArray jsonArray = jsonResult.getJsonArray("Dept");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        RegisterDao registerDao = new RegisterDao();
							 | 
						||
| 
								 | 
							
								        List<Dept> wxDeptList = registerDao.selectDeptList();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String subDeptJson;
							 | 
						||
| 
								 | 
							
								        List<Dept> subDeptList;
							 | 
						||
| 
								 | 
							
								        String subDeptName, subDeptCode;
							 | 
						||
| 
								 | 
							
								        JSONObject subDeptItem;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Dept subDept;
							 | 
						||
| 
								 | 
							
								        Dept dept;
							 | 
						||
| 
								 | 
							
								        JSONObject nodeItem;
							 | 
						||
| 
								 | 
							
								        String address, deptCode, deptName, hospitalAreaName;
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								            nodeItem = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            deptCode = nodeItem.getString("Code");
							 | 
						||
| 
								 | 
							
								            deptName = nodeItem.getString("Name");
							 | 
						||
| 
								 | 
							
								            address = nodeItem.getString("Address");
							 | 
						||
| 
								 | 
							
								            hospitalAreaName = nodeItem.getString("HospitalAreaName");
							 | 
						||
| 
								 | 
							
								            // 科室过滤
							 | 
						||
| 
								 | 
							
								            dept = registerDao.deptFilter(wxDeptList, deptCode, deptName, address, hospitalAreaName);
							 | 
						||
| 
								 | 
							
								            if (dept != null) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                subDeptJson = nodeItem.getString("Code_YZKStr");
							 | 
						||
| 
								 | 
							
								                if (!ObjectUtils.isEmpty(subDeptJson)) {
							 | 
						||
| 
								 | 
							
								                    JSONObject subDeptData = JsonHelper.parseObject(subDeptJson);
							 | 
						||
| 
								 | 
							
								                    JSONArray dataItems = subDeptData.getJSONArray("Data");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    subDeptList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								                    for (int j = 0; j < dataItems.size(); j++) {
							 | 
						||
| 
								 | 
							
								                        subDeptItem = dataItems.getJSONObject(j);
							 | 
						||
| 
								 | 
							
								                        subDeptName = subDeptItem.getString("Name");
							 | 
						||
| 
								 | 
							
								                        subDeptCode = subDeptItem.getString("Code");
							 | 
						||
| 
								 | 
							
								                        subDept = new Dept();
							 | 
						||
| 
								 | 
							
								                        subDept.setDeptName(subDeptName);
							 | 
						||
| 
								 | 
							
								                        subDept.setDeptCode(subDeptCode);
							 | 
						||
| 
								 | 
							
								                        subDeptList.add(subDept);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                    dept.setChildren(subDeptList);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                deptList.add(dept);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String appId = WeChatConfig.APP_ID;
							 | 
						||
| 
								 | 
							
								        if ("wx99b45c38093d17f9".equals(appId)) { // 武定县人民医院挂号时间段定为7:30-11:30
							 | 
						||
| 
								 | 
							
								            if (DateHelper.inTimeRangeH_m_s("07:30:00", "11:30:00") || DateHelper.inTimeRangeH_m_s("13:30:00", "17:00:00")) { // 在时间段内
							 | 
						||
| 
								 | 
							
								                resultList = new ArrayList<>(deptList);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            resultList = new ArrayList<>(deptList);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return resultList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [现场挂号]根据患者id获取挂号记录
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者id
							 | 
						||
| 
								 | 
							
								     * @return 挂号记录
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Register> getRegSiteHistory(String patientId, String regDate) {
							 | 
						||
| 
								 | 
							
								        List<Register> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("PatientID", patientId);
							 | 
						||
| 
								 | 
							
								        params.put("MZNum", null);
							 | 
						||
| 
								 | 
							
								        params.put("RegistDate", regDate);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Regist, params);
							 | 
						||
| 
								 | 
							
								        if (!JsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JSONArray jsonArray = JsonResult.getJsonArray("Reg");
							 | 
						||
| 
								 | 
							
								        Register reg;
							 | 
						||
| 
								 | 
							
								        BigDecimal payMoney;
							 | 
						||
| 
								 | 
							
								        JSONObject node;
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								            node = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            reg = new Register();
							 | 
						||
| 
								 | 
							
								            reg.setDeptCode(node.getString("DeptCode")); //
							 | 
						||
| 
								 | 
							
								            reg.setDeptName(node.getString("DeptName")); //
							 | 
						||
| 
								 | 
							
								            reg.setDoctCode(node.getString("DoctCode")); //
							 | 
						||
| 
								 | 
							
								            reg.setDoctName(node.getString("DoctName")); //
							 | 
						||
| 
								 | 
							
								            reg.setAddress(node.getString("Address")); //
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            reg.setTreatNum(node.getString("MZNum")); // 门诊号
							 | 
						||
| 
								 | 
							
								            reg.setClinicCode(node.getString("ClinicCode")); //
							 | 
						||
| 
								 | 
							
								            reg.setClinicName(node.getString("ClinicName")); //
							 | 
						||
| 
								 | 
							
								            reg.setOrderFromOwner(node.getString("OrderFromOwner")); //
							 | 
						||
| 
								 | 
							
								            // 日期
							 | 
						||
| 
								 | 
							
								            reg.setRegDate(node.getString("RegistDate"));
							 | 
						||
| 
								 | 
							
								            reg.setBegTime(node.getString("BegTime"));
							 | 
						||
| 
								 | 
							
								            reg.setEndTime(node.getString("EndTime"));
							 | 
						||
| 
								 | 
							
								            // 是否取号
							 | 
						||
| 
								 | 
							
								            reg.setIsTake(node.getInteger("IsTake"));
							 | 
						||
| 
								 | 
							
								            // 是否就诊
							 | 
						||
| 
								 | 
							
								            reg.setIsTreat(node.getInteger("IsTreat"));
							 | 
						||
| 
								 | 
							
								            // HIS
							 | 
						||
| 
								 | 
							
								            reg.setHisTransNo(node.getString("HISTransNo")); //
							 | 
						||
| 
								 | 
							
								            // 金额
							 | 
						||
| 
								 | 
							
								            payMoney = node.getBigDecimal("RegistMoney");
							 | 
						||
| 
								 | 
							
								            reg.setPayMoney(payMoney == null ? BigDecimal.ZERO : payMoney); //
							 | 
						||
| 
								 | 
							
								            resultList.add(reg);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return resultList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [预约挂号]根据患者id查询预约记录
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者id
							 | 
						||
| 
								 | 
							
								     * @param regDate   挂号日期
							 | 
						||
| 
								 | 
							
								     * @return 预约记录
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Register> getRegReserveHistory(String patientId, String regDate) {
							 | 
						||
| 
								 | 
							
								        List<Register> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("PatientID", patientId);
							 | 
						||
| 
								 | 
							
								        params.put("ReservationDate", regDate);
							 | 
						||
| 
								 | 
							
								        params.put("ReservationTransNo", "");
							 | 
						||
| 
								 | 
							
								        params.put("AfterTodayFlag", "0");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation, params);
							 | 
						||
| 
								 | 
							
								        if (!JsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JSONArray jsonArray = JsonResult.getJsonArray("Reservation");
							 | 
						||
| 
								 | 
							
								        Register reg;
							 | 
						||
| 
								 | 
							
								        JSONObject node;
							 | 
						||
| 
								 | 
							
								        BigDecimal regFee, clinicFee;
							 | 
						||
| 
								 | 
							
								        String doctorCode, doctorName;
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								            node = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            reg = new Register();
							 | 
						||
| 
								 | 
							
								            reg.setDeptCode(node.getString("DeptCode"));
							 | 
						||
| 
								 | 
							
								            reg.setDeptName(node.getString("DeptName"));
							 | 
						||
| 
								 | 
							
								            doctorCode = node.getString("DoctCode");
							 | 
						||
| 
								 | 
							
								            doctorName = node.getString("DoctName");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (ObjectUtils.isEmpty(doctorCode)) {
							 | 
						||
| 
								 | 
							
								                doctorCode = node.getString("TitleCode");
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if (ObjectUtils.isEmpty(doctorName)) {
							 | 
						||
| 
								 | 
							
								                doctorName = node.getString("Title");
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            reg.setDoctCode(doctorCode);
							 | 
						||
| 
								 | 
							
								            reg.setDoctName(doctorName);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            reg.setAddress(node.getString("Address"));
							 | 
						||
| 
								 | 
							
								            reg.setClinicCode(node.getString("ClinicCode")); //
							 | 
						||
| 
								 | 
							
								            reg.setClinicName(node.getString("ClinicName")); //
							 | 
						||
| 
								 | 
							
								            reg.setOrderFromOwner(node.getString("OrderFromOwner")); //
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // 时段
							 | 
						||
| 
								 | 
							
								            reg.setTid(node.getString("TID"));
							 | 
						||
| 
								 | 
							
								            reg.setTName(node.getString("TID"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // 是否取号
							 | 
						||
| 
								 | 
							
								            reg.setIsTake(node.getInteger("IsTake"));
							 | 
						||
| 
								 | 
							
								            // 是否就诊
							 | 
						||
| 
								 | 
							
								            reg.setIsTreat(node.getInteger("IsTreat"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            reg.setRegDate(node.getString("ReservationDate")); // 日期
							 | 
						||
| 
								 | 
							
								            reg.setHisTransNo(node.getString("HISTransNo"));   // HIS流水号
							 | 
						||
| 
								 | 
							
								            reg.setTradeNo(node.getString("ReservationTransNo")); // HIS交易流水号
							 | 
						||
| 
								 | 
							
								            reg.setHospitalArea(node.getString("HospitalAreaName")); // HIS交易流水号
							 | 
						||
| 
								 | 
							
								            reg.setBegTime(node.getString("BegTime"));
							 | 
						||
| 
								 | 
							
								            reg.setEndTime(node.getString("EndTime"));
							 | 
						||
| 
								 | 
							
								            // 金额
							 | 
						||
| 
								 | 
							
								            regFee = node.getBigDecimal("RegFee");
							 | 
						||
| 
								 | 
							
								            if (regFee == null) {
							 | 
						||
| 
								 | 
							
								                regFee = BigDecimal.ZERO;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            clinicFee = node.getBigDecimal("ClinicFee");
							 | 
						||
| 
								 | 
							
								            if (clinicFee == null) {
							 | 
						||
| 
								 | 
							
								                clinicFee = BigDecimal.ZERO;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            reg.setRegFee(regFee);
							 | 
						||
| 
								 | 
							
								            reg.setClinicFee(clinicFee);
							 | 
						||
| 
								 | 
							
								            reg.setPayMoney(regFee.add(clinicFee));
							 | 
						||
| 
								 | 
							
								            resultList.add(reg);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return resultList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 取消预约
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者ID
							 | 
						||
| 
								 | 
							
								     * @param tradeNo   HIS交易流水号
							 | 
						||
| 
								 | 
							
								     * @return WsResult响应码
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public JsonResult cancelReserve(String patientId, String tradeNo,MerchantEnum merchantEnum) {
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("PatientID", patientId);
							 | 
						||
| 
								 | 
							
								        params.put("ReservationTransNo", tradeNo);
							 | 
						||
| 
								 | 
							
								        params.put("RecallTransNo", "R" + tradeNo);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return HisHelper.getJsonResult(HisEnum.AP_Recall_Reservation, params, merchantEnum);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 查询患者是否挂过号
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者ID
							 | 
						||
| 
								 | 
							
								     * @param regDate   挂号时间
							 | 
						||
| 
								 | 
							
								     * @return boolean
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Register> hasRegSite(String patientId, String regDate) {
							 | 
						||
| 
								 | 
							
								        return getRegSiteHistory(patientId, regDate);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 查询患者是否预约过
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者ID
							 | 
						||
| 
								 | 
							
								     * @param regDate   挂号时间
							 | 
						||
| 
								 | 
							
								     * @return boolean
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Register> hasRegReserve(String patientId, String regDate) {
							 | 
						||
| 
								 | 
							
								        return getRegReserveHistory(patientId, regDate);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // 分时段---------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [分时段挂号]查询科室
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param begDate 开始时间
							 | 
						||
| 
								 | 
							
								     * @param endDate 结束时间
							 | 
						||
| 
								 | 
							
								     * @return 科室列表
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Dept> getTimeDeptList(String begDate, String endDate) {
							 | 
						||
| 
								 | 
							
								        List<Dept> deptList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", "");// 空为所有
							 | 
						||
| 
								 | 
							
								        params.put("RegistBegDate", begDate);
							 | 
						||
| 
								 | 
							
								        params.put("RegistEndDate", endDate);
							 | 
						||
| 
								 | 
							
								        params.put("CanRegistFlag", "1"); // 1:返回有号源的科室
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Dept_New, params);
							 | 
						||
| 
								 | 
							
								        if (!JsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            log.info("[科室-分时段]{}", JsonResult.getMessage());
							 | 
						||
| 
								 | 
							
								            return deptList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JSONArray jsonArray = JsonResult.getJsonArray("Dept");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Dept dept;
							 | 
						||
| 
								 | 
							
								        JSONObject nodeItem;
							 | 
						||
| 
								 | 
							
								        String address, deptCode, deptName, hospitalAreaName;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        RegisterDao registerDao = new RegisterDao();
							 | 
						||
| 
								 | 
							
								        List<Dept> wxDeptList = registerDao.selectDeptList();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        String subDeptJson;
							 | 
						||
| 
								 | 
							
								        List<Dept> subDeptList;
							 | 
						||
| 
								 | 
							
								        String subDeptName, subDeptCode, subDeptNote;
							 | 
						||
| 
								 | 
							
								        JSONObject subDeptItem;
							 | 
						||
| 
								 | 
							
								        Dept subDept;
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								            nodeItem = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            deptCode = nodeItem.getString("Code");
							 | 
						||
| 
								 | 
							
								            deptName = nodeItem.getString("Name");
							 | 
						||
| 
								 | 
							
								            address = nodeItem.getString("Address");
							 | 
						||
| 
								 | 
							
								            hospitalAreaName = nodeItem.getString("HospitalAreaName");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // 科室过滤
							 | 
						||
| 
								 | 
							
								            dept = registerDao.deptFilter(wxDeptList, deptCode, deptName, address, hospitalAreaName);
							 | 
						||
| 
								 | 
							
								            if (dept != null) {
							 | 
						||
| 
								 | 
							
								                // 亚专科
							 | 
						||
| 
								 | 
							
								                subDeptJson = nodeItem.getString("Code_YZKStr");
							 | 
						||
| 
								 | 
							
								                if (!ObjectUtils.isEmpty(subDeptJson)) {
							 | 
						||
| 
								 | 
							
								                    JSONObject subDeptData = JsonHelper.parseObject(subDeptJson);
							 | 
						||
| 
								 | 
							
								                    JSONArray dataItems = subDeptData.getJSONArray("Data");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    subDeptList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								                    for (int j = 0; j < dataItems.size(); j++) {
							 | 
						||
| 
								 | 
							
								                        subDeptItem = dataItems.getJSONObject(j);
							 | 
						||
| 
								 | 
							
								                        subDeptName = subDeptItem.getString("Name");
							 | 
						||
| 
								 | 
							
								                        subDeptCode = subDeptItem.getString("Code");
							 | 
						||
| 
								 | 
							
								                        subDeptNote = subDeptItem.getString("Note");
							 | 
						||
| 
								 | 
							
								                        subDept = new Dept();
							 | 
						||
| 
								 | 
							
								                        subDept.setDeptName(subDeptName);
							 | 
						||
| 
								 | 
							
								                        subDept.setDeptCode(subDeptCode);
							 | 
						||
| 
								 | 
							
								                        subDept.setNote(subDeptNote);
							 | 
						||
| 
								 | 
							
								                        subDeptList.add(subDept);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                    dept.setChildren(subDeptList);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                deptList.add(dept);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return deptList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 分时段医生查询
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param deptCode    科室编码
							 | 
						||
| 
								 | 
							
								     * @param subDeptCode 亚专科编码
							 | 
						||
| 
								 | 
							
								     * @param begDate     开始日期
							 | 
						||
| 
								 | 
							
								     * @param endDate     结束日期
							 | 
						||
| 
								 | 
							
								     * @return list
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Doctor> getTimeDoctorList(String deptCode, String subDeptCode, String begDate, String endDate) {
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", deptCode);
							 | 
						||
| 
								 | 
							
								        params.put("DoctCode", null); // 空为所有
							 | 
						||
| 
								 | 
							
								        params.put("RegistBegDate", begDate);
							 | 
						||
| 
								 | 
							
								        params.put("RegistEndDate", endDate);
							 | 
						||
| 
								 | 
							
								        params.put("CanRegistFlag", "0"); // { 0:返回所有医生; 1:仅返回有号源的医师 }
							 | 
						||
| 
								 | 
							
								        if (!ObjectUtils.isEmpty(subDeptCode)) {
							 | 
						||
| 
								 | 
							
								            params.put("DeptCode_YZKCode", subDeptCode); // 亚专科code
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Doct_New, params);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<Doctor> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        if (!JsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            log.info("[医生-分时段查询]{}", JsonResult.getMessage());
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JSONArray deptJsonList = JsonResult.getJsonArray("Dept");
							 | 
						||
| 
								 | 
							
								        JSONObject deptJson, doctorJson;
							 | 
						||
| 
								 | 
							
								        String deptName;
							 | 
						||
| 
								 | 
							
								        Doctor doctorItem;
							 | 
						||
| 
								 | 
							
								        JSONArray doctorJsonList;
							 | 
						||
| 
								 | 
							
								        for (int i = 0; i < deptJsonList.size(); i++) {
							 | 
						||
| 
								 | 
							
								            deptJson = deptJsonList.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								            deptName = ParamHelper.spaceFormat(deptJson.getString("DeptName"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            doctorJsonList = deptJson.getJSONArray("Doct");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            for (int k = 0; k < doctorJsonList.size(); k++) {
							 | 
						||
| 
								 | 
							
								                doctorJson = doctorJsonList.getJSONObject(k);
							 | 
						||
| 
								 | 
							
								                doctorItem = new Doctor();
							 | 
						||
| 
								 | 
							
								                doctorItem.setDeptCode(deptCode);
							 | 
						||
| 
								 | 
							
								                doctorItem.setDeptName(deptName);
							 | 
						||
| 
								 | 
							
								                doctorItem.setDoctCode(ParamHelper.spaceFormat(doctorJson.getString("DoctCode")));
							 | 
						||
| 
								 | 
							
								                doctorItem.setDoctName(ParamHelper.spaceFormat(doctorJson.getString("DoctName")));
							 | 
						||
| 
								 | 
							
								                //
							 | 
						||
| 
								 | 
							
								                doctorItem.setTitle(ParamHelper.spaceFormat(doctorJson.getString("Title")));         // 职称
							 | 
						||
| 
								 | 
							
								                doctorItem.setTitleCode(ParamHelper.spaceFormat(doctorJson.getString("TitleCode"))); //
							 | 
						||
| 
								 | 
							
								                doctorItem.setDescription(ParamHelper.spaceFormat(doctorJson.getString("Spec")));    // 描述
							 | 
						||
| 
								 | 
							
								                //
							 | 
						||
| 
								 | 
							
								                doctorItem.setSurplusSources(doctorJson.getInteger("SurplusSources")); // 描述
							 | 
						||
| 
								 | 
							
								                resultList.add(doctorItem);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return resultList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [分时段]根据科室code和医生code查询医生号源
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param deptCode    科室code
							 | 
						||
| 
								 | 
							
								     * @param doctCode    医生code
							 | 
						||
| 
								 | 
							
								     * @param subDeptCode 亚专科code(可为空,为空查询大科室)
							 | 
						||
| 
								 | 
							
								     * @param begDate     开始日期(yyyy-MM-dd HH:mm:ss)
							 | 
						||
| 
								 | 
							
								     * @param endDate     结束日期(yyyy-MM-dd)
							 | 
						||
| 
								 | 
							
								     * @return 号源集合
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public List<Map<Object, Object>> getTimeSource(String deptCode, String subDeptCode, String doctCode, String
							 | 
						||
| 
								 | 
							
								            begDate, String endDate) {
							 | 
						||
| 
								 | 
							
								        if (DateHelper.isToday(begDate)) {
							 | 
						||
| 
								 | 
							
								            begDate = begDate + " " + DateHelper.getCurTime();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", deptCode);
							 | 
						||
| 
								 | 
							
								        params.put("DoctCode", doctCode);
							 | 
						||
| 
								 | 
							
								        params.put("RegistBegDate", begDate);
							 | 
						||
| 
								 | 
							
								        params.put("RegistEndDate", endDate);
							 | 
						||
| 
								 | 
							
								        params.put("CanRegistFlag", "1"); // 仅返回有号源的医师 { 空或0:所有; 1:仅返回可挂号源 }
							 | 
						||
| 
								 | 
							
								        params.put("TimeInterval", 0);    // 排班时段[ 0:所有时段、1:上午、2:中午、3:下午、4:晚上 ]
							 | 
						||
| 
								 | 
							
								        if (!ObjectUtils.isEmpty(subDeptCode)) {
							 | 
						||
| 
								 | 
							
								            params.put("DeptCode_YZKCode", subDeptCode); // 亚专科code
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Register_Source_New, params);
							 | 
						||
| 
								 | 
							
								        List<Map<Object, Object>> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        if (!JsonResult.success()) {
							 | 
						||
| 
								 | 
							
								            log.info("[号源-分时段查询]{}", JsonResult.getMessage());
							 | 
						||
| 
								 | 
							
								            return resultList;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            JSONArray jsonArray = JsonResult.getJsonArray("Dept", "Doct", "TimeInterval");
							 | 
						||
| 
								 | 
							
								            JSONObject timeNode, sourceNode;
							 | 
						||
| 
								 | 
							
								            Map<Object, Object> map;
							 | 
						||
| 
								 | 
							
								            Register reg;
							 | 
						||
| 
								 | 
							
								            JSONArray sourceArr;
							 | 
						||
| 
								 | 
							
								            BigDecimal regMoney;
							 | 
						||
| 
								 | 
							
								            List<Register> list;
							 | 
						||
| 
								 | 
							
								            String tid, tName;
							 | 
						||
| 
								 | 
							
								            for (int i = 0; i < jsonArray.size(); i++) {
							 | 
						||
| 
								 | 
							
								                timeNode = jsonArray.getJSONObject(i);
							 | 
						||
| 
								 | 
							
								                map = new HashMap<>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                tid = timeNode.getString("TID");
							 | 
						||
| 
								 | 
							
								                tName = timeNode.getString("TName");
							 | 
						||
| 
								 | 
							
								                map.put("tid", tid);
							 | 
						||
| 
								 | 
							
								                map.put("tName", tName);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                sourceArr = timeNode.getJSONArray("Source");
							 | 
						||
| 
								 | 
							
								                list = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								                for (int k = 0; k < sourceArr.size(); k++) {
							 | 
						||
| 
								 | 
							
								                    sourceNode = sourceArr.getJSONObject(k);
							 | 
						||
| 
								 | 
							
								                    regMoney = sourceNode.getBigDecimal("RegistPrice");
							 | 
						||
| 
								 | 
							
								                    if (regMoney == null) {
							 | 
						||
| 
								 | 
							
								                        regMoney = BigDecimal.ZERO;
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                    if (k == 0) {
							 | 
						||
| 
								 | 
							
								                        map.put("regName", sourceNode.getString("RegistName"));
							 | 
						||
| 
								 | 
							
								                        map.put("payMoney", regMoney);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    reg = new Register();
							 | 
						||
| 
								 | 
							
								                    reg.setTid(tid);
							 | 
						||
| 
								 | 
							
								                    reg.setTName(tName);
							 | 
						||
| 
								 | 
							
								                    reg.setRegFee(regMoney);
							 | 
						||
| 
								 | 
							
								                    // -----------------------
							 | 
						||
| 
								 | 
							
								                    reg.setSourceId(sourceNode.getString("SourceId"));
							 | 
						||
| 
								 | 
							
								                    reg.setQueueNum(sourceNode.getString("QueueNumber"));
							 | 
						||
| 
								 | 
							
								                    reg.setBegTime(sourceNode.getString("BegTime"));
							 | 
						||
| 
								 | 
							
								                    reg.setEndTime(sourceNode.getString("EndTime"));
							 | 
						||
| 
								 | 
							
								                    reg.setRegCode(sourceNode.getString("RegistCode"));
							 | 
						||
| 
								 | 
							
								                    reg.setRegName(sourceNode.getString("RegistName"));
							 | 
						||
| 
								 | 
							
								                    reg.setRegDate(sourceNode.getString("RegistDate"));
							 | 
						||
| 
								 | 
							
								                    reg.setAddress(sourceNode.getString("ClinicAddress"));
							 | 
						||
| 
								 | 
							
								                    reg.setAllowReg(sourceNode.getInteger("AllowOnline"));
							 | 
						||
| 
								 | 
							
								                    reg.setIsUsed(sourceNode.getInteger("IsUsed"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    list.add(reg);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                map.put("sourceList", list);
							 | 
						||
| 
								 | 
							
								                resultList.add(map);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        } catch (Exception e) {
							 | 
						||
| 
								 | 
							
								            e.printStackTrace();
							 | 
						||
| 
								 | 
							
								            ErrorHelper.println(e);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return resultList;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 执行分时段挂号
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param reg 挂号信息
							 | 
						||
| 
								 | 
							
								     * @return 结果
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public JsonResult handleTimeReg(Register reg, MerchantEnum merchantEnum) {
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        params.put("PatientID", reg.getPatientId());
							 | 
						||
| 
								 | 
							
								        params.put("SourceId", reg.getSourceId());
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", reg.getDeptCode());
							 | 
						||
| 
								 | 
							
								        params.put("DoctCode", reg.getDoctCode());
							 | 
						||
| 
								 | 
							
								        params.put("TimeInterval", reg.getTid());
							 | 
						||
| 
								 | 
							
								        params.put("BegTime", reg.getBegTime());
							 | 
						||
| 
								 | 
							
								        params.put("EndTime", reg.getEndTime());
							 | 
						||
| 
								 | 
							
								        params.put("RegistCode", reg.getRegCode());
							 | 
						||
| 
								 | 
							
								        params.put("RegistDate", reg.getRegDate());
							 | 
						||
| 
								 | 
							
								        params.put("PayMoney", reg.getPayMoney());
							 | 
						||
| 
								 | 
							
								        params.put("PayDate", reg.getPayDate());
							 | 
						||
| 
								 | 
							
								        params.put("PayTime", reg.getPayTime());
							 | 
						||
| 
								 | 
							
								        params.put("TransNo", reg.getTradeNo());
							 | 
						||
| 
								 | 
							
								        params.put("PayWay", merchantEnum.HIS_PAY_WAY);
							 | 
						||
| 
								 | 
							
								        if (!ObjectUtils.isEmpty(reg.getSubDeptCode())) {
							 | 
						||
| 
								 | 
							
								            params.put("DeptCode_YZKCode", reg.getSubDeptCode()); // 亚专科code
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        params.put("OpenId", reg.getOpenid());
							 | 
						||
| 
								 | 
							
								        params.put("Token", WeChatConfig.TOKEN);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return HisHelper.getJsonResult(HisEnum.AP_Regist_New, params,merchantEnum);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 执行挂号
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param reg 参数
							 | 
						||
| 
								 | 
							
								     * @return map
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public JsonResult handleReg(Register reg, MerchantEnum merchantEnum) {
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								        String regDate = reg.getRegDate();
							 | 
						||
| 
								 | 
							
								        params.put("PatientID", reg.getPatientId());
							 | 
						||
| 
								 | 
							
								        params.put("DeptCode", reg.getDeptCode());
							 | 
						||
| 
								 | 
							
								        params.put("DoctCode", reg.getDoctCode());
							 | 
						||
| 
								 | 
							
								        params.put("TID", reg.getTid());
							 | 
						||
| 
								 | 
							
								        params.put("ClinicCode", reg.getClinicCode());
							 | 
						||
| 
								 | 
							
								        params.put("ClinicFee", reg.getClinicFee());
							 | 
						||
| 
								 | 
							
								        params.put("RegFee", reg.getRegFee());
							 | 
						||
| 
								 | 
							
								        params.put("PayMoney", reg.getPayMoney());
							 | 
						||
| 
								 | 
							
								        params.put("PayDate", reg.getPayDate());
							 | 
						||
| 
								 | 
							
								        params.put("PayTime", reg.getPayTime());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        params.put("TransNo", reg.getTradeNo());
							 | 
						||
| 
								 | 
							
								        params.put("BankTransNo", reg.getBankTransNo());
							 | 
						||
| 
								 | 
							
								        params.put("PayDeviceID", "mobile");
							 | 
						||
| 
								 | 
							
								        params.put("PayWay", merchantEnum.HIS_PAY_WAY);
							 | 
						||
| 
								 | 
							
								        if (!ObjectUtils.isEmpty(reg.getSubDeptCode())) {
							 | 
						||
| 
								 | 
							
								            params.put("DeptCode_YZKCode", reg.getSubDeptCode()); // 亚专科code
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (DateHelper.isToday(regDate)) { // 今日挂号
							 | 
						||
| 
								 | 
							
								            return HisHelper.getJsonResult(HisEnum.AP_Regist, params,merchantEnum);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // 预约挂号
							 | 
						||
| 
								 | 
							
								        params.put("ReservationDate", regDate);
							 | 
						||
| 
								 | 
							
								        return HisHelper.getJsonResult(HisEnum.AP_Reservation, params,merchantEnum);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 分时段挂号--是否占号
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者id
							 | 
						||
| 
								 | 
							
								     * @param sourceId  号源id
							 | 
						||
| 
								 | 
							
								     * @return true:是; false:否
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public synchronized static JsonResult isOccupySource(String patientId, String sourceId, MerchantEnum merchantEnum) {
							 | 
						||
| 
								 | 
							
								        Map<String, Object> params = new HashMap<>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        params.put("PatientID", patientId);
							 | 
						||
| 
								 | 
							
								        params.put("SourceId", sourceId);
							 | 
						||
| 
								 | 
							
								        params.put("TransNo", CodeHelper.get32UUID());
							 | 
						||
| 
								 | 
							
								        return HisHelper.getJsonResult(HisEnum.AP_Occupy_Source_New, params,merchantEnum);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |