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.
		
		
		
		
			
				
					
					
						
							213 lines
						
					
					
						
							8.2 KiB
						
					
					
				
			
		
		
	
	
							213 lines
						
					
					
						
							8.2 KiB
						
					
					
				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);
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 |