package com.ywt.alipaympapi.service;

import com.ywt.request.inpatient.DailyBillDetailsRequest;
import com.ywt.request.inpatient.DailyBillRequest;
import com.ywt.request.inpatient.DepositTradeDetailsRequest;
import com.ywt.request.inpatient.DepositTradeListRequest;
import com.ywt.request.inpatient.DepositTradeRequest;
import com.ywt.request.inpatient.DepositTradeResultRequest;
import com.ywt.request.inpatient.InpatientCheckInRequest;
import com.ywt.request.inpatient.InpatientDeleteRequest;
import com.ywt.request.inpatient.InpatientDetailsRequest;
import com.ywt.request.inpatient.InpatientListRequest;
import com.ywt.request.inpatient.InpatientNoticeRequest;
import com.ywt.request.inpatient.InpatientUpdateRequest;
import com.ywt.request.inpatient.NoticeAuthRequest;
import com.ywt.request.inpatient.SettlementAuthRequest;
import com.ywt.request.inpatient.SettlementDetailsRequest;
import com.ywt.request.inpatient.SettlementExecuteRequest;
import com.ywt.request.inpatient.SettlementListRequest;
import com.ywt.request.inpatient.SettlementQueryRequest;
import com.ywt.response.inpatient.DailyBillDetailsResponseData;
import com.ywt.response.inpatient.DailyBillResponseData;
import com.ywt.response.inpatient.DepositTradeDetailsResponseData;
import com.ywt.response.inpatient.DepositTradeListResponseData;
import com.ywt.response.inpatient.DepositTradeResponseData;
import com.ywt.response.inpatient.DepositTradeResultResponseData;
import com.ywt.response.inpatient.InpatientCheckInResponseData;
import com.ywt.response.inpatient.InpatientDeleteResponseData;
import com.ywt.response.inpatient.InpatientDetailsResponseData;
import com.ywt.response.inpatient.InpatientListResponseData;
import com.ywt.response.inpatient.InpatientNoticeResponseData;
import com.ywt.response.inpatient.InpatientUpdateResponseData;
import com.ywt.response.inpatient.NoticeAuthResponseData;
import com.ywt.response.inpatient.SettlementAuthResponseData;
import com.ywt.response.inpatient.SettlementDetailsResponseData;
import com.ywt.response.inpatient.SettlementExecuteResponseData;
import com.ywt.response.inpatient.SettlementListResponseData;
import com.ywt.response.inpatient.SettlementQueryResponseData;

import java.util.List;

/**
 * 住院相关service
 */
public interface InpatientService {

    /**
     * 出院结算查询
     * tips：结算支持医保的可报销金额以医保局接口返回为准
     *
     * @param request
     * @return
     */
    SettlementQueryResponseData informTradeResult(SettlementQueryRequest request);

    /**
     * 入院登记
     *
     * @param request
     * @return
     */
    InpatientCheckInResponseData checkIn(InpatientCheckInRequest request);

    /**
     * 修改住院人（就诊人）手机号
     *
     * @param request
     * @return
     */
    InpatientUpdateResponseData updateInpatient(InpatientUpdateRequest request);

    /**
     * 住院记录/住院人列表
     *
     * @param request
     * @return
     */
    List<InpatientListResponseData> inpatientList(InpatientListRequest request);

    /**
     * 删除住院记录
     *
     * @param request
     * @return
     */
    InpatientDeleteResponseData deleteInpatient(InpatientDeleteRequest request);

    /**
     * 首页日清列表
     *
     * @param request
     * @return
     */
    List<DailyBillResponseData> dailyBillList(DailyBillRequest request);

    /**
     * 日清详情
     *
     * @param request
     * @return
     */
    DailyBillDetailsResponseData dailyBillDetail(DailyBillDetailsRequest request);

    /**
     * 押金缴纳（创建支付宝订单，返回支付宝交易号）
     *
     * @param request
     * @return
     */
    DepositTradeResponseData depositTrade(DepositTradeRequest request);

    /**
     * 押金缴纳结果查询
     *
     * @param request
     * @return
     */
    DepositTradeResultResponseData queryTradeResult(DepositTradeResultRequest request);

    /**
     * 押金缴纳记录查询
     *
     * @param request
     * @return
     */
    List<DepositTradeListResponseData> queryTradeList(DepositTradeListRequest request);

    /**
     * 押金缴纳详情查询
     *
     * @param request
     * @return
     */
    DepositTradeDetailsResponseData queryTradeDetails(DepositTradeDetailsRequest request);

    /**
     * 出院信息结算列表查询
     *
     * @param request
     * @return
     */
    List<SettlementListResponseData> settlementList(SettlementListRequest request);

    /**
     * 出院预结算授权 （仅医保支付调用）
     *
     * @param request
     * @return
     */
    SettlementAuthResponseData settlementAuth(SettlementAuthRequest request);

    /**
     * 出院结算
     *
     * @param request
     * @return
     */
    SettlementExecuteResponseData settlementExecute(SettlementExecuteRequest request);

    /**
     * 出院结算详情查询
     *
     * @param request
     * @return
     */
    SettlementDetailsResponseData settlementDetails(SettlementDetailsRequest request);

    /**
     * 出入院须知
     *
     * @param request
     * @return
     */
    InpatientNoticeResponseData inpatientNotice(InpatientNoticeRequest request);

    /**
     * 获取押金缴纳消息模板id
     *
     * @param request
     * @return
     */
    NoticeAuthResponseData noticeAuth(NoticeAuthRequest request);

    /**
     * 入院登记详情
     *
     * @param request
     * @return
     */
    InpatientDetailsResponseData inpatientDetails(InpatientDetailsRequest request);
}