package cn.hnthyy.thmz.service.his.zy;

import cn.hnthyy.thmz.entity.MzException;
import cn.hnthyy.thmz.entity.his.zy.APatientMi;
import cn.hnthyy.thmz.entity.his.zy.ZyActpatient;
import cn.hnthyy.thmz.entity.thmz.User;
import cn.hnthyy.thmz.enums.YesNoEnum;

import java.util.List;

public interface ZyActpatientService {
    /**
     * 入库病人在院或者出院信息
     * @param zyActpatient
     * @return
     */
    int saveZyActpatient(ZyActpatient zyActpatient);


    /**
     * 入库病人在院 且变更入院申请单
     * @param zyActpatient
     * @return
     */
    int saveZyActpatientFull(ZyActpatient zyActpatient) throws MzException;


    /**
     * 根据住院号查询在院记录数
     * @return
     */
    int queryCountByInpatientNo(String inpatientNo);


    /**
     * 根据住院号查询在院记录
     *
     * @return
     */
    ZyActpatient queryByInpatientNo(String tableName,String inpatientNo,Integer admissTimes);

    /**
     * 修改住院号
     * @param aPatientMi
     * @return
     */
    int modifyInpatientNo(APatientMi aPatientMi);
    /**
     * 根据病人门诊id或者住院号查询病人信息
     * @param zyActpatient
     * @return
     */
    List<ZyActpatient> queryZyActpatientByInpatientNoOrMzNO(ZyActpatient zyActpatient);


    /**
     * 根据病人门诊id或者住院号查询病人列表总数
     *
     * @param zyActpatient
     * @return
     */
    Integer queryCountByInpatientNoOrMzNO(ZyActpatient zyActpatient);


    /**
     * 立即出院
     * @param inpatientNo 病人住院号
     * @param admissTimes 病人住院次数
     * @param tokenUser 操作人员
     * @return
     */
    int leaveHospital(String inpatientNo, Integer admissTimes,User tokenUser) throws MzException;


    /**
     * 召回操作
     * @param inpatientNo 病人住院号
     * @param admissTimes 病人住院次数
     * @param tokenUser 操作人员
     * @return
     */
    int recall(String inpatientNo, Integer admissTimes,User tokenUser) throws MzException;

}
