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.
		
		
		
		
			
				
					214 lines
				
				8.2 KiB
			
		
		
			
		
	
	
					214 lines
				
				8.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								package com.ynxbd.common.action;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.action.base.BaseAction;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.bean.in_hosp.*;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.dao.his.HisInHospDao;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.helper.common.DateHelper;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.result.JsonResult;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.result.Result;
							 | 
						||
| 
								 | 
							
								import com.ynxbd.common.result.ResultEnum;
							 | 
						||
| 
								 | 
							
								import lombok.extern.slf4j.Slf4j;
							 | 
						||
| 
								 | 
							
								import org.apache.struts2.convention.annotation.Action;
							 | 
						||
| 
								 | 
							
								import org.apache.struts2.convention.annotation.Namespace;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import java.math.BigDecimal;
							 | 
						||
| 
								 | 
							
								import java.util.ArrayList;
							 | 
						||
| 
								 | 
							
								import java.util.List;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 住院接口
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @Author wsq
							 | 
						||
| 
								 | 
							
								 * @Date 2021/2/26 12:50
							 | 
						||
| 
								 | 
							
								 * @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Slf4j
							 | 
						||
| 
								 | 
							
								@Namespace("/inHosp")
							 | 
						||
| 
								 | 
							
								public class InHospAction extends BaseAction {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [住院]预交金缴费记录查询
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param begDate   开始日期
							 | 
						||
| 
								 | 
							
								     * @param endDate   结束日期
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者id
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    @Action("getPreMoneyList")
							 | 
						||
| 
								 | 
							
								    public Result getPreMoneyList(String begDate, String endDate, String patientId) {
							 | 
						||
| 
								 | 
							
								        log.info("[住院]预交金缴费记录查询, patientId={}", patientId);
							 | 
						||
| 
								 | 
							
								        if (patientId == null || begDate == null || endDate == null) {
							 | 
						||
| 
								 | 
							
								            return Result.error(ResultEnum.PARAM_IS_DEFECT);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult resp = new HisInHospDao().getPreMoneyList(patientId);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<InHosp> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        if (!resp.success()) {
							 | 
						||
| 
								 | 
							
								            log.info("[住院]交金缴费记录查询失败信息:{}", resp.getMessage());
							 | 
						||
| 
								 | 
							
								            return Result.success(resultList);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<InHosp> list = resp.getDataMapList(InHosp.class, "Item");
							 | 
						||
| 
								 | 
							
								        String prepayDate;
							 | 
						||
| 
								 | 
							
								        for (InHosp item : list) {
							 | 
						||
| 
								 | 
							
								            prepayDate = item.getPrepayDate();
							 | 
						||
| 
								 | 
							
								            if (prepayDate != null) {
							 | 
						||
| 
								 | 
							
								                prepayDate = DateHelper.dateFormatShort(prepayDate);
							 | 
						||
| 
								 | 
							
								                if (prepayDate != null && DateHelper.inDateRange(begDate, endDate, prepayDate, DateHelper.DateEnum.yyyy_MM_dd)) {
							 | 
						||
| 
								 | 
							
								                    resultList.add(item);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return Result.success(resultList);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [住院]查询住院日费用汇总
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param date      查询日期(空为查询所有)
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者id
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    @Action("getInHospSumFee")
							 | 
						||
| 
								 | 
							
								    public Result getInHospSumFee(String date, String patientId) {
							 | 
						||
| 
								 | 
							
								        log.info("[住院]查询住院日费用汇总 patientId={}, date={}", patientId, date);
							 | 
						||
| 
								 | 
							
								        if (patientId == null) {
							 | 
						||
| 
								 | 
							
								            return Result.error(ResultEnum.PARAM_IS_DEFECT);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult resp = new HisInHospDao().getInHospSumFee(patientId, date);
							 | 
						||
| 
								 | 
							
								        if (!resp.success()) {
							 | 
						||
| 
								 | 
							
								            return Result.error(resp.getMessage());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        InHospSummaryFee inHospSummaryFee = new InHospSummaryFee();
							 | 
						||
| 
								 | 
							
								        List<InHospSummaryFeeItem> items = resp.getDataMapList(InHospSummaryFeeItem.class, "Item");
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setItems(items);
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setPatientId(resp.getDataMapString("PatientId"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setPatientName(resp.getDataMapString("PatientName"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setTreatNum(resp.getDataMapString("ZYNum"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setSex(resp.getDataMapString("Sex"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setStayDeptName(resp.getDataMapString("StayDeptName"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setAdmissionDate(resp.getDataMapString("AdmissionDate"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setDischargeDate(resp.getDataMapString("DischargeDate"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setLengthOfStay(resp.getDataMapString("LengthOfStay"));
							 | 
						||
| 
								 | 
							
								        inHospSummaryFee.setSummaryFee(resp.getDataMapString("SummaryFee"));
							 | 
						||
| 
								 | 
							
								        return Result.success(inHospSummaryFee);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [住院]查询住院费用清单
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param date      查询日期(空为查询所有)
							 | 
						||
| 
								 | 
							
								     * @param patientId 患者id
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    @Action("getInHospFee")
							 | 
						||
| 
								 | 
							
								    public Result getInHospFee(String date, String patientId) {
							 | 
						||
| 
								 | 
							
								        log.info("[住院]查询住院费用清单 patientId={}, date={}", patientId, date);
							 | 
						||
| 
								 | 
							
								        if (patientId == null) {
							 | 
						||
| 
								 | 
							
								            return Result.error(ResultEnum.PARAM_IS_DEFECT);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult resp = new HisInHospDao().getInHospFee(patientId, date);
							 | 
						||
| 
								 | 
							
								        if (!resp.success()) {
							 | 
						||
| 
								 | 
							
								            return Result.error(resp.getMessage());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        InHospFee inHospFee = new InHospFee();
							 | 
						||
| 
								 | 
							
								        List<InHospFeeItem> items = resp.getDataMapList(InHospFeeItem.class, "Item");
							 | 
						||
| 
								 | 
							
								        items.forEach(item -> {
							 | 
						||
| 
								 | 
							
								            BigDecimal price = item.getPrice();
							 | 
						||
| 
								 | 
							
								            Integer count = item.getCount();
							 | 
						||
| 
								 | 
							
								            if (price != null && count != null) {
							 | 
						||
| 
								 | 
							
								                item.setPayMoney(price.multiply(new BigDecimal(count)));
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        inHospFee.setItems(items);
							 | 
						||
| 
								 | 
							
								        inHospFee.setPatientName(resp.getDataMapString("PatientName"));
							 | 
						||
| 
								 | 
							
								        inHospFee.setAdmissionDate(resp.getDataMapString("AdmissionDate"));
							 | 
						||
| 
								 | 
							
								        inHospFee.setAdmissionDeptName(resp.getDataMapString("AdmissionDeptName"));
							 | 
						||
| 
								 | 
							
								        inHospFee.setStayDeptName(resp.getDataMapString("StayDeptName"));
							 | 
						||
| 
								 | 
							
								        inHospFee.setAttendingPhysician(resp.getDataMapString("setAttendingPhysician"));
							 | 
						||
| 
								 | 
							
								        inHospFee.setLengthOfStay(resp.getDataMapString("LengthOfStay"));
							 | 
						||
| 
								 | 
							
								        inHospFee.setTotalHospitalization(resp.getDataMapBigDecimal("TotalHospitalization"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return Result.success(inHospFee);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [住院]通过住院号查询患者信息(含预交金)
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param treatNum 住院号
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    @Action("getInHospByTreatNum")
							 | 
						||
| 
								 | 
							
								    public Result getInHospByTreatNum(String treatNum) {
							 | 
						||
| 
								 | 
							
								        log.info("[住院]通过住院号查询患者信息(含预交金) treatNum={}", treatNum);
							 | 
						||
| 
								 | 
							
								        if (treatNum == null) {
							 | 
						||
| 
								 | 
							
								            return Result.error(ResultEnum.PARAM_IS_DEFECT);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult resp = new HisInHospDao().getInHospByTreatNum(treatNum);
							 | 
						||
| 
								 | 
							
								        if (!resp.success()) {
							 | 
						||
| 
								 | 
							
								            return Result.error(resp.getMessage());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        InHosp inHosp = resp.dataMapToBean(InHosp.class);
							 | 
						||
| 
								 | 
							
								        treatNum = resp.getDataMapString("InPatientNum");
							 | 
						||
| 
								 | 
							
								        inHosp.setTreatNum(treatNum);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return Result.success(inHosp);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * [住院]通过患者ID查询在院患者信息
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param patientId   患者id
							 | 
						||
| 
								 | 
							
								     * @param begDate     开始日期
							 | 
						||
| 
								 | 
							
								     * @param endDate     结束日期
							 | 
						||
| 
								 | 
							
								     * @param inHospState { 0 | null 查询所有;1:只查询在院记录; }
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    @Action("getInHospByPatientId")
							 | 
						||
| 
								 | 
							
								    public Result getInHospByPatientId(String patientId, String begDate, String endDate, String inHospState) {
							 | 
						||
| 
								 | 
							
								        log.info("[住院]通过患者ID查询在院患者信息 patientId={}, endDate={}, endDate={}", patientId, begDate, endDate);
							 | 
						||
| 
								 | 
							
								        if (patientId == null || begDate == null || endDate == null) {
							 | 
						||
| 
								 | 
							
								            return Result.error(ResultEnum.PARAM_IS_DEFECT);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        JsonResult resp = new HisInHospDao().getInHospByPatientId(patientId);
							 | 
						||
| 
								 | 
							
								        if (!resp.success()) {
							 | 
						||
| 
								 | 
							
								            return Result.error(resp.getMessage());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        InHosp inHosp = resp.dataMapToBean(InHosp.class, "InPatientInfo");
							 | 
						||
| 
								 | 
							
								        if (inHosp == null) {
							 | 
						||
| 
								 | 
							
								            return Result.success(new InHosp());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        List<InHosp> records = resp.getDataMapList(InHosp.class, "InPatientInfo", "Items", "Item");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        List<InHosp> resultList = new ArrayList<>();
							 | 
						||
| 
								 | 
							
								        String inDate;
							 | 
						||
| 
								 | 
							
								        for (InHosp item : records) {
							 | 
						||
| 
								 | 
							
								            if ("1".equals(inHospState)) { // 只查询在院记录
							 | 
						||
| 
								 | 
							
								                if (item.getOutDate() != null) { // 已出院
							 | 
						||
| 
								 | 
							
								                    continue;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            inDate = item.getInDate();
							 | 
						||
| 
								 | 
							
								            if (inDate != null) {
							 | 
						||
| 
								 | 
							
								                inDate = DateHelper.dateFormatShort(inDate);
							 | 
						||
| 
								 | 
							
								                if (inDate != null && DateHelper.inDateRange(begDate, endDate, inDate, DateHelper.DateEnum.yyyy_MM_dd)) {
							 | 
						||
| 
								 | 
							
								                    item.setTreatNum(item.getInPatientNum());
							 | 
						||
| 
								 | 
							
								                    resultList.add(item);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        inHosp.setRecords(resultList);
							 | 
						||
| 
								 | 
							
								        return Result.success(inHosp);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |