/*
 * Copyright ©2023 CJB-CNIT Team. All rights reserved
 */
package com.openhis.web.inhospitalnursestation.appservice;

import javax.servlet.http.HttpServletRequest;

import com.core.common.core.domain.R;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPageParam;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPatientInfoDto;

/**
 * 入出转管理 service
 *
 * @author zwh
 * @date 2025-07-28
 */
public interface IATDManageAppService {

    /**
     * 入出转管理页面初始化
     *
     * @return 初始化信息
     */
    R<?> atdManageInit();

    /**
     * 入院患者分页列表
     *
     * @param admissionPageParam 查询条件
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 入院患者分页列表
     */
    R<?> getAdmissionPatientPage(AdmissionPageParam admissionPageParam, Integer pageNo, Integer pageSize,
        String searchKey, HttpServletRequest request);

    /**
     * 入院患者床位信息分页列表
     *
     * @param admissionPageParam 查询条件
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @return 床位信息分页列表
     */
    R<?> getAdmissionBedPage(AdmissionPageParam admissionPageParam, Integer pageNo, Integer pageSize);

    /**
     * 入院患者详细信息
     *
     * @param encounterId 住院id
     * @return 入院患者详细信息
     */
    R<?> getAdmissionPatientInfo(Long encounterId);

    /**
     * 住院患者待处理信息列表
     *
     * @param encounterId 住院id
     * @return 待处理信息列表
     */
    R<?> getInPatientPendingList(Long encounterId);

    /**
     * 入科床位分配
     *
     * @param admissionPatientInfoDto 床位分配参数
     * @return 结果
     */
    R<?> admissionBedAssignment(AdmissionPatientInfoDto admissionPatientInfoDto);

    /**
     * 转科
     *
     * @param encounterId 住院id
     * @return 结果
     */
    R<?> transferDepartment(Long encounterId);

    /**
     * 出院
     *
     * @param encounterId 住院id
     * @return 结果
     */
    R<?> hospitalDischarge(Long encounterId);
}
