package com.openhis.web.inhospitalcharge.appservice;

import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.core.common.core.domain.R;
import com.openhis.web.inhospitalcharge.dto.*;

/**
 * 住院登记 应用Service
 */
public interface IInHospitalRegisterAppService {

    /**
     * 门诊医生开住院申请
     *
     * @param inHospitalRegisterDto 住院登记参数
     * @return 结果
     */
    R<?> registerByDoctor(InHospitalRegisterDto inHospitalRegisterDto);

    /**
     * 查询住院登记信息
     *
     * @param inHospitalRegisterQueryDto 查询dto
     * @param searchKey 模糊查询关键字
     * @param registeredFlag 已登记标识,已登记传 1 ,待登记传 0
     * @param pageNo 当前页
     * @param pageSize 每页多少条
     * @param request 请求
     * @return 住院登记信息
     */
    IPage<InHospitalRegisterQueryDto> getRegisterInfo(InHospitalRegisterQueryDto inHospitalRegisterQueryDto,
        String searchKey, String registeredFlag, Integer pageNo, Integer pageSize, HttpServletRequest request);

    /**
     * 查询患者基本信息
     *
     * @param patientId 患者ID
     * @return 患者基本信息
     */
    InHospitalPatientInfoDto getPatientInfo(Long patientId);

    /**
     * 查询住院就诊信息
     *
     * @param encounterId 住院就诊id
     * @return 住院就诊信息
     */
    InHospitalInfoDto getInHospitalInfo(Long encounterId);

    /**
     * 根据病区号查询床位数
     *
     * @param wardBusNo 病区号
     * @return 床位数
     */
    HashMap<String, Integer> getBedsNumByWardBusNo(String wardBusNo);

    /**
     * 更新患者信息
     *
     * @param patientUpdateDto 更新患者信息dto
     * @return 结果
     */
    R<?> updatePatient(PatientUpdateDto patientUpdateDto);

    /**
     * 款台登记
     *
     * @param inHospitalInfoDto 登记dto
     * @return 结果
     */
    R<?> registerByCashier(InHospitalInfoDto inHospitalInfoDto);

    /**
     * 无档登记
     *
     * @param noFilesRegisterDto 无档登记dto
     * @return 结果
     */
    R<?> noFilesRegister(NoFilesRegisterDto noFilesRegisterDto);

}
